mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-30 21:55:31 +02:00
- fixed 36837
- refactor label providers to viewsupport and removed old IAdormentProvider
This commit is contained in:
parent
440cb7be37
commit
01ffdd1a22
33 changed files with 254 additions and 530 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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();
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -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;
|
||||
|
|
|
@ -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 <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) {
|
||||
if (viewer == null) return;
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 <code>null</code>
|
||||
* 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 <code>IPath</code> that
|
||||
* describe the resources that had an error marker change.
|
||||
*/
|
||||
void problemsChanged(Set changedElements);
|
||||
void problemsChanged(IResource[] changedResources, boolean markerChanged);
|
||||
}
|
||||
|
||||
|
|
|
@ -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 <code>IProblemChangedListener</code>.
|
||||
*/
|
||||
*/
|
||||
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);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 <code>ProblemItemMapper</code> 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)
|
||||
|
|
|
@ -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;
|
|
@ -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;
|
|
@ -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++) {
|
|
@ -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;
|
||||
|
|
@ -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)
|
|
@ -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() {
|
|
@ -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;
|
||||
|
|
|
@ -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 <code>CElementLabels</code>.
|
||||
* @param imageFlags Flags defined in <code>CElementImageProvider</code>.
|
||||
*/
|
||||
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 <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.
|
||||
* 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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue