1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-01 06:05:24 +02:00

- fixed 36837

- refactor label providers to viewsupport and removed old IAdormentProvider
This commit is contained in:
David Inglis 2004-09-10 01:19:40 +00:00
parent 440cb7be37
commit 01ffdd1a22
33 changed files with 254 additions and 530 deletions

View file

@ -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 2004-09-09 Bogdan Gheorghe
Fix for 73406 - Indexer: Double-Indexing on Specific Project Fix for 73406 - Indexer: Double-Indexing on Specific Project

View file

@ -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.editor.CEditor;
import org.eclipse.cdt.internal.ui.util.EditorUtility; import org.eclipse.cdt.internal.ui.util.EditorUtility;
import org.eclipse.cdt.internal.ui.util.ExceptionHandler; 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.CElementLabels;
import org.eclipse.cdt.internal.ui.viewsupport.IViewPartInputProvider; import org.eclipse.cdt.internal.ui.viewsupport.IViewPartInputProvider;
import org.eclipse.cdt.internal.ui.workingsets.WorkingSetFilterActionGroup; import org.eclipse.cdt.internal.ui.workingsets.WorkingSetFilterActionGroup;

View file

@ -19,6 +19,7 @@ import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.model.ISourceRoot; import org.eclipse.cdt.core.model.ISourceRoot;
import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.internal.ui.ICHelpContextIds; 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.internal.ui.viewsupport.CElementLabels;
import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.PreferenceConstants; import org.eclipse.cdt.ui.PreferenceConstants;

View file

@ -23,6 +23,7 @@ import org.eclipse.cdt.core.model.IStructure;
import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.model.ITypeDef; import org.eclipse.cdt.core.model.ITypeDef;
import org.eclipse.cdt.internal.ui.ICHelpContextIds; 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.CUIPlugin;
import org.eclipse.cdt.ui.PreferenceConstants; import org.eclipse.cdt.ui.PreferenceConstants;
import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.DoubleClickEvent;

View file

