diff --git a/core/org.eclipse.cdt.ui/ChangeLog b/core/org.eclipse.cdt.ui/ChangeLog index e93e88fa37e..e694b8a020c 100644 --- a/core/org.eclipse.cdt.ui/ChangeLog +++ b/core/org.eclipse.cdt.ui/ChangeLog @@ -1,3 +1,12 @@ +2004-02-02 Alain Magloire + + Dealing with PR 50792, give more flexibility in the behaviour + of CElementLabelProvider + + * src/org/eclipse/cdt/internal/ui/StandardCElementLabelProvider.java + * src/org/eclipse/cdt/internal/ui/editor/CEditorErrorTickUpdater.java + * src/org/eclipse/cdt/ui/CElementLabelProvider.java + 2004-01-29 Hoda Amer Tuning for the Completion Engine. diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/StandardCElementLabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/StandardCElementLabelProvider.java index c756f0a8915..676f8e3553a 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/StandardCElementLabelProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/StandardCElementLabelProvider.java @@ -16,18 +16,15 @@ import org.eclipse.jface.util.PropertyChangeEvent; */ public class StandardCElementLabelProvider extends CElementLabelProvider implements IPropertyChangeListener { - public final static int DEFAULT_TEXTFLAGS= 0; //CElementLabels.ROOT_VARIABLE | JavaElementLabels.M_PARAMETER_TYPES | JavaElementLabels.M_APP_RETURNTYPE; - public final static int DEFAULT_IMAGEFLAGS= CElementImageProvider.OVERLAY_ICONS; + //public final static int DEFAULT_FLAGS = SHOW_OVERLAY_ICONS | SHOW_PARAMETERS; + public final static int DEFAULT_FLAGS = SHOW_OVERLAY_ICONS ; - private int fTextFlagMask; - private int fImageFlagMask; - /** * Constructor for StandardCElementLabelProvider. * @see CElementLabelProvider#CElementLabelProvider */ - public StandardCElementLabelProvider(int textFlags, int imageFlags, IAdornmentProvider[] adormentProviders) { - super(textFlags, imageFlags, adormentProviders); + public StandardCElementLabelProvider(int flags, IAdornmentProvider[] adormentProviders) { + super(flags, adormentProviders); initMasks(); CUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this); } @@ -37,19 +34,11 @@ public class StandardCElementLabelProvider extends CElementLabelProvider impleme * and the ErrorTickAdornmentProvider. */ public StandardCElementLabelProvider() { - this(DEFAULT_TEXTFLAGS, DEFAULT_IMAGEFLAGS, new IAdornmentProvider[] { new ErrorTickAdornmentProvider() }); + this(DEFAULT_FLAGS, new IAdornmentProvider[] { new ErrorTickAdornmentProvider() }); } private void initMasks() { - fTextFlagMask= -1; - /* if (!AppearancePreferencePage.showMethodReturnType()) { - fTextFlagMask ^= JavaElementLabels.M_APP_RETURNTYPE; - } - if (!AppearancePreferencePage.isCompressingPkgNameInPackagesView()) { - fTextFlagMask ^= JavaElementLabels.P_COMPRESSED; - } */ - - fImageFlagMask= -1; + // turn on or off the flags depending on property/preference changes. } /* @@ -74,18 +63,4 @@ public class StandardCElementLabelProvider extends CElementLabelProvider impleme super.dispose(); } - /* - * @see JavaUILabelProvider#getImageFlags() - */ - public int getImageFlags() { - return super.getImageFlags() & fImageFlagMask; - } - - /* - * @see JavaUILabelProvider#getTextFlags() - */ - public int getTextFlags() { - return super.getTextFlags() & fTextFlagMask; - } - } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorErrorTickUpdater.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorErrorTickUpdater.java index 55ee1a7614a..a45f8cb3ffa 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorErrorTickUpdater.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorErrorTickUpdater.java @@ -5,16 +5,13 @@ package org.eclipse.cdt.internal.ui.editor; * All Rights Reserved. */ -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Shell; - import org.eclipse.cdt.core.model.ICElement; -import org.eclipse.cdt.internal.ui.CElementImageProvider; import org.eclipse.cdt.ui.CElementLabelProvider; import org.eclipse.jface.text.source.IAnnotationModel; import org.eclipse.jface.text.source.IAnnotationModelListener; import org.eclipse.jface.util.Assert; - +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IEditorInput; /** @@ -46,7 +43,7 @@ public class CEditorErrorTickUpdater implements IAnnotationModelListener { if (model != null) { if (fLabelProvider == null) { - fLabelProvider= new CElementLabelProvider(0, CElementImageProvider.SMALL_ICONS, CElementLabelProvider.getAdornmentProviders(true, null)); + fLabelProvider= new CElementLabelProvider(CElementLabelProvider.SHOW_SMALL_ICONS, CElementLabelProvider.getAdornmentProviders(true, null)); } fAnnotationModel=model; fAnnotationModel.addAnnotationModelListener(this); diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementLabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementLabelProvider.java index 5e56f690a23..8994794187f 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementLabelProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementLabelProvider.java @@ -15,6 +15,7 @@ import org.eclipse.cdt.core.model.IVariableDeclaration; import org.eclipse.cdt.internal.ui.CElementImageProvider; import org.eclipse.cdt.internal.ui.ErrorTickAdornmentProvider; import org.eclipse.cdt.internal.ui.IAdornmentProvider; +import org.eclipse.cdt.internal.ui.search.CElementLabels; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; @@ -25,33 +26,69 @@ import org.eclipse.ui.model.WorkbenchLabelProvider; */ public class CElementLabelProvider 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 method label include thrown exception. + */ + public final static int SHOW_EXCEPTION = 0x004; + + /** + * 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 label should include overlay icons + * for element type and modifiers. + */ + public final static int SHOW_OVERLAY_ICONS = 0x010; + + /** + * 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 ImageRegistry fImageRegistry; private WorkbenchLabelProvider fWorkbenchLabelProvider; - private CElementImageProvider fImageLabelProvider; - private IAdornmentProvider[] fAdornmentProviders; + private int fFlags; private int fImageFlags; private int fTextFlags; public CElementLabelProvider() { - this(0 /* CElementLabels.M_PARAMETER_TYPES */, CElementImageProvider.OVERLAY_ICONS, null); + this(SHOW_DEFAULT); } - + + public CElementLabelProvider(int flags) { + this(flags, null); + } + /** - * @param textFlags Flags defined in JavaElementLabels. - * @param imageFlags Flags defined in JavaElementImageProvider. + * @param textFlags Flags defined in CElementLabels. + * @param imageFlags Flags defined in CElementImageProvider. */ - public CElementLabelProvider(int textFlags, int imageFlags, IAdornmentProvider[] adormentProviders) { + public CElementLabelProvider(int flags, IAdornmentProvider[] adormentProviders) { fImageRegistry= CUIPlugin.getDefault().getImageRegistry(); fWorkbenchLabelProvider= new WorkbenchLabelProvider(); fImageLabelProvider= new CElementImageProvider(); fAdornmentProviders= adormentProviders; - - fImageFlags= imageFlags; - fTextFlags= textFlags; + + fFlags = flags; } /** @@ -172,21 +209,27 @@ public class CElementLabelProvider extends LabelProvider { fImageLabelProvider.dispose(); } } - - /** - * Sets the textFlags. - * @param textFlags The textFlags to set - */ - public void setTextFlags(int textFlags) { - fTextFlags= textFlags; + + private boolean getFlag(int flag) { + return (fFlags & flag) != 0; } /** - * Sets the imageFlags - * @param imageFlags The imageFlags to set + * Turns on the rendering options specified in the given flags. + * + * @param flags the options; a bitwise OR of SHOW_* constants */ - public void setImageFlags(int imageFlags) { - fImageFlags= imageFlags; + public void turnOn(int flags) { + fFlags |= flags; + } + + /** + * 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); } /** @@ -195,6 +238,13 @@ public class CElementLabelProvider extends LabelProvider { * @return Returns a int */ public int getImageFlags() { + fImageFlags = 0; + if (getFlag(SHOW_OVERLAY_ICONS)) { + fImageFlags |= CElementImageProvider.OVERLAY_ICONS; + } + if (getFlag(SHOW_SMALL_ICONS)) { + fImageFlags |= CElementImageProvider.SMALL_ICONS; + } return fImageFlags; } @@ -203,6 +253,16 @@ public class CElementLabelProvider extends LabelProvider { * @return Returns a int */ public int getTextFlags() { + fTextFlags = 0; + if (getFlag(SHOW_RETURN_TYPE)) { + fTextFlags |= CElementLabels.M_APP_RETURNTYPE; + } + if (getFlag(SHOW_PARAMETERS)) { + fTextFlags |= CElementLabels.M_PARAMETER_TYPES; + } + if (getFlag(SHOW_EXCEPTION)) { + fTextFlags |= CElementLabels.M_EXCEPTIONS; + } return fTextFlags; }