diff options
Diffstat (limited to 'bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport')
36 files changed, 0 insertions, 5769 deletions
diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/AppearanceAwareLabelProvider.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/AppearanceAwareLabelProvider.java deleted file mode 100644 index d091d2b8..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/AppearanceAwareLabelProvider.java +++ /dev/null @@ -1,120 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.jface.viewers.LabelProviderChangedEvent; -import org.eclipse.ui.IEditorRegistry; -import org.eclipse.ui.IPropertyListener; -import org.eclipse.ui.PlatformUI; -import org.eclipse.wst.jsdt.ui.JavaScriptElementLabels; -import org.eclipse.wst.jsdt.ui.PreferenceConstants; - -/** - * JavaUILabelProvider that respects settings from the Appearance preference page. - * Triggers a viewer update when a preference changes. - */ -public class AppearanceAwareLabelProvider extends JavaUILabelProvider implements IPropertyChangeListener, IPropertyListener { - - public final static long DEFAULT_TEXTFLAGS= JavaScriptElementLabels.ROOT_VARIABLE | JavaScriptElementLabels.T_TYPE_PARAMETERS | JavaScriptElementLabels.M_PARAMETER_NAMES | - JavaScriptElementLabels.M_APP_TYPE_PARAMETERS | JavaScriptElementLabels.M_APP_RETURNTYPE | JavaScriptElementLabels.REFERENCED_ROOT_POST_QUALIFIED; - public final static int DEFAULT_IMAGEFLAGS= JavaElementImageProvider.OVERLAY_ICONS; - - private long fTextFlagMask; - private int fImageFlagMask; - - /** - * Constructor for AppearanceAwareLabelProvider. - */ - public AppearanceAwareLabelProvider(long textFlags, int imageFlags) { - super(textFlags, imageFlags); - initMasks(); - PreferenceConstants.getPreferenceStore().addPropertyChangeListener(this); - PlatformUI.getWorkbench().getEditorRegistry().addPropertyListener(this); - } - - /** - * Creates a labelProvider with DEFAULT_TEXTFLAGS and DEFAULT_IMAGEFLAGS - */ - public AppearanceAwareLabelProvider() { - this(DEFAULT_TEXTFLAGS, DEFAULT_IMAGEFLAGS); - } - - private void initMasks() { - IPreferenceStore store= PreferenceConstants.getPreferenceStore(); - fTextFlagMask= -1; - if (!store.getBoolean(PreferenceConstants.APPEARANCE_METHOD_RETURNTYPE)) { - fTextFlagMask ^= JavaScriptElementLabels.M_APP_RETURNTYPE; - } - if (!store.getBoolean(PreferenceConstants.APPEARANCE_METHOD_TYPEPARAMETERS)) { - fTextFlagMask ^= JavaScriptElementLabels.M_APP_TYPE_PARAMETERS; - } - if (!store.getBoolean(PreferenceConstants.APPEARANCE_COMPRESS_PACKAGE_NAMES)) { - fTextFlagMask ^= JavaScriptElementLabels.P_COMPRESSED; - } - if (!store.getBoolean(PreferenceConstants.APPEARANCE_CATEGORY)) { - fTextFlagMask ^= JavaScriptElementLabels.ALL_CATEGORY; - } - - fImageFlagMask= -1; - } - - /* - * @see IPropertyChangeListener#propertyChange(PropertyChangeEvent) - */ - public void propertyChange(PropertyChangeEvent event) { - String property= event.getProperty(); - if (property.equals(PreferenceConstants.APPEARANCE_METHOD_RETURNTYPE) - || property.equals(PreferenceConstants.APPEARANCE_METHOD_TYPEPARAMETERS) - || property.equals(PreferenceConstants.APPEARANCE_CATEGORY) - || property.equals(PreferenceConstants.APPEARANCE_PKG_NAME_PATTERN_FOR_PKG_VIEW) - || property.equals(PreferenceConstants.APPEARANCE_COMPRESS_PACKAGE_NAMES)) { - initMasks(); - LabelProviderChangedEvent lpEvent= new LabelProviderChangedEvent(this, null); // refresh all - fireLabelProviderChanged(lpEvent); - } - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPropertyListener#propertyChanged(java.lang.Object, int) - */ - public void propertyChanged(Object source, int propId) { - if (propId == IEditorRegistry.PROP_CONTENTS) { - fireLabelProviderChanged(new LabelProviderChangedEvent(this, null)); // refresh all - } - } - - /* - * @see IBaseLabelProvider#dispose() - */ - public void dispose() { - PreferenceConstants.getPreferenceStore().removePropertyChangeListener(this); - PlatformUI.getWorkbench().getEditorRegistry().removePropertyListener(this); - super.dispose(); - } - - /* - * @see JavaUILabelProvider#evaluateImageFlags() - */ - protected int evaluateImageFlags(Object element) { - return getImageFlags() & fImageFlagMask; - } - - /* - * @see JavaUILabelProvider#evaluateTextFlags() - */ - protected long evaluateTextFlags(Object element) { - return getTextFlags() & fTextFlagMask; - } - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/BindingLabelProvider.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/BindingLabelProvider.java deleted file mode 100644 index ed06655c..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/BindingLabelProvider.java +++ /dev/null @@ -1,424 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2009 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Point; -import org.eclipse.wst.jsdt.core.dom.IBinding; -import org.eclipse.wst.jsdt.core.dom.IFunctionBinding; -import org.eclipse.wst.jsdt.core.dom.IPackageBinding; -import org.eclipse.wst.jsdt.core.dom.ITypeBinding; -import org.eclipse.wst.jsdt.core.dom.IVariableBinding; -import org.eclipse.wst.jsdt.core.dom.Modifier; -import org.eclipse.wst.jsdt.internal.corext.util.Messages; -import org.eclipse.wst.jsdt.internal.ui.JavaScriptPlugin; -import org.eclipse.wst.jsdt.internal.ui.JavaPluginImages; -import org.eclipse.wst.jsdt.internal.ui.JavaUIMessages; -import org.eclipse.wst.jsdt.ui.JavaScriptElementImageDescriptor; -import org.eclipse.wst.jsdt.ui.JavaScriptElementLabels; - -/** - * Label provider to render bindings in viewers. - * - * - */ -public class BindingLabelProvider extends LabelProvider { - - - private static int getAdornmentFlags(IBinding binding, int flags) { - int adornments= 0; - if (binding instanceof IFunctionBinding && ((IFunctionBinding) binding).isConstructor()) - adornments|= JavaScriptElementImageDescriptor.CONSTRUCTOR; - final int modifiers= binding.getModifiers(); - if (Modifier.isAbstract(modifiers)) - adornments|= JavaScriptElementImageDescriptor.ABSTRACT; - if (Modifier.isFinal(modifiers)) - adornments|= JavaScriptElementImageDescriptor.FINAL; - if (Modifier.isSynchronized(modifiers)) - adornments|= JavaScriptElementImageDescriptor.SYNCHRONIZED; - if (Modifier.isStatic(modifiers)) - adornments|= JavaScriptElementImageDescriptor.STATIC; - if (binding.isDeprecated()) - adornments|= JavaScriptElementImageDescriptor.DEPRECATED; - if (binding instanceof IVariableBinding && ((IVariableBinding) binding).isField()) { - if (Modifier.isTransient(modifiers)) - adornments|= JavaScriptElementImageDescriptor.TRANSIENT; - if (Modifier.isVolatile(modifiers)) - adornments|= JavaScriptElementImageDescriptor.VOLATILE; - } - return adornments; - } - - private static ImageDescriptor getBaseImageDescriptor(IBinding binding, int flags) { - if (binding instanceof ITypeBinding) { - ITypeBinding typeBinding= (ITypeBinding) binding; - if (typeBinding.isArray()) { - typeBinding= typeBinding.getElementType(); - } - return getTypeImageDescriptor(typeBinding.getDeclaringClass() != null, typeBinding, flags); - } else if (binding instanceof IFunctionBinding) { - return getMethodImageDescriptor(binding.getModifiers()); - } else if (binding instanceof IVariableBinding) - return getFieldImageDescriptor((IVariableBinding) binding); - return JavaPluginImages.DESC_OBJS_UNKNOWN; - } - - private static ImageDescriptor getClassImageDescriptor(int modifiers) { - if (Modifier.isPublic(modifiers) || Modifier.isProtected(modifiers) || Modifier.isPrivate(modifiers)) - return JavaPluginImages.DESC_OBJS_CLASS; - else - return JavaPluginImages.DESC_OBJS_CLASS_DEFAULT; - } - - private static ImageDescriptor getFieldImageDescriptor(IVariableBinding binding) { - final int modifiers= binding.getModifiers(); - if (Modifier.isPublic(modifiers)) - return JavaPluginImages.DESC_FIELD_PUBLIC; - if (Modifier.isProtected(modifiers)) - return JavaPluginImages.DESC_FIELD_PROTECTED; - if (Modifier.isPrivate(modifiers)) - return JavaPluginImages.DESC_FIELD_PRIVATE; - - return JavaPluginImages.DESC_FIELD_DEFAULT; - } - - private static void getFieldLabel(IVariableBinding binding, long flags, StringBuffer buffer) { - if (((flags & JavaScriptElementLabels.F_PRE_TYPE_SIGNATURE) != 0)) { - getTypeLabel(binding.getType(), (flags & JavaScriptElementLabels.T_TYPE_PARAMETERS), buffer); - buffer.append(' '); - } - // qualification - - if ((flags & JavaScriptElementLabels.F_FULLY_QUALIFIED) != 0) { - ITypeBinding declaringClass= binding.getDeclaringClass(); - if (declaringClass != null) { // test for array.length - getTypeLabel(declaringClass, JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & JavaScriptElementLabels.P_COMPRESSED), buffer); - buffer.append('.'); - } - } - buffer.append(binding.getName()); - if (((flags & JavaScriptElementLabels.F_APP_TYPE_SIGNATURE) != 0)) { - buffer.append(JavaScriptElementLabels.DECL_STRING); - getTypeLabel(binding.getType(), (flags & JavaScriptElementLabels.T_TYPE_PARAMETERS), buffer); - } - // post qualification - if ((flags & JavaScriptElementLabels.F_POST_QUALIFIED) != 0) { - ITypeBinding declaringClass= binding.getDeclaringClass(); - if (declaringClass != null) { // test for array.length - buffer.append(JavaScriptElementLabels.CONCAT_STRING); - getTypeLabel(declaringClass, JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & JavaScriptElementLabels.P_COMPRESSED), buffer); - } - } - } - - private static void getLocalVariableLabel(IVariableBinding binding, long flags, StringBuffer buffer) { - if (((flags & JavaScriptElementLabels.F_PRE_TYPE_SIGNATURE) != 0)) { - getTypeLabel(binding.getType(), (flags & JavaScriptElementLabels.T_TYPE_PARAMETERS), buffer); - buffer.append(' '); - } - if (((flags & JavaScriptElementLabels.F_FULLY_QUALIFIED) != 0)) { - IFunctionBinding declaringMethod= binding.getDeclaringMethod(); - if (declaringMethod != null) { - getMethodLabel(declaringMethod, flags, buffer); - buffer.append('.'); - } - } - buffer.append(binding.getName()); - if (((flags & JavaScriptElementLabels.F_APP_TYPE_SIGNATURE) != 0)) { - buffer.append(JavaScriptElementLabels.DECL_STRING); - getTypeLabel(binding.getType(), (flags & JavaScriptElementLabels.T_TYPE_PARAMETERS), buffer); - } - } - - private static ImageDescriptor getInnerClassImageDescriptor(int modifiers) { - if (Modifier.isPublic(modifiers)) - return JavaPluginImages.DESC_OBJS_INNER_CLASS_PUBLIC; - else if (Modifier.isPrivate(modifiers)) - return JavaPluginImages.DESC_OBJS_INNER_CLASS_PRIVATE; - else if (Modifier.isProtected(modifiers)) - return JavaPluginImages.DESC_OBJS_INNER_CLASS_PROTECTED; - else - return JavaPluginImages.DESC_OBJS_INNER_CLASS_DEFAULT; - } - -// private static ImageDescriptor getInnerInterfaceImageDescriptor(int modifiers) { -// if (Modifier.isPublic(modifiers)) -// return JavaPluginImages.DESC_OBJS_INNER_INTERFACE_PUBLIC; -// else if (Modifier.isPrivate(modifiers)) -// return JavaPluginImages.DESC_OBJS_INNER_INTERFACE_PRIVATE; -// else if (Modifier.isProtected(modifiers)) -// return JavaPluginImages.DESC_OBJS_INNER_INTERFACE_PROTECTED; -// else -// return JavaPluginImages.DESC_OBJS_INTERFACE_DEFAULT; -// } -// -// private static ImageDescriptor getInterfaceImageDescriptor(int modifiers) { -// if (Modifier.isPublic(modifiers) || Modifier.isProtected(modifiers) || Modifier.isPrivate(modifiers)) -// return JavaPluginImages.DESC_OBJS_INTERFACE; -// else -// return JavaPluginImages.DESC_OBJS_INTERFACE_DEFAULT; -// } - - private static ImageDescriptor getMethodImageDescriptor(int modifiers) { - if (Modifier.isPublic(modifiers)) - return JavaPluginImages.DESC_MISC_PUBLIC; - if (Modifier.isProtected(modifiers)) - return JavaPluginImages.DESC_MISC_PROTECTED; - if (Modifier.isPrivate(modifiers)) - return JavaPluginImages.DESC_MISC_PRIVATE; - - return JavaPluginImages.DESC_MISC_DEFAULT; - } - - private static void appendDimensions(int dim, StringBuffer buffer) { - for (int i=0 ; i < dim; i++) { - buffer.append('[').append(']'); - } - } - - - private static void getMethodLabel(IFunctionBinding binding, long flags, StringBuffer buffer) { - // return type - if (((flags & JavaScriptElementLabels.M_PRE_RETURNTYPE) != 0) && !binding.isConstructor()) { - getTypeLabel(binding.getReturnType(), (flags & JavaScriptElementLabels.T_TYPE_PARAMETERS), buffer); - buffer.append(' '); - } - // qualification - if ((flags & JavaScriptElementLabels.M_FULLY_QUALIFIED) != 0) { - getTypeLabel(binding.getDeclaringClass(), JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & JavaScriptElementLabels.P_COMPRESSED), buffer); - buffer.append('.'); - } - buffer.append(binding.getName()); - - // parameters - buffer.append('('); - if ((flags & JavaScriptElementLabels.M_PARAMETER_TYPES | JavaScriptElementLabels.M_PARAMETER_NAMES) != 0) { - ITypeBinding[] parameters= ((flags & JavaScriptElementLabels.M_PARAMETER_TYPES) != 0) ? binding.getParameterTypes() : null; - if (parameters != null) { - for (int index= 0; index < parameters.length; index++) { - if (index > 0) { - buffer.append(JavaScriptElementLabels.COMMA_STRING); - } - ITypeBinding paramType= parameters[index]; - if (binding.isVarargs() && (index == parameters.length - 1)) { - getTypeLabel(paramType.getElementType(), (flags & JavaScriptElementLabels.T_TYPE_PARAMETERS), buffer); - appendDimensions(paramType.getDimensions() - 1, buffer); - buffer.append(JavaScriptElementLabels.ELLIPSIS_STRING); - } else { - getTypeLabel(paramType, (flags & JavaScriptElementLabels.T_TYPE_PARAMETERS), buffer); - } - } - } - } else { - if (binding.getParameterTypes().length > 0) { - buffer.append(JavaScriptElementLabels.ELLIPSIS_STRING); - } - } - buffer.append(')'); - - if (((flags & JavaScriptElementLabels.M_APP_RETURNTYPE) != 0) && !binding.isConstructor()) { - buffer.append(JavaScriptElementLabels.DECL_STRING); - getTypeLabel(binding.getReturnType(), (flags & JavaScriptElementLabels.T_TYPE_PARAMETERS), buffer); - } - // post qualification - if ((flags & JavaScriptElementLabels.M_POST_QUALIFIED) != 0) { - buffer.append(JavaScriptElementLabels.CONCAT_STRING); - getTypeLabel(binding.getDeclaringClass(), JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & JavaScriptElementLabels.P_COMPRESSED), buffer); - } - } - - private static ImageDescriptor getTypeImageDescriptor(boolean inner, ITypeBinding binding, int flags) { - if (binding.isClass()) { - if ((flags & JavaElementImageProvider.LIGHT_TYPE_ICONS) != 0) - return JavaPluginImages.DESC_OBJS_CLASSALT; - if (inner) - return getInnerClassImageDescriptor(binding.getModifiers()); - return getClassImageDescriptor(binding.getModifiers()); - } - // primitive type, wildcard - return null; - } - - - private static void getTypeLabel(ITypeBinding binding, long flags, StringBuffer buffer) { - if ((flags & JavaScriptElementLabels.T_FULLY_QUALIFIED) != 0) { - final IPackageBinding pack= binding.getPackage(); - if (pack != null && !pack.isUnnamed()) { - buffer.append(pack.getName()); - buffer.append('.'); - } - } - if ((flags & (JavaScriptElementLabels.T_FULLY_QUALIFIED | JavaScriptElementLabels.T_CONTAINER_QUALIFIED)) != 0) { - final ITypeBinding declaring= binding.getDeclaringClass(); - if (declaring != null) { - getTypeLabel(declaring, JavaScriptElementLabels.T_CONTAINER_QUALIFIED | (flags & JavaScriptElementLabels.P_COMPRESSED), buffer); - buffer.append('.'); - } - final IFunctionBinding declaringMethod= binding.getDeclaringMethod(); - if (declaringMethod != null) { - getMethodLabel(declaringMethod, 0, buffer); - buffer.append('.'); - } - } - - if (binding.isArray()) { - getTypeLabel(binding.getElementType(), flags & JavaScriptElementLabels.T_TYPE_PARAMETERS, buffer); - appendDimensions(binding.getDimensions(), buffer); - } else { // type variables, primitive, reftype - String name= binding.getTypeDeclaration().getName(); - if (name.length() == 0) { - if (binding.isAnonymous()) { - ITypeBinding baseType= binding.getSuperclass(); - - if (baseType != null) { - StringBuffer anonymBaseType= new StringBuffer(); - getTypeLabel(baseType, flags & JavaScriptElementLabels.T_TYPE_PARAMETERS, anonymBaseType); - buffer.append(Messages.format(JavaUIMessages.JavaElementLabels_anonym_type, anonymBaseType.toString())); - } else { - buffer.append(JavaUIMessages.JavaElementLabels_anonym); - } - } else { - buffer.append("UNKNOWN"); //$NON-NLS-1$ - } - } else { - buffer.append(name); - } - } - - - if ((flags & JavaScriptElementLabels.T_POST_QUALIFIED) != 0) { - final IFunctionBinding declaringMethod= binding.getDeclaringMethod(); - final ITypeBinding declaringType= binding.getDeclaringClass(); - if (declaringMethod != null) { - buffer.append(JavaScriptElementLabels.CONCAT_STRING); - getMethodLabel(declaringMethod, JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & JavaScriptElementLabels.P_COMPRESSED), buffer); - } else if (declaringType != null) { - buffer.append(JavaScriptElementLabels.CONCAT_STRING); - getTypeLabel(declaringType, JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & JavaScriptElementLabels.P_COMPRESSED), buffer); - } else { - final IPackageBinding pack= binding.getPackage(); - if (pack != null && !pack.isUnnamed()) { - buffer.append(JavaScriptElementLabels.CONCAT_STRING); - buffer.append(pack.getName()); - } - } - } - } - -// private static void getTypeArgumentsLabel(ITypeBinding[] typeArgs, long flags, StringBuffer buf) { -// if (typeArgs.length > 0) { -// buf.append('<'); -// for (int i = 0; i < typeArgs.length; i++) { -// if (i > 0) { -// buf.append(JavaScriptElementLabels.COMMA_STRING); -// } -// getTypeLabel(typeArgs[i], flags & JavaScriptElementLabels.T_TYPE_PARAMETERS, buf); -// } -// buf.append('>'); -// } -// } - - /** - * Returns the label for a Java element with the flags as defined by {@link JavaScriptElementLabels}. - * @param binding The binding to render. - * @param flags The text flags as defined in {@link JavaScriptElementLabels} - * @return the label of the binding - */ - public static String getBindingLabel(IBinding binding, long flags) { - StringBuffer buffer= new StringBuffer(60); - if (binding instanceof ITypeBinding) { - getTypeLabel(((ITypeBinding) binding), flags, buffer); - } else if (binding instanceof IFunctionBinding) { - getMethodLabel(((IFunctionBinding) binding), flags, buffer); - } else if (binding instanceof IVariableBinding) { - final IVariableBinding variable= (IVariableBinding) binding; - if (variable.isField()) - getFieldLabel(variable, flags, buffer); - else - getLocalVariableLabel(variable, flags, buffer); - } - return buffer.toString(); - } - - /** - * Returns the image descriptor for a binding with the flags as defined by {@link JavaElementImageProvider}. - * @param binding The binding to get the image for. - * @param imageFlags The image flags as defined in {@link JavaElementImageProvider}. - * @return the image of the binding or null if there is no image - */ - public static ImageDescriptor getBindingImageDescriptor(IBinding binding, int imageFlags) { - ImageDescriptor baseImage= getBaseImageDescriptor(binding, imageFlags); - if (baseImage != null) { - int adornmentFlags= getAdornmentFlags(binding, imageFlags); - Point size= ((imageFlags & JavaElementImageProvider.SMALL_ICONS) != 0) ? JavaElementImageProvider.SMALL_SIZE : JavaElementImageProvider.BIG_SIZE; - return new JavaScriptElementImageDescriptor(baseImage, adornmentFlags, size); - } - return null; - } - - - public static final long DEFAULT_TEXTFLAGS= JavaScriptElementLabels.ALL_DEFAULT; - public static final int DEFAULT_IMAGEFLAGS= JavaElementImageProvider.OVERLAY_ICONS; - - - final private long fTextFlags; - final private int fImageFlags; - - private ImageDescriptorRegistry fRegistry; - - /** - * Creates a new binding label provider with default text and image flags - */ - public BindingLabelProvider() { - this(DEFAULT_TEXTFLAGS, DEFAULT_IMAGEFLAGS); - } - - /** - * @param textFlags Flags defined in {@link JavaScriptElementLabels}. - * @param imageFlags Flags defined in {@link JavaElementImageProvider}. - */ - public BindingLabelProvider(final long textFlags, final int imageFlags) { - fImageFlags= imageFlags; - fTextFlags= textFlags; - fRegistry= null; - } - - /* - * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object) - */ - public Image getImage(Object element) { - if (element instanceof IBinding) { - ImageDescriptor baseImage= getBindingImageDescriptor((IBinding) element, fImageFlags); - if (baseImage != null) { - return getRegistry().get(baseImage); - } - } - return super.getImage(element); - } - - private ImageDescriptorRegistry getRegistry() { - if (fRegistry == null) - fRegistry= JavaScriptPlugin.getImageDescriptorRegistry(); - return fRegistry; - } - - /* - * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object) - */ - public String getText(Object element) { - if (element instanceof IBinding) { - return getBindingLabel((IBinding) element, fTextFlags); - } - return super.getText(element); - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ColoredJavaElementLabels.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ColoredJavaElementLabels.java deleted file mode 100644 index 9ee81d55..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ColoredJavaElementLabels.java +++ /dev/null @@ -1,895 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2009 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.IPath; -import org.eclipse.wst.jsdt.core.BindingKey; -import org.eclipse.wst.jsdt.core.Flags; -import org.eclipse.wst.jsdt.core.IClassFile; -import org.eclipse.wst.jsdt.core.IField; -import org.eclipse.wst.jsdt.core.IFunction; -import org.eclipse.wst.jsdt.core.IIncludePathEntry; -import org.eclipse.wst.jsdt.core.IInitializer; -import org.eclipse.wst.jsdt.core.IJavaScriptElement; -import org.eclipse.wst.jsdt.core.IJavaScriptProject; -import org.eclipse.wst.jsdt.core.IJavaScriptUnit; -import org.eclipse.wst.jsdt.core.IJsGlobalScopeContainer; -import org.eclipse.wst.jsdt.core.ILocalVariable; -import org.eclipse.wst.jsdt.core.IMember; -import org.eclipse.wst.jsdt.core.IPackageFragment; -import org.eclipse.wst.jsdt.core.IPackageFragmentRoot; -import org.eclipse.wst.jsdt.core.IType; -import org.eclipse.wst.jsdt.core.JavaScriptCore; -import org.eclipse.wst.jsdt.core.JavaScriptModelException; -import org.eclipse.wst.jsdt.core.JsGlobalScopeContainerInitializer; -import org.eclipse.wst.jsdt.core.Signature; -import org.eclipse.wst.jsdt.internal.corext.util.JavaModelUtil; -import org.eclipse.wst.jsdt.internal.corext.util.Messages; -import org.eclipse.wst.jsdt.internal.ui.JavaScriptPlugin; -import org.eclipse.wst.jsdt.internal.ui.JavaUIMessages; -import org.eclipse.wst.jsdt.internal.ui.packageview.JsGlobalScopeContainer; -import org.eclipse.wst.jsdt.internal.ui.viewsupport.ColoredString.Style; -import org.eclipse.wst.jsdt.launching.JavaRuntime; -import org.eclipse.wst.jsdt.ui.JavaScriptElementLabels; - -public class ColoredJavaElementLabels { - - public static final Style QUALIFIER_STYLE= new Style(ColoredViewersManager.QUALIFIER_COLOR_NAME); - public static final Style COUNTER_STYLE= new Style(ColoredViewersManager.COUNTER_COLOR_NAME); - public static final Style DECORATIONS_STYLE= new Style(ColoredViewersManager.DECORATIONS_COLOR_NAME); - - private static final Style APPENDED_TYPE_STYLE= DECORATIONS_STYLE; - - public final static long COLORIZE= 1L << 55; - - private final static long QUALIFIER_FLAGS= JavaScriptElementLabels.P_COMPRESSED | JavaScriptElementLabels.USE_RESOLVED; - - - private static final boolean getFlag(long flags, long flag) { - return (flags & flag) != 0; - } - - /** - * Returns the label of the given object. The object must be of type {@link IJavaScriptElement} or adapt to {@link org.eclipse.ui.model.IWorkbenchAdapter}. The empty string is returned - * if the element type is not known. - * @param obj Object to get the label from. - * @param flags The rendering flags - * @return Returns the label or the empty string if the object type is not supported. - */ - public static ColoredString getTextLabel(Object obj, long flags) { - if (obj instanceof IJavaScriptElement) { - return getElementLabel((IJavaScriptElement) obj, flags); - } else if (obj instanceof IResource) { - return new ColoredString(((IResource) obj).getName()); - } else if (obj instanceof JsGlobalScopeContainer) { - JsGlobalScopeContainer container= (JsGlobalScopeContainer) obj; - return getContainerEntryLabel(container.getClasspathEntry().getPath(), container.getJavaProject()); - } - return new ColoredString(JavaScriptElementLabels.getTextLabel(obj, flags)); - } - - /** - * Returns the label for a Java element with the flags as defined by this class. - * @param element The element to render. - * @param flags The rendering flags. - * @return the label of the Java element - */ - public static ColoredString getElementLabel(IJavaScriptElement element, long flags) { - ColoredString result= new ColoredString(); - getElementLabel(element, flags, result); - return result; - } - - /** - * Returns the label for a Java element with the flags as defined by this class. - * @param element The element to render. - * @param flags The rendering flags. - * @param result The buffer to append the resulting label to. - */ - public static void getElementLabel(IJavaScriptElement element, long flags, ColoredString result) { - int type= element.getElementType(); - IPackageFragmentRoot root= null; - - if (type != IJavaScriptElement.JAVASCRIPT_MODEL && type != IJavaScriptElement.JAVASCRIPT_PROJECT && type != IJavaScriptElement.PACKAGE_FRAGMENT_ROOT) - root= JavaModelUtil.getPackageFragmentRoot(element); - if (root != null && getFlag(flags, JavaScriptElementLabels.PREPEND_ROOT_PATH)) { - getPackageFragmentRootLabel(root, JavaScriptElementLabels.ROOT_QUALIFIED, result); - result.append(JavaScriptElementLabels.CONCAT_STRING); - } - - switch (type) { - case IJavaScriptElement.METHOD: - getMethodLabel((IFunction) element, flags, result); - break; - case IJavaScriptElement.FIELD: - getFieldLabel((IField) element, flags, result); - break; - case IJavaScriptElement.LOCAL_VARIABLE: - getLocalVariableLabel((ILocalVariable) element, flags, result); - break; - case IJavaScriptElement.INITIALIZER: - getInitializerLabel((IInitializer) element, flags, result); - break; - case IJavaScriptElement.TYPE: - getTypeLabel((IType) element, flags, result); - break; - case IJavaScriptElement.CLASS_FILE: - getClassFileLabel((IClassFile) element, flags, result); - break; - case IJavaScriptElement.JAVASCRIPT_UNIT: - getCompilationUnitLabel((IJavaScriptUnit) element, flags, result); - break; - case IJavaScriptElement.PACKAGE_FRAGMENT: - getPackageFragmentLabel((IPackageFragment) element, flags, result); - break; - case IJavaScriptElement.PACKAGE_FRAGMENT_ROOT: - getPackageFragmentRootLabel((IPackageFragmentRoot) element, flags, result); - break; - case IJavaScriptElement.IMPORT_CONTAINER: - case IJavaScriptElement.IMPORT_DECLARATION: - getDeclarationLabel(element, flags, result); - break; - case IJavaScriptElement.JAVASCRIPT_PROJECT: - case IJavaScriptElement.JAVASCRIPT_MODEL: - result.append(element.getElementName()); - break; - default: - result.append(element.getElementName()); - } - - if (root != null && getFlag(flags, JavaScriptElementLabels.APPEND_ROOT_PATH)) { - int offset= result.length(); - result.append(JavaScriptElementLabels.CONCAT_STRING); - getPackageFragmentRootLabel(root, JavaScriptElementLabels.ROOT_QUALIFIED, result); - - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, QUALIFIER_STYLE); - } - - } - } - - /** - * Appends the label for a method to a {@link ColoredString}. Considers the M_* flags. - * @param method The element to render. - * @param flags The rendering flags. Flags with names starting with 'M_' are considered. - * @param result The buffer to append the resulting label to. - */ - public static void getMethodLabel(IFunction method, long flags, ColoredString result) { - try { - BindingKey resolvedKey= getFlag(flags, JavaScriptElementLabels.USE_RESOLVED) && method.isResolved() ? new BindingKey(method.getKey()) : null; - String resolvedSig= (resolvedKey != null) ? resolvedKey.toSignature() : null; - - // return type - if (getFlag(flags, JavaScriptElementLabels.M_PRE_RETURNTYPE) && method.exists() && !method.isConstructor()) { - String returnTypeSig= resolvedSig != null ? Signature.getReturnType(resolvedSig) : method.getReturnType(); - getTypeSignatureLabel(returnTypeSig, flags, result); - result.append(' '); - } - - // qualification - if (getFlag(flags, JavaScriptElementLabels.M_FULLY_QUALIFIED)) { - getTypeLabel(method.getDeclaringType(), JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS), result); - result.append('.'); - } - - result.append(method.getElementName()); - - // parameters - result.append('('); - if (getFlag(flags, JavaScriptElementLabels.M_PARAMETER_TYPES | JavaScriptElementLabels.M_PARAMETER_NAMES)) { - String[] types= null; - int nParams= 0; - boolean renderVarargs= false; - if (getFlag(flags, JavaScriptElementLabels.M_PARAMETER_TYPES)) { - if (resolvedSig != null) { - types= Signature.getParameterTypes(resolvedSig); - } else { - types= method.getParameterTypes(); - } - nParams= types.length; - renderVarargs= method.exists() && Flags.isVarargs(method.getFlags()); - } - String[] names= null; - if (getFlag(flags, JavaScriptElementLabels.M_PARAMETER_NAMES) && method.exists()) { - names= method.getParameterNames(); - if (types == null) { - nParams= names.length; - } else { // types != null - if (nParams != names.length) { - if (resolvedSig != null && types.length > names.length) { - // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=99137 - nParams= names.length; - String[] typesWithoutSyntheticParams= new String[nParams]; - System.arraycopy(types, types.length - nParams, typesWithoutSyntheticParams, 0, nParams); - types= typesWithoutSyntheticParams; - } else { - // https://bugs.eclipse.org/bugs/show_bug.cgi?id=101029 - // JavaScriptPlugin.logErrorMessage("JavaScriptElementLabels: Number of param types(" + nParams + ") != number of names(" + names.length + "): " + method.getElementName()); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ - names= null; // no names rendered - } - } - } - } - - for (int i= 0; i < nParams; i++) { - if (i > 0) { - result.append(JavaScriptElementLabels.COMMA_STRING); - } - if (types != null) { - String paramSig= types[i]; - if (renderVarargs && (i == nParams - 1)) { - int newDim= Signature.getArrayCount(paramSig) - 1; - getTypeSignatureLabel(Signature.getElementType(paramSig), flags, result); - for (int k= 0; k < newDim; k++) { - result.append('[').append(']'); - } - result.append(JavaScriptElementLabels.ELLIPSIS_STRING); - } else { - getTypeSignatureLabel(paramSig, flags, result); - } - } - if (names != null) { - if (types != null) { - result.append(' '); - } - result.append(names[i]); - } - } - } else { - if (method.getParameterTypes().length > 0) { - result.append(JavaScriptElementLabels.ELLIPSIS_STRING); - } - } - result.append(')'); - - if (getFlag(flags, JavaScriptElementLabels.M_EXCEPTIONS)) { - String[] types; - if (resolvedKey != null) { - //types= resolvedKey.getThrownExceptions(); - types = new String[0]; - } else { - types= new String[0]; - } - if (types.length > 0) { - result.append(" throws "); //$NON-NLS-1$ - for (int i= 0; i < types.length; i++) { - if (i > 0) { - result.append(JavaScriptElementLabels.COMMA_STRING); - } - getTypeSignatureLabel(types[i], flags, result); - } - } - } - - if (getFlag(flags, JavaScriptElementLabels.M_APP_TYPE_PARAMETERS)) { - int offset= result.length(); - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, APPENDED_TYPE_STYLE); - } - } - - if (getFlag(flags, JavaScriptElementLabels.M_APP_RETURNTYPE) && method.exists() && !method.isConstructor()) { - int offset= result.length(); - result.append(JavaScriptElementLabels.DECL_STRING); - String returnTypeSig= resolvedSig != null ? Signature.getReturnType(resolvedSig) : method.getReturnType(); - getTypeSignatureLabel(returnTypeSig, flags, result); - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, APPENDED_TYPE_STYLE); - } - } - - // category - if (getFlag(flags, JavaScriptElementLabels.M_CATEGORY) && method.exists()) - getCategoryLabel(method, result); - - // post qualification - if (getFlag(flags, JavaScriptElementLabels.M_POST_QUALIFIED)) { - int offset= result.length(); - result.append(JavaScriptElementLabels.CONCAT_STRING); - if (method.getDeclaringType()!=null) - getTypeLabel(method.getDeclaringType(), JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS), result); - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, QUALIFIER_STYLE); - } - } - - } catch (JavaScriptModelException e) { - JavaScriptPlugin.log(e); // NotExistsException will not reach this point - } - } - - private static void getCategoryLabel(IMember member, ColoredString result) throws JavaScriptModelException { - String[] categories= member.getCategories(); - if (categories.length > 0) { - ColoredString categoriesBuf= new ColoredString(); - for (int i= 0; i < categories.length; i++) { - if (i > 0) - categoriesBuf.append(JavaUIMessages.JavaElementLabels_category_separator_string); - categoriesBuf.append(categories[i]); - } - result.append(JavaScriptElementLabels.CONCAT_STRING); - result.append(Messages.format(JavaUIMessages.JavaElementLabels_category , categoriesBuf.toString())); - } - } - - /** - * Appends the label for a field to a {@link ColoredString}. Considers the F_* flags. - * @param field The element to render. - * @param flags The rendering flags. Flags with names starting with 'F_' are considered. - * @param result The buffer to append the resulting label to. - */ - public static void getFieldLabel(IField field, long flags, ColoredString result) { - try { - - if (getFlag(flags, JavaScriptElementLabels.F_PRE_TYPE_SIGNATURE) && field.exists()) { - if (getFlag(flags, JavaScriptElementLabels.USE_RESOLVED) && field.isResolved()) { - getTypeSignatureLabel(new BindingKey(field.getKey()).toSignature(), flags, result); - } else { - getTypeSignatureLabel(field.getTypeSignature(), flags, result); - } - result.append(' '); - } - - // qualification - if (getFlag(flags, JavaScriptElementLabels.F_FULLY_QUALIFIED)) { - getTypeLabel(field.getDeclaringType(), JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS), result); - result.append('.'); - } - result.append(field.getElementName()); - - if (getFlag(flags, JavaScriptElementLabels.F_APP_TYPE_SIGNATURE) && field.exists()) { - int offset= result.length(); - result.append(JavaScriptElementLabels.DECL_STRING); - if (getFlag(flags, JavaScriptElementLabels.USE_RESOLVED) && field.isResolved()) { - getTypeSignatureLabel(new BindingKey(field.getKey()).toSignature(), flags, result); - } else { - getTypeSignatureLabel(field.getTypeSignature(), flags, result); - } - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, APPENDED_TYPE_STYLE); - } - } - - // category - if (getFlag(flags, JavaScriptElementLabels.F_CATEGORY) && field.exists()) - getCategoryLabel(field, result); - - // post qualification - if (getFlag(flags, JavaScriptElementLabels.F_POST_QUALIFIED)) { - int offset= result.length(); - result.append(JavaScriptElementLabels.CONCAT_STRING); - getTypeLabel(field.getDeclaringType(), JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS), result); - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, QUALIFIER_STYLE); - } - } - - } catch (JavaScriptModelException e) { - JavaScriptPlugin.log(e); // NotExistsException will not reach this point - } - } - - /** - * Appends the label for a local variable to a {@link ColoredString}. - * @param localVariable The element to render. - * @param flags The rendering flags. Flags with names starting with 'F_' are considered. - * @param result The buffer to append the resulting label to. - */ - public static void getLocalVariableLabel(ILocalVariable localVariable, long flags, ColoredString result) { - if (getFlag(flags, JavaScriptElementLabels.F_PRE_TYPE_SIGNATURE)) { - getTypeSignatureLabel(localVariable.getTypeSignature(), flags, result); - result.append(' '); - } - - if (getFlag(flags, JavaScriptElementLabels.F_FULLY_QUALIFIED)) { - getElementLabel(localVariable.getParent(), JavaScriptElementLabels.M_PARAMETER_TYPES | JavaScriptElementLabels.M_FULLY_QUALIFIED | JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS), result); - result.append('.'); - } - - result.append(localVariable.getElementName()); - - if (getFlag(flags, JavaScriptElementLabels.F_APP_TYPE_SIGNATURE)) { - int offset= result.length(); - result.append(JavaScriptElementLabels.DECL_STRING); - getTypeSignatureLabel(localVariable.getTypeSignature(), flags, result); - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, APPENDED_TYPE_STYLE); - } - } - - // post qualification - if (getFlag(flags, JavaScriptElementLabels.F_POST_QUALIFIED)) { - result.append(JavaScriptElementLabels.CONCAT_STRING); - getElementLabel(localVariable.getParent(), JavaScriptElementLabels.M_PARAMETER_TYPES | JavaScriptElementLabels.M_FULLY_QUALIFIED | JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS), result); - } - } - - /** - * Appends the label for a initializer to a {@link ColoredString}. Considers the I_* flags. - * @param initializer The element to render. - * @param flags The rendering flags. Flags with names starting with 'I_' are considered. - * @param result The buffer to append the resulting label to. - */ - public static void getInitializerLabel(IInitializer initializer, long flags, ColoredString result) { - // qualification - if (getFlag(flags, JavaScriptElementLabels.I_FULLY_QUALIFIED)) { - getTypeLabel(initializer.getDeclaringType(), JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS), result); - result.append('.'); - } - result.append(JavaUIMessages.JavaElementLabels_initializer); - - // post qualification - if (getFlag(flags, JavaScriptElementLabels.I_POST_QUALIFIED)) { - int offset= result.length(); - result.append(JavaScriptElementLabels.CONCAT_STRING); - getTypeLabel(initializer.getDeclaringType(), JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS), result); - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, QUALIFIER_STYLE); - } - } - } - - private static void getTypeSignatureLabel(String typeSig, long flags, ColoredString result) { - int sigKind= Signature.getTypeSignatureKind(typeSig); - switch (sigKind) { - case Signature.BASE_TYPE_SIGNATURE: - result.append(Signature.toString(typeSig)); - break; - case Signature.ARRAY_TYPE_SIGNATURE: - getTypeSignatureLabel(Signature.getElementType(typeSig), flags, result); - for (int dim= Signature.getArrayCount(typeSig); dim > 0; dim--) { - result.append('[').append(']'); - } - break; - case Signature.CLASS_TYPE_SIGNATURE: - String baseType= Signature.toString(typeSig); - result.append(Signature.getSimpleName(baseType)); - - getTypeArgumentSignaturesLabel(new String[0], flags, result); - break; - default: - // unknown - } - } - - private static void getTypeArgumentSignaturesLabel(String[] typeArgsSig, long flags, ColoredString result) { - if (typeArgsSig.length > 0) { - result.append('<'); - for (int i = 0; i < typeArgsSig.length; i++) { - if (i > 0) { - result.append(JavaScriptElementLabels.COMMA_STRING); - } - getTypeSignatureLabel(typeArgsSig[i], flags, result); - } - result.append('>'); - } - } - - private static void getTypeParameterSignaturesLabel(String[] typeParamSigs, long flags, ColoredString result) { - if (typeParamSigs.length > 0) { - result.append('<'); - for (int i = 0; i < typeParamSigs.length; i++) { - if (i > 0) { - result.append(JavaScriptElementLabels.COMMA_STRING); - } - result.append(Signature.getTypeVariable(typeParamSigs[i])); - } - result.append('>'); - } - } - - - /** - * Appends the label for a type to a {@link ColoredString}. Considers the T_* flags. - * @param type The element to render. - * @param flags The rendering flags. Flags with names starting with 'T_' are considered. - * @param result The buffer to append the resulting label to. - */ - public static void getTypeLabel(IType type, long flags, ColoredString result) { - - if (getFlag(flags, JavaScriptElementLabels.T_FULLY_QUALIFIED)) { - IPackageFragment pack= type.getPackageFragment(); - if (!pack.isDefaultPackage()) { - getPackageFragmentLabel(pack, (flags & QUALIFIER_FLAGS), result); - result.append('.'); - } - } - if (getFlag(flags, JavaScriptElementLabels.T_FULLY_QUALIFIED | JavaScriptElementLabels.T_CONTAINER_QUALIFIED)) { - IType declaringType= type.getDeclaringType(); - if (declaringType != null) { - getTypeLabel(declaringType, JavaScriptElementLabels.T_CONTAINER_QUALIFIED | (flags & QUALIFIER_FLAGS), result); - result.append('.'); - } - int parentType= type.getParent().getElementType(); - if (parentType == IJavaScriptElement.METHOD || parentType == IJavaScriptElement.FIELD || parentType == IJavaScriptElement.INITIALIZER) { // anonymous or local - getElementLabel(type.getParent(), 0, result); - result.append('.'); - } - } - - String typeName= type.getElementName(); - if (typeName.length() == 0) { // anonymous - try { - String supertypeName= Signature.getSimpleName(type.getSuperclassName()); - - typeName= Messages.format(JavaUIMessages.JavaElementLabels_anonym_type , supertypeName); - - } catch (JavaScriptModelException e) { - //ignore - typeName= JavaUIMessages.JavaElementLabels_anonym; - } - } - result.append(typeName); - if (getFlag(flags, JavaScriptElementLabels.T_TYPE_PARAMETERS)) { - if (getFlag(flags, JavaScriptElementLabels.USE_RESOLVED) && type.isResolved()) { - BindingKey key= new BindingKey(type.getKey()); - getTypeParameterSignaturesLabel(new String[0], flags, result); - } - } - - // category - if (getFlag(flags, JavaScriptElementLabels.T_CATEGORY) && type.exists()) { - try { - getCategoryLabel(type, result); - } catch (JavaScriptModelException e) { - // ignore - } - } - - // post qualification - if (getFlag(flags, JavaScriptElementLabels.T_POST_QUALIFIED)) { - int offset= result.length(); - result.append(JavaScriptElementLabels.CONCAT_STRING); - IType declaringType= type.getDeclaringType(); - if (declaringType != null) { - getTypeLabel(declaringType, JavaScriptElementLabels.T_FULLY_QUALIFIED | (flags & QUALIFIER_FLAGS), result); - int parentType= type.getParent().getElementType(); - if (parentType == IJavaScriptElement.METHOD || parentType == IJavaScriptElement.FIELD || parentType == IJavaScriptElement.INITIALIZER) { // anonymous or local - result.append('.'); - getElementLabel(type.getParent(), 0, result); - } - } else { - getPackageFragmentLabel(type.getPackageFragment(), flags & QUALIFIER_FLAGS, result); - } - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, QUALIFIER_STYLE); - } - } - } - - /** - * Appends the label for a import container, import or package declaration to a {@link ColoredString}. Considers the D_* flags. - * @param declaration The element to render. - * @param flags The rendering flags. Flags with names starting with 'D_' are considered. - * @param result The buffer to append the resulting label to. - */ - public static void getDeclarationLabel(IJavaScriptElement declaration, long flags, ColoredString result) { - if (getFlag(flags, JavaScriptElementLabels.D_QUALIFIED)) { - IJavaScriptElement openable= (IJavaScriptElement) declaration.getOpenable(); - if (openable != null) { - result.append(getElementLabel(openable, JavaScriptElementLabels.CF_QUALIFIED | JavaScriptElementLabels.CU_QUALIFIED | (flags & QUALIFIER_FLAGS))); - result.append('/'); - } - } - if (declaration.getElementType() == IJavaScriptElement.IMPORT_CONTAINER) { - result.append(JavaUIMessages.JavaElementLabels_import_container); - } else { - result.append(declaration.getElementName()); - } - // post qualification - if (getFlag(flags, JavaScriptElementLabels.D_POST_QUALIFIED)) { - int offset= result.length(); - IJavaScriptElement openable= (IJavaScriptElement) declaration.getOpenable(); - if (openable != null) { - result.append(JavaScriptElementLabels.CONCAT_STRING); - result.append(getElementLabel(openable, JavaScriptElementLabels.CF_QUALIFIED | JavaScriptElementLabels.CU_QUALIFIED | (flags & QUALIFIER_FLAGS))); - } - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, QUALIFIER_STYLE); - } - } - } - - /** - * Appends the label for a class file to a {@link ColoredString}. Considers the CF_* flags. - * @param classFile The element to render. - * @param flags The rendering flags. Flags with names starting with 'CF_' are considered. - * @param result The buffer to append the resulting label to. - */ - public static void getClassFileLabel(IClassFile classFile, long flags, ColoredString result) { - if (getFlag(flags, JavaScriptElementLabels.CF_QUALIFIED)) { - IPackageFragment pack= (IPackageFragment) classFile.getParent(); - if (!pack.isDefaultPackage()) { - getPackageFragmentLabel(pack, (flags & QUALIFIER_FLAGS), result); - result.append('.'); - } - } - result.append(classFile.getElementName()); - - if (getFlag(flags, JavaScriptElementLabels.CF_POST_QUALIFIED)) { - int offset= result.length(); - result.append(JavaScriptElementLabels.CONCAT_STRING); - getPackageFragmentLabel((IPackageFragment) classFile.getParent(), flags & QUALIFIER_FLAGS, result); - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, QUALIFIER_STYLE); - } - } - } - - /** - * Appends the label for a compilation unit to a {@link ColoredString}. Considers the CU_* flags. - * @param cu The element to render. - * @param flags The rendering flags. Flags with names starting with 'CU_' are considered. - * @param result The buffer to append the resulting label to. - */ - public static void getCompilationUnitLabel(IJavaScriptUnit cu, long flags, ColoredString result) { - if (getFlag(flags, JavaScriptElementLabels.CU_QUALIFIED)) { - IPackageFragment pack= (IPackageFragment) cu.getParent(); - if (!pack.isDefaultPackage()) { - getPackageFragmentLabel(pack, (flags & QUALIFIER_FLAGS), result); - result.append('.'); - } - } - result.append(cu.getElementName()); - - if (getFlag(flags, JavaScriptElementLabels.CU_POST_QUALIFIED)) { - int offset= result.length(); - result.append(JavaScriptElementLabels.CONCAT_STRING); - getPackageFragmentLabel((IPackageFragment) cu.getParent(), flags & QUALIFIER_FLAGS, result); - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, QUALIFIER_STYLE); - } - } - } - - /** - * Appends the label for a package fragment to a {@link ColoredString}. Considers the P_* flags. - * @param pack The element to render. - * @param flags The rendering flags. Flags with names starting with P_' are considered. - * @param result The buffer to append the resulting label to. - */ - public static void getPackageFragmentLabel(IPackageFragment pack, long flags, ColoredString result) { - if (getFlag(flags, JavaScriptElementLabels.P_QUALIFIED)) { - getPackageFragmentRootLabel((IPackageFragmentRoot) pack.getParent(), JavaScriptElementLabels.ROOT_QUALIFIED, result); - result.append('/'); - } - if (pack.isDefaultPackage()) { - result.append(JavaScriptElementLabels.DEFAULT_PACKAGE); - } else if (getFlag(flags, JavaScriptElementLabels.P_COMPRESSED)) { - StringBuffer buf= new StringBuffer(); - JavaScriptElementLabels.getPackageFragmentLabel(pack, JavaScriptElementLabels.P_COMPRESSED, buf); - result.append(buf.toString()); - } else { - result.append(pack.getElementName()); - } - if (getFlag(flags, JavaScriptElementLabels.P_POST_QUALIFIED)) { - int offset= result.length(); - result.append(JavaScriptElementLabels.CONCAT_STRING); - getPackageFragmentRootLabel((IPackageFragmentRoot) pack.getParent(), JavaScriptElementLabels.ROOT_QUALIFIED, result); - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, QUALIFIER_STYLE); - } - } - } - - /** - * Appends the label for a package fragment root to a {@link ColoredString}. Considers the ROOT_* flags. - * @param root The element to render. - * @param flags The rendering flags. Flags with names starting with ROOT_' are considered. - * @param result The buffer to append the resulting label to. - */ - public static void getPackageFragmentRootLabel(IPackageFragmentRoot root, long flags, ColoredString result) { - if (root.isArchive()) - getArchiveLabel(root, flags, result); - else - getFolderLabel(root, flags, result); - } - - private static void getArchiveLabel(IPackageFragmentRoot root, long flags, ColoredString result) { - // Handle variables different - if (getFlag(flags, JavaScriptElementLabels.ROOT_VARIABLE) && getVariableLabel(root, flags, result)) - return; - boolean external= root.isExternal(); - if (external) - getExternalArchiveLabel(root, flags, result); - else - getInternalArchiveLabel(root, flags, result); - } - - private static boolean getVariableLabel(IPackageFragmentRoot root, long flags, ColoredString result) { - try { - IIncludePathEntry rawEntry= root.getRawIncludepathEntry(); - if (rawEntry != null && rawEntry.getEntryKind() == IIncludePathEntry.CPE_VARIABLE) { - IPath path= rawEntry.getPath().makeRelative(); - int offset= result.length(); - if (getFlag(flags, JavaScriptElementLabels.REFERENCED_ROOT_POST_QUALIFIED)) { - int segements= path.segmentCount(); - if (segements > 0) { - result.append(path.segment(segements - 1)); - if (segements > 1) { - result.append(JavaScriptElementLabels.CONCAT_STRING); - result.append(path.removeLastSegments(1).toOSString()); - } - } else { - result.append(path.toString()); - } - } else { - result.append(path.toString()); - } - result.append(JavaScriptElementLabels.CONCAT_STRING); - if (root.isExternal()) - result.append(root.getPath().toOSString()); - else - result.append(root.getPath().makeRelative().toString()); - - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, QUALIFIER_STYLE); - } - return true; - } - } catch (JavaScriptModelException e) { - JavaScriptPlugin.log(e); // problems with class path - } - return false; - } - - private static void getExternalArchiveLabel(IPackageFragmentRoot root, long flags, ColoredString result) { - IPath path= root.getPath(); - if (getFlag(flags, JavaScriptElementLabels.REFERENCED_ROOT_POST_QUALIFIED)) { - int segements= path.segmentCount(); - if (segements > 0) { - result.append(path.segment(segements - 1)); - int offset= result.length(); - if (segements > 1 || path.getDevice() != null) { - result.append(JavaScriptElementLabels.CONCAT_STRING); - result.append(path.removeLastSegments(1).toOSString()); - } - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, QUALIFIER_STYLE); - } - } else { - result.append(path.toOSString()); - } - } else { - result.append(path.toOSString()); - } - } - - private static void getInternalArchiveLabel(IPackageFragmentRoot root, long flags, ColoredString result) { - IResource resource= root.getResource(); - boolean rootQualified= getFlag(flags, JavaScriptElementLabels.ROOT_QUALIFIED); - boolean referencedQualified= getFlag(flags, JavaScriptElementLabels.REFERENCED_ROOT_POST_QUALIFIED) && isReferenced(root); - if (rootQualified) { - result.append(root.getPath().makeRelative().toString()); - } else { - result.append(root.getElementName()); - int offset= result.length(); - if (referencedQualified) { - result.append(JavaScriptElementLabels.CONCAT_STRING); - result.append(resource.getParent().getFullPath().makeRelative().toString()); - } else if (getFlag(flags, JavaScriptElementLabels.ROOT_POST_QUALIFIED)) { - result.append(JavaScriptElementLabels.CONCAT_STRING); - result.append(root.getParent().getPath().makeRelative().toString()); - } else { - return; - } - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, QUALIFIER_STYLE); - } - } - } - - private static void getFolderLabel(IPackageFragmentRoot root, long flags, ColoredString result) { - IResource resource= root.getResource(); - boolean rootQualified= getFlag(flags, JavaScriptElementLabels.ROOT_QUALIFIED); - boolean referencedQualified= getFlag(flags, JavaScriptElementLabels.REFERENCED_ROOT_POST_QUALIFIED) && isReferenced(root); - if (rootQualified) { - result.append(root.getPath().makeRelative().toString()); - } else { - if (resource != null) { - IPath projectRelativePath= resource.getProjectRelativePath(); - if (projectRelativePath.segmentCount() == 0) { - result.append(resource.getName()); - referencedQualified= false; - } else { - result.append(projectRelativePath.toString()); - } - } else - result.append(root.getElementName()); - int offset= result.length(); - if (referencedQualified) { - result.append(JavaScriptElementLabels.CONCAT_STRING); - result.append(resource.getProject().getName()); - } else if (getFlag(flags, JavaScriptElementLabels.ROOT_POST_QUALIFIED)) { - result.append(JavaScriptElementLabels.CONCAT_STRING); - result.append(root.getParent().getElementName()); - } else { - return; - } - if (getFlag(flags, COLORIZE)) { - result.colorize(offset, result.length() - offset, QUALIFIER_STYLE); - } - } - } - - /** - * @param root - * @return <code>true</code> if the given package fragment root is - * referenced. This means it is owned by a different project but is referenced - * by the root's parent. Returns <code>false</code> if the given root - * doesn't have an underlying resource. - */ - private static boolean isReferenced(IPackageFragmentRoot root) { - IResource resource= root.getResource(); - if (resource != null) { - IProject jarProject= resource.getProject(); - IProject container= root.getJavaScriptProject().getProject(); - return !container.equals(jarProject); - } - return false; - } - - /** - * Returns the label of a classpath container - * @param containerPath The path of the container. - * @param project The project the container is resolved in. - * @return Returns the label of the classpath container - */ - public static ColoredString getContainerEntryLabel(IPath containerPath, IJavaScriptProject project) { - try { - IJsGlobalScopeContainer container= JavaScriptCore.getJsGlobalScopeContainer(containerPath, project); - String description= null; - if (container != null) { - description= container.getDescription(); - } - if (description == null) { - JsGlobalScopeContainerInitializer initializer= JavaScriptCore.getJsGlobalScopeContainerInitializer(containerPath.segment(0)); - if (initializer != null) { - description= initializer.getDescription(containerPath, project); - } - } - if (description != null) { - ColoredString str= new ColoredString(description); - if (containerPath.segmentCount() > 0 && JavaRuntime.JRE_CONTAINER.equals(containerPath.segment(0))) { - int index= description.indexOf('['); - if (index != -1) { - str.colorize(index, description.length() - index, DECORATIONS_STYLE); - } - } - return str; - } - } catch (JavaScriptModelException e) { - // ignore - } - return new ColoredString(containerPath.toString()); - } - - public static ColoredString decorateColoredString(ColoredString string, String decorated, Style color) { - String label= string.getString(); - int originalStart= decorated.indexOf(label); - if (originalStart == -1) { - return new ColoredString(decorated); // the decorator did something wild - } - if (originalStart > 0) { - ColoredString newString= new ColoredString(decorated.substring(0, originalStart), color); - newString.append(string); - string= newString; - } - if (decorated.length() > originalStart + label.length()) { // decorator appended something - return string.append(decorated.substring(originalStart + label.length()), color); - } - return string; // no change - } - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ColoredString.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ColoredString.java deleted file mode 100644 index 6753ad42..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ColoredString.java +++ /dev/null @@ -1,173 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - - -public class ColoredString { - - public static class Style { - private final String fForegroundColorName; - - public Style(String foregroundColorName) { - fForegroundColorName= foregroundColorName; - } - - public String getForegroundColorName() { - return fForegroundColorName; - } - } - - public static final Style DEFAULT_STYLE= null; - - private StringBuffer fBuffer; - private ArrayList fRanges; - - public ColoredString() { - fBuffer= new StringBuffer(); - fRanges= null; - } - - public ColoredString(String text) { - this(text, ColoredString.DEFAULT_STYLE); - } - - public ColoredString(String text, Style style) { - this(); - append(text, style); - } - - public String getString() { - return fBuffer.toString(); - } - - public int length() { - return fBuffer.length(); - } - - public Iterator getRanges() { - if (!hasRanges()) - return Collections.EMPTY_LIST.iterator(); - return getRangesList().iterator(); - } - - public ColoredString append(String text) { - return append(text, DEFAULT_STYLE); - } - - public ColoredString append(char ch) { - return append(String.valueOf(ch), DEFAULT_STYLE); - } - - public ColoredString append(ColoredString string) { - int offset= fBuffer.length(); - fBuffer.append(string.getString()); - for (Iterator iterator= string.getRanges(); iterator.hasNext();) { - StyleRange curr= (StyleRange) iterator.next(); - addRange(new StyleRange(offset + curr.offset, curr.length, curr.style)); - } - return this; - } - - public ColoredString append(String text, Style style) { - if (text.length() == 0) - return this; - - int offset= fBuffer.length(); - fBuffer.append(text); - if (style != null) { - int nRanges= getNumberOfRanges(); - if (nRanges > 0) { - StyleRange last= getRange(nRanges - 1); - if (last.offset + last.length == offset && style.equals(last.style)) { - last.length += text.length(); - return this; - } - } - addRange(new StyleRange(offset, text.length(), style)); - } - return this; - } - - public void colorize(int offset, int length, Style style) { - if (offset < 0 || offset + length > fBuffer.length()) { - throw new IllegalArgumentException("Invalid offset (" + offset + ") or length (" + length + ")"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ - } - - int insertPos= 0; - int nRanges= getNumberOfRanges(); - for (int i= 0; i < nRanges; i++) { - StyleRange curr= getRange(i); - if (curr.offset + curr.length <= offset) { - insertPos= i + 1; - } - } - if (insertPos < nRanges) { - StyleRange curr= getRange(insertPos); - if (curr.offset > offset + length) { - throw new IllegalArgumentException("Overlapping ranges"); //$NON-NLS-1$ - } - } - addRange(insertPos, new StyleRange(offset, length, style)); - } - - /* (non-Javadoc) - * @see java.lang.Object#toString() - */ - public String toString() { - return fBuffer.toString(); - } - - private boolean hasRanges() { - return fRanges != null && !fRanges.isEmpty(); - } - - private int getNumberOfRanges() { - return fRanges == null ? 0 : fRanges.size(); - } - - private StyleRange getRange(int index) { - if (fRanges != null) { - return (StyleRange) fRanges.get(index); - } - throw new IndexOutOfBoundsException(); - } - - private void addRange(StyleRange range) { - getRangesList().add(range); - } - - private void addRange(int index, StyleRange range) { - getRangesList().add(index, range); - } - - private List getRangesList() { - if (fRanges == null) - fRanges= new ArrayList(2); - return fRanges; - } - - public static class StyleRange { - public int offset; - public int length; - public Style style; - - public StyleRange(int offset, int length, Style style) { - this.offset= offset; - this.length= length; - this.style= style; - } - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ColoredViewersManager.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ColoredViewersManager.java deleted file mode 100644 index 1ef91525..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ColoredViewersManager.java +++ /dev/null @@ -1,218 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import org.eclipse.jface.resource.ColorRegistry; -import org.eclipse.jface.resource.JFaceResources; -import org.eclipse.jface.util.IPropertyChangeListener; -import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.jface.viewers.IBaseLabelProvider; -import org.eclipse.jface.viewers.StructuredViewer; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Item; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.Tree; -import org.eclipse.swt.widgets.TreeItem; -import org.eclipse.wst.jsdt.internal.ui.preferences.AppearancePreferencePage; -import org.eclipse.wst.jsdt.ui.PreferenceConstants; - -public class ColoredViewersManager implements IPropertyChangeListener { - - public static final String QUALIFIER_COLOR_NAME= "org.eclipse.wst.jsdt.ui.ColoredLabels.qualifier"; //$NON-NLS-1$ - public static final String DECORATIONS_COLOR_NAME= "org.eclipse.wst.jsdt.ui.ColoredLabels.decorations"; //$NON-NLS-1$ - public static final String COUNTER_COLOR_NAME= "org.eclipse.wst.jsdt.ui.ColoredLabels.counter"; //$NON-NLS-1$ - public static final String INHERITED_COLOR_NAME= "org.eclipse.wst.jsdt.ui.ColoredLabels.inherited"; //$NON-NLS-1$ - - private static ColoredViewersManager fgInstance= new ColoredViewersManager(); - - private Map fManagedViewers; - private ColorRegistry fColorRegisty; - - public ColoredViewersManager() { - fManagedViewers= new HashMap(); - fColorRegisty= JFaceResources.getColorRegistry(); - } - - public void installColoredLabels(StructuredViewer viewer) { - if (fManagedViewers.containsKey(viewer)) { - return; // already installed - } - if (fManagedViewers.isEmpty()) { - // first viewer installed - PreferenceConstants.getPreferenceStore().addPropertyChangeListener(this); - fColorRegisty.addListener(this); - } - fManagedViewers.put(viewer, new ManagedViewer(viewer)); - } - - - public void uninstallColoredLabels(StructuredViewer viewer) { - ManagedViewer mv= (ManagedViewer) fManagedViewers.remove(viewer); - if (mv == null) - return; // not installed - - if (fManagedViewers.isEmpty()) { - PreferenceConstants.getPreferenceStore().removePropertyChangeListener(this); - fColorRegisty.removeListener(this); - // last viewer uninstalled - } - } - - public Color getColorForName(String symbolicName) { - return fColorRegisty.get(symbolicName); - } - - - public void propertyChange(PropertyChangeEvent event) { - String property= event.getProperty(); - if (property.equals(QUALIFIER_COLOR_NAME) || property.equals(COUNTER_COLOR_NAME) || property.equals(DECORATIONS_COLOR_NAME) - || property.equals(AppearancePreferencePage.PREF_COLORED_LABELS)) { - Display.getDefault().asyncExec(new Runnable() { - public void run() { - refreshAllViewers(); - } - }); - } - } - - protected final void refreshAllViewers() { - for (Iterator iterator= fManagedViewers.values().iterator(); iterator.hasNext();) { - ManagedViewer viewer= (ManagedViewer) iterator.next(); - viewer.refresh(); - } - } - - private class ManagedViewer implements DisposeListener { - - private static final String COLORED_LABEL_KEY= "coloredlabel"; //$NON-NLS-1$ - - private StructuredViewer fViewer; - private OwnerDrawSupport fOwnerDrawSupport; - - private ManagedViewer(StructuredViewer viewer) { - fViewer= viewer; - fOwnerDrawSupport= null; - fViewer.getControl().addDisposeListener(this); - if (showColoredLabels()) { - installOwnerDraw(); - } - } - - /* (non-Javadoc) - * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent) - */ - public void widgetDisposed(DisposeEvent e) { - uninstallColoredLabels(fViewer); - } - - public final void refresh() { - Control control= fViewer.getControl(); - if (!control.isDisposed()) { - if (showColoredLabels()) { - installOwnerDraw(); - } else { - uninstallOwnerDraw(); - } - } - } - - protected void installOwnerDraw() { - if (fOwnerDrawSupport == null) { - // not yet installed - fOwnerDrawSupport= new OwnerDrawSupport(fViewer.getControl()) { // will install itself as listeners - public ColoredString getColoredLabel(Item item) { - return getColoredLabelForView(item); - } - - public Color getColor(String foregroundColorName, Display display) { - return getColorForName(foregroundColorName); - } - }; - } - refreshViewer(); - } - - protected void uninstallOwnerDraw() { - if (fOwnerDrawSupport == null) - return; // not installed - - fOwnerDrawSupport.dispose(); // removes itself as listener - fOwnerDrawSupport= null; - refreshViewer(); - } - - private void refreshViewer() { - Control control= fViewer.getControl(); - if (!control.isDisposed()) { - if (control instanceof Tree) { - refresh(((Tree) control).getItems()); - } else if (control instanceof Table) { - refresh(((Table) control).getItems()); - } - } - } - - private void refresh(Item[] items) { - for (int i= 0; i < items.length; i++) { - Item item= items[i]; - item.setData(COLORED_LABEL_KEY, null); - String text= item.getText(); - item.setText(""); //$NON-NLS-1$ - item.setText(text); - if (item instanceof TreeItem) { - refresh(((TreeItem) item).getItems()); - } - } - } - - private ColoredString getColoredLabelForView(Item item) { - ColoredString oldLabel= (ColoredString) item.getData(COLORED_LABEL_KEY); - String itemText= item.getText(); - if (oldLabel != null && oldLabel.getString().equals(itemText)) { - // avoid accesses to the label provider if possible - return oldLabel; - } - ColoredString newLabel= null; - IBaseLabelProvider labelProvider= fViewer.getLabelProvider(); - if (labelProvider instanceof IRichLabelProvider) { - newLabel= ((IRichLabelProvider) labelProvider).getRichTextLabel(item.getData()); - } - if (newLabel == null) { - newLabel= new ColoredString(itemText); // fallback. Should never happen. - } else if (!newLabel.getString().equals(itemText)) { - // the decorator manager has already queued an new update - newLabel= ColoredJavaElementLabels.decorateColoredString(newLabel, itemText, ColoredJavaElementLabels.DECORATIONS_STYLE); - } - item.setData(COLORED_LABEL_KEY, newLabel); // cache the result - return newLabel; - } - - } - - public static boolean showColoredLabels() { - String preference= PreferenceConstants.getPreference(AppearancePreferencePage.PREF_COLORED_LABELS, null); - return preference != null && Boolean.valueOf(preference).booleanValue(); - } - - public static void install(StructuredViewer viewer) { - fgInstance.installColoredLabels(viewer); - } - - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/DecoratingJavaLabelProvider.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/DecoratingJavaLabelProvider.java deleted file mode 100644 index 05db0ad7..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/DecoratingJavaLabelProvider.java +++ /dev/null @@ -1,101 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.jface.viewers.DecoratingLabelProvider; -import org.eclipse.jface.viewers.DecorationContext; -import org.eclipse.jface.viewers.ILabelDecorator; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.LabelDecorator; -import org.eclipse.ui.PlatformUI; -import org.eclipse.wst.jsdt.internal.ui.packageview.HierarchicalDecorationContext; -import org.eclipse.wst.jsdt.ui.ProblemsLabelDecorator; - -public class DecoratingJavaLabelProvider extends DecoratingLabelProvider implements IRichLabelProvider { - - /** - * Decorating label provider for Java. Combines a JavaUILabelProvider - * with problem and override indicator with the workbench decorator (label - * decorator extension point). - * @param labelProvider the label provider to decorate - */ - public DecoratingJavaLabelProvider(JavaUILabelProvider labelProvider) { - this(labelProvider, true); - } - - /** - * Decorating label provider for Java. Combines a JavaUILabelProvider - * (if enabled with problem indicator) with the workbench - * decorator (label decorator extension point). - * @param labelProvider the label provider to decorate - * @param errorTick show error ticks - */ - public DecoratingJavaLabelProvider(JavaUILabelProvider labelProvider, boolean errorTick) { - this(labelProvider, errorTick, true); - } - - /** - * Decorating label provider for Java. Combines a JavaUILabelProvider - * (if enabled with problem indicator) with the workbench - * decorator (label decorator extension point). - * @param labelProvider the label provider to decorate - * @param errorTick show error ticks - * @param flatPackageMode configure flat package mode - */ - public DecoratingJavaLabelProvider(JavaUILabelProvider labelProvider, boolean errorTick, boolean flatPackageMode) { - super(labelProvider, PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator()); - if (errorTick) { - labelProvider.addLabelDecorator(new ProblemsLabelDecorator(null)); - } - setFlatPackageMode(flatPackageMode); - } - - /** - * Tells the label decorator if the view presents packages flat or hierarchical. - * @param enable If set, packages are presented in flat mode. - */ - public void setFlatPackageMode(boolean enable) { - if (enable) { - setDecorationContext(DecorationContext.DEFAULT_CONTEXT); - } else { - setDecorationContext(HierarchicalDecorationContext.CONTEXT); - } - } - - /* (non-Javadoc) - * @see org.eclipse.wst.jsdt.internal.ui.viewsupport.IRichLabelProvider#getRichTextLabel(Object) - */ - public ColoredString getRichTextLabel(Object element) { - ILabelProvider labelProvider= getLabelProvider(); - if (labelProvider instanceof IRichLabelProvider) { - // get a rich label from the label decorator - IRichLabelProvider richLabelProvider= (IRichLabelProvider) labelProvider; - ColoredString richLabel= richLabelProvider.getRichTextLabel(element); - if (richLabel != null) { - String decorated= null; - ILabelDecorator labelDecorator= getLabelDecorator(); - if (labelDecorator != null) { - if (labelDecorator instanceof LabelDecorator) { - decorated= ((LabelDecorator) labelDecorator).decorateText(richLabel.getString(), element, getDecorationContext()); - } else { - decorated= labelDecorator.decorateText(richLabel.getString(), element); - } - } - if (decorated != null) { - return ColoredJavaElementLabels.decorateColoredString(richLabel, decorated, ColoredJavaElementLabels.DECORATIONS_STYLE); - } - return richLabel; - } - } - return null; - } - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/FilterUpdater.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/FilterUpdater.java deleted file mode 100644 index cba4e82d..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/FilterUpdater.java +++ /dev/null @@ -1,78 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResourceChangeEvent; -import org.eclipse.core.resources.IResourceChangeListener; -import org.eclipse.core.resources.IResourceDelta; -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.swt.widgets.Control; -import org.eclipse.wst.jsdt.core.JavaScriptCore; - - -public class FilterUpdater implements IResourceChangeListener { - - private ProblemTreeViewer fViewer; - - public FilterUpdater(ProblemTreeViewer viewer) { - Assert.isNotNull(viewer); - fViewer= viewer; - } - - /* (non-Javadoc) - * @see org.eclipse.core.resources.IResourceChangeListener#resourceChanged(org.eclipse.core.resources.IResourceChangeEvent) - */ - public void resourceChanged(IResourceChangeEvent event) { - if (fViewer.getInput() == null) { - return; - } - IResourceDelta delta= event.getDelta(); - if (delta == null) - return; - IResourceDelta[] projDeltas = delta.getAffectedChildren(IResourceDelta.CHANGED); - for (int i= 0; i < projDeltas.length; i++) { - IResourceDelta pDelta= projDeltas[i]; - if ((pDelta.getFlags() & IResourceDelta.DESCRIPTION) != 0) { - IProject project= (IProject) pDelta.getResource(); - if (needsRefiltering(project)) { - final Control ctrl= fViewer.getControl(); - if (ctrl != null && !ctrl.isDisposed()) { - // async is needed due to bug 33783 - ctrl.getDisplay().asyncExec(new Runnable() { - public void run() { - if (!ctrl.isDisposed()) - fViewer.refresh(false); - } - }); - } - return; // one refresh is good enough - } - } - } - } - - private boolean needsRefiltering(IProject project) { - try { - Object element= project; - if (project.hasNature(JavaScriptCore.NATURE_ID)) { - element= JavaScriptCore.create(project); - } - boolean inView= fViewer.testFindItem(element) != null; - boolean afterFilter= !fViewer.isFiltered(element, fViewer.getInput()); - - return inView != afterFilter; - } catch (CoreException e) { - return true; - } - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/HistoryDropDownAction.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/HistoryDropDownAction.java deleted file mode 100644 index f428afd1..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/HistoryDropDownAction.java +++ /dev/null @@ -1,153 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Jesper Kamstrup Linnet (eclipse@kamstrup-linnet.dk) - initial API and implementation - * (report 36180: Callers/Callees view) - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import java.util.List; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IMenuCreator; -import org.eclipse.jface.action.IMenuListener; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.swt.events.MenuAdapter; -import org.eclipse.swt.events.MenuEvent; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Menu; -import org.eclipse.ui.IWorkbenchActionConstants; - -/*package*/ class HistoryDropDownAction extends Action { - - private class HistoryAction extends Action { - private final Object fElement; - - public HistoryAction(Object element, int accelerator) { - super("", AS_RADIO_BUTTON); //$NON-NLS-1$ - Assert.isNotNull(element); - fElement= element; - - String label= fHistory.getText(element); - if (accelerator < 10) { - //add the numerical accelerator - label= new StringBuffer().append('&').append(accelerator).append(' ').append(label).toString(); - } - - setText(label); - setImageDescriptor(fHistory.getImageDescriptor(element)); - } - - public void run() { - fHistory.setActiveEntry(fElement); - } - } - - private class HistoryMenuCreator implements IMenuCreator { - - public Menu getMenu(Menu parent) { - return null; - } - - public Menu getMenu(Control parent) { - if (fMenu != null) { - fMenu.dispose(); - } - final MenuManager manager= new MenuManager(); - manager.setRemoveAllWhenShown(true); - manager.addMenuListener(new IMenuListener() { - public void menuAboutToShow(IMenuManager manager2) { - List entries= fHistory.getHistoryEntries(); - boolean checkOthers= addEntryMenuItems(manager2, entries); - - manager2.add(new Separator()); - - Action others= new HistoryListAction(fHistory); - others.setChecked(checkOthers); - manager2.add(others); - - Action clearAction= fHistory.getClearAction(); - if (clearAction != null) { - manager2.add(clearAction); - } - - manager2.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); - - fHistory.addMenuEntries(manager); - } - - private boolean addEntryMenuItems(IMenuManager manager2, List entries) { - if (entries.isEmpty()) { - return false; - } - - boolean checkOthers= true; - int min= Math.min(entries.size(), RESULTS_IN_DROP_DOWN); - for (int i= 0; i < min; i++) { - Object entry= entries.get(i); - HistoryAction action= new HistoryAction(entry, i + 1); - boolean check= entry.equals(fHistory.getCurrentEntry()); - action.setChecked(check); - if (check) - checkOthers= false; - manager2.add(action); - } - return checkOthers; - } - }); - - fMenu= manager.createContextMenu(parent); - - //workaround for https://bugs.eclipse.org/bugs/show_bug.cgi?id=129973 - final Display display= parent.getDisplay(); - fMenu.addMenuListener(new MenuAdapter() { - public void menuHidden(final MenuEvent e) { - display.asyncExec(new Runnable() { - public void run() { - manager.removeAll(); - if (fMenu != null) { - fMenu.dispose(); - fMenu= null; - } - } - }); - } - }); - return fMenu; - } - - public void dispose() { - fHistory= null; - - if (fMenu != null) { - fMenu.dispose(); - fMenu= null; - } - } - } - - public static final int RESULTS_IN_DROP_DOWN= 10; - - private ViewHistory fHistory; - private Menu fMenu; - - public HistoryDropDownAction(ViewHistory history) { - fHistory= history; - fMenu= null; - setMenuCreator(new HistoryMenuCreator()); - fHistory.configureHistoryDropDownAction(this); - } - - public void run() { - new HistoryListAction(fHistory).run(); - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/HistoryListAction.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/HistoryListAction.java deleted file mode 100644 index aceaac90..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/HistoryListAction.java +++ /dev/null @@ -1,242 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2010 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * Jesper Kamstrup Linnet (eclipse@kamstrup-linnet.dk) - initial API and implementation - * (report 36180: Callers/Callees view) - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; - -import org.eclipse.core.runtime.IStatus; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.dialogs.StatusDialog; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.wst.jsdt.internal.corext.util.Messages; -import org.eclipse.wst.jsdt.internal.ui.JavaUIMessages; -import org.eclipse.wst.jsdt.internal.ui.dialogs.StatusInfo; -import org.eclipse.wst.jsdt.internal.ui.wizards.dialogfields.DialogField; -import org.eclipse.wst.jsdt.internal.ui.wizards.dialogfields.IDialogFieldListener; -import org.eclipse.wst.jsdt.internal.ui.wizards.dialogfields.IListAdapter; -import org.eclipse.wst.jsdt.internal.ui.wizards.dialogfields.LayoutUtil; -import org.eclipse.wst.jsdt.internal.ui.wizards.dialogfields.ListDialogField; -import org.eclipse.wst.jsdt.internal.ui.wizards.dialogfields.Separator; -import org.eclipse.wst.jsdt.internal.ui.wizards.dialogfields.StringDialogField; - -/*package*/ class HistoryListAction extends Action { - - private class HistoryListDialog extends StatusDialog { - private static final int MAX_MAX_ENTRIES= 100; - private ListDialogField fHistoryList; - private StringDialogField fMaxEntriesField; - private int fMaxEntries; - - private Object fResult; - - private HistoryListDialog() { - super(fHistory.getShell()); - setTitle(fHistory.getHistoryListDialogTitle()); - - createHistoryList(); - createMaxEntriesField(); - setHelpAvailable(false); - } - - private void createHistoryList() { - IListAdapter adapter= new IListAdapter() { - public void customButtonPressed(ListDialogField field, int index) { - doCustomButtonPressed(index); - } - public void selectionChanged(ListDialogField field) { - doSelectionChanged(); - } - - public void doubleClicked(ListDialogField field) { - doDoubleClicked(); - } - }; - String[] buttonLabels= new String[] { JavaUIMessages.HistoryListAction_remove, JavaUIMessages.HistoryListAction_remove_all }; - LabelProvider labelProvider= new TestRunLabelProvider(); - fHistoryList= new ListDialogField(adapter, buttonLabels, labelProvider); - fHistoryList.setLabelText(fHistory.getHistoryListDialogMessage()); - - List historyEntries= fHistory.getHistoryEntries(); - fHistoryList.setElements(historyEntries); - - Object currentEntry= fHistory.getCurrentEntry(); - ISelection sel; - if (currentEntry != null) { - sel= new StructuredSelection(currentEntry); - } else { - sel= new StructuredSelection(); - } - fHistoryList.selectElements(sel); - } - - private void createMaxEntriesField() { - fMaxEntriesField= new StringDialogField(); - fMaxEntriesField.setLabelText(fHistory.getMaxEntriesMessage()); - fMaxEntriesField.setDialogFieldListener(new IDialogFieldListener() { - public void dialogFieldChanged(DialogField field) { - String maxString= fMaxEntriesField.getText(); - boolean valid; - try { - fMaxEntries= Integer.parseInt(maxString); - valid= fMaxEntries > 0 && fMaxEntries < MAX_MAX_ENTRIES; - } catch (NumberFormatException e) { - valid= false; - } - if (valid) - updateStatus(StatusInfo.OK_STATUS); - else - updateStatus(new StatusInfo(IStatus.ERROR, Messages.format(JavaUIMessages.HistoryListAction_max_entries_constraint, Integer.toString(MAX_MAX_ENTRIES)))); - } - }); - fMaxEntriesField.setText(Integer.toString(fHistory.getMaxEntries())); - } - - /* - * @see Dialog#createDialogArea(Composite) - */ - protected Control createDialogArea(Composite parent) { - initializeDialogUnits(parent); - - Composite composite= (Composite) super.createDialogArea(parent); - - Composite inner= new Composite(composite, SWT.NONE); - inner.setLayoutData(new GridData(GridData.FILL_BOTH)); - inner.setFont(composite.getFont()); - - LayoutUtil.doDefaultLayout(inner, new DialogField[] { fHistoryList, new Separator() }, true); - LayoutUtil.setHeightHint(fHistoryList.getListControl(null), convertHeightInCharsToPixels(12)); - LayoutUtil.setHorizontalGrabbing(fHistoryList.getListControl(null)); - - Composite additionalControls= new Composite(inner, SWT.NONE); - additionalControls.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); - LayoutUtil.doDefaultLayout(additionalControls, new DialogField[] { fMaxEntriesField }, false); - LayoutUtil.setHorizontalGrabbing(fMaxEntriesField.getTextControl(null)); - - applyDialogFont(composite); - return composite; - } - - private void doCustomButtonPressed(int index) { - switch (index) { - case 0: // remove - fHistoryList.removeElements(fHistoryList.getSelectedElements()); - fHistoryList.selectFirstElement(); - break; - - case 1: // remove all - fHistoryList.removeAllElements(); - - //$FALL-THROUGH$ - default: - break; - } - } - - private void doDoubleClicked() { - okPressed(); - } - - private void doSelectionChanged() { - List selected= fHistoryList.getSelectedElements(); - if (selected.size() >= 1) { - fResult= selected.get(0); - } else { - fResult= null; - } - fHistoryList.enableButton(0, selected.size() != 0); - } - - public Object getResult() { - return fResult; - } - - public List getRemaining() { - return fHistoryList.getElements(); - } - - public int getMaxEntries() { - return fMaxEntries; - } - - /* - * @see org.eclipse.jface.dialogs.StatusDialog#create() - */ - public void create() { - setShellStyle(getShellStyle() | SWT.RESIZE); - super.create(); - } - - } - - private final class TestRunLabelProvider extends LabelProvider { - private final HashMap fImages= new HashMap(); - - public String getText(Object element) { - return fHistory.getText(element); - } - - public Image getImage(Object element) { - ImageDescriptor imageDescriptor= fHistory.getImageDescriptor(element); - return getCachedImage(imageDescriptor); - } - - private Image getCachedImage(ImageDescriptor imageDescriptor) { - Object cached= fImages.get(imageDescriptor); - if (cached != null) - return (Image) cached; - Image image= imageDescriptor.createImage(fHistory.getShell().getDisplay()); - fImages.put(imageDescriptor, image); - return image; - } - - public void dispose() { - for (Iterator iter= fImages.values().iterator(); iter.hasNext();) { - Image image= (Image) iter.next(); - image.dispose(); - } - fImages.clear(); - } - } - - private ViewHistory fHistory; - - public HistoryListAction(ViewHistory history) { - super(null, IAction.AS_RADIO_BUTTON); - fHistory= history; - fHistory.configureHistoryListAction(this); - } - - /* - * @see IAction#run() - */ - public void run() { - HistoryListDialog dialog= new HistoryListDialog(); - if (dialog.open() == Window.OK) { - fHistory.setHistoryEntries(dialog.getRemaining(), dialog.getResult()); - fHistory.setMaxEntries(dialog.getMaxEntries()); - } - } - -} - diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/IProblemChangedListener.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/IProblemChangedListener.java deleted file mode 100644 index a8a32361..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/IProblemChangedListener.java +++ /dev/null @@ -1,31 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.core.resources.IResource; - -/** - * Can be added to a ProblemMarkerManager to get notified about problem - * marker changes. Used to update error ticks. - */ -public interface IProblemChangedListener { - - /** - * Called when problems changed. This call is posted in an aynch exec, therefore passed - * resources must not exist. - * @param changedResources A set with elements of type <code>IResource</code> that - * describe the resources that had an problem change. - * @param isMarkerChange If set to <code>true</code>, the change was a marker change, if - * <code>false</code>, the change came from an annotation model modification. - */ - void problemsChanged(IResource[] changedResources, boolean isMarkerChange); - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/IRichLabelProvider.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/IRichLabelProvider.java deleted file mode 100644 index 99eac362..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/IRichLabelProvider.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.jface.viewers.ILabelProvider; - -public interface IRichLabelProvider extends ILabelProvider { - - ColoredString getRichTextLabel(Object object); - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ISelectionListenerWithAST.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ISelectionListenerWithAST.java deleted file mode 100644 index e6b0b69c..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ISelectionListenerWithAST.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.jface.text.ITextSelection; -import org.eclipse.ui.IEditorPart; -import org.eclipse.wst.jsdt.core.dom.JavaScriptUnit; - -/** - * Listener to be informed on text selection changes in an editor (post selection), including the corresponding AST. - * The AST is shared and must not be modified. - * Listeners can be registered in a <code>SelectionListenerWithASTManager</code>. - */ -public interface ISelectionListenerWithAST { - - /** - * Called when a selection has changed. The method is called in a post selection event in an background - * thread. - * - * @param part The editor part in which the selection change has occurred. - * @param selection The new text selection - * @param astRoot The AST tree corresponding to the editor's input. This AST is shared and must - * not be modified. - */ - void selectionChanged(IEditorPart part, ITextSelection selection, JavaScriptUnit astRoot); - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/IViewPartInputProvider.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/IViewPartInputProvider.java deleted file mode 100644 index 20d90c83..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/IViewPartInputProvider.java +++ /dev/null @@ -1,25 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -/** - * Interface common to all view parts that provide an input. - */ -public interface IViewPartInputProvider { - - /** - * Returns the input. - * - * @return the input object - */ - public Object getViewPartInput(); - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ImageDescriptorRegistry.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ImageDescriptorRegistry.java deleted file mode 100644 index 1447856e..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ImageDescriptorRegistry.java +++ /dev/null @@ -1,91 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import java.util.HashMap; -import java.util.Iterator; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.Display; -import org.eclipse.wst.jsdt.internal.ui.util.SWTUtil; - -/** - * A registry that maps <code>ImageDescriptors</code> to <code>Image</code>. - */ -public class ImageDescriptorRegistry { - - private HashMap fRegistry= new HashMap(10); - private Display fDisplay; - - /** - * Creates a new image descriptor registry for the current or default display, - * respectively. - */ - public ImageDescriptorRegistry() { - this(SWTUtil.getStandardDisplay()); - } - - /** - * Creates a new image descriptor registry for the given display. All images - * managed by this registry will be disposed when the display gets disposed. - * - * @param display the display the images managed by this registry are allocated for - */ - public ImageDescriptorRegistry(Display display) { - fDisplay= display; - Assert.isNotNull(fDisplay); - hookDisplay(); - } - - /** - * Returns the image associated with the given image descriptor. - * - * @param descriptor the image descriptor for which the registry manages an image, - * or <code>null</code> for a missing image descriptor - * @return the image associated with the image descriptor or <code>null</code> - * if the image descriptor can't create the requested image. - */ - public Image get(ImageDescriptor descriptor) { - if (descriptor == null) - descriptor= ImageDescriptor.getMissingImageDescriptor(); - - Image result= (Image)fRegistry.get(descriptor); - if (result != null) - return result; - - Assert.isTrue(fDisplay == SWTUtil.getStandardDisplay(), "Allocating image for wrong display."); //$NON-NLS-1$ - result= descriptor.createImage(); - if (result != null) - fRegistry.put(descriptor, result); - return result; - } - - /** - * Disposes all images managed by this registry. - */ - public void dispose() { - for (Iterator iter= fRegistry.values().iterator(); iter.hasNext(); ) { - Image image= (Image)iter.next(); - image.dispose(); - } - fRegistry.clear(); - } - - private void hookDisplay() { - fDisplay.disposeExec(new Runnable() { - public void run() { - dispose(); - } - }); - } -}
\ No newline at end of file diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ImageDisposer.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ImageDisposer.java deleted file mode 100644 index 4311b9b5..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ImageDisposer.java +++ /dev/null @@ -1,46 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; -import org.eclipse.swt.graphics.Image; - - -/** - * Helper class to manage images that should be disposed when a control is disposed - * contol.addWidgetListener(new ImageDisposer(myImage)); - */ -public class ImageDisposer implements DisposeListener { - - private Image[] fImages; - - public ImageDisposer(Image image) { - this(new Image[] { image }); - } - - public ImageDisposer(Image[] images) { - Assert.isNotNull(images); - fImages= images; - } - - /* - * @see WidgetListener#widgetDisposed - */ - public void widgetDisposed(DisposeEvent e) { - if (fImages != null) { - for (int i= 0; i < fImages.length; i++) { - fImages[i].dispose(); - } - } - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ImageImageDescriptor.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ImageImageDescriptor.java deleted file mode 100644 index 9a05a79f..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ImageImageDescriptor.java +++ /dev/null @@ -1,52 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.ImageData; - -/** - */ -public class ImageImageDescriptor extends ImageDescriptor { - - private Image fImage; - - /** - * Constructor for ImagImageDescriptor. - */ - public ImageImageDescriptor(Image image) { - super(); - fImage= image; - } - - /* (non-Javadoc) - * @see ImageDescriptor#getImageData() - */ - public ImageData getImageData() { - return fImage.getImageData(); - } - - /* (non-Javadoc) - * @see Object#equals(Object) - */ - public boolean equals(Object obj) { - return (obj != null) && getClass().equals(obj.getClass()) && fImage.equals(((ImageImageDescriptor)obj).fImage); - } - - /* (non-Javadoc) - * @see Object#hashCode() - */ - public int hashCode() { - return fImage.hashCode(); - } - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/JavaElementImageProvider.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/JavaElementImageProvider.java deleted file mode 100644 index c765a834..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/JavaElementImageProvider.java +++ /dev/null @@ -1,399 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2009 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - * Matt Chapman, mpchapman@gmail.com - 89977 Make JDT .java agnostic - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.IPath; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Point; -import org.eclipse.ui.ISharedImages; -import org.eclipse.ui.ide.IDE; -import org.eclipse.ui.model.IWorkbenchAdapter; -import org.eclipse.wst.jsdt.core.Flags; -import org.eclipse.wst.jsdt.core.IFunction; -import org.eclipse.wst.jsdt.core.IJavaScriptElement; -import org.eclipse.wst.jsdt.core.IJavaScriptProject; -import org.eclipse.wst.jsdt.core.IMember; -import org.eclipse.wst.jsdt.core.IPackageFragmentRoot; -import org.eclipse.wst.jsdt.core.IType; -import org.eclipse.wst.jsdt.core.JavaScriptCore; -import org.eclipse.wst.jsdt.core.JavaScriptModelException; -import org.eclipse.wst.jsdt.internal.ui.JavaPluginImages; -import org.eclipse.wst.jsdt.internal.ui.JavaScriptPlugin; -import org.eclipse.wst.jsdt.internal.ui.JavaWorkbenchAdapter; -import org.eclipse.wst.jsdt.ui.JavaScriptElementImageDescriptor; - -/** - * Default strategy of the Java plugin for the construction of Java element icons. - */ -public class JavaElementImageProvider { - - /** - * Flags for the JavaImageLabelProvider: - * Generate images with overlays. - */ - public final static int OVERLAY_ICONS= 0x1; - - /** - * Generate small sized images. - */ - public final static int SMALL_ICONS= 0x2; - - /** - * Use the 'light' style for rendering types. - */ - public final static int LIGHT_TYPE_ICONS= 0x4; - - - public static final Point SMALL_SIZE= new Point(16, 16); - public static final Point BIG_SIZE= new Point(22, 16); - - private static ImageDescriptor DESC_OBJ_PROJECT_CLOSED; - private static ImageDescriptor DESC_OBJ_PROJECT; - { - ISharedImages images= JavaScriptPlugin.getDefault().getWorkbench().getSharedImages(); - DESC_OBJ_PROJECT_CLOSED= images.getImageDescriptor(IDE.SharedImages.IMG_OBJ_PROJECT_CLOSED); - DESC_OBJ_PROJECT= images.getImageDescriptor(IDE.SharedImages.IMG_OBJ_PROJECT); - } - - private ImageDescriptorRegistry fRegistry; - - public JavaElementImageProvider() { - fRegistry= null; // lazy initialization - } - - /** - * Returns the icon for a given element. The icon depends on the element type - * and element properties. If configured, overlay icons are constructed for - * <code>ISourceReference</code>s. - * @param flags Flags as defined by the JavaImageLabelProvider - */ - public Image getImageLabel(Object element, int flags) { - return getImageLabel(computeDescriptor(element, flags)); - } - - private Image getImageLabel(ImageDescriptor descriptor){ - if (descriptor == null) - return null; - return getRegistry().get(descriptor); - } - - private ImageDescriptorRegistry getRegistry() { - if (fRegistry == null) { - fRegistry= JavaScriptPlugin.getImageDescriptorRegistry(); - } - return fRegistry; - } - - - private ImageDescriptor computeDescriptor(Object element, int flags){ - if (element instanceof IJavaScriptElement) { - return getJavaImageDescriptor((IJavaScriptElement) element, flags); - } else if (element instanceof IFile) { - IFile file= (IFile) element; - if (JavaScriptCore.isJavaScriptLikeFileName(file.getName())) { - return getCUResourceImageDescriptor(file, flags); // image for a CU not on the build path - } - return getWorkbenchImageDescriptor(file, flags); - } else if (element instanceof IAdaptable) { - return getWorkbenchImageDescriptor((IAdaptable) element, flags); - } - return null; - } - - private static boolean showOverlayIcons(int flags) { - return (flags & OVERLAY_ICONS) != 0; - } - - private static boolean useSmallSize(int flags) { - return (flags & SMALL_ICONS) != 0; - } - - private static boolean useLightIcons(int flags) { - return (flags & LIGHT_TYPE_ICONS) != 0; - } - - /** - * Returns an image descriptor for a compilation unit not on the class path. - * The descriptor includes overlays, if specified. - */ - public ImageDescriptor getCUResourceImageDescriptor(IFile file, int flags) { - Point size= useSmallSize(flags) ? SMALL_SIZE : BIG_SIZE; - return new JavaScriptElementImageDescriptor(JavaPluginImages.DESC_OBJS_CUNIT_RESOURCE, 0, size); - } - - /** - * Returns an image descriptor for a java element. The descriptor includes overlays, if specified. - */ - public ImageDescriptor getJavaImageDescriptor(IJavaScriptElement element, int flags) { - Point size= useSmallSize(flags) ? SMALL_SIZE : BIG_SIZE; - - ImageDescriptor baseDesc= getBaseImageDescriptor(element, flags); - if (baseDesc != null) { - int adornmentFlags= computeJavaAdornmentFlags(element, flags); - return new JavaScriptElementImageDescriptor(baseDesc, adornmentFlags, size); - } - return new JavaScriptElementImageDescriptor(JavaPluginImages.DESC_OBJS_GHOST, 0, size); - } - - /** - * Returns an image descriptor for a IAdaptable. The descriptor includes overlays, if specified (only error ticks apply). - * Returns <code>null</code> if no image could be found. - */ - public ImageDescriptor getWorkbenchImageDescriptor(IAdaptable adaptable, int flags) { - IWorkbenchAdapter wbAdapter= (IWorkbenchAdapter) adaptable.getAdapter(IWorkbenchAdapter.class); - if (wbAdapter == null) { - return null; - } - ImageDescriptor descriptor= wbAdapter.getImageDescriptor(adaptable); - if (descriptor == null) { - return null; - } - - Point size= useSmallSize(flags) ? SMALL_SIZE : BIG_SIZE; - return new JavaScriptElementImageDescriptor(descriptor, 0, size); - } - - // ---- Computation of base image key ------------------------------------------------- - - /** - * Returns an image descriptor for a java element. This is the base image, no overlays. - */ - public ImageDescriptor getBaseImageDescriptor(IJavaScriptElement element, int renderFlags) { - - try { - switch (element.getElementType()) { - case IJavaScriptElement.INITIALIZER: - return JavaPluginImages.DESC_MISC_PRIVATE; // 23479 - case IJavaScriptElement.METHOD: { - IFunction method= (IFunction) element; - IType declType= method.getDeclaringType(); - int flags= method.getFlags(); -// if (declType.isEnum() && isDefaultFlag(flags) && method.isConstructor()) -// return JavaPluginImages.DESC_MISC_PRIVATE; - return getMethodImageDescriptor(false, flags); - } - case IJavaScriptElement.FIELD: { - IMember member= (IMember) element; - IType declType= member.getDeclaringType(); - return getFieldImageDescriptor(false, member.getFlags()); - } - case IJavaScriptElement.LOCAL_VARIABLE: - return JavaPluginImages.DESC_OBJS_LOCAL_VARIABLE; - - case IJavaScriptElement.IMPORT_DECLARATION: - return JavaPluginImages.DESC_OBJS_IMPDECL; - - case IJavaScriptElement.IMPORT_CONTAINER: - return JavaPluginImages.DESC_OBJS_IMPCONT; - - case IJavaScriptElement.TYPE: { - IType type= (IType) element; - - IType declType= type.getDeclaringType(); - boolean isInner= declType != null; - return getTypeImageDescriptor(isInner, false, type.getFlags(), useLightIcons(renderFlags)); - } - - case IJavaScriptElement.PACKAGE_FRAGMENT_ROOT: { - IPackageFragmentRoot root= (IPackageFragmentRoot) element; - if (root.isArchive()) { - IPath attach= root.getSourceAttachmentPath(); - if (root.isExternal()) { - if (attach == null) { - return JavaPluginImages.DESC_OBJS_EXTJAR; - } else { - return JavaPluginImages.DESC_OBJS_EXTJAR_WSRC; - } - } else { - if (attach == null) { - return JavaPluginImages.DESC_OBJS_JAR; - } else { - return JavaPluginImages.DESC_OBJS_JAR_WSRC; - } - } - } else { - return JavaPluginImages.DESC_OBJS_PACKFRAG_ROOT; - } - } - - case IJavaScriptElement.PACKAGE_FRAGMENT: - return getPackageFragmentIcon(element, renderFlags); - - - case IJavaScriptElement.JAVASCRIPT_UNIT: - return JavaPluginImages.DESC_OBJS_CUNIT; - - case IJavaScriptElement.CLASS_FILE: - /* this is too expensive for large packages - try { - IClassFile cfile= (IClassFile)element; - if (cfile.isClass()) - return JavaPluginImages.IMG_OBJS_CFILECLASS; - return JavaPluginImages.IMG_OBJS_CFILEINT; - } catch(JavaScriptModelException e) { - // fall through; - }*/ - return JavaPluginImages.DESC_OBJS_CFILE; - - case IJavaScriptElement.JAVASCRIPT_PROJECT: - IJavaScriptProject jp= (IJavaScriptProject)element; - if (jp.getProject().isOpen()) { - IProject project= jp.getProject(); - IWorkbenchAdapter adapter= (IWorkbenchAdapter)project.getAdapter(IWorkbenchAdapter.class); - if (adapter != null) { - ImageDescriptor result= adapter.getImageDescriptor(project); - if (result != null) - return result; - } - return DESC_OBJ_PROJECT; - } - return DESC_OBJ_PROJECT_CLOSED; - - case IJavaScriptElement.JAVASCRIPT_MODEL: - return JavaPluginImages.DESC_OBJS_JAVA_MODEL; - - default: - // ignore. Must be a new, yet unknown Java element - // give an advanced IWorkbenchAdapter the chance - IWorkbenchAdapter wbAdapter= (IWorkbenchAdapter) element.getAdapter(IWorkbenchAdapter.class); - if (wbAdapter != null && !(wbAdapter instanceof JavaWorkbenchAdapter)) { // avoid recursion - ImageDescriptor imageDescriptor= wbAdapter.getImageDescriptor(element); - if (imageDescriptor != null) { - return imageDescriptor; - } - } - return JavaPluginImages.DESC_OBJS_GHOST; - } - - } catch (JavaScriptModelException e) { - if (e.isDoesNotExist()) - return JavaPluginImages.DESC_OBJS_UNKNOWN; - JavaScriptPlugin.log(e); - return JavaPluginImages.DESC_OBJS_GHOST; - } - } - -// private static boolean isDefaultFlag(int flags) { -// return !Flags.isPublic(flags) && !Flags.isProtected(flags) && !Flags.isPrivate(flags); -// } -// - protected ImageDescriptor getPackageFragmentIcon(IJavaScriptElement element, int renderFlags) throws JavaScriptModelException { -// IPackageFragment fragment= (IPackageFragment)element; -// boolean containsJavaElements= false; -// try { -// containsJavaElements= fragment.hasChildren(); -// } catch(JavaScriptModelException e) { -// // assuming no children; -// } -// if(!containsJavaElements && (fragment.getNonJavaResources().length > 0)) -// return JavaPluginImages.DESC_OBJS_EMPTY_PACKAGE_RESOURCES; -// else if (!containsJavaElements) -// return JavaPluginImages.DESC_OBJS_EMPTY_PACKAGE; - return JavaPluginImages.DESC_OBJS_PACKAGE; - } - - public void dispose() { - } - - // ---- Methods to compute the adornments flags --------------------------------- - - private int computeJavaAdornmentFlags(IJavaScriptElement element, int renderFlags) { - int flags= 0; - if (showOverlayIcons(renderFlags) && element instanceof IMember) { - try { - IMember member= (IMember) element; - - if (element.getElementType() == IJavaScriptElement.METHOD && ((IFunction)element).isConstructor()) - flags |= JavaScriptElementImageDescriptor.CONSTRUCTOR; - - int modifiers= member.getFlags(); - if (Flags.isAbstract(modifiers) && confirmAbstract(member)) - flags |= JavaScriptElementImageDescriptor.ABSTRACT; - if (Flags.isStatic(modifiers)) - flags |= JavaScriptElementImageDescriptor.STATIC; - - if (Flags.isDeprecated(modifiers)) - flags |= JavaScriptElementImageDescriptor.DEPRECATED; - } catch (JavaScriptModelException e) { - // do nothing. Can't compute runnable adornment or get flags - } - } - return flags; - } - - private static boolean confirmAbstract(IMember element) throws JavaScriptModelException { - // never show the abstract symbol on interfaces or members in interfaces - if (element.getElementType() == IJavaScriptElement.TYPE) { - return true; - } - return true; - } - - public static ImageDescriptor getMethodImageDescriptor(boolean isInInterfaceOrAnnotation, int flags) { - if (Flags.isPublic(flags) || isInInterfaceOrAnnotation) - return JavaPluginImages.DESC_MISC_PUBLIC; - if (Flags.isProtected(flags)) - return JavaPluginImages.DESC_MISC_PROTECTED; - if (Flags.isPrivate(flags)) - return JavaPluginImages.DESC_MISC_PRIVATE; - - return JavaPluginImages.DESC_MISC_DEFAULT; - } - - public static ImageDescriptor getFieldImageDescriptor(boolean isInInterfaceOrAnnotation, int flags) { - if (Flags.isPublic(flags) || isInInterfaceOrAnnotation) - return JavaPluginImages.DESC_FIELD_PUBLIC; - if (Flags.isProtected(flags)) - return JavaPluginImages.DESC_FIELD_PROTECTED; - if (Flags.isPrivate(flags)) - return JavaPluginImages.DESC_FIELD_PRIVATE; - - return JavaPluginImages.DESC_FIELD_DEFAULT; - } - - public static ImageDescriptor getTypeImageDescriptor(boolean isInner, boolean isInInterfaceOrAnnotation, int flags, boolean useLightIcons) { - if (useLightIcons) { - return JavaPluginImages.DESC_OBJS_CLASSALT; - } - if (isInner) { - return getInnerClassImageDescriptor(isInInterfaceOrAnnotation, flags); - } - return getClassImageDescriptor(flags); - - } - - - public static Image getDecoratedImage(ImageDescriptor baseImage, int adornments, Point size) { - return JavaScriptPlugin.getImageDescriptorRegistry().get(new JavaScriptElementImageDescriptor(baseImage, adornments, size)); - } - - - private static ImageDescriptor getClassImageDescriptor(int flags) { - if (Flags.isPublic(flags) || Flags.isPrivate(flags)) - return JavaPluginImages.DESC_OBJS_CLASS; - else - return JavaPluginImages.DESC_OBJS_CLASS_DEFAULT; - } - - private static ImageDescriptor getInnerClassImageDescriptor(boolean isInInterfaceOrAnnotation, int flags) { - if (Flags.isPublic(flags) || isInInterfaceOrAnnotation) - return JavaPluginImages.DESC_OBJS_INNER_CLASS_PUBLIC; - else if (Flags.isPrivate(flags)) - return JavaPluginImages.DESC_OBJS_INNER_CLASS_PRIVATE; - else - return JavaPluginImages.DESC_OBJS_INNER_CLASS_DEFAULT; - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/JavaUILabelProvider.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/JavaUILabelProvider.java deleted file mode 100644 index ff6e8340..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/JavaUILabelProvider.java +++ /dev/null @@ -1,278 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import java.util.ArrayList; - -import org.eclipse.core.resources.IStorage; -import org.eclipse.core.runtime.ListenerList; -import org.eclipse.core.runtime.SafeRunner; -import org.eclipse.jface.util.SafeRunnable; -import org.eclipse.jface.viewers.IColorProvider; -import org.eclipse.jface.viewers.ILabelDecorator; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.ILabelProviderListener; -import org.eclipse.jface.viewers.LabelProviderChangedEvent; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Image; -import org.eclipse.wst.jsdt.ui.JavaScriptElementLabels; - -public class JavaUILabelProvider implements ILabelProvider, IColorProvider, IRichLabelProvider { - - protected ListenerList fListeners = new ListenerList(); - - protected JavaElementImageProvider fImageLabelProvider; - protected StorageLabelProvider fStorageLabelProvider; - - private ArrayList fLabelDecorators; - - private int fImageFlags; - private long fTextFlags; - - /** - * Creates a new label provider with default flags. - */ - public JavaUILabelProvider() { - this(JavaScriptElementLabels.ALL_DEFAULT, JavaElementImageProvider.OVERLAY_ICONS); - } - - /** - * @param textFlags Flags defined in <code>JavaScriptElementLabels</code>. - * @param imageFlags Flags defined in <code>JavaElementImageProvider</code>. - */ - public JavaUILabelProvider(long textFlags, int imageFlags) { - fImageLabelProvider= new JavaElementImageProvider(); - fLabelDecorators= null; - - fStorageLabelProvider= new StorageLabelProvider(); - fImageFlags= imageFlags; - fTextFlags= textFlags; - } - - /** - * Adds a decorator to the label provider - * @param decorator the decorator to add - */ - 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(long 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 overwritten by super classes. - * @return Returns a int - */ - public final int getImageFlags() { - return fImageFlags; - } - - /** - * Gets the text flags. - * @return Returns a int - */ - public final long getTextFlags() { - return fTextFlags; - } - - /** - * Evaluates the image flags for a element. - * Can be overwritten by super classes. - * @param element the element to compute the image flags for - * @return Returns a int - */ - protected int evaluateImageFlags(Object element) { - return getImageFlags(); - } - - /** - * Evaluates the text flags for a element. Can be overwritten by super classes. - * @param element the element to compute the text flags for - * @return Returns a int - */ - protected long evaluateTextFlags(Object element) { - return getTextFlags(); - } - - protected Image decorateImage(Image image, Object element) { - if (fLabelDecorators != null && image != null) { - for (int i= 0; i < fLabelDecorators.size(); i++) { - ILabelDecorator decorator= (ILabelDecorator) fLabelDecorators.get(i); - image= decorator.decorateImage(image, element); - } - } - return image; - } - - /* (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); - } - - return decorateImage(result, element); - } - - protected String decorateText(String text, Object element) { - if (fLabelDecorators != null && text.length() > 0) { - for (int i= 0; i < fLabelDecorators.size(); i++) { - ILabelDecorator decorator= (ILabelDecorator) fLabelDecorators.get(i); - String decorated= decorator.decorateText(text, element); - if (decorated != null) { - text= decorated; - } - } - } - return text; - } - - - /* (non-Javadoc) - * @see ILabelProvider#getText - */ - public String getText(Object element) { - String result= JavaScriptElementLabels.getTextLabel(element, evaluateTextFlags(element)); - if (result.length() == 0 && (element instanceof IStorage)) { - result= fStorageLabelProvider.getText(element); - } - return decorateText(result, element); - } - - public ColoredString getRichTextLabel(Object element) { - ColoredString string= ColoredJavaElementLabels.getTextLabel(element, evaluateTextFlags(element) | ColoredJavaElementLabels.COLORIZE); - if (string.length() == 0 && (element instanceof IStorage)) { - string= new ColoredString(fStorageLabelProvider.getText(element)); - } - String decorated= decorateText(string.getString(), element); - if (decorated != null) { - return ColoredJavaElementLabels.decorateColoredString(string, decorated, ColoredJavaElementLabels.DECORATIONS_STYLE); - } - return string; - } - - /* (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); - } - } - fListeners.add(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); - } - } - fListeners.remove(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; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.IColorProvider#getForeground(java.lang.Object) - */ - public Color getForeground(Object element) { - return null; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.IColorProvider#getBackground(java.lang.Object) - */ - public Color getBackground(Object element) { - return null; - } - - /** - * Fires a label provider changed event to all registered listeners - * Only listeners registered at the time this method is called are notified. - * - * @param event a label provider changed event - * - * @see ILabelProviderListener#labelProviderChanged - */ - protected void fireLabelProviderChanged(final LabelProviderChangedEvent event) { - Object[] listeners = fListeners.getListeners(); - for (int i = 0; i < listeners.length; ++i) { - final ILabelProviderListener l = (ILabelProviderListener) listeners[i]; - SafeRunner.run(new SafeRunnable() { - public void run() { - l.labelProviderChanged(event); - } - }); - } - } - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/JavaViewerFilter.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/JavaViewerFilter.java deleted file mode 100644 index 8478ebaf..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/JavaViewerFilter.java +++ /dev/null @@ -1,56 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ - -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerFilter; - -/** - * filter with a live cycle - */ -public abstract class JavaViewerFilter extends ViewerFilter { - - private int fCount= 0; - - /** - * To be overridden by implement - */ - protected abstract void initFilter(); - - protected abstract void freeFilter(); - - public final void filteringStart() { - if (fCount == 0) - initFilter(); - fCount++; - } - - public final void filteringEnd() { - fCount--; - if (fCount == 0) - freeFilter(); - } - - /* - * Overrides method from ViewerFilter - */ - public Object[] filter(Viewer viewer, Object parent, Object[] elements) { - try { - filteringStart(); - return super.filter(viewer, parent, elements); - } finally { - filteringEnd(); - } - } - - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/LabelProviderDisposer.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/LabelProviderDisposer.java deleted file mode 100644 index 3030628e..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/LabelProviderDisposer.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - - -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.events.DisposeListener; - -/** - * Helper class to manage images that should be disposed when a control is disposed - * contol.addWidgetListener(new LabelProviderDisposer(myLabelProvider)); - */ -public class LabelProviderDisposer implements DisposeListener { - - private ILabelProvider fLabelProvider; - - public LabelProviderDisposer(ILabelProvider labelProvider) { - fLabelProvider= labelProvider; - } - - public void widgetDisposed(DisposeEvent e) { - fLabelProvider.dispose(); - } -} - - diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/LibraryFilter.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/LibraryFilter.java deleted file mode 100644 index 35e9aaca..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/LibraryFilter.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.wst.jsdt.core.IPackageFragmentRoot; - -/** - * Filters out all elements which libraries - */ -public class LibraryFilter extends ViewerFilter { - - /** - * Returns the result of this filter, when applied to the - * given inputs. - * - * @return Returns true if element should be included in filtered set - */ - public boolean select(Viewer viewer, Object parent, Object element) { - if (element instanceof IPackageFragmentRoot) - return !((IPackageFragmentRoot)element).isArchive(); - return true; - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/MemberFilter.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/MemberFilter.java deleted file mode 100644 index 791464a3..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/MemberFilter.java +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2009 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.wst.jsdt.core.Flags; -import org.eclipse.wst.jsdt.core.IJavaScriptElement; -import org.eclipse.wst.jsdt.core.IMember; -import org.eclipse.wst.jsdt.core.IType; -import org.eclipse.wst.jsdt.core.JavaScriptModelException; - -/** - * Filter for the methods viewer. - * Changing a filter property does not trigger a refiltering of the viewer - */ -public class MemberFilter extends ViewerFilter { - - public static final int FILTER_NONPUBLIC= 1; - public static final int FILTER_STATIC= 2; - public static final int FILTER_FIELDS= 4; - public static final int FILTER_LOCALTYPES= 8; - - private int fFilterProperties; - - - /** - * Modifies filter and add a property to filter for - */ - public final void addFilter(int filter) { - fFilterProperties |= filter; - } - /** - * Modifies filter and remove a property to filter for - */ - public final void removeFilter(int filter) { - fFilterProperties &= (-1 ^ filter); - } - /** - * Tests if a property is filtered - */ - public final boolean hasFilter(int filter) { - return (fFilterProperties & filter) != 0; - } - - /* - * @see ViewerFilter#isFilterProperty(java.lang.Object, java.lang.String) - */ - public boolean isFilterProperty(Object element, Object property) { - return false; - } - /* - * @see ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) - */ - public boolean select(Viewer viewer, Object parentElement, Object element) { - try { - if (element instanceof IMember) { - IMember member= (IMember) element; - int memberType= member.getElementType(); - - if (hasFilter(FILTER_FIELDS) && memberType == IJavaScriptElement.FIELD) { - return false; - } - - if (hasFilter(FILTER_LOCALTYPES) && memberType == IJavaScriptElement.TYPE && isLocalType((IType) member)) { - return false; - } - - if (member.getElementName().startsWith("<")) { // filter out <clinit> //$NON-NLS-1$ - return false; - } - int flags= member.getFlags(); - if (hasFilter(FILTER_STATIC) && (Flags.isStatic(flags)) && memberType != IJavaScriptElement.TYPE) { - return false; - } - if (hasFilter(FILTER_NONPUBLIC) && !Flags.isPublic(flags) && !isTopLevelType(member)) { - return false; - } - } - } catch (JavaScriptModelException e) { - // ignore - } - return true; - } - - private boolean isLocalType(IType type) { - IJavaScriptElement parent= type.getParent(); - return parent instanceof IMember && !(parent instanceof IType); - } - - private boolean isTopLevelType(IMember member) { -// IType parent= member.getDeclaringType(); -// return parent == null; - return true; - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/MemberFilterAction.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/MemberFilterAction.java deleted file mode 100644 index cc78db71..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/MemberFilterAction.java +++ /dev/null @@ -1,49 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.jface.action.Action; -import org.eclipse.ui.PlatformUI; -import org.eclipse.wst.jsdt.ui.actions.MemberFilterActionGroup; - -/** - * Action used to enable / disable method filter properties - */ -public class MemberFilterAction extends Action { - - private int fFilterProperty; - private MemberFilterActionGroup fFilterActionGroup; - - public MemberFilterAction(MemberFilterActionGroup actionGroup, String title, int property, String contextHelpId, boolean initValue) { - super(title); - fFilterActionGroup= actionGroup; - fFilterProperty= property; - - PlatformUI.getWorkbench().getHelpSystem().setHelp(this, contextHelpId); - - setChecked(initValue); - } - - /** - * Returns this action's filter property. - */ - public int getFilterProperty() { - return fFilterProperty; - } - - /* - * @see Action#actionPerformed - */ - public void run() { - fFilterActionGroup.setMemberFilter(fFilterProperty, isChecked()); - } - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/OwnerDrawSupport.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/OwnerDrawSupport.java deleted file mode 100644 index 9c6e62e9..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/OwnerDrawSupport.java +++ /dev/null @@ -1,163 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import java.util.Iterator; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Font; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.graphics.TextLayout; -import org.eclipse.swt.graphics.TextStyle; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Item; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.TableItem; -import org.eclipse.swt.widgets.TreeItem; - -/** - * Adding owner draw support to a control - */ -public abstract class OwnerDrawSupport implements Listener { - - private TextLayout fTextLayout; - private final Control fControl; - - public OwnerDrawSupport(Control control) { - fControl= control; - fTextLayout= new TextLayout(control.getDisplay()); - - control.addListener(SWT.PaintItem, this); - control.addListener(SWT.EraseItem, this); - control.addListener(SWT.Dispose, this); - } - - /** - * Return the colored label for the given item. - * @param item the item to return the colored label for - * @return the colored string - */ - public abstract ColoredString getColoredLabel(Item item); - - /** - * Return the color for the given style - * @param foregroundColorName the name of the color - * @param display the current display - * @return the color - */ - public abstract Color getColor(String foregroundColorName, Display display); - - /* (non-Javadoc) - * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event) - */ - public void handleEvent(Event event) { - if (event.type == SWT.PaintItem) { - performPaint(event); - } else if (event.type == SWT.EraseItem) { - performErase(event); - } else if (event.type == SWT.Dispose) { - dispose(); - } - } - - private void performErase(Event event) { - event.detail &= ~SWT.FOREGROUND; - } - - private void performPaint(Event event) { - Item item= (Item) event.item; - GC gc= event.gc; - - ColoredString coloredLabel= getColoredLabel(item); - boolean isSelected= (event.detail & SWT.SELECTED) != 0 && fControl.isFocusControl(); - if (item instanceof TreeItem) { - TreeItem treeItem= (TreeItem) item; - Image image = treeItem.getImage(event.index); - if (image != null) { - processImage(image, gc, treeItem.getImageBounds(event.index)); - } - Rectangle textBounds= treeItem.getTextBounds(event.index); - Font font= treeItem.getFont(event.index); - processColoredLabel(coloredLabel, gc, textBounds, isSelected, font); - - Rectangle bounds= treeItem.getBounds(); - if ((event.detail & SWT.FOCUSED) != 0) { - gc.drawFocus(bounds.x, bounds.y, bounds.width, bounds.height); - } - } else if (item instanceof TableItem) { - TableItem tableItem= (TableItem) item; - Image image = tableItem.getImage(event.index); - if (image != null) { - processImage(image, gc, tableItem.getImageBounds(event.index)); - } - Rectangle textBounds= tableItem.getTextBounds(event.index); - Font font= tableItem.getFont(event.index); - processColoredLabel(coloredLabel, gc, textBounds, isSelected, font); - - Rectangle bounds= tableItem.getBounds(); - if ((event.detail & SWT.FOCUSED) != 0) { - gc.drawFocus(bounds.x, bounds.y, bounds.width, bounds.height); - } - } - } - - private void processImage(Image image, GC gc, Rectangle imageBounds) { - Rectangle bounds= image.getBounds(); - int x= imageBounds.x + Math.max(0, (imageBounds.width - bounds.width) / 2); - int y= imageBounds.y + Math.max(0, (imageBounds.height - bounds.height) / 2); - gc.drawImage(image, x, y); - } - - private void processColoredLabel(ColoredString richLabel, GC gc, Rectangle textBounds, boolean isSelected, Font font) { - String text= richLabel.getString(); - fTextLayout.setText(text); - fTextLayout.setFont(font); - - if (!isSelected) { - // apply the styled ranges only when element is not selected - Display display= (Display) gc.getDevice(); - Iterator ranges= richLabel.getRanges(); - while (ranges.hasNext()) { - ColoredString.StyleRange curr= (ColoredString.StyleRange) ranges.next(); - ColoredString.Style style= curr.style; - if (style != null) { - Color foreground= getColor(style.getForegroundColorName(), display); - TextStyle textStyle= new TextStyle(null, foreground, null); - fTextLayout.setStyle(textStyle, curr.offset, curr.offset + curr.length - 1); - } - } - } - - Rectangle bounds= fTextLayout.getBounds(); - int x= textBounds.x; - int y = textBounds.y + Math.max(0, (textBounds.height - bounds.height) / 2); - - fTextLayout.draw(gc, x, y); - fTextLayout.setText(""); // clear all ranges //$NON-NLS-1$ - } - - public void dispose() { - if (fTextLayout != null) { - fTextLayout.dispose(); - fTextLayout= null; - } - if (!fControl.isDisposed()) { - fControl.removeListener(SWT.PaintItem, this); - fControl.removeListener(SWT.EraseItem, this); - fControl.removeListener(SWT.Dispose, this); - } - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ProblemMarkerManager.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ProblemMarkerManager.java deleted file mode 100644 index 5da9aaa4..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ProblemMarkerManager.java +++ /dev/null @@ -1,180 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - - -import java.util.HashSet; - -import org.eclipse.core.resources.IMarker; -import org.eclipse.core.resources.IMarkerDelta; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IResourceChangeEvent; -import org.eclipse.core.resources.IResourceChangeListener; -import org.eclipse.core.resources.IResourceDelta; -import org.eclipse.core.resources.IResourceDeltaVisitor; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.ListenerList; -import org.eclipse.jface.text.source.AnnotationModelEvent; -import org.eclipse.jface.text.source.IAnnotationModel; -import org.eclipse.jface.text.source.IAnnotationModelListener; -import org.eclipse.jface.text.source.IAnnotationModelListenerExtension; -import org.eclipse.swt.widgets.Display; -import org.eclipse.wst.jsdt.internal.ui.JavaScriptPlugin; -import org.eclipse.wst.jsdt.internal.ui.javaeditor.CompilationUnitAnnotationModelEvent; -import org.eclipse.wst.jsdt.internal.ui.util.SWTUtil; - -/** - * Listens to resource deltas and filters for marker changes of type IMarker.PROBLEM - * Viewers showing error ticks should register as listener to - * this type. - */ -public class ProblemMarkerManager implements IResourceChangeListener, IAnnotationModelListener , IAnnotationModelListenerExtension { - - /** - * Visitors used to look if the element change delta contains a marker change. - */ - private static class ProjectErrorVisitor implements IResourceDeltaVisitor { - - private HashSet fChangedElements; - - public ProjectErrorVisitor(HashSet changedElements) { - fChangedElements= changedElements; - } - - public boolean visit(IResourceDelta delta) throws CoreException { - IResource res= delta.getResource(); - if (res instanceof IProject && delta.getKind() == IResourceDelta.CHANGED) { - IProject project= (IProject) res; - if (!project.isAccessible()) { - // only track open Java projects - return false; - } - } - checkInvalidate(delta, res); - return true; - } - - private void checkInvalidate(IResourceDelta delta, IResource resource) { - int kind= delta.getKind(); - if (kind == IResourceDelta.REMOVED || kind == IResourceDelta.ADDED || (kind == IResourceDelta.CHANGED && isErrorDelta(delta))) { - // invalidate the resource and all parents - while (resource.getType() != IResource.ROOT && fChangedElements.add(resource)) { - resource= resource.getParent(); - } - } - } - - private boolean isErrorDelta(IResourceDelta delta) { - if ((delta.getFlags() & IResourceDelta.MARKERS) != 0) { - IMarkerDelta[] markerDeltas= delta.getMarkerDeltas(); - for (int i= 0; i < markerDeltas.length; i++) { - if (markerDeltas[i].isSubtypeOf(IMarker.PROBLEM)) { - int kind= markerDeltas[i].getKind(); - if (kind == IResourceDelta.ADDED || kind == IResourceDelta.REMOVED) - return true; - int severity= markerDeltas[i].getAttribute(IMarker.SEVERITY, -1); - int newSeverity= markerDeltas[i].getMarker().getAttribute(IMarker.SEVERITY, -1); - if (newSeverity != severity) - return true; - } - } - } - return false; - } - } - - private ListenerList fListeners; - - - public ProblemMarkerManager() { - fListeners= new ListenerList(); - } - - /* - * @see IResourceChangeListener#resourceChanged - */ - public void resourceChanged(IResourceChangeEvent event) { - HashSet changedElements= new HashSet(); - - try { - IResourceDelta delta= event.getDelta(); - if (delta != null) - delta.accept(new ProjectErrorVisitor(changedElements)); - } catch (CoreException e) { - JavaScriptPlugin.log(e.getStatus()); - } - - if (!changedElements.isEmpty()) { - IResource[] changes= (IResource[]) changedElements.toArray(new IResource[changedElements.size()]); - fireChanges(changes, true); - } - } - - /* (non-Javadoc) - * @see IAnnotationModelListener#modelChanged(IAnnotationModel) - */ - public void modelChanged(IAnnotationModel model) { - // no action - } - - /* (non-Javadoc) - * @see IAnnotationModelListenerExtension#modelChanged(AnnotationModelEvent) - */ - public void modelChanged(AnnotationModelEvent event) { - if (event instanceof CompilationUnitAnnotationModelEvent) { - CompilationUnitAnnotationModelEvent cuEvent= (CompilationUnitAnnotationModelEvent) event; - if (cuEvent.includesProblemMarkerAnnotationChanges()) { - IResource[] changes= new IResource[] { cuEvent.getUnderlyingResource() }; - fireChanges(changes, false); - } - } - } - - - /** - * Adds a listener for problem marker changes. - */ - public void addListener(IProblemChangedListener listener) { - if (fListeners.isEmpty()) { - JavaScriptPlugin.getWorkspace().addResourceChangeListener(this); - JavaScriptPlugin.getDefault().getCompilationUnitDocumentProvider().addGlobalAnnotationModelListener(this); - } - fListeners.add(listener); - } - - /** - * Removes a <code>IProblemChangedListener</code>. - */ - public void removeListener(IProblemChangedListener listener) { - fListeners.remove(listener); - if (fListeners.isEmpty()) { - JavaScriptPlugin.getWorkspace().removeResourceChangeListener(this); - JavaScriptPlugin.getDefault().getCompilationUnitDocumentProvider().removeGlobalAnnotationModelListener(this); - } - } - - private void fireChanges(final IResource[] changes, final boolean isMarkerChange) { - Display display= SWTUtil.getStandardDisplay(); - if (display != null && !display.isDisposed()) { - display.asyncExec(new Runnable() { - public void run() { - Object[] listeners= fListeners.getListeners(); - for (int i= 0; i < listeners.length; i++) { - IProblemChangedListener curr= (IProblemChangedListener) listeners[i]; - curr.problemsChanged(changes, isMarkerChange); - } - } - }); - } - } - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ProblemTableViewer.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ProblemTableViewer.java deleted file mode 100644 index ca7e260c..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ProblemTableViewer.java +++ /dev/null @@ -1,141 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ - -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import java.util.ArrayList; - -import org.eclipse.core.resources.IResource; -import org.eclipse.jface.viewers.IBaseLabelProvider; -import org.eclipse.jface.viewers.LabelProviderChangedEvent; -import org.eclipse.jface.viewers.TableViewer; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Item; -import org.eclipse.swt.widgets.Table; -import org.eclipse.swt.widgets.Widget; -import org.eclipse.wst.jsdt.ui.IWorkingCopyProvider; -import org.eclipse.wst.jsdt.ui.ProblemsLabelDecorator.ProblemsLabelChangedEvent; - -/** - * Extends a TableViewer to allow more performance when showing error ticks. - * A <code>ProblemItemMapper</code> is contained that maps all items in - * the tree to underlying resource - */ -public class ProblemTableViewer extends TableViewer implements ResourceToItemsMapper.IContentViewerAccessor { - - protected ResourceToItemsMapper fResourceToItemsMapper; - - /** - * Constructor for ProblemTableViewer. - * @param parent - */ - public ProblemTableViewer(Composite parent) { - super(parent); - initMapper(); - } - - /** - * Constructor for ProblemTableViewer. - * @param parent - * @param style - */ - public ProblemTableViewer(Composite parent, int style) { - super(parent, style); - initMapper(); - } - - /** - * Constructor for ProblemTableViewer. - * @param table - */ - public ProblemTableViewer(Table table) { - super(table); - initMapper(); - } - - private void initMapper() { - fResourceToItemsMapper= new ResourceToItemsMapper(this); - } - - /* (non-Javadoc) - * @see org.eclipse.wst.jsdt.internal.ui.viewsupport.ResourceToItemsMapper.IContentViewerAccessor#doUpdateItem(org.eclipse.swt.widgets.Widget) - */ - public void doUpdateItem(Widget item) { - doUpdateItem(item, item.getData(), true); - } - - /* - * @see StructuredViewer#mapElement(Object, Widget) - */ - protected void mapElement(Object element, Widget item) { - super.mapElement(element, item); - if (item instanceof Item) { - fResourceToItemsMapper.addToMap(element, (Item) item); - } - } - - /* - * @see StructuredViewer#unmapElement(Object, Widget) - */ - protected void unmapElement(Object element, Widget item) { - if (item instanceof Item) { - fResourceToItemsMapper.removeFromMap(element, (Item) item); - } - super.unmapElement(element, item); - } - - /* - * @see StructuredViewer#unmapAllElements() - */ - protected void unmapAllElements() { - fResourceToItemsMapper.clearMap(); - super.unmapAllElements(); - } - - /* - * @see ContentViewer#handleLabelProviderChanged(LabelProviderChangedEvent) - */ - protected void handleLabelProviderChanged(LabelProviderChangedEvent event) { - if (event instanceof ProblemsLabelChangedEvent) { - ProblemsLabelChangedEvent e= (ProblemsLabelChangedEvent) event; - if (!e.isMarkerChange() && canIgnoreChangesFromAnnotionModel()) { - return; - } - } - - Object[] changed= event.getElements(); - if (changed != null && !fResourceToItemsMapper.isEmpty()) { - ArrayList others= new ArrayList(changed.length); - for (int i= 0; i < changed.length; i++) { - Object curr= changed[i]; - if (curr instanceof IResource) { - fResourceToItemsMapper.resourceChanged((IResource) curr); - } else { - others.add(curr); - } - } - if (others.isEmpty()) { - return; - } - event= new LabelProviderChangedEvent((IBaseLabelProvider) event.getSource(), others.toArray()); - } - super.handleLabelProviderChanged(event); - } - - /** - * Answers whether this viewer can ignore label provider changes resulting from - * marker changes in annotation models - */ - private boolean canIgnoreChangesFromAnnotionModel() { - Object contentProvider= getContentProvider(); - return contentProvider instanceof IWorkingCopyProvider && !((IWorkingCopyProvider)contentProvider).providesWorkingCopies(); - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ProblemTreeViewer.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ProblemTreeViewer.java deleted file mode 100644 index 5a24af78..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ProblemTreeViewer.java +++ /dev/null @@ -1,328 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ - -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import java.util.ArrayList; -import java.util.List; - -import org.eclipse.core.resources.IResource; -import org.eclipse.jface.viewers.IBaseLabelProvider; -import org.eclipse.jface.viewers.LabelProviderChangedEvent; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.jface.viewers.ViewerFilter; -import org.eclipse.swt.events.DisposeEvent; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Item; -import org.eclipse.swt.widgets.Tree; -import org.eclipse.swt.widgets.Widget; -import org.eclipse.wst.jsdt.core.IMember; -import org.eclipse.wst.jsdt.ui.IWorkingCopyProvider; -import org.eclipse.wst.jsdt.ui.ProblemsLabelDecorator.ProblemsLabelChangedEvent; - - -/** - * Extends a TreeViewer to allow more performance when showing error ticks. - * A <code>ProblemItemMapper</code> is contained that maps all items in - * the tree to underlying resource - */ -public class ProblemTreeViewer extends TreeViewer implements ResourceToItemsMapper.IContentViewerAccessor { - - protected ResourceToItemsMapper fResourceToItemsMapper; - - /* - * @see TreeViewer#TreeViewer(Composite) - */ - public ProblemTreeViewer(Composite parent) { - super(parent); - initMapper(); - } - - /* - * @see TreeViewer#TreeViewer(Composite, int) - */ - public ProblemTreeViewer(Composite parent, int style) { - super(parent, style); - initMapper(); - } - - /* - * @see TreeViewer#TreeViewer(Tree) - */ - public ProblemTreeViewer(Tree tree) { - super(tree); - initMapper(); - } - - /* (non-Javadoc) - * @see org.eclipse.wst.jsdt.internal.ui.viewsupport.ResourceToItemsMapper.IContentViewerAccessor#doUpdateItem(org.eclipse.swt.widgets.Widget) - */ - public void doUpdateItem(Widget item) { - doUpdateItem(item, item.getData(), true); - } - - private void initMapper() { - fResourceToItemsMapper= new ResourceToItemsMapper(this); - } - - - /* - * @see StructuredViewer#mapElement(Object, Widget) - */ - protected void mapElement(Object element, Widget item) { - super.mapElement(element, item); - if (item instanceof Item) { - fResourceToItemsMapper.addToMap(element, (Item) item); - } - } - - /* - * @see StructuredViewer#unmapElement(Object, Widget) - */ - protected void unmapElement(Object element, Widget item) { - if (item instanceof Item) { - fResourceToItemsMapper.removeFromMap(element, (Item) item); - } - super.unmapElement(element, item); - } - - /* - * @see StructuredViewer#unmapAllElements() - */ - protected void unmapAllElements() { - fResourceToItemsMapper.clearMap(); - super.unmapAllElements(); - } - - - // ---------------- filter sessions ---------------------------- - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.StructuredViewer#addFilter(org.eclipse.jface.viewers.ViewerFilter) - */ - public void addFilter(ViewerFilter filter) { - if (filter instanceof JavaViewerFilter) { - ((JavaViewerFilter) filter).filteringStart(); - } - super.addFilter(filter); - } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.StructuredViewer#removeFilter(org.eclipse.jface.viewers.ViewerFilter) - */ - public void removeFilter(ViewerFilter filter) { - super.removeFilter(filter); - if (filter instanceof JavaViewerFilter) { - ((JavaViewerFilter) filter).filteringEnd(); - } - } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.StructuredViewer#setFilters(org.eclipse.jface.viewers.ViewerFilter[]) - */ - public void setFilters(ViewerFilter[] filters) { - ViewerFilter[] oldFilters= getFilters(); - for (int i= 0; i < filters.length; i++) { - ViewerFilter curr= filters[i]; - if (curr instanceof JavaViewerFilter && !findAndRemove(oldFilters, curr)) { - ((JavaViewerFilter) curr).filteringStart(); - } - } - endFilterSessions(oldFilters); - super.setFilters(filters); - } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.StructuredViewer#resetFilters() - */ - public void resetFilters() { - endFilterSessions(getFilters()); - super.resetFilters(); - } - - private boolean findAndRemove(ViewerFilter[] filters, ViewerFilter filter) { - for (int i= 0; i < filters.length; i++) { - if (filters[i] == filter) { - filters[i]= null; - return true; - } - } - return false; - } - - private void endFilterSessions(ViewerFilter[] filters) { - for (int i= 0; i < filters.length; i++) { - ViewerFilter curr= filters[i]; - if (curr instanceof JavaViewerFilter) { - ((JavaViewerFilter) curr).filteringEnd(); - } - } - } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.StructuredViewer#handleDispose(org.eclipse.swt.events.DisposeEvent) - */ - protected void handleDispose(DisposeEvent event) { - endFilterSessions(getFilters()); - super.handleDispose(event); - } - - - /* - * @see ContentViewer#handleLabelProviderChanged(LabelProviderChangedEvent) - */ - protected void handleLabelProviderChanged(LabelProviderChangedEvent event) { - if (event instanceof ProblemsLabelChangedEvent) { - ProblemsLabelChangedEvent e= (ProblemsLabelChangedEvent) event; - if (!e.isMarkerChange() && canIgnoreChangesFromAnnotionModel()) { - return; - } - } - Object[] changed= addAditionalProblemParents(event.getElements()); - - if (changed != null && !fResourceToItemsMapper.isEmpty()) { - ArrayList others= new ArrayList(); - for (int i= 0; i < changed.length; i++) { - Object curr= changed[i]; - if (curr instanceof IResource) { - fResourceToItemsMapper.resourceChanged((IResource) curr); - } else { - others.add(curr); - } - } - if (others.isEmpty()) { - return; - } - event= new LabelProviderChangedEvent((IBaseLabelProvider) event.getSource(), others.toArray()); - } else { - // we have modified the list of changed elements via add additional parents. - if (event.getElements() != changed) - event= new LabelProviderChangedEvent((IBaseLabelProvider) event.getSource(), changed); - } - super.handleLabelProviderChanged(event); - } - - /** - * Answers whether this viewer can ignore label provider changes resulting from - * marker changes in annotation models - * @return return <code>true</code> if annotation model marker changes can be ignored - */ - private boolean canIgnoreChangesFromAnnotionModel() { - Object contentProvider= getContentProvider(); - return contentProvider instanceof IWorkingCopyProvider && !((IWorkingCopyProvider)contentProvider).providesWorkingCopies(); - } - - - /** - * Decides if {@link #isExpandable(Object)} should also test filters. The default behaviour is to - * do this only for IMembers. Implementors can replace this behaviour. - * @param parent the given element - * @return returns if if {@link #isExpandable(Object)} should also test filters for the given element. - */ - protected boolean evaluateExpandableWithFilters(Object parent) { - return parent instanceof IMember; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.AbstractTreeViewer#isExpandable(java.lang.Object) - */ - public boolean isExpandable(Object parent) { - if (hasFilters() && evaluateExpandableWithFilters(parent)) { - // workaround for 65762 - return hasFilteredChildren(parent); - } - return super.isExpandable(parent); - } - - protected final boolean hasFilteredChildren(Object parent) { - Object[] rawChildren= getRawChildren(parent); - return containsNonFiltered(rawChildren, parent); - } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.AbstractTreeViewer#getFilteredChildren(java.lang.Object) - */ - protected final Object[] getFilteredChildren(Object parent) { - return filter(getRawChildren(parent), parent); - } - - private Object[] filter(Object[] elements, Object parent) { - if (!hasFilters() || elements.length == 0) { - return elements; - } - List list= new ArrayList(elements.length); - ViewerFilter[] filters = getFilters(); - for (int i = 0; i < elements.length; i++) { - Object object = elements[i]; - if (!isFiltered(object, parent, filters)) { - list.add(object); - } - } - return list.toArray(); - } - - private boolean containsNonFiltered(Object[] elements, Object parent) { - if (elements.length == 0) { - return false; - } - if (!hasFilters()) { - return true; - } - ViewerFilter[] filters = getFilters(); - for (int i = 0; i < elements.length; i++) { - Object object = elements[i]; - if (!isFiltered(object, parent, filters)) { - return true; - } - } - return false; - } - - /** - * All element filter tests must go through this method. - * Can be overridden by subclasses. - * - * @param object the object to filter - * @param parent the parent - * @param filters the filters to apply - * @return true if the element is filtered - */ - protected boolean isFiltered(Object object, Object parent, ViewerFilter[] filters) { - for (int i = 0; i < filters.length; i++) { - ViewerFilter filter = filters[i]; - if (!filter.select(this, parent, object)) - return true; - } - return false; - } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.StructuredViewer#filter(java.lang.Object[]) - */ - protected final Object[] filter(Object[] elements) { - return filter(elements, getRoot()); - } - - protected Object[] addAditionalProblemParents(Object[] elements) { - return elements; - } - - /** - * Public method to test if a element is filtered by the views active filters - * @param object the element to test for - * @param parent the parent element - * @return return <code>true if the element is filtered</code> - */ - public boolean isFiltered(Object object, Object parent) { - return isFiltered(object, parent, getFilters()); - } -} - diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ProjectTemplateStore.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ProjectTemplateStore.java deleted file mode 100644 index b015bef8..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ProjectTemplateStore.java +++ /dev/null @@ -1,172 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import java.io.IOException; -import java.io.Reader; -import java.io.StringReader; -import java.io.StringWriter; -import java.util.HashSet; -import java.util.Set; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.ProjectScope; -import org.eclipse.core.runtime.Assert; -import org.eclipse.jface.text.templates.Template; -import org.eclipse.jface.text.templates.persistence.TemplatePersistenceData; -import org.eclipse.jface.text.templates.persistence.TemplateReaderWriter; -import org.eclipse.jface.text.templates.persistence.TemplateStore; -import org.eclipse.ui.preferences.ScopedPreferenceStore; -import org.eclipse.wst.jsdt.internal.ui.JavaScriptPlugin; -import org.eclipse.wst.jsdt.ui.JavaScriptUI; - -/** - * - */ -public final class ProjectTemplateStore { - - private static final String KEY= "org.eclipse.wst.jsdt.ui.text.custom_code_templates"; //$NON-NLS-1$ - - private final TemplateStore fInstanceStore; - private final TemplateStore fProjectStore; - - public ProjectTemplateStore(IProject project) { - fInstanceStore= JavaScriptPlugin.getDefault().getCodeTemplateStore(); - if (project == null) { - fProjectStore= null; - } else { - final ScopedPreferenceStore projectSettings= new ScopedPreferenceStore(new ProjectScope(project), JavaScriptUI.ID_PLUGIN); - fProjectStore= new TemplateStore(projectSettings, KEY) { - /* - * Make sure we keep the id of added code templates - add removes - * it in the usual add() method - */ - public void add(TemplatePersistenceData data) { - internalAdd(data); - } - - public void save() throws IOException { - - StringWriter output= new StringWriter(); - TemplateReaderWriter writer= new TemplateReaderWriter(); - writer.save(getTemplateData(false), output); - - projectSettings.setValue(KEY, output.toString()); - projectSettings.save(); - } - }; - } - } - - public static boolean hasProjectSpecificTempates(IProject project) { - String pref= new ProjectScope(project).getNode(JavaScriptUI.ID_PLUGIN).get(KEY, null); - if (pref != null && pref.trim().length() > 0) { - Reader input= new StringReader(pref); - TemplateReaderWriter reader= new TemplateReaderWriter(); - TemplatePersistenceData[] datas; - try { - datas= reader.read(input); - return datas.length > 0; - } catch (IOException e) { - // ignore - } - } - return false; - } - - - public TemplatePersistenceData[] getTemplateData() { - if (fProjectStore != null) { - return fProjectStore.getTemplateData(true); - } else { - return fInstanceStore.getTemplateData(true); - } - } - - public Template findTemplateById(String id) { - Template template= null; - if (fProjectStore != null) - template= fProjectStore.findTemplateById(id); - if (template == null) - template= fInstanceStore.findTemplateById(id); - - return template; - } - - public void load() throws IOException { - if (fProjectStore != null) { - fProjectStore.load(); - - Set datas= new HashSet(); - TemplatePersistenceData[] data= fProjectStore.getTemplateData(false); - for (int i= 0; i < data.length; i++) { - datas.add(data[i].getId()); - } - - data= fInstanceStore.getTemplateData(false); - for (int i= 0; i < data.length; i++) { - TemplatePersistenceData orig= data[i]; - if (!datas.contains(orig.getId())) { - TemplatePersistenceData copy= new TemplatePersistenceData(new Template(orig.getTemplate()), orig.isEnabled(), orig.getId()); - fProjectStore.add(copy); - copy.setDeleted(true); - } - } - } - } - - public boolean isProjectSpecific(String id) { - if (id == null) { - return false; - } - - if (fProjectStore == null) - return false; - - return fProjectStore.findTemplateById(id) != null; - } - - - public void setProjectSpecific(String id, boolean projectSpecific) { - Assert.isNotNull(fProjectStore); - - TemplatePersistenceData data= fProjectStore.getTemplateData(id); - if (data == null) { - return; // does not exist - } else { - data.setDeleted(!projectSpecific); - } - } - - public void restoreDefaults() { - if (fProjectStore == null) { - fInstanceStore.restoreDefaults(); - } else { - fProjectStore.restoreDefaults(); - } - } - - public void save() throws IOException { - if (fProjectStore == null) { - fInstanceStore.save(); - } else { - fProjectStore.save(); - } - } - - public void revertChanges() throws IOException { - if (fProjectStore != null) { - // nothing to do - } else { - fInstanceStore.load(); - } - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ResourceToItemsMapper.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ResourceToItemsMapper.java deleted file mode 100644 index f43f97e0..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ResourceToItemsMapper.java +++ /dev/null @@ -1,179 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Stack; - -import org.eclipse.core.resources.IResource; -import org.eclipse.swt.widgets.Item; -import org.eclipse.swt.widgets.Widget; -import org.eclipse.wst.jsdt.core.IJavaScriptUnit; -import org.eclipse.wst.jsdt.core.IJavaScriptElement; - -/** - * Helper class for updating error markers and other decorators that work on resources. - * Items are mapped to their element's underlying resource. - * Method <code>resourceChanged</code> updates all items that are affected from the changed - * elements. - */ -public class ResourceToItemsMapper { - - public static interface IContentViewerAccessor { - public void doUpdateItem(Widget item); - } - - - private static final int NUMBER_LIST_REUSE= 10; - - // map from resource to item - private HashMap fResourceToItem; - private Stack fReuseLists; - - private IContentViewerAccessor fContentViewerAccess; - - public ResourceToItemsMapper(IContentViewerAccessor viewer) { - fResourceToItem= new HashMap(); - fReuseLists= new Stack(); - - fContentViewerAccess= viewer; - } - - /** - * Must be called from the UI thread. - * @param changedResource Changed resource - */ - public void resourceChanged(IResource changedResource) { - Object obj= fResourceToItem.get(changedResource); - if (obj == null) { - // not mapped - } else if (obj instanceof Item) { - updateItem((Item) obj); - } else { // List of Items - List list= (List) obj; - for (int k= 0; k < list.size(); k++) { - updateItem((Item) list.get(k)); - } - } - } - - private void updateItem(Item item) { - if (!item.isDisposed()) { - fContentViewerAccess.doUpdateItem(item); - } - } - - /** - * Adds a new item to the map. - * @param element Element to map - * @param item The item used for the element - */ - public void addToMap(Object element, Item item) { - IResource resource= getCorrespondingResource(element); - if (resource != null) { - Object existingMapping= fResourceToItem.get(resource); - if (existingMapping == null) { - fResourceToItem.put(resource, item); - } else if (existingMapping instanceof Item) { - if (existingMapping != item) { - List list= getNewList(); - list.add(existingMapping); - list.add(item); - fResourceToItem.put(resource, list); - } - } else { // List - List list= (List) existingMapping; - if (!list.contains(item)) { - list.add(item); - } - } - } - } - - /** - * Removes an element from the map. - * @param element The data element - * @param item The table or tree item - */ - public void removeFromMap(Object element, Item item) { - IResource resource= getCorrespondingResource(element); - if (resource != null) { - Object existingMapping= fResourceToItem.get(resource); - if (existingMapping == null) { - return; - } else if (existingMapping instanceof Item) { - fResourceToItem.remove(resource); - } else { // List - List list= (List) existingMapping; - list.remove(item); - if (list.isEmpty()) { - fResourceToItem.remove(list); - releaseList(list); - } - } - } - } - - private List getNewList() { - if (!fReuseLists.isEmpty()) { - return (List) fReuseLists.pop(); - } - return new ArrayList(2); - } - - private void releaseList(List list) { - if (fReuseLists.size() < NUMBER_LIST_REUSE) { - fReuseLists.push(list); - } - } - - /** - * Clears the map. - */ - public void clearMap() { - fResourceToItem.clear(); - } - - /** - * Tests if the map is empty - * @return Returns if there are mappings - */ - public boolean isEmpty() { - return fResourceToItem.isEmpty(); - } - - /** - * Method that decides which elements can have error markers - * Returns null if an element can not have error markers. - * @param element The input element - * @return Returns the corresponding resource or null - */ - private static IResource getCorrespondingResource(Object element) { - if (element instanceof IJavaScriptElement) { - IJavaScriptElement elem= (IJavaScriptElement) element; - IResource res= elem.getResource(); - if (res == null) { - IJavaScriptUnit cu= (IJavaScriptUnit) elem.getAncestor(IJavaScriptElement.JAVASCRIPT_UNIT); - if (cu != null) { - // elements in compilation units are mapped to the underlying resource of the original cu - res= cu.getResource(); - } - } - return res; - } else if (element instanceof IResource) { - return (IResource) element; - } - return null; - } - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/SelectionListenerWithASTManager.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/SelectionListenerWithASTManager.java deleted file mode 100644 index 7dfbc57a..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/SelectionListenerWithASTManager.java +++ /dev/null @@ -1,211 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import java.util.HashMap; -import java.util.Map; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.ListenerList; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.core.runtime.OperationCanceledException; -import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.jobs.Job; -import org.eclipse.jface.text.ITextSelection; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.ISelectionProvider; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.ui.ISelectionListener; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.texteditor.ITextEditor; -import org.eclipse.wst.jsdt.core.IJavaScriptElement; -import org.eclipse.wst.jsdt.core.dom.JavaScriptUnit; -import org.eclipse.wst.jsdt.internal.ui.JavaScriptPlugin; -import org.eclipse.wst.jsdt.internal.ui.JavaUIMessages; -import org.eclipse.wst.jsdt.internal.ui.javaeditor.ASTProvider; -import org.eclipse.wst.jsdt.internal.ui.javaeditor.EditorUtility; - -/** - * Infrastructure to share an AST for editor post selection listeners. - */ -public class SelectionListenerWithASTManager { - - private static SelectionListenerWithASTManager fgDefault; - - /** - * @return Returns the default manager instance. - */ - public static SelectionListenerWithASTManager getDefault() { - if (fgDefault == null) { - fgDefault= new SelectionListenerWithASTManager(); - } - return fgDefault; - } - - - private final static class PartListenerGroup { - private ITextEditor fPart; - private ISelectionListener fPostSelectionListener; - private ISelectionChangedListener fSelectionListener; - private Job fCurrentJob; - private ListenerList fAstListeners; - /** - * Lock to avoid having more than one calculateAndInform job in parallel. - * Only jobs may synchronize on this as otherwise deadlocks are possible. - */ - private final Object fJobLock= new Object(); - - public PartListenerGroup(ITextEditor editorPart) { - fPart= editorPart; - fCurrentJob= null; - fAstListeners= new ListenerList(ListenerList.IDENTITY); - - fSelectionListener= new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - ISelection selection= event.getSelection(); - if (selection instanceof ITextSelection) { - fireSelectionChanged((ITextSelection) selection); - } - } - }; - - fPostSelectionListener= new ISelectionListener() { - public void selectionChanged(IWorkbenchPart part, ISelection selection) { - if (part == fPart && selection instanceof ITextSelection) - firePostSelectionChanged((ITextSelection) selection); - } - }; - } - - public boolean isEmpty() { - return fAstListeners.isEmpty(); - } - - public void install(ISelectionListenerWithAST listener) { - if (isEmpty()) { - fPart.getEditorSite().getPage().addPostSelectionListener(fPostSelectionListener); - ISelectionProvider selectionProvider= fPart.getSelectionProvider(); - if (selectionProvider != null) - selectionProvider.addSelectionChangedListener(fSelectionListener); - } - fAstListeners.add(listener); - } - - public void uninstall(ISelectionListenerWithAST listener) { - fAstListeners.remove(listener); - if (isEmpty()) { - fPart.getEditorSite().getPage().removePostSelectionListener(fPostSelectionListener); - ISelectionProvider selectionProvider= fPart.getSelectionProvider(); - if (selectionProvider != null) - selectionProvider.removeSelectionChangedListener(fSelectionListener); - } - } - - public void fireSelectionChanged(final ITextSelection selection) { - if (fCurrentJob != null) { - fCurrentJob.cancel(); - } - } - - public void firePostSelectionChanged(final ITextSelection selection) { - if (fCurrentJob != null) { - fCurrentJob.cancel(); - } - final IJavaScriptElement input= EditorUtility.getEditorInputJavaElement(fPart, false); - if (input == null) { - return; - } - - fCurrentJob= new Job(JavaUIMessages.SelectionListenerWithASTManager_job_title) { - public IStatus run(IProgressMonitor monitor) { - if (monitor == null) { - monitor= new NullProgressMonitor(); - } - synchronized (fJobLock) { - return calculateASTandInform(input, selection, monitor); - } - } - }; - fCurrentJob.setPriority(Job.DECORATE); - fCurrentJob.setSystem(true); - fCurrentJob.schedule(); - } - - protected IStatus calculateASTandInform(IJavaScriptElement input, ITextSelection selection, IProgressMonitor monitor) { - if (monitor.isCanceled()) { - return Status.CANCEL_STATUS; - } - // create AST - try { - JavaScriptUnit astRoot= JavaScriptPlugin.getDefault().getASTProvider().getAST(input, ASTProvider.WAIT_ACTIVE_ONLY, monitor); - - if (astRoot != null && !monitor.isCanceled()) { - Object[] listeners; - synchronized (PartListenerGroup.this) { - listeners= fAstListeners.getListeners(); - } - for (int i= 0; i < listeners.length; i++) { - ((ISelectionListenerWithAST) listeners[i]).selectionChanged(fPart, selection, astRoot); - if (monitor.isCanceled()) { - return Status.CANCEL_STATUS; - } - } - return Status.OK_STATUS; - } - } catch (OperationCanceledException e) { - // thrown when canceling the AST creation - } - return Status.CANCEL_STATUS; - } - } - - - private Map fListenerGroups; - - private SelectionListenerWithASTManager() { - fListenerGroups= new HashMap(); - } - - /** - * Registers a selection listener for the given editor part. - * @param part The editor part to listen to. - * @param listener The listener to register. - */ - public void addListener(ITextEditor part, ISelectionListenerWithAST listener) { - synchronized (this) { - PartListenerGroup partListener= (PartListenerGroup) fListenerGroups.get(part); - if (partListener == null) { - partListener= new PartListenerGroup(part); - fListenerGroups.put(part, partListener); - } - partListener.install(listener); - } - } - - /** - * Unregisters a selection listener. - * @param part The editor part the listener was registered. - * @param listener The listener to unregister. - */ - public void removeListener(ITextEditor part, ISelectionListenerWithAST listener) { - synchronized (this) { - PartListenerGroup partListener= (PartListenerGroup) fListenerGroups.get(part); - if (partListener != null) { - partListener.uninstall(listener); - if (partListener.isEmpty()) { - fListenerGroups.remove(part); - } - } - } - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/SelectionProviderMediator.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/SelectionProviderMediator.java deleted file mode 100644 index e40a4e72..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/SelectionProviderMediator.java +++ /dev/null @@ -1,206 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.core.runtime.Assert; -import org.eclipse.core.runtime.ListenerList; -import org.eclipse.jface.viewers.IPostSelectionProvider; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.ISelectionProvider; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.viewers.StructuredViewer; -import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.events.FocusListener; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Widget; - -/** - * A selection provider for view parts with more that one viewer. - * Tracks the focus of the viewers to provide the correct selection. - */ -public class SelectionProviderMediator implements IPostSelectionProvider { - - private class InternalListener implements ISelectionChangedListener, FocusListener { - /* - * @see ISelectionChangedListener#selectionChanged - */ - public void selectionChanged(SelectionChangedEvent event) { - doSelectionChanged(event); - } - - /* - * @see FocusListener#focusGained - */ - public void focusGained(FocusEvent e) { - doFocusChanged(e.widget); - } - - /* - * @see FocusListener#focusLost - */ - public void focusLost(FocusEvent e) { - // do not reset due to focus behavior on GTK - //fViewerInFocus= null; - } - } - - private class InternalPostSelectionListener implements ISelectionChangedListener { - public void selectionChanged(SelectionChangedEvent event) { - doPostSelectionChanged(event); - } - - } - - private StructuredViewer[] fViewers; - - private StructuredViewer fViewerInFocus; - private ListenerList fSelectionChangedListeners; - private ListenerList fPostSelectionChangedListeners; - - /** - * @param viewers All viewers that can provide a selection - * @param viewerInFocus the viewer currently in focus or <code>null</code> - */ - public SelectionProviderMediator(StructuredViewer[] viewers, StructuredViewer viewerInFocus) { - Assert.isNotNull(viewers); - fViewers= viewers; - InternalListener listener= new InternalListener(); - fSelectionChangedListeners= new ListenerList(); - fPostSelectionChangedListeners= new ListenerList(); - fViewerInFocus= viewerInFocus; - - for (int i= 0; i < fViewers.length; i++) { - StructuredViewer viewer= fViewers[i]; - viewer.addSelectionChangedListener(listener); - viewer.addPostSelectionChangedListener(new InternalPostSelectionListener()); - Control control= viewer.getControl(); - control.addFocusListener(listener); - } - } - - private void doFocusChanged(Widget control) { - for (int i= 0; i < fViewers.length; i++) { - if (fViewers[i].getControl() == control) { - propagateFocusChanged(fViewers[i]); - return; - } - } - } - - final void doPostSelectionChanged(SelectionChangedEvent event) { - ISelectionProvider provider= event.getSelectionProvider(); - if (provider == fViewerInFocus) { - firePostSelectionChanged(); - } - } - - final void doSelectionChanged(SelectionChangedEvent event) { - ISelectionProvider provider= event.getSelectionProvider(); - if (provider == fViewerInFocus) { - fireSelectionChanged(); - } - } - - final void propagateFocusChanged(StructuredViewer viewer) { - if (viewer != fViewerInFocus) { // OK to compare by identity - fViewerInFocus= viewer; - fireSelectionChanged(); - firePostSelectionChanged(); - } - } - - private void fireSelectionChanged() { - if (fSelectionChangedListeners != null) { - SelectionChangedEvent event= new SelectionChangedEvent(this, getSelection()); - - Object[] listeners= fSelectionChangedListeners.getListeners(); - for (int i= 0; i < listeners.length; i++) { - ISelectionChangedListener listener= (ISelectionChangedListener) listeners[i]; - listener.selectionChanged(event); - } - } - } - - private void firePostSelectionChanged() { - if (fPostSelectionChangedListeners != null) { - SelectionChangedEvent event= new SelectionChangedEvent(this, getSelection()); - - Object[] listeners= fPostSelectionChangedListeners.getListeners(); - for (int i= 0; i < listeners.length; i++) { - ISelectionChangedListener listener= (ISelectionChangedListener) listeners[i]; - listener.selectionChanged(event); - } - } - } - - /* - * @see ISelectionProvider#addSelectionChangedListener - */ - public void addSelectionChangedListener(ISelectionChangedListener listener) { - fSelectionChangedListeners.add(listener); - } - - /* - * @see ISelectionProvider#removeSelectionChangedListener - */ - public void removeSelectionChangedListener(ISelectionChangedListener listener) { - fSelectionChangedListeners.remove(listener); - } - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.IPostSelectionProvider#addPostSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) - */ - public void addPostSelectionChangedListener(ISelectionChangedListener listener) { - fPostSelectionChangedListeners.add(listener); - } - - - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.IPostSelectionProvider#removePostSelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) - */ - public void removePostSelectionChangedListener(ISelectionChangedListener listener) { - fPostSelectionChangedListeners.remove(listener); - } - - /* - * @see ISelectionProvider#getSelection - */ - public ISelection getSelection() { - if (fViewerInFocus != null) { - return fViewerInFocus.getSelection(); - } - return StructuredSelection.EMPTY; - } - - /* - * @see ISelectionProvider#setSelection - */ - public void setSelection(ISelection selection) { - if (fViewerInFocus != null) { - fViewerInFocus.setSelection(selection); - } - } - - public void setSelection(ISelection selection, boolean reveal) { - if (fViewerInFocus != null) { - fViewerInFocus.setSelection(selection, reveal); - } - } - - /** - * Returns the viewer in focus or null if no viewer has the focus - */ - public StructuredViewer getViewerInFocus() { - return fViewerInFocus; - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/SourcePositionComparator.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/SourcePositionComparator.java deleted file mode 100644 index 0e4bf704..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/SourcePositionComparator.java +++ /dev/null @@ -1,113 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.jface.viewers.ViewerComparator; -import org.eclipse.wst.jsdt.core.Flags; -import org.eclipse.wst.jsdt.core.IClassFile; -import org.eclipse.wst.jsdt.core.IJavaScriptUnit; -import org.eclipse.wst.jsdt.core.IJavaScriptElement; -import org.eclipse.wst.jsdt.core.IMember; -import org.eclipse.wst.jsdt.core.ISourceRange; -import org.eclipse.wst.jsdt.core.ISourceReference; -import org.eclipse.wst.jsdt.core.IType; -import org.eclipse.wst.jsdt.core.JavaScriptModelException; - - -/** - * Viewer sorter which sorts the Java elements like - * they appear in the source. - * - * - */ -public class SourcePositionComparator extends ViewerComparator { - - /* - * @see org.eclipse.jface.viewers.ViewerSorter#compare(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) - */ - public int compare(Viewer viewer, Object e1, Object e2) { - if (!(e1 instanceof ISourceReference)) - return 0; - if (!(e2 instanceof ISourceReference)) - return 0; - - IJavaScriptElement parent1= ((IJavaScriptElement)e1).getParent(); - if (parent1 == null || !parent1.equals(((IJavaScriptElement)e2).getParent())) { - IType t1= getOutermostDeclaringType(e1); - if (t1 == null) - return 0; - - IType t2= getOutermostDeclaringType(e2); - try { - if (!t1.equals(t2)) { - if (t2 == null) - return 0; - - if (Flags.isPublic(t1.getFlags()) && Flags.isPublic(t2.getFlags())) - return 0; - - if (!t1.getPackageFragment().equals(t2.getPackageFragment())) - return 0; - - IJavaScriptUnit cu1= (IJavaScriptUnit)((IJavaScriptElement)e1).getAncestor(IJavaScriptElement.JAVASCRIPT_UNIT); - if (cu1 != null) { - if (!cu1.equals(((IJavaScriptElement)e2).getAncestor(IJavaScriptElement.JAVASCRIPT_UNIT))) - return 0; - } else { - IClassFile cf1= (IClassFile)((IJavaScriptElement)e1).getAncestor(IJavaScriptElement.CLASS_FILE); - if (cf1 == null) - return 0; - IClassFile cf2= (IClassFile)((IJavaScriptElement)e2).getAncestor(IJavaScriptElement.CLASS_FILE); - String source1= cf1.getSource(); - if (source1 != null && !source1.equals(cf2.getSource())) - return 0; - } - } - } catch (JavaScriptModelException e3) { - return 0; - } - } - - try { - ISourceRange sr1= ((ISourceReference)e1).getSourceRange(); - ISourceRange sr2= ((ISourceReference)e2).getSourceRange(); - if (sr1 == null || sr2 == null) - return 0; - - return sr1.getOffset() - sr2.getOffset(); - - } catch (JavaScriptModelException e) { - return 0; - } - } - - private IType getOutermostDeclaringType(Object element) { - if (!(element instanceof IMember)) - return null; - - IType declaringType; - if (element instanceof IType) - declaringType= (IType)element; - else { - declaringType= ((IMember)element).getDeclaringType(); - if (declaringType == null) - return null; - } - - IType declaringTypeDeclaringType= declaringType.getDeclaringType(); - while (declaringTypeDeclaringType != null) { - declaringType= declaringTypeDeclaringType; - declaringTypeDeclaringType= declaringType.getDeclaringType(); - } - return declaringType; - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/StatusBarUpdater.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/StatusBarUpdater.java deleted file mode 100644 index c68eb1cb..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/StatusBarUpdater.java +++ /dev/null @@ -1,106 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.IPath; -import org.eclipse.jface.action.IStatusLineManager; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.ui.model.IWorkbenchAdapter; -import org.eclipse.wst.jsdt.core.IJarEntryResource; -import org.eclipse.wst.jsdt.core.IJavaScriptElement; -import org.eclipse.wst.jsdt.internal.corext.util.Messages; -import org.eclipse.wst.jsdt.internal.ui.JavaUIMessages; -import org.eclipse.wst.jsdt.internal.ui.packageview.PackageFragmentRootContainer; -import org.eclipse.wst.jsdt.ui.JavaScriptElementLabels; - -/** - * Add the <code>StatusBarUpdater</code> to your ViewPart to have the statusbar - * describing the selected elements. - */ -public class StatusBarUpdater implements ISelectionChangedListener { - - private final long LABEL_FLAGS= JavaScriptElementLabels.DEFAULT_QUALIFIED | JavaScriptElementLabels.ROOT_POST_QUALIFIED | JavaScriptElementLabels.APPEND_ROOT_PATH | - JavaScriptElementLabels.M_PARAMETER_TYPES | JavaScriptElementLabels.M_PARAMETER_NAMES | JavaScriptElementLabels.M_APP_RETURNTYPE | JavaScriptElementLabels.M_EXCEPTIONS | - JavaScriptElementLabels.F_APP_TYPE_SIGNATURE | JavaScriptElementLabels.T_TYPE_PARAMETERS; - - private IStatusLineManager fStatusLineManager; - - public StatusBarUpdater(IStatusLineManager statusLineManager) { - fStatusLineManager= statusLineManager; - } - - /* - * @see ISelectionChangedListener#selectionChanged - */ - public void selectionChanged(SelectionChangedEvent event) { - String statusBarMessage= formatMessage(event.getSelection()); - fStatusLineManager.setMessage(statusBarMessage); - } - - - protected String formatMessage(ISelection sel) { - if (sel instanceof IStructuredSelection && !sel.isEmpty()) { - IStructuredSelection selection= (IStructuredSelection) sel; - - int nElements= selection.size(); - if (nElements > 1) { - return Messages.format(JavaUIMessages.StatusBarUpdater_num_elements_selected, String.valueOf(nElements)); - } else { - Object elem= selection.getFirstElement(); - if (elem instanceof IJavaScriptElement) { - return formatJavaElementMessage((IJavaScriptElement) elem); - } else if (elem instanceof IResource) { - return formatResourceMessage((IResource) elem); - } else if (elem instanceof PackageFragmentRootContainer) { - PackageFragmentRootContainer container= (PackageFragmentRootContainer) elem; - return container.getLabel() + JavaScriptElementLabels.CONCAT_STRING + container.getJavaProject().getElementName(); - } else if (elem instanceof IJarEntryResource) { - IJarEntryResource jarEntryResource= (IJarEntryResource) elem; - StringBuffer buf= new StringBuffer(jarEntryResource.getName()); - buf.append(JavaScriptElementLabels.CONCAT_STRING); - IPath fullPath= jarEntryResource.getFullPath(); - if (fullPath.segmentCount() > 1) { - buf.append(fullPath.removeLastSegments(1).makeRelative()); - buf.append(JavaScriptElementLabels.CONCAT_STRING); - } - JavaScriptElementLabels.getPackageFragmentRootLabel(jarEntryResource.getPackageFragmentRoot(), JavaScriptElementLabels.ROOT_POST_QUALIFIED, buf); - return buf.toString(); - } else if (elem instanceof IAdaptable) { - IWorkbenchAdapter wbadapter= (IWorkbenchAdapter) ((IAdaptable)elem).getAdapter(IWorkbenchAdapter.class); - if (wbadapter != null) { - return wbadapter.getLabel(elem); - } - } - } - } - return ""; //$NON-NLS-1$ - } - - private String formatJavaElementMessage(IJavaScriptElement element) { - return JavaScriptElementLabels.getElementLabel(element, LABEL_FLAGS); - } - - private String formatResourceMessage(IResource element) { - IContainer parent= element.getParent(); - if (parent != null && parent.getType() != IResource.ROOT) - return element.getName() + JavaScriptElementLabels.CONCAT_STRING + parent.getFullPath().makeRelative().toString(); - else - return element.getName(); - } - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/StorageLabelProvider.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/StorageLabelProvider.java deleted file mode 100644 index a0bda001..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/StorageLabelProvider.java +++ /dev/null @@ -1,136 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -import org.eclipse.core.resources.IStorage; -import org.eclipse.core.runtime.IPath; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.IEditorRegistry; -import org.eclipse.ui.IFileEditorMapping; -import org.eclipse.ui.ISharedImages; -import org.eclipse.ui.PlatformUI; -import org.eclipse.wst.jsdt.core.IJarEntryResource; - -/** - * Standard label provider for IStorage objects. - * Use this class when you want to present IStorage objects in a viewer. - */ -public class StorageLabelProvider extends LabelProvider { - - private IEditorRegistry fEditorRegistry= null; - private Map fJarImageMap= new HashMap(10); - private Image fDefaultImage; - - private IEditorRegistry getEditorRegistry() { - if (fEditorRegistry == null) - fEditorRegistry= PlatformUI.getWorkbench().getEditorRegistry(); - return fEditorRegistry; - } - - /* (non-Javadoc) - * @see ILabelProvider#getImage - */ - public Image getImage(Object element) { - if (element instanceof IStorage) - return getImageForJarEntry((IStorage)element); - - return super.getImage(element); - } - - /* (non-Javadoc) - * @see ILabelProvider#getText - */ - public String getText(Object element) { - if (element instanceof IStorage) { - return ((IStorage)element).getName(); - } - return super.getText(element); - } - - /* (non-Javadoc) - * - * @see IBaseLabelProvider#dispose - */ - public void dispose() { - if (fJarImageMap != null) { - Iterator each= fJarImageMap.values().iterator(); - while (each.hasNext()) { - Image image= (Image)each.next(); - image.dispose(); - } - fJarImageMap= null; - } - fDefaultImage= null; - } - - /* - * Gets and caches an image for a JarEntryFile. - * The image for a JarEntryFile is retrieved from the EditorRegistry. - */ - private Image getImageForJarEntry(IStorage element) { - if (element instanceof IJarEntryResource && !((IJarEntryResource) element).isFile()) { - return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER); - } - - if (fJarImageMap == null) - return getDefaultImage(); - - if (element == null || element.getName() == null) - return getDefaultImage(); - - // Try to find icon for full name - String name= element.getName(); - Image image= (Image)fJarImageMap.get(name); - if (image != null) - return image; - IFileEditorMapping[] mappings= getEditorRegistry().getFileEditorMappings(); - int i= 0; - while (i < mappings.length) { - if (mappings[i].getLabel().equals(name)) - break; - i++; - } - String key= name; - if (i == mappings.length) { - // Try to find icon for extension - IPath path= element.getFullPath(); - if (path == null) - return getDefaultImage(); - key= path.getFileExtension(); - if (key == null) - return getDefaultImage(); - image= (Image)fJarImageMap.get(key); - if (image != null) - return image; - } - - // Get the image from the editor registry - ImageDescriptor desc= getEditorRegistry().getImageDescriptor(name); - image= desc.createImage(); - - fJarImageMap.put(key, image); - - return image; - } - - private Image getDefaultImage() { - if (fDefaultImage == null) - fDefaultImage= PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE); - return fDefaultImage; - } -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/TreeHierarchyLayoutProblemsDecorator.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/TreeHierarchyLayoutProblemsDecorator.java deleted file mode 100644 index 1ad7a78a..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/TreeHierarchyLayoutProblemsDecorator.java +++ /dev/null @@ -1,74 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2008 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import org.eclipse.wst.jsdt.core.IPackageFragment; -import org.eclipse.wst.jsdt.internal.ui.browsing.LogicalPackage; -import org.eclipse.wst.jsdt.ui.JavaScriptElementImageDescriptor; -import org.eclipse.wst.jsdt.ui.ProblemsLabelDecorator; - -/** - * Special problem decorator for hierarchical package layout. - * <p> - * It only decorates package fragments which are not covered by the - * <code>ProblemsLabelDecorator</code>. - * </p> - * - * @see org.eclipse.wst.jsdt.ui.ProblemsLabelDecorator - * - */ -public class TreeHierarchyLayoutProblemsDecorator extends ProblemsLabelDecorator { - - private boolean fIsFlatLayout; - - public TreeHierarchyLayoutProblemsDecorator() { - this(false); - } - - public TreeHierarchyLayoutProblemsDecorator(boolean isFlatLayout) { - super(null); - fIsFlatLayout= isFlatLayout; - } - - protected int computePackageAdornmentFlags(IPackageFragment fragment) { - if (!fIsFlatLayout && !fragment.isDefaultPackage()) { - return super.computeAdornmentFlags(fragment.getResource()); - } - return super.computeAdornmentFlags(fragment); - } - - /* (non-Javadoc) - * @see org.eclipse.wst.jsdt.ui.ProblemsLabelDecorator#computeAdornmentFlags(java.lang.Object) - */ - protected int computeAdornmentFlags(Object element) { - if (element instanceof IPackageFragment) { - return computePackageAdornmentFlags((IPackageFragment) element); - } else if (element instanceof LogicalPackage) { - IPackageFragment[] fragments= ((LogicalPackage) element).getFragments(); - int res= 0; - for (int i= 0; i < fragments.length; i++) { - int flags= computePackageAdornmentFlags(fragments[i]); - if (flags == JavaScriptElementImageDescriptor.ERROR) { - return flags; - } else if (flags != 0) { - res= flags; - } - } - return res; - } - return super.computeAdornmentFlags(element); - } - - public void setIsFlatLayout(boolean state) { - fIsFlatLayout= state; - } - -} diff --git a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ViewHistory.java b/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ViewHistory.java deleted file mode 100644 index 8e0a692e..00000000 --- a/bundles/org.eclipse.wst.jsdt.ui/src/org/eclipse/wst/jsdt/internal/ui/viewsupport/ViewHistory.java +++ /dev/null @@ -1,103 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2006, 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ - -package org.eclipse.wst.jsdt.internal.ui.viewsupport; - -import java.util.List; - -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.MenuManager; -import org.eclipse.jface.resource.ImageDescriptor; -import org.eclipse.swt.widgets.Shell; - - -/** - * - */ -public abstract class ViewHistory { - - /** - * Configure the history List action. - * Clients typically want to set a text and an image. - * - * @param action the action - */ - public abstract void configureHistoryListAction(IAction action); - - /** - * Configure the history drop down action. - * Clients typically want to set a tooltip and an image. - * - * @param action the action - */ - public abstract void configureHistoryDropDownAction(IAction action); - - /** - * @return action to clear history entries, or <code>null</code> - */ - public abstract Action getClearAction(); - - public abstract String getHistoryListDialogTitle(); - - public abstract String getHistoryListDialogMessage(); - - public abstract Shell getShell(); - - - /** - * @return An unmodifiable list of history entries, can be empty. The list - * is sorted by age, youngest first. - */ - public abstract List getHistoryEntries(); - - /** - * @return the active entry from the history - */ - public abstract Object getCurrentEntry(); - - /** - * @param entry the entry to activate, or <code>null</code> if none should be active - */ - public abstract void setActiveEntry(Object entry); - - /** - * @param remainingEntries all the remaining history entries, can be empty - * @param activeEntry the entry to activate, or <code>null</code> if none should be active - */ - public abstract void setHistoryEntries(List remainingEntries, Object activeEntry); - - /** - * @param element the element to render - * @return the image descriptor for the given element, or <code>null</code> - */ - public abstract ImageDescriptor getImageDescriptor(Object element); - - /** - * @param element the element to render - * @return the label text for the given element - */ - public abstract String getText(Object element); - - /** - * @return a history drop down action, ready for inclusion in a view toolbar - */ - public final IAction createHistoryDropDownAction() { - return new HistoryDropDownAction(this); - } - - public abstract void addMenuEntries(MenuManager manager); - - public abstract String getMaxEntriesMessage(); - public abstract int getMaxEntries(); - public abstract void setMaxEntries(int maxEntries); - -} |