@ -17,9 +17,9 @@ import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.IMethod; import org.eclipse.cdt.core.model.IMethod;
import org.eclipse.cdt.core.model.IMethodDeclaration; import org.eclipse.cdt.core.model.IMethodDeclaration;
import org.eclipse.cdt.core.model.IStructure; 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.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.CElementImageDescriptor;
import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.jface.resource.CompositeImageDescriptor; import org.eclipse.jface.resource.CompositeImageDescriptor;
@ -118,21 +118,10 @@ public class HierarchyLabelProvider extends StandardCElementLabelProvider // App
return true; 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) /* (non-Javadoc)
* @see ILabelProvider#getImage * @see ILabelProvider#getImage
*/ */
public Image getImage(Object element) { public Image getImage(Object element) {
// return super.getImage(element);
Image result= null; Image result= null;
if (element instanceof ICElement) { if (element instanceof ICElement) {
ImageDescriptor desc= getTypeImageDescriptor((ICElement) element); ImageDescriptor desc= getTypeImageDescriptor((ICElement) element);
@ -143,9 +132,9 @@ public class HierarchyLabelProvider extends StandardCElementLabelProvider // App
result= CUIPlugin.getImageDescriptorRegistry().get(desc); result= CUIPlugin.getImageDescriptorRegistry().get(desc);
} }
} else { } else {
result= fImageLabelProvider.getImageLabel(element, evaluateImageFlags(element)); result= fImageLabelProvider.getImageLabel(element, getImageFlags());
} }
return decorateImage(result, element); return result;
} }
private ImageDescriptor getTypeImageDescriptor(ICElement type) { private ImageDescriptor getTypeImageDescriptor(ICElement type) {

View file

@ -11,8 +11,8 @@
package org.eclipse.cdt.internal.ui.browser.typehierarchy; package org.eclipse.cdt.internal.ui.browser.typehierarchy;
import org.eclipse.cdt.core.model.ICElement; 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.ICHelpContextIds;
import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels; import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels;
import org.eclipse.jface.action.Action; import org.eclipse.jface.action.Action;
import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor;

View file

@ -17,8 +17,8 @@ import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.IMethod; import org.eclipse.cdt.core.model.IMethod;
import org.eclipse.cdt.core.model.IMethodDeclaration; import org.eclipse.cdt.core.model.IMethodDeclaration;
import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; 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.CElementLabels;
import org.eclipse.cdt.internal.ui.viewsupport.StandardCElementLabelProvider;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Display;

View file

@ -18,7 +18,7 @@ import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.IMethodDeclaration; import org.eclipse.cdt.core.model.IMethodDeclaration;
import org.eclipse.cdt.internal.ui.util.ProblemTableViewer; import org.eclipse.cdt.internal.ui.util.ProblemTableViewer;
import org.eclipse.cdt.internal.ui.util.SelectionUtil; 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.CUIPlugin;
import org.eclipse.cdt.ui.actions.MemberFilterActionGroup; import org.eclipse.cdt.ui.actions.MemberFilterActionGroup;
import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuListener;
@ -92,9 +92,9 @@ public class MethodsViewer extends ProblemTableViewer {
cprovider.showInheritedMethods(on); cprovider.showInheritedMethods(on);
fShowInheritedMembersAction.setChecked(on); fShowInheritedMembersAction.setChecked(on);
if (on) { if (on) {
fLabelProvider.turnOn(CElementLabelProvider.SHOW_POST_QUALIFIED); fLabelProvider.setTextFlags(fLabelProvider.getTextFlags() | CElementLabels.T_POST_QUALIFIED);
} else { } else {
fLabelProvider.turnOff(CElementLabelProvider.SHOW_POST_QUALIFIED); fLabelProvider.setTextFlags(fLabelProvider.getTextFlags() & ~CElementLabels.T_POST_QUALIFIED);
} }
if (on) { if (on) {
sortByDefiningTypeNoRedraw(false); sortByDefiningTypeNoRedraw(false);

View file

@ -25,11 +25,11 @@ import org.eclipse.cdt.internal.ui.ICHelpContextIds;
import org.eclipse.cdt.internal.ui.IContextMenuConstants; import org.eclipse.cdt.internal.ui.IContextMenuConstants;
import org.eclipse.cdt.internal.ui.actions.CompositeActionGroup; import org.eclipse.cdt.internal.ui.actions.CompositeActionGroup;
import org.eclipse.cdt.internal.ui.actions.SelectAllAction; 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.browser.cbrowsing.StatusBarUpdater;
import org.eclipse.cdt.internal.ui.util.EditorUtility; import org.eclipse.cdt.internal.ui.util.EditorUtility;
import org.eclipse.cdt.internal.ui.util.ExceptionHandler; import org.eclipse.cdt.internal.ui.util.ExceptionHandler;
import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels; 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.viewsupport.IViewPartInputProvider;
import org.eclipse.cdt.internal.ui.workingsets.WorkingSetFilterActionGroup; import org.eclipse.cdt.internal.ui.workingsets.WorkingSetFilterActionGroup;
import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.CUIPlugin;

View file

@ -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.ICElement;
import org.eclipse.cdt.core.model.IMember; import org.eclipse.cdt.core.model.IMember;
import org.eclipse.cdt.internal.ui.util.ProblemTreeViewer; 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.IMenuListener;
import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.MenuManager;
@ -56,15 +56,10 @@ public abstract class TypeHierarchyViewer extends ProblemTreeViewer {
public void setQualifiedTypeName(boolean on) { public void setQualifiedTypeName(boolean on) {
if (on) { if (on) {
fLabelProvider.turnOn(CElementLabelProvider.SHOW_POST_QUALIFIED); fLabelProvider.setTextFlags(fLabelProvider.getTextFlags() | CElementLabels.T_POST_QUALIFIED);
} else { } 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(); refresh();
} }

View file

@ -11,6 +11,7 @@ import org.eclipse.ui.model.IWorkbenchAdapter;
import org.eclipse.cdt.core.model.CModelException; import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.IParent; 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.CElementLabelProvider;
import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.CUIPlugin;

View file

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

View file

@ -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 <code>JavaElementImageProvider</code>.
*/
int computeAdornmentFlags(Object element);
/**
* Called when the parent label provider is disposed
*/
void dispose();
}

View file

@ -5,7 +5,7 @@ package org.eclipse.cdt.internal.ui.compare;
* All Rights Reserved. * 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.cdt.ui.CUIPlugin;
import org.eclipse.compare.ITypedElement; import org.eclipse.compare.ITypedElement;
import org.eclipse.compare.structuremergeviewer.DocumentRangeNode; import org.eclipse.compare.structuremergeviewer.DocumentRangeNode;

View file

@ -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.preferences.CPluginPreferencePage;
import org.eclipse.cdt.internal.ui.util.EditorUtility; import org.eclipse.cdt.internal.ui.util.EditorUtility;
import org.eclipse.cdt.internal.ui.util.ProblemTreeViewer; 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.CElementContentProvider;
import org.eclipse.cdt.ui.CElementSorter; import org.eclipse.cdt.ui.CElementSorter;
import org.eclipse.cdt.ui.CLocalSelectionTransfer; 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.preference.IPreferenceStore;
import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.DecoratingLabelProvider;
import org.eclipse.jface.viewers.DoubleClickEvent; import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IContentProvider; import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ILabelDecorator;
import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.IOpenListener; import org.eclipse.jface.viewers.IOpenListener;
import org.eclipse.jface.viewers.ISelection; 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.ResourceTransfer;
import org.eclipse.ui.part.ShowInContext; import org.eclipse.ui.part.ShowInContext;
import org.eclipse.ui.part.ViewPart; 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.framelist.FrameList;
import org.eclipse.ui.views.navigator.LocalSelectionTransfer; 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. * Sets the label provider for the viewer.
*/ */
void initLabelProvider(TreeViewer viewer) { void initLabelProvider(TreeViewer viewer) {
ILabelProvider cProvider = createLabelProvider(); CUILabelProvider cProvider = createLabelProvider();
ILabelDecorator decorator = CUIPlugin.getDefault().getWorkbench().getDecoratorManager().getLabelDecorator(); viewer.setLabelProvider(new DecoratingCLabelProvider(cProvider, true));
viewer.setLabelProvider(new DecoratingLabelProvider(cProvider, decorator));
} }
/** /**
@ -509,7 +509,6 @@ public class CView extends ViewPart implements ISetSelectionTarget, IPropertyCha
viewer.setComparer(new CViewElementComparer()); viewer.setComparer(new CViewElementComparer());
initContentProvider(viewer); initContentProvider(viewer);
initLabelProvider(viewer); initLabelProvider(viewer);
CUIPlugin.getDefault().getProblemMarkerManager().addListener(viewer);
CUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this); CUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this);
initFilters(viewer); initFilters(viewer);
@ -565,7 +564,7 @@ public class CView extends ViewPart implements ISetSelectionTarget, IPropertyCha
return provider; return provider;
} }
protected ILabelProvider createLabelProvider() { protected CUILabelProvider createLabelProvider() {
return new CViewLabelProvider(); return new CViewLabelProvider();
} }
@ -577,7 +576,6 @@ public class CView extends ViewPart implements ISetSelectionTarget, IPropertyCha
CUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this); CUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this);
if (viewer != null) { if (viewer != null) {
viewer.removeTreeListener(expansionListener); viewer.removeTreeListener(expansionListener);
CUIPlugin.getDefault().getProblemMarkerManager().removeListener(viewer);
} }
if (getActionGroup() != null) { if (getActionGroup() != null) {
getActionGroup().dispose(); 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 <code>null</code> for no decorations.
*/
public void setLabelDecorator(ILabelDecorator decorator) {
ILabelProvider cProvider = createLabelProvider();
viewer.setLabelProvider(new DecoratingLabelProvider(cProvider, decorator));
}
public void propertyChange(PropertyChangeEvent event) { public void propertyChange(PropertyChangeEvent event) {
if (viewer == null) return; if (viewer == null) return;

View file

@ -13,9 +13,8 @@ package org.eclipse.cdt.internal.ui.cview;
import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.IIncludeReference; import org.eclipse.cdt.core.model.IIncludeReference;
import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.internal.ui.CElementImageProvider; import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
import org.eclipse.cdt.internal.ui.IAdornmentProvider; import org.eclipse.cdt.internal.ui.viewsupport.StandardCElementLabelProvider;
import org.eclipse.cdt.internal.ui.StandardCElementLabelProvider;
import org.eclipse.cdt.ui.CElementImageDescriptor; import org.eclipse.cdt.ui.CElementImageDescriptor;
import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IContainer;
@ -39,8 +38,8 @@ public class CViewLabelProvider extends StandardCElementLabelProvider {
* @param flags * @param flags
* @param adormentProviders * @param adormentProviders
*/ */
public CViewLabelProvider(int flags, IAdornmentProvider[] adormentProviders) { public CViewLabelProvider(int textFlags, int imageFlags) {
super(flags, adormentProviders); super(textFlags, imageFlags);
} }
/* (non-Javadoc) /* (non-Javadoc)

View file

@ -12,9 +12,9 @@ import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.CoreModel; import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.IPathEntry; import org.eclipse.cdt.core.model.IPathEntry;
import org.eclipse.cdt.core.model.IPathEntryContainer; 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.CPluginImages;
import org.eclipse.cdt.internal.ui.util.ImageDescriptorRegistry; 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.CUIPlugin;
import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IPath;

View file

@ -12,11 +12,11 @@ import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.internal.ui.CPluginImages; import org.eclipse.cdt.internal.ui.CPluginImages;
import org.eclipse.cdt.internal.ui.ICHelpContextIds; 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.AbstractToggleLinkingAction;
import org.eclipse.cdt.internal.ui.actions.ActionMessages; import org.eclipse.cdt.internal.ui.actions.ActionMessages;
import org.eclipse.cdt.internal.ui.search.actions.SelectionSearchGroup; import org.eclipse.cdt.internal.ui.search.actions.SelectionSearchGroup;
import org.eclipse.cdt.internal.ui.util.ProblemTreeViewer; 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.CUIPlugin;
import org.eclipse.cdt.ui.PreferenceConstants; import org.eclipse.cdt.ui.PreferenceConstants;
import org.eclipse.cdt.ui.actions.CustomFiltersActionGroup; 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.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
treeViewer.addSelectionChangedListener(this); treeViewer.addSelectionChangedListener(this);
CUIPlugin.getDefault().getProblemMarkerManager().addListener(treeViewer);
MenuManager manager= new MenuManager(fContextMenuId); MenuManager manager= new MenuManager(fContextMenuId);
manager.setRemoveAllWhenShown(true); manager.setRemoveAllWhenShown(true);
manager.addMenuListener(new IMenuListener() { manager.addMenuListener(new IMenuListener() {
@ -277,8 +275,6 @@ public class CContentOutlinePage extends Page implements IContentOutlinePage, IS
} }
public void dispose() { public void dispose() {
CUIPlugin.getDefault().getProblemMarkerManager().removeListener(treeViewer);
if (treeViewer != null) { if (treeViewer != null) {
treeViewer.removeSelectionChangedListener(this); treeViewer.removeSelectionChangedListener(this);
} }

View file

@ -214,9 +214,6 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IS
*/ */
protected void doSetInput(IEditorInput input) throws CoreException { protected void doSetInput(IEditorInput input) throws CoreException {
super.doSetInput(input); super.doSetInput(input);
if (fCEditorErrorTickUpdater != null) {
fCEditorErrorTickUpdater.setAnnotationModel(getDocumentProvider().getAnnotationModel(input));
}
setOutlinePageInput(fOutlinePage, input); setOutlinePageInput(fOutlinePage, input);
if (fProjectionModelUpdater != null) { if (fProjectionModelUpdater != null) {
@ -506,7 +503,6 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IS
} }
if (fCEditorErrorTickUpdater != null) { if (fCEditorErrorTickUpdater != null) {
fCEditorErrorTickUpdater.setAnnotationModel(null);
fCEditorErrorTickUpdater.dispose(); fCEditorErrorTickUpdater.dispose();
fCEditorErrorTickUpdater = null; fCEditorErrorTickUpdater = null;
} }

View file

@ -12,9 +12,12 @@ package org.eclipse.cdt.internal.ui.editor;
import org.eclipse.cdt.core.model.ICElement; import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.ui.CElementLabelProvider; import org.eclipse.cdt.internal.ui.util.IProblemChangedListener;
import org.eclipse.jface.text.source.IAnnotationModel; import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
import org.eclipse.jface.text.source.IAnnotationModelListener; 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.jface.util.Assert;
import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Shell; 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 * on the annotation model of a Java Editor and update the title images when the annotation
* model changed. * model changed.
*/ */
public class CEditorErrorTickUpdater implements IAnnotationModelListener { public class CEditorErrorTickUpdater implements IProblemChangedListener {
protected CEditor fCEditor; protected CEditor fCEditor;
private IAnnotationModel fAnnotationModel; private CUILabelProvider fLabelProvider;
private CElementLabelProvider fLabelProvider;
public CEditorErrorTickUpdater(CEditor editor) { public CEditorErrorTickUpdater(CEditor editor) {
fCEditor= editor;
Assert.isNotNull(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 <code>null</code>
* to uninstall.
*/
public void setAnnotationModel(IAnnotationModel model) {
if (fAnnotationModel != null) {
fAnnotationModel.removeAnnotationModelListener(this);
}
if (model != null) { /* (non-Javadoc)
if (fLabelProvider == null) { * @see IProblemChangedListener#problemsChanged(IResource[], boolean)
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) { public void problemsChanged(IResource[] resourcesChanged, boolean isMarkerChange) {
Image titleImage= fCEditor.getTitleImage(); if (isMarkerChange) {
if (titleImage == null) {
return; return;
} }
IEditorInput input= fCEditor.getEditorInput(); IEditorInput input= fCEditor.getEditorInput();
if (input != null) { // might run async, tests needed if (input != null) { // might run async, tests needed
ICElement celement= (ICElement) input.getAdapter(ICElement.class); ICElement celement= (ICElement) input.getAdapter(ICElement.class);
if (fLabelProvider != null && celement != null) { if (celement != null) {
Image newImage= fLabelProvider.getImage(celement); IResource resource= celement.getResource();
if (titleImage != newImage) { if (resource == null) {
updatedTitleImage(newImage); return;
}
for (int i = 0; i < resourcesChanged.length; i++){
if (resource.equals(resourcesChanged[i])) {
updateEditorImage(celement);
return;
}
} }
} }
} }
} }
private void updatedTitleImage(final Image newImage) { 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 postImageChange(final Image newImage) {
Shell shell= fCEditor.getEditorSite().getShell(); Shell shell= fCEditor.getEditorSite().getShell();
if (shell != null && !shell.isDisposed()) { if (shell != null && !shell.isDisposed()) {
shell.getDisplay().syncExec(new Runnable() { shell.getDisplay().syncExec(new Runnable() {
@ -95,14 +90,7 @@ public class CEditorErrorTickUpdater implements IAnnotationModelListener {
} }
public void dispose() { public void dispose() {
if (fLabelProvider != null) { fLabelProvider.dispose();
fLabelProvider.dispose(); CUIPlugin.getDefault().getProblemMarkerManager().removeListener(this);
fLabelProvider= null;
}
fAnnotationModel= null;
} }
} }

View file

@ -14,8 +14,8 @@ import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; 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.util.ImageDescriptorRegistry;
import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.FunctionPrototypeSummary; import org.eclipse.cdt.ui.FunctionPrototypeSummary;
import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor;

View file

@ -5,7 +5,7 @@ package org.eclipse.cdt.internal.ui.util;
* All Rights Reserved. * All Rights Reserved.
*/ */
import java.util.Set; import org.eclipse.core.resources.IResource;
/** /**
* Can be added to a ProblemMarkerManager to get notified about error * Can be added to a ProblemMarkerManager to get notified about error
@ -17,6 +17,6 @@ public interface IProblemChangedListener {
* @param changedElements A set of type <code>IPath</code> that * @param changedElements A set of type <code>IPath</code> that
* describe the resources that had an error marker change. * describe the resources that had an error marker change.
*/ */
void problemsChanged(Set changedElements); void problemsChanged(IResource[] changedResources, boolean markerChanged);
} }

View file

@ -5,15 +5,10 @@ package org.eclipse.cdt.internal.ui.util;
* All Rights Reserved. * All Rights Reserved.
*/ */
import org.eclipse.cdt.core.model.ICModelMarker; import java.util.HashSet;
import org.eclipse.cdt.core.CProjectNature;
import org.eclipse.cdt.internal.ui.editor.TranslationUnitAnnotationModelEvent; import org.eclipse.cdt.internal.ui.editor.TranslationUnitAnnotationModelEvent;
import org.eclipse.cdt.ui.CUIPlugin; 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.IMarker;
import org.eclipse.core.resources.IMarkerDelta; import org.eclipse.core.resources.IMarkerDelta;
import org.eclipse.core.resources.IProject; 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.IResourceDelta;
import org.eclipse.core.resources.IResourceDeltaVisitor; import org.eclipse.core.resources.IResourceDeltaVisitor;
import org.eclipse.core.runtime.CoreException; 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.AnnotationModelEvent;
import org.eclipse.jface.text.source.IAnnotationModel; import org.eclipse.jface.text.source.IAnnotationModel;
import org.eclipse.jface.text.source.IAnnotationModelListener; 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.jface.util.ListenerList;
import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Display;
/** /**
* Listens to resource deltas and filters for marker changes of type IMarker.PROBLEM * Listens to resource deltas and filters for marker changes of type
* Viewers showing error ticks should register as listener to * IMarker.PROBLEM Viewers showing error ticks should register as listener to
* this type. * this type.
*/ */
public class ProblemMarkerManager implements IResourceChangeListener, IAnnotationModelListener, IAnnotationModelListenerExtension { public class ProblemMarkerManager implements IResourceChangeListener, IAnnotationModelListener, IAnnotationModelListenerExtension {
@ -48,48 +40,43 @@ public class ProblemMarkerManager implements IResourceChangeListener, IAnnotatio
private HashSet fChangedElements; private HashSet fChangedElements;
public ProjectErrorVisitor(HashSet changedElements) { public ProjectErrorVisitor(HashSet changedElements) {
fChangedElements= changedElements; fChangedElements = changedElements;
} }
public boolean visit(IResourceDelta delta) throws CoreException { public boolean visit(IResourceDelta delta) throws CoreException {
IResource res= delta.getResource(); IResource res = delta.getResource();
if (res instanceof IProject && delta.getKind() == IResourceDelta.CHANGED) { if (res instanceof IProject && delta.getKind() == IResourceDelta.CHANGED) {
try { IProject project = (IProject)res;
IProject project= (IProject) res; if (!project.isAccessible()) {
if (!project.isAccessible() || !project.hasNature(CProjectNature.C_NATURE_ID)) { // only track open C projects
// only track open C projects
return false;
}
} catch (CoreException e) {
CUIPlugin.getDefault().log(e.getStatus());
return false; return false;
} }
} }
checkInvalidate(delta, res.getFullPath()); checkInvalidate(delta, res);
return true; return true;
} }
private void checkInvalidate(IResourceDelta delta, IPath path) { private void checkInvalidate(IResourceDelta delta, IResource resource) {
int kind= delta.getKind(); int kind = delta.getKind();
if (kind == IResourceDelta.REMOVED || kind == IResourceDelta.ADDED || (kind == IResourceDelta.CHANGED && isErrorDelta(delta))) { if (kind == IResourceDelta.REMOVED || kind == IResourceDelta.ADDED
|| (kind == IResourceDelta.CHANGED && isErrorDelta(delta))) {
// invalidate the path and all parent paths // invalidate the path and all parent paths
while (!path.isEmpty() && !path.isRoot() && !fChangedElements.contains(path)) { while (resource.getType() != IResource.ROOT && fChangedElements.add(resource)) {
fChangedElements.add(path); resource = resource.getParent();
path= path.removeLastSegments(1);
} }
} }
} }
private boolean isErrorDelta(IResourceDelta delta) { private boolean isErrorDelta(IResourceDelta delta) {
if ((delta.getFlags() & IResourceDelta.MARKERS) != 0) { if ( (delta.getFlags() & IResourceDelta.MARKERS) != 0) {
IMarkerDelta[] markerDeltas= delta.getMarkerDeltas(); IMarkerDelta[] markerDeltas = delta.getMarkerDeltas();
for (int i= 0; i < markerDeltas.length; i++) { for (int i = 0; i < markerDeltas.length; i++) {
if (markerDeltas[i].isSubtypeOf(ICModelMarker.C_MODEL_PROBLEM_MARKER)) { if (markerDeltas[i].isSubtypeOf(IMarker.PROBLEM)) {
int kind= markerDeltas[i].getKind(); int kind = markerDeltas[i].getKind();
if (kind == IResourceDelta.ADDED || kind == IResourceDelta.REMOVED) if (kind == IResourceDelta.ADDED || kind == IResourceDelta.REMOVED)
return true; return true;
int severity= markerDeltas[i].getAttribute(IMarker.SEVERITY, -1); int severity = markerDeltas[i].getAttribute(IMarker.SEVERITY, -1);
int newSeverity= markerDeltas[i].getMarker().getAttribute(IMarker.SEVERITY, -1); int newSeverity = markerDeltas[i].getMarker().getAttribute(IMarker.SEVERITY, -1);
if (newSeverity != severity) if (newSeverity != severity)
return true; return true;
} }
@ -101,19 +88,18 @@ public class ProblemMarkerManager implements IResourceChangeListener, IAnnotatio
private ListenerList fListeners; private ListenerList fListeners;
public ProblemMarkerManager() { public ProblemMarkerManager() {
fListeners= new ListenerList(5); fListeners = new ListenerList(5);
} }
/* /*
* @see IResourceChangeListener#resourceChanged * @see IResourceChangeListener#resourceChanged
*/ */
public void resourceChanged(IResourceChangeEvent event) { public void resourceChanged(IResourceChangeEvent event) {
HashSet changedElements= new HashSet(); HashSet changedElements = new HashSet();
try { try {
IResourceDelta delta= event.getDelta(); IResourceDelta delta = event.getDelta();
if (delta != null) if (delta != null)
delta.accept(new ProjectErrorVisitor(changedElements)); delta.accept(new ProjectErrorVisitor(changedElements));
} catch (CoreException e) { } catch (CoreException e) {
@ -121,29 +107,35 @@ public class ProblemMarkerManager implements IResourceChangeListener, IAnnotatio
} }
if (!changedElements.isEmpty()) { 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) * @see IAnnotationModelListener#modelChanged(IAnnotationModel)
*/ */
public void modelChanged(IAnnotationModel model) { public void modelChanged(IAnnotationModel model) {
// no action // no action
} }
/* (non-Javadoc) /*
* (non-Javadoc)
*
* @see IAnnotationModelListenerExtension#modelChanged(AnnotationModelEvent) * @see IAnnotationModelListenerExtension#modelChanged(AnnotationModelEvent)
*/ */
public void modelChanged(AnnotationModelEvent event) { public void modelChanged(AnnotationModelEvent event) {
if (event instanceof TranslationUnitAnnotationModelEvent) { if (event instanceof TranslationUnitAnnotationModelEvent) {
TranslationUnitAnnotationModelEvent cuEvent= (TranslationUnitAnnotationModelEvent) event; TranslationUnitAnnotationModelEvent cuEvent = (TranslationUnitAnnotationModelEvent)event;
if (cuEvent.includesProblemMarkerAnnotationChanges()) { if (cuEvent.includesProblemMarkerAnnotationChanges()) {
//IResource[] changes= new IResource[] {cuEvent.getUnderlyingResource()}; //IResource[] changes= new IResource[]
// {cuEvent.getUnderlyingResource()};
IResource res = cuEvent.getUnderlyingResource(); IResource res = cuEvent.getUnderlyingResource();
if (res != null) { if (res != null) {
fireChanges(Collections.singleton(res.getFullPath())); fireChanges(new IResource[]{res}, false);
} }
} }
} }
@ -171,19 +163,20 @@ public class ProblemMarkerManager implements IResourceChangeListener, IAnnotatio
} }
} }
private void fireChanges(final Set changes) { private void fireChanges(final IResource[] changes, final boolean markerChanged) {
Display display= SWTUtil.getStandardDisplay(); Display display = SWTUtil.getStandardDisplay();
if (display != null && !display.isDisposed()) { if (display != null && !display.isDisposed()) {
display.asyncExec(new Runnable() { display.asyncExec(new Runnable() {
public void run() { public void run() {
Object[] listeners= fListeners.getListeners(); Object[] listeners = fListeners.getListeners();
for (int i= 0; i < listeners.length; i++) { for (int i = 0; i < listeners.length; i++) {
IProblemChangedListener curr= (IProblemChangedListener) listeners[i]; IProblemChangedListener curr = (IProblemChangedListener)listeners[i];
curr.problemsChanged(changes); curr.problemsChanged(changes, markerChanged);
} }
} }
}); });
} }
} }
} }

View file

@ -13,7 +13,7 @@ package org.eclipse.cdt.internal.ui.util;
import java.util.ArrayList; 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.core.resources.IResource;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;

View file

@ -5,15 +5,14 @@ package org.eclipse.cdt.internal.ui.util;
* All Rights Reserved. * All Rights Reserved.
*/ */
import java.util.Set; import java.util.ArrayList;
import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.core.resources.IResource;
import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.LabelProviderChangedEvent; import org.eclipse.jface.viewers.LabelProviderChangedEvent;
import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Item; import org.eclipse.swt.widgets.Item;
import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.Widget; import org.eclipse.swt.widgets.Widget;
@ -24,9 +23,9 @@ import org.eclipse.swt.widgets.Widget;
* A <code>ProblemItemMapper</code> is contained that maps all items in * A <code>ProblemItemMapper</code> is contained that maps all items in
* the tree to underlying resource * 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) * @see TreeViewer#TreeViewer(Composite)
@ -53,23 +52,10 @@ public class ProblemTreeViewer extends TreeViewer implements IProblemChangedList
} }
private void initMapper() { 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) * @see StructuredViewer#mapElement(Object, Widget)
@ -77,7 +63,7 @@ public class ProblemTreeViewer extends TreeViewer implements IProblemChangedList
protected void mapElement(Object element, Widget item) { protected void mapElement(Object element, Widget item) {
super.mapElement(element, item); super.mapElement(element, item);
if (item instanceof Item) { if (item instanceof Item) {
fProblemItemMapper.addToMap(element, (Item) item); fResourceToItemsMapper.addToMap(element, (Item) item);
} }
} }
@ -86,11 +72,19 @@ public class ProblemTreeViewer extends TreeViewer implements IProblemChangedList
*/ */
protected void unmapElement(Object element, Widget item) { protected void unmapElement(Object element, Widget item) {
if (item instanceof Item) { if (item instanceof Item) {
fProblemItemMapper.removeFromMap(element, (Item) item); fResourceToItemsMapper.removeFromMap(element, (Item) item);
} }
super.unmapElement(element); super.unmapElement(element);
} }
/*
* @see StructuredViewer#unmapAllElements()
*/
protected void unmapAllElements() {
fResourceToItemsMapper.clearMap();
super.unmapAllElements();
}
/* /*
* @see ContentViewer#handleLabelProviderChanged(LabelProviderChangedEvent) * @see ContentViewer#handleLabelProviderChanged(LabelProviderChangedEvent)
*/ */
@ -100,39 +94,26 @@ public class ProblemTreeViewer extends TreeViewer implements IProblemChangedList
super.handleLabelProviderChanged(event); super.handleLabelProviderChanged(event);
return; return;
} }
Object[] changed= event.getElements();
/* if (changed != null && !fResourceToItemsMapper.isEmpty()) {
// map the event to the Java elements if possible ArrayList others= new ArrayList(changed.length);
// this does not handle the ambiguity of default packages for (int i= 0; i < changed.length; i++) {
Object[] mapped= new Object[source.length]; Object curr= changed[i];
for (int i= 0; i < source.length; i++) { if (curr instanceof IResource) {
Object o= source[i]; fResourceToItemsMapper.resourceChanged((IResource) curr);
// needs to handle the case of: } else {
// default package others.add(curr);
// 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;
} }
if (others.isEmpty()) {
return;
}
event= new LabelProviderChangedEvent((IBaseLabelProvider) event.getSource(), others.toArray());
} }
super.handleLabelProviderChanged(new LabelProviderChangedEvent((IBaseLabelProvider)event.getSource(), mapped)); */
super.handleLabelProviderChanged(event); super.handleLabelProviderChanged(event);
return; 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) /* (non-Javadoc)
* @see org.eclipse.jface.viewers.AbstractTreeViewer#isExpandable(java.lang.Object) * @see org.eclipse.jface.viewers.AbstractTreeViewer#isExpandable(java.lang.Object)

View file

@ -8,10 +8,8 @@
* Contributors: * Contributors:
* IBM Corporation - initial API and implementation * 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.cdt.ui.PreferenceConstants;
import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.IPropertyChangeListener;

View file

@ -1,4 +1,4 @@
package org.eclipse.cdt.internal.ui; package org.eclipse.cdt.internal.ui.viewsupport;
/* /*
* (c) Copyright IBM Corp. 2000, 2001. * (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.ITemplate;
import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.parser.ast.ASTAccessVisibility; 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.CElementImageDescriptor;
import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFile;

View file

@ -8,13 +8,12 @@
* Contributors: * Contributors:
* IBM Corporation - initial API and implementation * 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 java.util.ArrayList;
import org.eclipse.cdt.core.browser.ITypeInfo; import org.eclipse.cdt.core.browser.ITypeInfo;
import org.eclipse.cdt.internal.ui.CElementImageProvider; import org.eclipse.cdt.internal.ui.browser.cbrowsing.StorageLabelProvider;
import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels;
import org.eclipse.cdt.ui.browser.typeinfo.TypeInfoLabelProvider; import org.eclipse.cdt.ui.browser.typeinfo.TypeInfoLabelProvider;
import org.eclipse.core.resources.IStorage; import org.eclipse.core.resources.IStorage;

View file

@ -8,7 +8,7 @@
* Contributors: * Contributors:
* IBM Corporation - initial API and implementation * 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; import org.eclipse.swt.graphics.Color;

View file

@ -8,7 +8,7 @@
* Contributors: * Contributors:
* IBM Corporation - initial API and implementation * 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.CModelException;
import org.eclipse.cdt.core.model.ICElement; 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.CPluginImages;
import org.eclipse.cdt.internal.ui.util.IProblemChangedListener; import org.eclipse.cdt.internal.ui.util.IProblemChangedListener;
import org.eclipse.cdt.internal.ui.util.ImageDescriptorRegistry; 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.CElementImageDescriptor;
import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFile;
@ -159,29 +158,18 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
case ICElement.C_PROJECT: case ICElement.C_PROJECT:
case ICElement.C_CCONTAINER: case ICElement.C_CCONTAINER:
return getErrorTicksFromMarkers(element.getResource(), IResource.DEPTH_INFINITE, null); return getErrorTicksFromMarkers(element.getResource(), IResource.DEPTH_INFINITE, null);
// case ICElement.PACKAGE_FRAGMENT: case ICElement.C_UNIT:
// case ICElement.CLASS_FILE: return getErrorTicksFromMarkers(element.getResource(), IResource.DEPTH_ONE, null);
// return getErrorTicksFromMarkers(element.getResource(), IResource.DEPTH_ONE, null); case ICElement.C_FUNCTION:
// case ICElement.COMPILATION_UNIT: case ICElement.C_CLASS:
// case ICElement.PACKAGE_DECLARATION: case ICElement.C_UNION:
// case ICElement.IMPORT_DECLARATION: case ICElement.C_STRUCT:
// case ICElement.IMPORT_CONTAINER: case ICElement.C_VARIABLE:
// case ICElement.TYPE: case ICElement.C_METHOD:
// case ICElement.INITIALIZER: ITranslationUnit tu= ((ISourceReference)element).getTranslationUnit();
// case ICElement.METHOD: if (tu != null && tu.exists()) {
// case ICElement.FIELD: return getErrorTicksFromMarkers(tu.getResource(), IResource.DEPTH_ONE, tu);
// 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;
default: default:
} }
} else if (obj instanceof IResource) { } else if (obj instanceof IResource) {
@ -315,14 +303,14 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
fListeners= new ListenerList(); fListeners= new ListenerList();
} }
fListeners.add(listener); fListeners.add(listener);
// if (fProblemChangedListener == null) { if (fProblemChangedListener == null) {
// fProblemChangedListener= new IProblemChangedListener() { fProblemChangedListener= new IProblemChangedListener() {
// public void problemsChanged(IResource[] changedResources, boolean isMarkerChange) { public void problemsChanged(IResource[] changedResources, boolean isMarkerChange) {
// fireProblemsChanged(changedResources, isMarkerChange); fireProblemsChanged(changedResources, isMarkerChange);
// } }
// }; };
// CUIPlugin.getDefault().getProblemMarkerManager().addListener(fProblemChangedListener); CUIPlugin.getDefault().getProblemMarkerManager().addListener(fProblemChangedListener);
// } }
} }
/* (non-Javadoc) /* (non-Javadoc)

View file

@ -8,7 +8,7 @@
* Contributors: * Contributors:
* QNX Software Systems - Initial API and implementation * 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.*; import org.eclipse.cdt.ui.*;
@ -20,17 +20,14 @@ import org.eclipse.jface.util.PropertyChangeEvent;
* CElementLabelProvider that respects settings from the Appearance preference page. * CElementLabelProvider that respects settings from the Appearance preference page.
* Triggers a viewer update when a preference changes. * 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. * Constructor for StandardCElementLabelProvider.
* @see CElementLabelProvider#CElementLabelProvider * @see CElementLabelProvider#CElementLabelProvider
*/ */
public StandardCElementLabelProvider(int flags, IAdornmentProvider[] adormentProviders) { public StandardCElementLabelProvider(int textFlags, int imageFlags) {
super(flags, adormentProviders); super(textFlags, imageFlags);
initMasks(); initMasks();
CUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this); CUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this);
} }
@ -40,7 +37,7 @@ public class StandardCElementLabelProvider extends CElementLabelProvider impleme
* and the ErrorTickAdornmentProvider. * and the ErrorTickAdornmentProvider.
*/ */
public StandardCElementLabelProvider() { public StandardCElementLabelProvider() {
this(DEFAULT_FLAGS, new IAdornmentProvider[] { new ErrorTickAdornmentProvider() }); super();
} }
private void initMasks() { private void initMasks() {

View file

@ -10,8 +10,8 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.ui.wizards.classwizard; 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.CPluginImages;
import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ILabelProviderListener;

View file

@ -13,10 +13,10 @@ import org.eclipse.cdt.core.model.INamespace;
import org.eclipse.cdt.core.model.ITemplate; import org.eclipse.cdt.core.model.ITemplate;
import org.eclipse.cdt.core.model.ITypeDef; import org.eclipse.cdt.core.model.ITypeDef;
import org.eclipse.cdt.core.model.IVariableDeclaration; import org.eclipse.cdt.core.model.IVariableDeclaration;
import org.eclipse.cdt.internal.ui.CElementImageProvider; import org.eclipse.cdt.internal.ui.viewsupport.CElementImageProvider;
import org.eclipse.cdt.internal.ui.ErrorTickAdornmentProvider;
import org.eclipse.cdt.internal.ui.IAdornmentProvider;
import org.eclipse.cdt.internal.ui.viewsupport.CElementLabels; 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.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.model.WorkbenchLabelProvider; import org.eclipse.ui.model.WorkbenchLabelProvider;
@ -83,7 +83,6 @@ public class CElementLabelProvider extends LabelProvider {
private WorkbenchLabelProvider fWorkbenchLabelProvider; private WorkbenchLabelProvider fWorkbenchLabelProvider;
protected CElementImageProvider fImageLabelProvider; protected CElementImageProvider fImageLabelProvider;
private IAdornmentProvider[] fAdornmentProviders;
private int fFlags; private int fFlags;
private int fImageFlags; private int fImageFlags;
@ -94,18 +93,9 @@ public class CElementLabelProvider extends LabelProvider {
} }
public CElementLabelProvider(int flags) { public CElementLabelProvider(int flags) {
this(flags, null);
}
/**
* @param textFlags Flags defined in <code>CElementLabels</code>.
* @param imageFlags Flags defined in <code>CElementImageProvider</code>.
*/
public CElementLabelProvider(int flags, IAdornmentProvider[] adormentProviders) {
fWorkbenchLabelProvider= new WorkbenchLabelProvider(); fWorkbenchLabelProvider= new WorkbenchLabelProvider();
fImageLabelProvider= new CElementImageProvider(); fImageLabelProvider= new CElementImageProvider();
fAdornmentProviders= adormentProviders;
fFlags = flags; fFlags = flags;
} }
@ -199,38 +189,13 @@ public class CElementLabelProvider extends LabelProvider {
* @see ILabelProvider#getImage * @see ILabelProvider#getImage
*/ */
public Image getImage(Object element) { 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() * @see IBaseLabelProvider#dispose()
*/ */
public void dispose() { public void dispose() {
if (fAdornmentProviders != null) {
for (int i= 0; i < fAdornmentProviders.length; i++) {
fAdornmentProviders[i].dispose();
}
}
if (fWorkbenchLabelProvider != null) { if (fWorkbenchLabelProvider != null) {
fWorkbenchLabelProvider.dispose(); fWorkbenchLabelProvider.dispose();
fWorkbenchLabelProvider= null; fWorkbenchLabelProvider= null;
@ -244,24 +209,6 @@ public class CElementLabelProvider extends LabelProvider {
return (fFlags & flag) != 0; return (fFlags & flag) != 0;
} }
/**
* Turns on the rendering options specified in the given flags.
*
* @param flags the options; a bitwise OR of <code>SHOW_* </code> 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 <code>SHOW_* </code> constants
*/
public void turnOff(int flags) {
fFlags &= (~flags);
}
/** /**
* Gets the image flags. * Gets the image flags.
* Can be overwriten by super classes. * Can be overwriten by super classes.
@ -298,17 +245,4 @@ public class CElementLabelProvider extends LabelProvider {
} }
return fTextFlags; 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;
}
} }