From 01ffdd1a22427bc6841d4c782603f8db098d9078 Mon Sep 17 00:00:00 2001 From: David Inglis Date: Fri, 10 Sep 2004 01:19:40 +0000 Subject: [PATCH] - fixed 36837 - refactor label providers to viewsupport and removed old IAdormentProvider --- core/org.eclipse.cdt.ui/ChangeLog | 44 ++++++ .../ui/browser/cbrowsing/CBrowsingPart.java | 1 + .../ui/browser/cbrowsing/MembersView.java | 1 + .../ui/browser/cbrowsing/ProjectsView.java | 1 + .../typehierarchy/HierarchyLabelProvider.java | 19 +-- .../browser/typehierarchy/HistoryAction.java | 2 +- .../typehierarchy/MethodsLabelProvider.java | 2 +- .../browser/typehierarchy/MethodsViewer.java | 6 +- .../typehierarchy/TypeHierarchyViewPart.java | 2 +- .../typehierarchy/TypeHierarchyViewer.java | 11 +- .../cdt/internal/ui/CWorkbenchAdapter.java | 1 + .../ui/ErrorTickAdornmentProvider.java | 138 ------------------ .../cdt/internal/ui/IAdornmentProvider.java | 27 ---- .../cdt/internal/ui/compare/CNode.java | 2 +- .../eclipse/cdt/internal/ui/cview/CView.java | 25 +--- .../internal/ui/cview/CViewLabelProvider.java | 9 +- .../cpaths/CPElementLabelProvider.java | 2 +- .../ui/editor/CContentOutlinePage.java | 6 +- .../cdt/internal/ui/editor/CEditor.java | 4 - .../ui/editor/CEditorErrorTickUpdater.java | 96 ++++++------ .../text/contentassist/ResultCollector.java | 2 +- .../ui/util/IProblemChangedListener.java | 4 +- .../ui/util/ProblemMarkerManager.java | 133 ++++++++--------- .../internal/ui/util/ProblemTableViewer.java | 2 +- .../internal/ui/util/ProblemTreeViewer.java | 85 +++++------ .../AppearanceAwareLabelProvider.java | 4 +- .../CElementImageProvider.java | 3 +- .../ui/viewsupport}/CUILabelProvider.java | 7 +- .../DecoratingCLabelProvider.java | 2 +- .../viewsupport}/ProblemsLabelDecorator.java | 54 +++---- .../StandardCElementLabelProvider.java | 13 +- .../classwizard/MethodStubsLabelProvider.java | 2 +- .../eclipse/cdt/ui/CElementLabelProvider.java | 74 +--------- 33 files changed, 254 insertions(+), 530 deletions(-) delete mode 100644 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/ErrorTickAdornmentProvider.java delete mode 100644 core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/IAdornmentProvider.java rename core/org.eclipse.cdt.ui/{browser/org/eclipse/cdt/internal/ui/browser/cbrowsing => src/org/eclipse/cdt/internal/ui/viewsupport}/AppearanceAwareLabelProvider.java (94%) rename core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/{ => viewsupport}/CElementImageProvider.java (99%) rename core/org.eclipse.cdt.ui/{browser/org/eclipse/cdt/internal/ui/browser/cbrowsing => src/org/eclipse/cdt/internal/ui/viewsupport}/CUILabelProvider.java (97%) rename core/org.eclipse.cdt.ui/{browser/org/eclipse/cdt/internal/ui/browser/cbrowsing => src/org/eclipse/cdt/internal/ui/viewsupport}/DecoratingCLabelProvider.java (97%) rename core/org.eclipse.cdt.ui/{browser/org/eclipse/cdt/internal/ui/browser/cbrowsing => src/org/eclipse/cdt/internal/ui/viewsupport}/ProblemsLabelDecorator.java (87%) rename core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/{ => viewsupport}/StandardCElementLabelProvider.java (80%) diff --git a/core/org.eclipse.cdt.ui/ChangeLog b/core/org.eclipse.cdt.ui/ChangeLog index 1ca0bff90f5..73f32a23326 100644 --- a/core/org.eclipse.cdt.ui/ChangeLog +++ b/core/org.eclipse.cdt.ui/ChangeLog @@ -1,3 +1,47 @@ +2004-09-09 David Inglis + Fix for 36837 - CVS decoration updating + + * src/org/eclipse/cdt/internal/ui/editor/CEditorErrorTickUpdater.java + * src/org/eclipse/cdt/internal/ui/util/ProblemTreeViewer.java + + removed Eclipse 1.0 way of decorating label providers - use label decorators + + * src/org/eclipse/cdt/internal/ui/ErrorTickAdornmentProvider.java + * src/org/eclipse/cdt/internal/ui/IAdornmentProvider.java + + refactored to internal.ui.viewsupport + + * src/org/eclipse/cdt/internal/ui/CElementImageProvider.java + * browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/AppearanceAwareLabelProvider.java + * browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/CUILabelProvider.java + * browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/ProblemsLabelDecorator.java + * browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/DecoratingCLabelProvider.java + * src/org/eclipse/cdt/internal/ui/StandardCElementLabelProvider.java + * src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementLabelProvider.java + + changes due to refactor + + * browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/CBrowsingPart.java + * browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/MembersView.java + * browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/ProjectsView.java + * browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/HierarchyLabelProvider.java + * browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/HistoryAction.java + * browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/MethodsLabelProvider.java + * browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/MethodsViewer.java + * browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/TypeHierarchyViewPart.java + * browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/TypeHierarchyViewer.java + + * src/org/eclipse/cdt/internal/ui/CWorkbenchAdapter.java + * src/org/eclipse/cdt/internal/ui/compare/CNode.java + * src/org/eclipse/cdt/internal/ui/cview/CView.java + * src/org/eclipse/cdt/internal/ui/cview/CViewLabelProvider.java + * src/org/eclipse/cdt/internal/ui/editor/CContentOutlinePage.java + * src/org/eclipse/cdt/internal/ui/editor/CEditor.java + * src/org/eclipse/cdt/internal/ui/text/contentassist/ResultCollector.java + * src/org/eclipse/cdt/internal/ui/util/IProblemChangedListener.java + * src/org/eclipse/cdt/internal/ui/util/ProblemMarkerManager.java + * src/org/eclipse/cdt/internal/ui/util/ProblemTableViewer.java + 2004-09-09 Bogdan Gheorghe Fix for 73406 - Indexer: Double-Indexing on Specific Project diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/CBrowsingPart.java b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/CBrowsingPart.java index 72e696182d0..e1d71f4d4d5 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/CBrowsingPart.java +++ b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/CBrowsingPart.java @@ -33,6 +33,7 @@ import org.eclipse.cdt.internal.ui.browser.opentype.OpenTypeMessages; import org.eclipse.cdt.internal.ui.editor.CEditor; import org.eclipse.cdt.internal.ui.util.EditorUtility; import org.eclipse.cdt.internal.ui.util.ExceptionHandler; +import org.eclipse.cdt.internal.ui.viewsupport.AppearanceAwareLabelProvider; import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels; import org.eclipse.cdt.internal.ui.viewsupport.IViewPartInputProvider; import org.eclipse.cdt.internal.ui.workingsets.WorkingSetFilterActionGroup; diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/MembersView.java b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/MembersView.java index f8a86ad70db..a6efe9d4342 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/MembersView.java +++ b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/MembersView.java @@ -19,6 +19,7 @@ import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.model.ISourceRoot; import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.internal.ui.ICHelpContextIds; +import org.eclipse.cdt.internal.ui.viewsupport.AppearanceAwareLabelProvider; import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.PreferenceConstants; diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/ProjectsView.java b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/ProjectsView.java index c752ca2925d..b3847f8e60a 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/ProjectsView.java +++ b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/ProjectsView.java @@ -23,6 +23,7 @@ import org.eclipse.cdt.core.model.IStructure; import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.ITypeDef; import org.eclipse.cdt.internal.ui.ICHelpContextIds; +import org.eclipse.cdt.internal.ui.viewsupport.CUILabelProvider; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.PreferenceConstants; import org.eclipse.jface.viewers.DoubleClickEvent; diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/HierarchyLabelProvider.java b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/HierarchyLabelProvider.java index 9d0841f98c3..1505624134b 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/HierarchyLabelProvider.java +++ b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/HierarchyLabelProvider.java @@ -17,9 +17,9 @@ import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.IMethod; import org.eclipse.cdt.core.model.IMethodDeclaration; import org.eclipse.cdt.core.model.IStructure; -import org.eclipse.cdt.internal.ui.CElementImageProvider; import org.eclipse.cdt.internal.ui.CPluginImages; -import org.eclipse.cdt.internal.ui.StandardCElementLabelProvider; +import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; +import org.eclipse.cdt.internal.ui.viewsupport.StandardCElementLabelProvider; import org.eclipse.cdt.ui.CElementImageDescriptor; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.jface.resource.CompositeImageDescriptor; @@ -116,23 +116,12 @@ public class HierarchyLabelProvider extends StandardCElementLabelProvider // App return false; } return true; - } - - /* (non-Javadoc) - * @see ILabelProvider#getText - */ - public String getText(Object element) { - String text= super.getText(element); -// return decorateText(text, element); - return text; } - /* (non-Javadoc) * @see ILabelProvider#getImage */ public Image getImage(Object element) { -// return super.getImage(element); Image result= null; if (element instanceof ICElement) { ImageDescriptor desc= getTypeImageDescriptor((ICElement) element); @@ -143,9 +132,9 @@ public class HierarchyLabelProvider extends StandardCElementLabelProvider // App result= CUIPlugin.getImageDescriptorRegistry().get(desc); } } else { - result= fImageLabelProvider.getImageLabel(element, evaluateImageFlags(element)); + result= fImageLabelProvider.getImageLabel(element, getImageFlags()); } - return decorateImage(result, element); + return result; } private ImageDescriptor getTypeImageDescriptor(ICElement type) { diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/HistoryAction.java b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/HistoryAction.java index 95f4d2a260d..c4e24445646 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/HistoryAction.java +++ b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/HistoryAction.java @@ -11,8 +11,8 @@ package org.eclipse.cdt.internal.ui.browser.typehierarchy; import org.eclipse.cdt.core.model.ICElement; -import org.eclipse.cdt.internal.ui.CElementImageProvider; import org.eclipse.cdt.internal.ui.ICHelpContextIds; +import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels; import org.eclipse.jface.action.Action; import org.eclipse.jface.resource.ImageDescriptor; diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/MethodsLabelProvider.java b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/MethodsLabelProvider.java index 9244d305b18..ea39fe9267b 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/MethodsLabelProvider.java +++ b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/MethodsLabelProvider.java @@ -17,8 +17,8 @@ import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.IMethod; import org.eclipse.cdt.core.model.IMethodDeclaration; import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; -import org.eclipse.cdt.internal.ui.StandardCElementLabelProvider; import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels; +import org.eclipse.cdt.internal.ui.viewsupport.StandardCElementLabelProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.widgets.Display; diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/MethodsViewer.java b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/MethodsViewer.java index 197166e12a3..287da931aed 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/MethodsViewer.java +++ b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/MethodsViewer.java @@ -18,7 +18,7 @@ import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.IMethodDeclaration; import org.eclipse.cdt.internal.ui.util.ProblemTableViewer; import org.eclipse.cdt.internal.ui.util.SelectionUtil; -import org.eclipse.cdt.ui.CElementLabelProvider; +import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.actions.MemberFilterActionGroup; import org.eclipse.jface.action.IMenuListener; @@ -92,9 +92,9 @@ public class MethodsViewer extends ProblemTableViewer { cprovider.showInheritedMethods(on); fShowInheritedMembersAction.setChecked(on); if (on) { - fLabelProvider.turnOn(CElementLabelProvider.SHOW_POST_QUALIFIED); + fLabelProvider.setTextFlags(fLabelProvider.getTextFlags() | CElementLabels.T_POST_QUALIFIED); } else { - fLabelProvider.turnOff(CElementLabelProvider.SHOW_POST_QUALIFIED); + fLabelProvider.setTextFlags(fLabelProvider.getTextFlags() & ~CElementLabels.T_POST_QUALIFIED); } if (on) { sortByDefiningTypeNoRedraw(false); diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/TypeHierarchyViewPart.java b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/TypeHierarchyViewPart.java index 527ac1d038a..08db076a500 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/TypeHierarchyViewPart.java +++ b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/TypeHierarchyViewPart.java @@ -25,11 +25,11 @@ import org.eclipse.cdt.internal.ui.ICHelpContextIds; import org.eclipse.cdt.internal.ui.IContextMenuConstants; import org.eclipse.cdt.internal.ui.actions.CompositeActionGroup; import org.eclipse.cdt.internal.ui.actions.SelectAllAction; -import org.eclipse.cdt.internal.ui.browser.cbrowsing.CUILabelProvider; import org.eclipse.cdt.internal.ui.browser.cbrowsing.StatusBarUpdater; import org.eclipse.cdt.internal.ui.util.EditorUtility; import org.eclipse.cdt.internal.ui.util.ExceptionHandler; import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels; +import org.eclipse.cdt.internal.ui.viewsupport.CUILabelProvider; import org.eclipse.cdt.internal.ui.viewsupport.IViewPartInputProvider; import org.eclipse.cdt.internal.ui.workingsets.WorkingSetFilterActionGroup; import org.eclipse.cdt.ui.CUIPlugin; diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/TypeHierarchyViewer.java b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/TypeHierarchyViewer.java index 58da4566216..423ed5de5ee 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/TypeHierarchyViewer.java +++ b/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/typehierarchy/TypeHierarchyViewer.java @@ -13,7 +13,7 @@ package org.eclipse.cdt.internal.ui.browser.typehierarchy; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.IMember; import org.eclipse.cdt.internal.ui.util.ProblemTreeViewer; -import org.eclipse.cdt.ui.CElementLabelProvider; +import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; @@ -56,15 +56,10 @@ public abstract class TypeHierarchyViewer extends ProblemTreeViewer { public void setQualifiedTypeName(boolean on) { if (on) { - fLabelProvider.turnOn(CElementLabelProvider.SHOW_POST_QUALIFIED); + fLabelProvider.setTextFlags(fLabelProvider.getTextFlags() | CElementLabels.T_POST_QUALIFIED); } else { - fLabelProvider.turnOff(CElementLabelProvider.SHOW_POST_QUALIFIED); + fLabelProvider.setTextFlags(fLabelProvider.getTextFlags() & ~CElementLabels.T_POST_QUALIFIED); } -// if (on) { -// fLabelProvider.setTextFlags(fLabelProvider.getTextFlags() | CElementLabels.T_POST_QUALIFIED); -// } else { -// fLabelProvider.setTextFlags(fLabelProvider.getTextFlags() & ~CElementLabels.T_POST_QUALIFIED); -// } refresh(); } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CWorkbenchAdapter.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CWorkbenchAdapter.java index 2445767370a..a30d9860228 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CWorkbenchAdapter.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CWorkbenchAdapter.java @@ -11,6 +11,7 @@ import org.eclipse.ui.model.IWorkbenchAdapter; import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.IParent; +import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; import org.eclipse.cdt.ui.CElementLabelProvider; import org.eclipse.cdt.ui.CUIPlugin; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/ErrorTickAdornmentProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/ErrorTickAdornmentProvider.java deleted file mode 100644 index f51db873dca..00000000000 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/ErrorTickAdornmentProvider.java +++ /dev/null @@ -1,138 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 QNX Software Systems and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v10.html - * - * Contributors: - * QNX Software Systems - Initial API and implementation - *******************************************************************************/ -package org.eclipse.cdt.internal.ui; - - -import org.eclipse.cdt.core.model.ICElement; -import org.eclipse.cdt.core.model.ICModelMarker; -import org.eclipse.cdt.core.model.ISourceRange; -import org.eclipse.cdt.core.model.ISourceReference; -import org.eclipse.cdt.core.model.ITranslationUnit; -import org.eclipse.cdt.ui.CUIPlugin; -import org.eclipse.core.resources.IMarker; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jface.text.Position; -import org.eclipse.jface.text.source.Annotation; -import org.eclipse.jface.text.source.IAnnotationModel; -import org.eclipse.ui.texteditor.MarkerAnnotation; -import org.eclipse.ui.texteditor.MarkerUtilities; - -public class ErrorTickAdornmentProvider implements IAdornmentProvider { - - private static final int ERRORTICK_WARNING= CElementImageProvider.OVERLAY_WARNING; - private static final int ERRORTICK_ERROR= CElementImageProvider.OVERLAY_ERROR; - - /* - * @see IAdornmentProvider#computeAdornmentFlags(Object, int) - */ - public int computeAdornmentFlags(Object obj) { - try { - if (obj instanceof ICElement) { - ICElement element= (ICElement) obj; - - int type= element.getElementType(); - switch (type) { - case ICElement.C_PROJECT: - case ICElement.C_CCONTAINER: - return getErrorTicksFromMarkers(element.getResource(), IResource.DEPTH_INFINITE, null); - case ICElement.C_UNIT: - return getErrorTicksFromMarkers(element.getResource(), IResource.DEPTH_ONE, null); - case ICElement.C_FUNCTION: - case ICElement.C_CLASS: - case ICElement.C_UNION: - case ICElement.C_STRUCT: - case ICElement.C_VARIABLE: - case ICElement.C_METHOD: - ITranslationUnit tu= ((ISourceReference)element).getTranslationUnit(); - if (tu != null && tu.exists()) { - // I assume that only source elements in compilation unit can have markers - ISourceRange range= ((ISourceReference)element).getSourceRange(); - return getErrorTicksFromMarkers(tu.getResource(), IResource.DEPTH_ONE, range); - } - default: - } - } else if (obj instanceof IResource) { - return getErrorTicksFromMarkers((IResource) obj, IResource.DEPTH_INFINITE, null); - } - } catch (CoreException e) { - CUIPlugin.getDefault().log(e); - } - return 0; - } - - /* - * @see IAdornmentProvider#dispose() - */ - public void dispose() { - } - - private int getErrorTicksFromMarkers(IResource res, int depth, ISourceRange range) throws CoreException { - // Trying to call findMarkers() on non existing resources will throw an exception - // findMarkers() --> CoreException - if this method fails. - // Reasons include: - // This resource does not exist. - // This resource is a project that is not open. - if (res == null || !res.isAccessible()) { // for elements in archives - return 0; - } - int info= 0; - - IMarker[] markers= res.findMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, true, depth); - if (markers != null) { - for (int i= 0; i < markers.length && (info != ERRORTICK_ERROR); i++) { - IMarker curr= markers[i]; - if (range == null || isMarkerInRange(curr, range)) { - int priority= curr.getAttribute(IMarker.SEVERITY, -1); - if (priority == IMarker.SEVERITY_WARNING) { - info= ERRORTICK_WARNING; - } else if (priority == IMarker.SEVERITY_ERROR) { - info= ERRORTICK_ERROR; - } - } - } - } - return info; - } - - private boolean isMarkerInRange(IMarker marker, ISourceRange range) throws CoreException { - if (marker.isSubtypeOf(IMarker.TEXT)) { - int pos= marker.getAttribute(IMarker.CHAR_START, -1); - int offset= range.getStartPos(); - if(pos == -1) { - int line= MarkerUtilities.getLineNumber(marker); - if (line >= 0) { - return (line >= range.getStartLine() && line <= range.getEndLine()); - } - - } - return (offset <= pos && offset + range.getLength() > pos); - } - return false; - } - - - private IMarker isAnnotationInRange(IAnnotationModel model, Annotation annot, ISourceRange range) throws CoreException { - if (annot instanceof MarkerAnnotation) { - IMarker marker= ((MarkerAnnotation)annot).getMarker(); - if (marker.exists() && marker.isSubtypeOf(ICModelMarker.C_MODEL_PROBLEM_MARKER)) { - Position pos= model.getPosition(annot); - if (pos.overlapsWith(range.getStartPos(), range.getLength())) { - return marker; - } - } - } - - return null; - } -} - - diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/IAdornmentProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/IAdornmentProvider.java deleted file mode 100644 index 782e77836f6..00000000000 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/IAdornmentProvider.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.eclipse.cdt.internal.ui; - -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ - -/** - * @since 1.0 - */ -public interface IAdornmentProvider { - - /** - * Computes the adornment flags for the given element. - * Flags defined in JavaElementImageProvider. - */ - int computeAdornmentFlags(Object element); - - - /** - * Called when the parent label provider is disposed - */ - void dispose(); - -} - - diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/CNode.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/CNode.java index a3d523d5d68..069e7dd6142 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/CNode.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/CNode.java @@ -5,7 +5,7 @@ package org.eclipse.cdt.internal.ui.compare; * All Rights Reserved. */ -import org.eclipse.cdt.internal.ui.CElementImageProvider; +import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.compare.ITypedElement; import org.eclipse.compare.structuremergeviewer.DocumentRangeNode; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CView.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CView.java index 2855bb64c3a..04081d8e54e 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CView.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CView.java @@ -34,6 +34,8 @@ import org.eclipse.cdt.internal.ui.drag.TransferDragSourceListener; import org.eclipse.cdt.internal.ui.preferences.CPluginPreferencePage; import org.eclipse.cdt.internal.ui.util.EditorUtility; import org.eclipse.cdt.internal.ui.util.ProblemTreeViewer; +import org.eclipse.cdt.internal.ui.viewsupport.CUILabelProvider; +import org.eclipse.cdt.internal.ui.viewsupport.DecoratingCLabelProvider; import org.eclipse.cdt.ui.CElementContentProvider; import org.eclipse.cdt.ui.CElementSorter; import org.eclipse.cdt.ui.CLocalSelectionTransfer; @@ -49,11 +51,9 @@ import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.jface.viewers.DecoratingLabelProvider; import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.IDoubleClickListener; -import org.eclipse.jface.viewers.ILabelDecorator; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.IOpenListener; import org.eclipse.jface.viewers.ISelection; @@ -100,6 +100,7 @@ import org.eclipse.ui.part.PluginTransfer; import org.eclipse.ui.part.ResourceTransfer; import org.eclipse.ui.part.ShowInContext; import org.eclipse.ui.part.ViewPart; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; import org.eclipse.ui.views.framelist.FrameList; import org.eclipse.ui.views.navigator.LocalSelectionTransfer; @@ -416,9 +417,8 @@ public class CView extends ViewPart implements ISetSelectionTarget, IPropertyCha * Sets the label provider for the viewer. */ void initLabelProvider(TreeViewer viewer) { - ILabelProvider cProvider = createLabelProvider(); - ILabelDecorator decorator = CUIPlugin.getDefault().getWorkbench().getDecoratorManager().getLabelDecorator(); - viewer.setLabelProvider(new DecoratingLabelProvider(cProvider, decorator)); + CUILabelProvider cProvider = createLabelProvider(); + viewer.setLabelProvider(new DecoratingCLabelProvider(cProvider, true)); } /** @@ -509,7 +509,6 @@ public class CView extends ViewPart implements ISetSelectionTarget, IPropertyCha viewer.setComparer(new CViewElementComparer()); initContentProvider(viewer); initLabelProvider(viewer); - CUIPlugin.getDefault().getProblemMarkerManager().addListener(viewer); CUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this); initFilters(viewer); @@ -565,7 +564,7 @@ public class CView extends ViewPart implements ISetSelectionTarget, IPropertyCha return provider; } - protected ILabelProvider createLabelProvider() { + protected CUILabelProvider createLabelProvider() { return new CViewLabelProvider(); } @@ -577,7 +576,6 @@ public class CView extends ViewPart implements ISetSelectionTarget, IPropertyCha CUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this); if (viewer != null) { viewer.removeTreeListener(expansionListener); - CUIPlugin.getDefault().getProblemMarkerManager().removeListener(viewer); } if (getActionGroup() != null) { getActionGroup().dispose(); @@ -794,17 +792,6 @@ public class CView extends ViewPart implements ISetSelectionTarget, IPropertyCha } } - /** - * Sets the decorator for the package explorer. - * - * @param decorator - * a label decorator or null for no decorations. - */ - public void setLabelDecorator(ILabelDecorator decorator) { - ILabelProvider cProvider = createLabelProvider(); - viewer.setLabelProvider(new DecoratingLabelProvider(cProvider, decorator)); - } - public void propertyChange(PropertyChangeEvent event) { if (viewer == null) return; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewLabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewLabelProvider.java index 22de5cc408d..410757e8488 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewLabelProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/cview/CViewLabelProvider.java @@ -13,9 +13,8 @@ package org.eclipse.cdt.internal.ui.cview; import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.IIncludeReference; import org.eclipse.cdt.core.model.ITranslationUnit; -import org.eclipse.cdt.internal.ui.CElementImageProvider; -import org.eclipse.cdt.internal.ui.IAdornmentProvider; -import org.eclipse.cdt.internal.ui.StandardCElementLabelProvider; +import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; +import org.eclipse.cdt.internal.ui.viewsupport.StandardCElementLabelProvider; import org.eclipse.cdt.ui.CElementImageDescriptor; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.core.resources.IContainer; @@ -39,8 +38,8 @@ public class CViewLabelProvider extends StandardCElementLabelProvider { * @param flags * @param adormentProviders */ - public CViewLabelProvider(int flags, IAdornmentProvider[] adormentProviders) { - super(flags, adormentProviders); + public CViewLabelProvider(int textFlags, int imageFlags) { + super(textFlags, imageFlags); } /* (non-Javadoc) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementLabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementLabelProvider.java index e8e98d79e68..2c74c9855b1 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementLabelProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/dialogs/cpaths/CPElementLabelProvider.java @@ -12,9 +12,9 @@ import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.IPathEntry; import org.eclipse.cdt.core.model.IPathEntryContainer; -import org.eclipse.cdt.internal.ui.CElementImageProvider; import org.eclipse.cdt.internal.ui.CPluginImages; import org.eclipse.cdt.internal.ui.util.ImageDescriptorRegistry; +import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IPath; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CContentOutlinePage.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CContentOutlinePage.java index cc7d2818ede..a76530f7657 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CContentOutlinePage.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CContentOutlinePage.java @@ -12,11 +12,11 @@ import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.internal.ui.CPluginImages; import org.eclipse.cdt.internal.ui.ICHelpContextIds; -import org.eclipse.cdt.internal.ui.StandardCElementLabelProvider; import org.eclipse.cdt.internal.ui.actions.AbstractToggleLinkingAction; import org.eclipse.cdt.internal.ui.actions.ActionMessages; import org.eclipse.cdt.internal.ui.search.actions.SelectionSearchGroup; import org.eclipse.cdt.internal.ui.util.ProblemTreeViewer; +import org.eclipse.cdt.internal.ui.viewsupport.StandardCElementLabelProvider; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.PreferenceConstants; import org.eclipse.cdt.ui.actions.CustomFiltersActionGroup; @@ -235,8 +235,6 @@ public class CContentOutlinePage extends Page implements IContentOutlinePage, IS treeViewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS); treeViewer.addSelectionChangedListener(this); - CUIPlugin.getDefault().getProblemMarkerManager().addListener(treeViewer); - MenuManager manager= new MenuManager(fContextMenuId); manager.setRemoveAllWhenShown(true); manager.addMenuListener(new IMenuListener() { @@ -277,8 +275,6 @@ public class CContentOutlinePage extends Page implements IContentOutlinePage, IS } public void dispose() { - CUIPlugin.getDefault().getProblemMarkerManager().removeListener(treeViewer); - if (treeViewer != null) { treeViewer.removeSelectionChangedListener(this); } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java index a592efaa220..01caa5fb5aa 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditor.java @@ -214,9 +214,6 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IS */ protected void doSetInput(IEditorInput input) throws CoreException { super.doSetInput(input); - if (fCEditorErrorTickUpdater != null) { - fCEditorErrorTickUpdater.setAnnotationModel(getDocumentProvider().getAnnotationModel(input)); - } setOutlinePageInput(fOutlinePage, input); if (fProjectionModelUpdater != null) { @@ -506,7 +503,6 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IS } if (fCEditorErrorTickUpdater != null) { - fCEditorErrorTickUpdater.setAnnotationModel(null); fCEditorErrorTickUpdater.dispose(); fCEditorErrorTickUpdater = null; } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorErrorTickUpdater.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorErrorTickUpdater.java index ebc085cdcea..fa0193dc4e1 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorErrorTickUpdater.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/editor/CEditorErrorTickUpdater.java @@ -12,9 +12,12 @@ package org.eclipse.cdt.internal.ui.editor; import org.eclipse.cdt.core.model.ICElement; -import org.eclipse.cdt.ui.CElementLabelProvider; -import org.eclipse.jface.text.source.IAnnotationModel; -import org.eclipse.jface.text.source.IAnnotationModelListener; +import org.eclipse.cdt.internal.ui.util.IProblemChangedListener; +import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; +import org.eclipse.cdt.internal.ui.viewsupport.CUILabelProvider; +import org.eclipse.cdt.internal.ui.viewsupport.ProblemsLabelDecorator; +import org.eclipse.cdt.ui.CUIPlugin; +import org.eclipse.core.resources.IResource; import org.eclipse.jface.util.Assert; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Shell; @@ -25,65 +28,57 @@ import org.eclipse.ui.IEditorInput; * on the annotation model of a Java Editor and update the title images when the annotation * model changed. */ -public class CEditorErrorTickUpdater implements IAnnotationModelListener { +public class CEditorErrorTickUpdater implements IProblemChangedListener { protected CEditor fCEditor; - private IAnnotationModel fAnnotationModel; - private CElementLabelProvider fLabelProvider; + private CUILabelProvider fLabelProvider; public CEditorErrorTickUpdater(CEditor editor) { - fCEditor= editor; Assert.isNotNull(editor); + fCEditor= editor; + fLabelProvider= new CUILabelProvider(0, CElementImageProvider.SMALL_ICONS); + fLabelProvider.addLabelDecorator(new ProblemsLabelDecorator(null)); + CUIPlugin.getDefault().getProblemMarkerManager().addListener(this); } - /** - * Defines the annotation model to listen to. To be called when the - * annotation model changes. - * @param model The new annotation model or null - * to uninstall. + + /* (non-Javadoc) + * @see IProblemChangedListener#problemsChanged(IResource[], boolean) */ - public void setAnnotationModel(IAnnotationModel model) { - if (fAnnotationModel != null) { - fAnnotationModel.removeAnnotationModelListener(this); - } - - if (model != null) { - if (fLabelProvider == null) { - fLabelProvider= new CElementLabelProvider(CElementLabelProvider.SHOW_SMALL_ICONS, CElementLabelProvider.getAdornmentProviders(true, null)); - } - fAnnotationModel=model; - fAnnotationModel.addAnnotationModelListener(this); - modelChanged(fAnnotationModel); - } else { - if (fLabelProvider != null) { - fLabelProvider.dispose(); - } - fLabelProvider= null; - fAnnotationModel= null; - } - } - - /* - * @see IAnnotationModelListener#modelChanged(IAnnotationModel) - */ - public void modelChanged(IAnnotationModel model) { - Image titleImage= fCEditor.getTitleImage(); - if (titleImage == null) { + public void problemsChanged(IResource[] resourcesChanged, boolean isMarkerChange) { + if (isMarkerChange) { return; } IEditorInput input= fCEditor.getEditorInput(); if (input != null) { // might run async, tests needed ICElement celement= (ICElement) input.getAdapter(ICElement.class); - if (fLabelProvider != null && celement != null) { - Image newImage= fLabelProvider.getImage(celement); - if (titleImage != newImage) { - updatedTitleImage(newImage); + if (celement != null) { + IResource resource= celement.getResource(); + if (resource == null) { + return; + } + for (int i = 0; i < resourcesChanged.length; i++){ + if (resource.equals(resourcesChanged[i])) { + updateEditorImage(celement); + return; + } } } } + } + + public void updateEditorImage(ICElement celement) { + Image titleImage= fCEditor.getTitleImage(); + if (titleImage == null) { + return; + } + Image newImage= fLabelProvider.getImage(celement); + if (titleImage != newImage) { + postImageChange(newImage); + } } - private void updatedTitleImage(final Image newImage) { + private void postImageChange(final Image newImage) { Shell shell= fCEditor.getEditorSite().getShell(); if (shell != null && !shell.isDisposed()) { shell.getDisplay().syncExec(new Runnable() { @@ -93,16 +88,9 @@ public class CEditorErrorTickUpdater implements IAnnotationModelListener { }); } } - + public void dispose() { - if (fLabelProvider != null) { - fLabelProvider.dispose(); - fLabelProvider= null; - } - fAnnotationModel= null; + fLabelProvider.dispose(); + CUIPlugin.getDefault().getProblemMarkerManager().removeListener(this); } } - - - - diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ResultCollector.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ResultCollector.java index 20fabfc520f..d90214ce59a 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ResultCollector.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ResultCollector.java @@ -14,8 +14,8 @@ import java.util.HashSet; import java.util.Set; import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; -import org.eclipse.cdt.internal.ui.CElementImageProvider; import org.eclipse.cdt.internal.ui.util.ImageDescriptorRegistry; +import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.FunctionPrototypeSummary; import org.eclipse.jface.resource.ImageDescriptor; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/IProblemChangedListener.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/IProblemChangedListener.java index 354e19e9c19..4d551e5ec4a 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/IProblemChangedListener.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/IProblemChangedListener.java @@ -5,7 +5,7 @@ package org.eclipse.cdt.internal.ui.util; * All Rights Reserved. */ -import java.util.Set; +import org.eclipse.core.resources.IResource; /** * Can be added to a ProblemMarkerManager to get notified about error @@ -17,6 +17,6 @@ public interface IProblemChangedListener { * @param changedElements A set of type IPath that * describe the resources that had an error marker change. */ - void problemsChanged(Set changedElements); + void problemsChanged(IResource[] changedResources, boolean markerChanged); } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/ProblemMarkerManager.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/ProblemMarkerManager.java index 0eda74bb4c9..2af05290a0a 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/ProblemMarkerManager.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/ProblemMarkerManager.java @@ -5,15 +5,10 @@ package org.eclipse.cdt.internal.ui.util; * All Rights Reserved. */ -import org.eclipse.cdt.core.model.ICModelMarker; -import org.eclipse.cdt.core.CProjectNature; +import java.util.HashSet; + import org.eclipse.cdt.internal.ui.editor.TranslationUnitAnnotationModelEvent; import org.eclipse.cdt.ui.CUIPlugin; - -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IMarkerDelta; import org.eclipse.core.resources.IProject; @@ -23,8 +18,6 @@ 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.IPath; - import org.eclipse.jface.text.source.AnnotationModelEvent; import org.eclipse.jface.text.source.IAnnotationModel; import org.eclipse.jface.text.source.IAnnotationModelListener; @@ -32,10 +25,9 @@ import org.eclipse.jface.text.source.IAnnotationModelListenerExtension; import org.eclipse.jface.util.ListenerList; import org.eclipse.swt.widgets.Display; - /** - * Listens to resource deltas and filters for marker changes of type IMarker.PROBLEM - * Viewers showing error ticks should register as listener to + * 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 { @@ -45,53 +37,48 @@ public class ProblemMarkerManager implements IResourceChangeListener, IAnnotatio */ private static class ProjectErrorVisitor implements IResourceDeltaVisitor { - private HashSet fChangedElements; - + private HashSet fChangedElements; + public ProjectErrorVisitor(HashSet changedElements) { - fChangedElements= changedElements; + fChangedElements = changedElements; } - + public boolean visit(IResourceDelta delta) throws CoreException { - IResource res= delta.getResource(); + IResource res = delta.getResource(); if (res instanceof IProject && delta.getKind() == IResourceDelta.CHANGED) { - try { - IProject project= (IProject) res; - if (!project.isAccessible() || !project.hasNature(CProjectNature.C_NATURE_ID)) { - // only track open C projects - return false; - } - } catch (CoreException e) { - CUIPlugin.getDefault().log(e.getStatus()); + IProject project = (IProject)res; + if (!project.isAccessible()) { + // only track open C projects return false; } } - checkInvalidate(delta, res.getFullPath()); + checkInvalidate(delta, res); return true; } - - private void checkInvalidate(IResourceDelta delta, IPath path) { - int kind= delta.getKind(); - if (kind == IResourceDelta.REMOVED || kind == IResourceDelta.ADDED || (kind == IResourceDelta.CHANGED && isErrorDelta(delta))) { + + 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 path and all parent paths - while (!path.isEmpty() && !path.isRoot() && !fChangedElements.contains(path)) { - fChangedElements.add(path); - path= path.removeLastSegments(1); + 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(ICModelMarker.C_MODEL_PROBLEM_MARKER)) { - int kind= markerDeltas[i].getKind(); + } + } + + 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); + int severity = markerDeltas[i].getAttribute(IMarker.SEVERITY, -1); + int newSeverity = markerDeltas[i].getMarker().getAttribute(IMarker.SEVERITY, -1); if (newSeverity != severity) - return true; + return true; } } } @@ -100,20 +87,19 @@ public class ProblemMarkerManager implements IResourceChangeListener, IAnnotatio } private ListenerList fListeners; - - + public ProblemMarkerManager() { - fListeners= new ListenerList(5); + fListeners = new ListenerList(5); } /* * @see IResourceChangeListener#resourceChanged - */ + */ public void resourceChanged(IResourceChangeEvent event) { - HashSet changedElements= new HashSet(); - + HashSet changedElements = new HashSet(); + try { - IResourceDelta delta= event.getDelta(); + IResourceDelta delta = event.getDelta(); if (delta != null) delta.accept(new ProjectErrorVisitor(changedElements)); } catch (CoreException e) { @@ -121,39 +107,45 @@ public class ProblemMarkerManager implements IResourceChangeListener, IAnnotatio } if (!changedElements.isEmpty()) { - fireChanges(changedElements); + IResource[] changes = (IResource[])changedElements.toArray(new IResource[changedElements.size()]); + fireChanges(changes, true); } } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see IAnnotationModelListener#modelChanged(IAnnotationModel) */ public void modelChanged(IAnnotationModel model) { // no action } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see IAnnotationModelListenerExtension#modelChanged(AnnotationModelEvent) */ public void modelChanged(AnnotationModelEvent event) { if (event instanceof TranslationUnitAnnotationModelEvent) { - TranslationUnitAnnotationModelEvent cuEvent= (TranslationUnitAnnotationModelEvent) event; + TranslationUnitAnnotationModelEvent cuEvent = (TranslationUnitAnnotationModelEvent)event; if (cuEvent.includesProblemMarkerAnnotationChanges()) { - //IResource[] changes= new IResource[] {cuEvent.getUnderlyingResource()}; + //IResource[] changes= new IResource[] + // {cuEvent.getUnderlyingResource()}; IResource res = cuEvent.getUnderlyingResource(); if (res != null) { - fireChanges(Collections.singleton(res.getFullPath())); + fireChanges(new IResource[]{res}, false); } } } - } + } /** * Adds a listener for problem marker changes. */ public void addListener(IProblemChangedListener listener) { - if (fListeners.isEmpty()) { + if (fListeners.isEmpty()) { CUIPlugin.getWorkspace().addResourceChangeListener(this); CUIPlugin.getDefault().getDocumentProvider().addGlobalAnnotationModelListener(this); } @@ -162,7 +154,7 @@ public class ProblemMarkerManager implements IResourceChangeListener, IAnnotatio /** * Removes a IProblemChangedListener. - */ + */ public void removeListener(IProblemChangedListener listener) { fListeners.remove(listener); if (fListeners.isEmpty()) { @@ -170,20 +162,21 @@ public class ProblemMarkerManager implements IResourceChangeListener, IAnnotatio CUIPlugin.getDefault().getDocumentProvider().removeGlobalAnnotationModelListener(this); } } - - private void fireChanges(final Set changes) { - Display display= SWTUtil.getStandardDisplay(); + + private void fireChanges(final IResource[] changes, final boolean markerChanged) { + 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); + + public void run() { + Object[] listeners = fListeners.getListeners(); + for (int i = 0; i < listeners.length; i++) { + IProblemChangedListener curr = (IProblemChangedListener)listeners[i]; + curr.problemsChanged(changes, markerChanged); } } }); } } - } +} diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/ProblemTableViewer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/ProblemTableViewer.java index d7e80b02558..de974fa7a1c 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/ProblemTableViewer.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/ProblemTableViewer.java @@ -13,7 +13,7 @@ package org.eclipse.cdt.internal.ui.util; import java.util.ArrayList; -import org.eclipse.cdt.internal.ui.browser.cbrowsing.ProblemsLabelDecorator.ProblemsLabelChangedEvent; +import org.eclipse.cdt.internal.ui.viewsupport.ProblemsLabelDecorator.ProblemsLabelChangedEvent; import org.eclipse.core.resources.IResource; import org.eclipse.swt.widgets.Composite; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/ProblemTreeViewer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/ProblemTreeViewer.java index 206c69ce2ec..202b4516f7c 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/ProblemTreeViewer.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/util/ProblemTreeViewer.java @@ -5,15 +5,14 @@ package org.eclipse.cdt.internal.ui.util; * All Rights Reserved. */ -import java.util.Set; +import java.util.ArrayList; -import org.eclipse.jface.viewers.ILabelProvider; -import org.eclipse.jface.viewers.ISelection; +import org.eclipse.core.resources.IResource; +import org.eclipse.jface.viewers.IBaseLabelProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProviderChangedEvent; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Item; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.Widget; @@ -24,9 +23,9 @@ import org.eclipse.swt.widgets.Widget; * A ProblemItemMapper is contained that maps all items in * the tree to underlying resource */ -public class ProblemTreeViewer extends TreeViewer implements IProblemChangedListener { +public class ProblemTreeViewer extends TreeViewer { - protected ProblemItemMapper fProblemItemMapper; + protected ResourceToItemsMapper fResourceToItemsMapper; /* * @see TreeViewer#TreeViewer(Composite) @@ -53,44 +52,39 @@ public class ProblemTreeViewer extends TreeViewer implements IProblemChangedList } private void initMapper() { - fProblemItemMapper= new ProblemItemMapper(); + fResourceToItemsMapper= new ResourceToItemsMapper(this); } - /* - * @see IProblemChangedListener#problemsChanged - */ - public void problemsChanged(final Set changed) { - Control control= getControl(); - if (control != null && !control.isDisposed()) { - control.getDisplay().asyncExec(new Runnable() { - public void run() { - fProblemItemMapper.problemsChanged(changed, (ILabelProvider)getLabelProvider()); - } - }); - } - } - + /* * @see StructuredViewer#mapElement(Object, Widget) */ protected void mapElement(Object element, Widget item) { super.mapElement(element, item); if (item instanceof Item) { - fProblemItemMapper.addToMap(element, (Item) item); + fResourceToItemsMapper.addToMap(element, (Item) item); } } - + /* * @see StructuredViewer#unmapElement(Object, Widget) */ protected void unmapElement(Object element, Widget item) { if (item instanceof Item) { - fProblemItemMapper.removeFromMap(element, (Item) item); + fResourceToItemsMapper.removeFromMap(element, (Item) item); } super.unmapElement(element); } + /* + * @see StructuredViewer#unmapAllElements() + */ + protected void unmapAllElements() { + fResourceToItemsMapper.clearMap(); + super.unmapAllElements(); + } + /* * @see ContentViewer#handleLabelProviderChanged(LabelProviderChangedEvent) */ @@ -100,39 +94,26 @@ public class ProblemTreeViewer extends TreeViewer implements IProblemChangedList super.handleLabelProviderChanged(event); return; } - - /* - // map the event to the Java elements if possible - // this does not handle the ambiguity of default packages - Object[] mapped= new Object[source.length]; - for (int i= 0; i < source.length; i++) { - Object o= source[i]; - // needs to handle the case of: - // default package - // package fragment root on project - if (o instanceof IResource) { - IResource r= (IResource)o; - IJavaElement element= JavaCore.create(r); - if (element != null) - mapped[i]= element; - else - mapped[i]= o; - } else { - mapped[i]= o; + 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); + } } - } - super.handleLabelProviderChanged(new LabelProviderChangedEvent((IBaseLabelProvider)event.getSource(), mapped)); */ + if (others.isEmpty()) { + return; + } + event= new LabelProviderChangedEvent((IBaseLabelProvider) event.getSource(), others.toArray()); + } super.handleLabelProviderChanged(event); return; } - /* (non-Javadoc) - * @see org.eclipse.jface.viewers.StructuredViewer#handleInvalidSelection(org.eclipse.jface.viewers.ISelection, org.eclipse.jface.viewers.ISelection) - */ - protected void handleInvalidSelection(ISelection invalidSelection, ISelection newSelection) { - super.handleInvalidSelection(invalidSelection, newSelection); - } - /* (non-Javadoc) * @see org.eclipse.jface.viewers.AbstractTreeViewer#isExpandable(java.lang.Object) diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/AppearanceAwareLabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/AppearanceAwareLabelProvider.java similarity index 94% rename from core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/AppearanceAwareLabelProvider.java rename to core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/AppearanceAwareLabelProvider.java index 4dc6fe29651..ad9ad20102e 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/AppearanceAwareLabelProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/AppearanceAwareLabelProvider.java @@ -8,10 +8,8 @@ * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ -package org.eclipse.cdt.internal.ui.browser.cbrowsing; +package org.eclipse.cdt.internal.ui.viewsupport; -import org.eclipse.cdt.internal.ui.CElementImageProvider; -import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels; import org.eclipse.cdt.ui.PreferenceConstants; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.util.IPropertyChangeListener; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CElementImageProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java similarity index 99% rename from core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CElementImageProvider.java rename to core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java index 6db9fced2d7..bd6ca9d2c5a 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/CElementImageProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CElementImageProvider.java @@ -1,4 +1,4 @@ -package org.eclipse.cdt.internal.ui; +package org.eclipse.cdt.internal.ui.viewsupport; /* * (c) Copyright IBM Corp. 2000, 2001. @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.model.ISourceRoot; import org.eclipse.cdt.core.model.ITemplate; import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; +import org.eclipse.cdt.internal.ui.CPluginImages; import org.eclipse.cdt.ui.CElementImageDescriptor; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.core.resources.IFile; diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/CUILabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CUILabelProvider.java similarity index 97% rename from core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/CUILabelProvider.java rename to core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CUILabelProvider.java index d7a42cffa1e..340b0f1e22a 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/CUILabelProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/CUILabelProvider.java @@ -8,13 +8,12 @@ * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ -package org.eclipse.cdt.internal.ui.browser.cbrowsing; +package org.eclipse.cdt.internal.ui.viewsupport; import java.util.ArrayList; import org.eclipse.cdt.core.browser.ITypeInfo; -import org.eclipse.cdt.internal.ui.CElementImageProvider; -import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels; +import org.eclipse.cdt.internal.ui.browser.cbrowsing.StorageLabelProvider; import org.eclipse.cdt.ui.browser.typeinfo.TypeInfoLabelProvider; import org.eclipse.core.resources.IStorage; @@ -116,7 +115,7 @@ public class CUILabelProvider extends LabelProvider implements IColorProvider { protected int 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++) { diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/DecoratingCLabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/DecoratingCLabelProvider.java similarity index 97% rename from core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/DecoratingCLabelProvider.java rename to core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/DecoratingCLabelProvider.java index 43128b57d39..70afa41c375 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/DecoratingCLabelProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/DecoratingCLabelProvider.java @@ -8,7 +8,7 @@ * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ -package org.eclipse.cdt.internal.ui.browser.cbrowsing; +package org.eclipse.cdt.internal.ui.viewsupport; import org.eclipse.swt.graphics.Color; diff --git a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/ProblemsLabelDecorator.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/ProblemsLabelDecorator.java similarity index 87% rename from core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/ProblemsLabelDecorator.java rename to core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/ProblemsLabelDecorator.java index e54b702999e..68efa80cf23 100644 --- a/core/org.eclipse.cdt.ui/browser/org/eclipse/cdt/internal/ui/browser/cbrowsing/ProblemsLabelDecorator.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/ProblemsLabelDecorator.java @@ -8,7 +8,7 @@ * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ -package org.eclipse.cdt.internal.ui.browser.cbrowsing; +package org.eclipse.cdt.internal.ui.viewsupport; import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.ICElement; @@ -19,7 +19,6 @@ import org.eclipse.cdt.internal.corext.refactoring.ListenerList; import org.eclipse.cdt.internal.ui.CPluginImages; import org.eclipse.cdt.internal.ui.util.IProblemChangedListener; import org.eclipse.cdt.internal.ui.util.ImageDescriptorRegistry; -import org.eclipse.cdt.internal.ui.viewsupport.ImageImageDescriptor; import org.eclipse.cdt.ui.CElementImageDescriptor; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.core.resources.IFile; @@ -159,29 +158,18 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe case ICElement.C_PROJECT: case ICElement.C_CCONTAINER: return getErrorTicksFromMarkers(element.getResource(), IResource.DEPTH_INFINITE, null); -// case ICElement.PACKAGE_FRAGMENT: -// case ICElement.CLASS_FILE: -// return getErrorTicksFromMarkers(element.getResource(), IResource.DEPTH_ONE, null); -// case ICElement.COMPILATION_UNIT: -// case ICElement.PACKAGE_DECLARATION: -// case ICElement.IMPORT_DECLARATION: -// case ICElement.IMPORT_CONTAINER: -// case ICElement.TYPE: -// case ICElement.INITIALIZER: -// case ICElement.METHOD: -// case ICElement.FIELD: -// case ICElement.LOCAL_VARIABLE: -// ICompilationUnit cu= (ICompilationUnit) element.getAncestor(ICElement.COMPILATION_UNIT); -// if (cu != null) { -// ISourceReference ref= (type == ICElement.COMPILATION_UNIT) ? null : (ISourceReference) element; -// // The assumption is that only source elements in compilation unit can have markers -// if (cu.isWorkingCopy()) { -// // working copy: look at annotation model -// return getErrorTicksFromWorkingCopy(cu, ref); -// } -// return getErrorTicksFromMarkers(cu.getResource(), IResource.DEPTH_ONE, ref); -// } -// break; + case ICElement.C_UNIT: + return getErrorTicksFromMarkers(element.getResource(), IResource.DEPTH_ONE, null); + case ICElement.C_FUNCTION: + case ICElement.C_CLASS: + case ICElement.C_UNION: + case ICElement.C_STRUCT: + case ICElement.C_VARIABLE: + case ICElement.C_METHOD: + ITranslationUnit tu= ((ISourceReference)element).getTranslationUnit(); + if (tu != null && tu.exists()) { + return getErrorTicksFromMarkers(tu.getResource(), IResource.DEPTH_ONE, tu); + } default: } } else if (obj instanceof IResource) { @@ -315,14 +303,14 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe fListeners= new ListenerList(); } fListeners.add(listener); -// if (fProblemChangedListener == null) { -// fProblemChangedListener= new IProblemChangedListener() { -// public void problemsChanged(IResource[] changedResources, boolean isMarkerChange) { -// fireProblemsChanged(changedResources, isMarkerChange); -// } -// }; -// CUIPlugin.getDefault().getProblemMarkerManager().addListener(fProblemChangedListener); -// } + if (fProblemChangedListener == null) { + fProblemChangedListener= new IProblemChangedListener() { + public void problemsChanged(IResource[] changedResources, boolean isMarkerChange) { + fireProblemsChanged(changedResources, isMarkerChange); + } + }; + CUIPlugin.getDefault().getProblemMarkerManager().addListener(fProblemChangedListener); + } } /* (non-Javadoc) diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/StandardCElementLabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/StandardCElementLabelProvider.java similarity index 80% rename from core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/StandardCElementLabelProvider.java rename to core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/StandardCElementLabelProvider.java index fd384b3de13..2aff57a19da 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/StandardCElementLabelProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/viewsupport/StandardCElementLabelProvider.java @@ -8,7 +8,7 @@ * Contributors: * QNX Software Systems - Initial API and implementation *******************************************************************************/ -package org.eclipse.cdt.internal.ui; +package org.eclipse.cdt.internal.ui.viewsupport; import org.eclipse.cdt.ui.*; @@ -20,17 +20,14 @@ import org.eclipse.jface.util.PropertyChangeEvent; * CElementLabelProvider that respects settings from the Appearance preference page. * Triggers a viewer update when a preference changes. */ -public class StandardCElementLabelProvider extends CElementLabelProvider implements IPropertyChangeListener { +public class StandardCElementLabelProvider extends AppearanceAwareLabelProvider implements IPropertyChangeListener { - //public final static int DEFAULT_FLAGS = SHOW_OVERLAY_ICONS | SHOW_PARAMETERS; - public final static int DEFAULT_FLAGS = SHOW_OVERLAY_ICONS ; - /** * Constructor for StandardCElementLabelProvider. * @see CElementLabelProvider#CElementLabelProvider */ - public StandardCElementLabelProvider(int flags, IAdornmentProvider[] adormentProviders) { - super(flags, adormentProviders); + public StandardCElementLabelProvider(int textFlags, int imageFlags) { + super(textFlags, imageFlags); initMasks(); CUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this); } @@ -40,7 +37,7 @@ public class StandardCElementLabelProvider extends CElementLabelProvider impleme * and the ErrorTickAdornmentProvider. */ public StandardCElementLabelProvider() { - this(DEFAULT_FLAGS, new IAdornmentProvider[] { new ErrorTickAdornmentProvider() }); + super(); } private void initMasks() { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/MethodStubsLabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/MethodStubsLabelProvider.java index e5507806b61..8628fa88720 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/MethodStubsLabelProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/wizards/classwizard/MethodStubsLabelProvider.java @@ -10,8 +10,8 @@ *******************************************************************************/ package org.eclipse.cdt.internal.ui.wizards.classwizard; -import org.eclipse.cdt.internal.ui.CElementImageProvider; import org.eclipse.cdt.internal.ui.CPluginImages; +import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ILabelProviderListener; diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementLabelProvider.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementLabelProvider.java index ed5a9a907db..6116cd4c66d 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementLabelProvider.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/CElementLabelProvider.java @@ -13,10 +13,10 @@ import org.eclipse.cdt.core.model.INamespace; import org.eclipse.cdt.core.model.ITemplate; import org.eclipse.cdt.core.model.ITypeDef; import org.eclipse.cdt.core.model.IVariableDeclaration; -import org.eclipse.cdt.internal.ui.CElementImageProvider; -import org.eclipse.cdt.internal.ui.ErrorTickAdornmentProvider; -import org.eclipse.cdt.internal.ui.IAdornmentProvider; +import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider; import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels; +import org.eclipse.jface.viewers.IBaseLabelProvider; +import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.model.WorkbenchLabelProvider; @@ -83,7 +83,6 @@ public class CElementLabelProvider extends LabelProvider { private WorkbenchLabelProvider fWorkbenchLabelProvider; protected CElementImageProvider fImageLabelProvider; - private IAdornmentProvider[] fAdornmentProviders; private int fFlags; private int fImageFlags; @@ -94,18 +93,9 @@ public class CElementLabelProvider extends LabelProvider { } public CElementLabelProvider(int flags) { - this(flags, null); - } - - /** - * @param textFlags Flags defined in CElementLabels. - * @param imageFlags Flags defined in CElementImageProvider. - */ - public CElementLabelProvider(int flags, IAdornmentProvider[] adormentProviders) { fWorkbenchLabelProvider= new WorkbenchLabelProvider(); fImageLabelProvider= new CElementImageProvider(); - fAdornmentProviders= adormentProviders; fFlags = flags; } @@ -199,38 +189,13 @@ public class CElementLabelProvider extends LabelProvider { * @see ILabelProvider#getImage */ public Image getImage(Object element) { - return fImageLabelProvider.getImageLabel(element, evaluateImageFlags(element)); + return fImageLabelProvider.getImageLabel(element, getImageFlags()); } - protected int evaluateImageFlags(Object element) { - int imageFlags= getImageFlags(); - if (fAdornmentProviders != null) { - for (int i= 0; i < fAdornmentProviders.length; i++) { - imageFlags |= fAdornmentProviders[i].computeAdornmentFlags(element); - } - } - return imageFlags; - } - - 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; - } - /** * @see IBaseLabelProvider#dispose() */ public void dispose() { - if (fAdornmentProviders != null) { - for (int i= 0; i < fAdornmentProviders.length; i++) { - fAdornmentProviders[i].dispose(); - } - } if (fWorkbenchLabelProvider != null) { fWorkbenchLabelProvider.dispose(); fWorkbenchLabelProvider= null; @@ -244,24 +209,6 @@ public class CElementLabelProvider extends LabelProvider { return (fFlags & flag) != 0; } - /** - * Turns on the rendering options specified in the given flags. - * - * @param flags the options; a bitwise OR of SHOW_* constants - */ - public void turnOn(int flags) { - fFlags |= flags; - } - - /** - * Turns off the rendering options specified in the given flags. - * - * @param flags the initial options; a bitwise OR of SHOW_* constants - */ - public void turnOff(int flags) { - fFlags &= (~flags); - } - /** * Gets the image flags. * Can be overwriten by super classes. @@ -298,17 +245,4 @@ public class CElementLabelProvider extends LabelProvider { } return fTextFlags; } - - public static IAdornmentProvider[] getAdornmentProviders(boolean errortick, IAdornmentProvider extra) { - if (errortick) { - if (extra == null) { - return new IAdornmentProvider[] { new ErrorTickAdornmentProvider() }; - } - return new IAdornmentProvider[] { new ErrorTickAdornmentProvider(), extra }; - } - if (extra != null) { - return new IAdornmentProvider[] { extra }; - } - return null; - } }