X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/JavaElementLabelProvider.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/JavaElementLabelProvider.java new file mode 100644 index 0000000..c93397c --- /dev/null +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/JavaElementLabelProvider.java @@ -0,0 +1,299 @@ +/******************************************************************************* + * 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.ui; + +import net.sourceforge.phpdt.internal.ui.viewsupport.JavaElementImageProvider; +import net.sourceforge.phpdt.internal.ui.viewsupport.JavaElementLabels; +import net.sourceforge.phpdt.internal.ui.viewsupport.StorageLabelProvider; + +import org.eclipse.core.resources.IStorage; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.swt.graphics.Image; + +/** + * Standard label provider for Java elements. Use this class when you want to + * present the Java elements in a viewer. + *
+ * The implementation also handles non-Java elements by forwarding the requests
+ * to the IWorkbenchAdapter
of the element.
+ *
+ * This class may be instantiated; it is not intended to be subclassed. + *
+ */ +public class JavaElementLabelProvider extends LabelProvider { + + /** + * Flag (bit mask) indicating that methods labels include the method return + * type. (appended) + */ + public final static int SHOW_RETURN_TYPE = 0x001; + + /** + * Flag (bit mask) indicating that method label include method parameter + * types. + */ + public final static int SHOW_PARAMETERS = 0x002; + + /** + * Flag (bit mask) indicating that the label of a member should include the + * container. For example, include the name of the type enclosing a field. + * + * @deprecated Use SHOW_QUALIFIED or SHOW_ROOT instead + */ + public final static int SHOW_CONTAINER = 0x004; + + /** + * Flag (bit mask) indicating that the label of a type should be fully + * qualified. For example, include the fully qualified name of the type + * enclosing a type. + * + * @deprecated Use SHOW_QUALIFIED instead + */ + public final static int SHOW_CONTAINER_QUALIFICATION = 0x008; + + /** + * Flag (bit mask) indicating that the label should include overlay icons + * for element type and modifiers. + */ + public final static int SHOW_OVERLAY_ICONS = 0x010; + + /** + * Flag (bit mask) indicating thata field label should include the declared + * type. + */ + public final static int SHOW_TYPE = 0x020; + + /** + * Flag (bit mask) indicating that the label should include the name of the + * package fragment root (appended). + */ + public final static int SHOW_ROOT = 0x040; + + /** + * Flag (bit mask) indicating that the label qualification of a type should + * be shown after the name. + * + * @deprecated SHOW_POST_QUALIFIED instead + */ + public final static int SHOW_POSTIFIX_QUALIFICATION = 0x080; + + /** + * Flag (bit mask) indicating that the label should show the icons with no + * space reserved for overlays. + */ + public final static int SHOW_SMALL_ICONS = 0x100; + + /** + * Flag (bit mask) indicating that the packagefragment roots from variables + * should be rendered with the variable in the name + */ + public final static int SHOW_VARIABLE = 0x200; + + /** + * Flag (bit mask) indicating that Complation Units, Class Files, Types, + * Declarations and Members should be rendered qualified. Examples: + * java.lang.String, java.util.Vector.size() + * + * @since 2.0 + */ + public final static int SHOW_QUALIFIED = 0x400; + + /** + * Flag (bit mask) indicating that Complation Units, Class Files, Types, + * Declarations and Members should be rendered qualified. The qualifcation + * is appended Examples: String - java.lang, size() - java.util.Vector + * + * @since 2.0 + */ + public final static int SHOW_POST_QUALIFIED = 0x800; + + /** + * Constant (value0
) indicating that the label should show
+ * the basic images only.
+ */
+ public final static int SHOW_BASICS = 0x000;
+
+ /**
+ * Constant indicating the default label rendering. Currently the default is
+ * equivalent to SHOW_PARAMETERS | SHOW_OVERLAY_ICONS
.
+ */
+ public final static int SHOW_DEFAULT = new Integer(SHOW_PARAMETERS
+ | SHOW_OVERLAY_ICONS).intValue();
+
+ private JavaElementImageProvider fImageLabelProvider;
+
+ private StorageLabelProvider fStorageLabelProvider;
+
+ private int fFlags;
+
+ private int fImageFlags;
+
+ private int fTextFlags;
+
+ /**
+ * Creates a new label provider with SHOW_DEFAULT
flag.
+ *
+ * @see #SHOW_DEFAULT
+ * @since 2.0
+ */
+// public JavaElementLabelProvider() {
+// this(SHOW_DEFAULT);
+// }
+
+ /**
+ * Creates a new label provider.
+ *
+ * @param flags
+ * the initial options; a bitwise OR of SHOW_*
+ * constants
+ */
+ public JavaElementLabelProvider(int flags) {
+ fImageLabelProvider = new JavaElementImageProvider();
+ fStorageLabelProvider = new StorageLabelProvider();
+ fFlags = flags;
+ updateImageProviderFlags();
+ updateTextProviderFlags();
+ }
+
+ private boolean getFlag(int flag) {
+ return (fFlags & flag) != 0;
+ }
+
+ /**
+ * Turns on the rendering options specified in the given flags.
+ *
+ * @param flags
+ * the options; a bitwise OR of SHOW_*
constants
+ */
+// public void turnOn(int flags) {
+// fFlags |= flags;
+// updateImageProviderFlags();
+// updateTextProviderFlags();
+// }
+
+ /**
+ * Turns off the rendering options specified in the given flags.
+ *
+ * @param flags
+ * the initial options; a bitwise OR of SHOW_*
+ * constants
+ */
+// public void turnOff(int flags) {
+// fFlags &= (~flags);
+// updateImageProviderFlags();
+// updateTextProviderFlags();
+// }
+
+ private void updateImageProviderFlags() {
+ fImageFlags = 0;
+ if (getFlag(SHOW_OVERLAY_ICONS)) {
+ fImageFlags |= JavaElementImageProvider.OVERLAY_ICONS;
+ }
+ if (getFlag(SHOW_SMALL_ICONS)) {
+ fImageFlags |= JavaElementImageProvider.SMALL_ICONS;
+ }
+ }
+
+ private void updateTextProviderFlags() {
+ fTextFlags = 0;
+ if (getFlag(SHOW_RETURN_TYPE)) {
+ fTextFlags |= JavaElementLabels.M_APP_RETURNTYPE;
+ }
+ if (getFlag(SHOW_PARAMETERS)) {
+ fTextFlags |= JavaElementLabels.M_PARAMETER_TYPES;
+ }
+ if (getFlag(SHOW_CONTAINER)) {
+ fTextFlags |= JavaElementLabels.P_POST_QUALIFIED
+ | JavaElementLabels.T_POST_QUALIFIED
+ | JavaElementLabels.CF_POST_QUALIFIED
+ | JavaElementLabels.CU_POST_QUALIFIED
+ | JavaElementLabels.M_POST_QUALIFIED
+ | JavaElementLabels.F_POST_QUALIFIED;
+ }
+ if (getFlag(SHOW_POSTIFIX_QUALIFICATION)) {
+ fTextFlags |= (JavaElementLabels.T_POST_QUALIFIED
+ | JavaElementLabels.CF_POST_QUALIFIED | JavaElementLabels.CU_POST_QUALIFIED);
+ } else if (getFlag(SHOW_CONTAINER_QUALIFICATION)) {
+ fTextFlags |= (JavaElementLabels.T_FULLY_QUALIFIED
+ | JavaElementLabels.CF_QUALIFIED | JavaElementLabels.CU_QUALIFIED);
+ }
+ if (getFlag(SHOW_TYPE)) {
+ fTextFlags |= JavaElementLabels.F_APP_TYPE_SIGNATURE;
+ }
+ if (getFlag(SHOW_ROOT)) {
+ fTextFlags |= JavaElementLabels.APPEND_ROOT_PATH;
+ }
+ if (getFlag(SHOW_VARIABLE)) {
+ fTextFlags |= JavaElementLabels.ROOT_VARIABLE;
+ }
+ if (getFlag(SHOW_QUALIFIED)) {
+ fTextFlags |= (JavaElementLabels.F_FULLY_QUALIFIED
+ | JavaElementLabels.M_FULLY_QUALIFIED
+ | JavaElementLabels.I_FULLY_QUALIFIED
+ | JavaElementLabels.T_FULLY_QUALIFIED
+ | JavaElementLabels.D_QUALIFIED
+ | JavaElementLabels.CF_QUALIFIED | JavaElementLabels.CU_QUALIFIED);
+ }
+ if (getFlag(SHOW_POST_QUALIFIED)) {
+ fTextFlags |= (JavaElementLabels.F_POST_QUALIFIED
+ | JavaElementLabels.M_POST_QUALIFIED
+ | JavaElementLabels.I_POST_QUALIFIED
+ | JavaElementLabels.T_POST_QUALIFIED
+ | JavaElementLabels.D_POST_QUALIFIED
+ | JavaElementLabels.CF_POST_QUALIFIED | JavaElementLabels.CU_POST_QUALIFIED);
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see ILabelProvider#getImage
+ */
+ public Image getImage(Object element) {
+ Image result = fImageLabelProvider.getImageLabel(element, fImageFlags);
+ if (result != null) {
+ return result;
+ }
+
+ if (element instanceof IStorage)
+ return fStorageLabelProvider.getImage(element);
+
+ return result;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see ILabelProvider#getText
+ */
+ public String getText(Object element) {
+ String text = JavaElementLabels.getTextLabel(element, fTextFlags);
+ if (text.length() > 0) {
+ return text;
+ }
+
+ if (element instanceof IStorage)
+ return fStorageLabelProvider.getText(element);
+
+ return text;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see IBaseLabelProvider#dispose
+ */
+ public void dispose() {
+ fStorageLabelProvider.dispose();
+ fImageLabelProvider.dispose();
+ }
+}