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:
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
|
2004-09-09 Bogdan Gheorghe
|
||||||
Fix for 73406 - Indexer: Double-Indexing on Specific Project
|
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.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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
@ -116,23 +116,12 @@ public class HierarchyLabelProvider extends StandardCElementLabelProvider // App
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
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) {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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.
|
* 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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
/* (non-Javadoc)
|
||||||
* annotation model changes.
|
* @see IProblemChangedListener#problemsChanged(IResource[], boolean)
|
||||||
* @param model The new annotation model or <code>null</code>
|
|
||||||
* to uninstall.
|
|
||||||
*/
|
*/
|
||||||
public void setAnnotationModel(IAnnotationModel model) {
|
public void problemsChanged(IResource[] resourcesChanged, boolean isMarkerChange) {
|
||||||
if (fAnnotationModel != null) {
|
if (isMarkerChange) {
|
||||||
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) {
|
|
||||||
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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();
|
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() {
|
||||||
|
@ -93,16 +88,9 @@ 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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
@ -45,53 +37,48 @@ public class ProblemMarkerManager implements IResourceChangeListener, IAnnotatio
|
||||||
*/
|
*/
|
||||||
private static class ProjectErrorVisitor implements IResourceDeltaVisitor {
|
private static class ProjectErrorVisitor implements IResourceDeltaVisitor {
|
||||||
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -100,20 +87,19 @@ 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,39 +107,45 @@ 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a listener for problem marker changes.
|
* Adds a listener for problem marker changes.
|
||||||
*/
|
*/
|
||||||
public void addListener(IProblemChangedListener listener) {
|
public void addListener(IProblemChangedListener listener) {
|
||||||
if (fListeners.isEmpty()) {
|
if (fListeners.isEmpty()) {
|
||||||
CUIPlugin.getWorkspace().addResourceChangeListener(this);
|
CUIPlugin.getWorkspace().addResourceChangeListener(this);
|
||||||
CUIPlugin.getDefault().getDocumentProvider().addGlobalAnnotationModelListener(this);
|
CUIPlugin.getDefault().getDocumentProvider().addGlobalAnnotationModelListener(this);
|
||||||
}
|
}
|
||||||
|
@ -162,7 +154,7 @@ public class ProblemMarkerManager implements IResourceChangeListener, IAnnotatio
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes a <code>IProblemChangedListener</code>.
|
* Removes a <code>IProblemChangedListener</code>.
|
||||||
*/
|
*/
|
||||||
public void removeListener(IProblemChangedListener listener) {
|
public void removeListener(IProblemChangedListener listener) {
|
||||||
fListeners.remove(listener);
|
fListeners.remove(listener);
|
||||||
if (fListeners.isEmpty()) {
|
if (fListeners.isEmpty()) {
|
||||||
|
@ -170,20 +162,21 @@ public class ProblemMarkerManager implements IResourceChangeListener, IAnnotatio
|
||||||
CUIPlugin.getDefault().getDocumentProvider().removeGlobalAnnotationModelListener(this);
|
CUIPlugin.getDefault().getDocumentProvider().removeGlobalAnnotationModelListener(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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() {
|
|
||||||
Object[] listeners= fListeners.getListeners();
|
public void run() {
|
||||||
for (int i= 0; i < listeners.length; i++) {
|
Object[] listeners = fListeners.getListeners();
|
||||||
IProblemChangedListener curr= (IProblemChangedListener) listeners[i];
|
for (int i = 0; i < listeners.length; i++) {
|
||||||
curr.problemsChanged(changes);
|
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 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;
|
||||||
|
|
|
@ -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,44 +52,39 @@ 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)
|
||||||
*/
|
*/
|
||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @see StructuredViewer#unmapElement(Object, Widget)
|
* @see StructuredViewer#unmapElement(Object, Widget)
|
||||||
*/
|
*/
|
||||||
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()) {
|
||||||
super.handleLabelProviderChanged(new LabelProviderChangedEvent((IBaseLabelProvider)event.getSource(), mapped)); */
|
return;
|
||||||
|
}
|
||||||
|
event= new LabelProviderChangedEvent((IBaseLabelProvider) event.getSource(), others.toArray());
|
||||||
|
}
|
||||||
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)
|
||||||
|
|
|
@ -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;
|
|
@ -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;
|
|
@ -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;
|
||||||
|
|
||||||
|
@ -116,7 +115,7 @@ public class CUILabelProvider extends LabelProvider implements IColorProvider {
|
||||||
protected int evaluateTextFlags(Object element) {
|
protected int evaluateTextFlags(Object element) {
|
||||||
return getTextFlags();
|
return getTextFlags();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Image decorateImage(Image image, Object element) {
|
protected Image decorateImage(Image image, Object element) {
|
||||||
if (fLabelDecorators != null && image != null) {
|
if (fLabelDecorators != null && image != null) {
|
||||||
for (int i= 0; i < fLabelDecorators.size(); i++) {
|
for (int i= 0; i < fLabelDecorators.size(); i++) {
|
|
@ -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;
|
||||||
|
|
|
@ -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)
|
|
@ -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() {
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue