1) Moved net.sourceforge.phpeclipse.ui\src\net\sourceforge\phpdt back to net.sourcefo...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / viewsupport / JavaUILabelProvider.java
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/viewsupport/JavaUILabelProvider.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/viewsupport/JavaUILabelProvider.java
new file mode 100644 (file)
index 0000000..09b8826
--- /dev/null
@@ -0,0 +1,240 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2003 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ * 
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package net.sourceforge.phpdt.internal.ui.viewsupport;
+
+import java.util.ArrayList;
+
+import org.eclipse.core.resources.IStorage;
+import org.eclipse.jface.viewers.ILabelDecorator;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.swt.graphics.Image;
+
+public class JavaUILabelProvider extends LabelProvider {
+
+       protected JavaElementImageProvider fImageLabelProvider;
+
+       protected StorageLabelProvider fStorageLabelProvider;
+
+       protected ArrayList fLabelDecorators;
+
+       private int fImageFlags;
+
+       private int fTextFlags;
+
+       /**
+        * Creates a new label provider with default flags.
+        */
+//     public JavaUILabelProvider() {
+//             this(JavaElementLabels.M_PARAMETER_TYPES,
+//                             JavaElementImageProvider.OVERLAY_ICONS);
+//     }
+
+       /**
+        * @param textFlags
+        *            Flags defined in <code>JavaElementLabels</code>.
+        * @param imageFlags
+        *            Flags defined in <code>JavaElementImageProvider</code>.
+        */
+       public JavaUILabelProvider(int textFlags, int imageFlags) {
+               fImageLabelProvider = new JavaElementImageProvider();
+               fLabelDecorators = null;
+
+               fStorageLabelProvider = new StorageLabelProvider();
+               fImageFlags = imageFlags;
+               fTextFlags = textFlags;
+       }
+
+       /**
+        * Adds a decorator to the label provider
+        */
+       public void addLabelDecorator(ILabelDecorator decorator) {
+               if (fLabelDecorators == null) {
+                       fLabelDecorators = new ArrayList(2);
+               }
+               fLabelDecorators.add(decorator);
+       }
+
+       /**
+        * Sets the textFlags.
+        * 
+        * @param textFlags
+        *            The textFlags to set
+        */
+       public final void setTextFlags(int textFlags) {
+               fTextFlags = textFlags;
+       }
+
+       /**
+        * Sets the imageFlags
+        * 
+        * @param imageFlags
+        *            The imageFlags to set
+        */
+       public final void setImageFlags(int imageFlags) {
+               fImageFlags = imageFlags;
+       }
+
+       /**
+        * Gets the image flags. Can be overwriten by super classes.
+        * 
+        * @return Returns a int
+        */
+       public final int getImageFlags() {
+               return fImageFlags;
+       }
+
+       /**
+        * Gets the text flags.
+        * 
+        * @return Returns a int
+        */
+       public final int getTextFlags() {
+               return fTextFlags;
+       }
+
+       /**
+        * Evaluates the image flags for a element. Can be overwriten by super
+        * classes.
+        * 
+        * @return Returns a int
+        */
+       protected int evaluateImageFlags(Object element) {
+               return getImageFlags();
+       }
+
+       /**
+        * Evaluates the text flags for a element. Can be overwriten by super
+        * classes.
+        * 
+        * @return Returns a int
+        */
+       protected int evaluateTextFlags(Object element) {
+               return getTextFlags();
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see ILabelProvider#getImage
+        */
+       public Image getImage(Object element) {
+               Image result = fImageLabelProvider.getImageLabel(element,
+                               evaluateImageFlags(element));
+               if (result == null && (element instanceof IStorage)) {
+                       result = fStorageLabelProvider.getImage(element);
+               }
+               if (fLabelDecorators != null && result != null) {
+                       for (int i = 0; i < fLabelDecorators.size(); i++) {
+                               ILabelDecorator decorator = (ILabelDecorator) fLabelDecorators
+                                               .get(i);
+                               result = decorator.decorateImage(result, element);
+                       }
+               }
+               return result;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see ILabelProvider#getText
+        */
+       public String getText(Object element) {
+               String result = JavaElementLabels.getTextLabel(element,
+                               evaluateTextFlags(element));
+               if (result.length() == 0 && (element instanceof IStorage)) {
+                       result = fStorageLabelProvider.getText(element);
+               }
+               if (fLabelDecorators != null && result.length() > 0) {
+                       for (int i = 0; i < fLabelDecorators.size(); i++) {
+                               ILabelDecorator decorator = (ILabelDecorator) fLabelDecorators
+                                               .get(i);
+                               result = decorator.decorateText(result, element);
+                       }
+               }
+               return result;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see IBaseLabelProvider#dispose
+        */
+       public void dispose() {
+               if (fLabelDecorators != null) {
+                       for (int i = 0; i < fLabelDecorators.size(); i++) {
+                               ILabelDecorator decorator = (ILabelDecorator) fLabelDecorators
+                                               .get(i);
+                               decorator.dispose();
+                       }
+                       fLabelDecorators = null;
+               }
+               fStorageLabelProvider.dispose();
+               fImageLabelProvider.dispose();
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see IBaseLabelProvider#addListener(ILabelProviderListener)
+        */
+       public void addListener(ILabelProviderListener listener) {
+               if (fLabelDecorators != null) {
+                       for (int i = 0; i < fLabelDecorators.size(); i++) {
+                               ILabelDecorator decorator = (ILabelDecorator) fLabelDecorators
+                                               .get(i);
+                               decorator.addListener(listener);
+                       }
+               }
+               super.addListener(listener);
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see IBaseLabelProvider#isLabelProperty(Object, String)
+        */
+       public boolean isLabelProperty(Object element, String property) {
+               return true;
+       }
+
+       /*
+        * (non-Javadoc)
+        * 
+        * @see IBaseLabelProvider#removeListener(ILabelProviderListener)
+        */
+       public void removeListener(ILabelProviderListener listener) {
+               if (fLabelDecorators != null) {
+                       for (int i = 0; i < fLabelDecorators.size(); i++) {
+                               ILabelDecorator decorator = (ILabelDecorator) fLabelDecorators
+                                               .get(i);
+                               decorator.removeListener(listener);
+                       }
+               }
+               super.removeListener(listener);
+       }
+
+//     public static ILabelDecorator[] getDecorators(boolean errortick,
+//                     ILabelDecorator extra) {
+//             if (errortick) {
+//                     if (extra == null) {
+//                             return new ILabelDecorator[] {};
+//                     } else {
+//                             return new ILabelDecorator[] { extra };
+//                     }
+//             }
+//             if (extra != null) {
+//                     return new ILabelDecorator[] { extra };
+//             }
+//             return null;
+//     }
+
+}