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;
- }
}