X-Git-Url: http://git.phpeclipse.com
diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/ProblemsLabelDecorator.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/ProblemsLabelDecorator.java
index 53e172d..674d70d 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/ProblemsLabelDecorator.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/ui/ProblemsLabelDecorator.java
@@ -45,40 +45,47 @@ import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.texteditor.MarkerAnnotation;
/**
- * LabelDecorator that decorates an element's image with error and warning overlays that
- * represent the severity of markers attached to the element's underlying resource. To see
- * a problem decoration for a marker, the marker needs to be a subtype of IMarker.PROBLEM
.
+ * LabelDecorator that decorates an element's image with error and warning
+ * overlays that represent the severity of markers attached to the element's
+ * underlying resource. To see a problem decoration for a marker, the marker
+ * needs to be a subtype of IMarker.PROBLEM
.
*
- * Note: Only images for elements in Java projects are currently updated on marker changes. + * Note: Only images for elements in Java projects are currently updated on + * marker changes. *
* * @since 2.0 */ -public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabelDecorator { - +public class ProblemsLabelDecorator implements ILabelDecorator, + ILightweightLabelDecorator { + /** - * This is a specialLabelProviderChangedEvent
carring additional
- * information whether the event orgins from a maker change.
+ * This is a special LabelProviderChangedEvent
carring
+ * additional information whether the event orgins from a maker change.
*
* ProblemsLabelChangedEvent
s are only generated by
* ProblemsLabelDecorator
s.
*
false
an annotation
- * model change is the origin. In this case viewers not displaying working copies can ignore these
+ * Returns whether this event origins from marker changes. If
+ * false
an annotation model change is the origin. In
+ * this case viewers not displaying working copies can ignore these
* events.
*
* @return if this event origins from a marker change.
@@ -89,13 +96,16 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
}
- private static final int ERRORTICK_WARNING= JavaElementImageDescriptor.WARNING;
- private static final int ERRORTICK_ERROR= JavaElementImageDescriptor.ERROR;
+ private static final int ERRORTICK_WARNING = JavaElementImageDescriptor.WARNING;
+
+ private static final int ERRORTICK_ERROR = JavaElementImageDescriptor.ERROR;
private ImageDescriptorRegistry fRegistry;
- private boolean fUseNewRegistry= false;
+
+ private boolean fUseNewRegistry = false;
+
private IProblemChangedListener fProblemChangedListener;
-
+
private ListenerList fListeners;
/**
@@ -103,89 +113,106 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
*/
public ProblemsLabelDecorator() {
this(null);
- fUseNewRegistry= true;
+ fUseNewRegistry = true;
}
-
+
/*
* Creates decorator with a shared image registry.
*
- * @param registry The registry to use or null
to use the Java plugin's
- * image registry.
+ * @param registry The registry to use or null
to use the
+ * Java plugin's image registry.
*/
/**
- * Note: This constructor is for internal use only. Clients should not call this constructor.
+ * Note: This constructor is for internal use only. Clients should not call
+ * this constructor.
*/
public ProblemsLabelDecorator(ImageDescriptorRegistry registry) {
- fRegistry= registry;
- fProblemChangedListener= null;
+ fRegistry = registry;
+ fProblemChangedListener = null;
}
-
+
private ImageDescriptorRegistry getRegistry() {
if (fRegistry == null) {
- fRegistry= fUseNewRegistry ? new ImageDescriptorRegistry() : PHPeclipsePlugin.getImageDescriptorRegistry();
+ fRegistry = fUseNewRegistry ? new ImageDescriptorRegistry()
+ : PHPeclipsePlugin.getImageDescriptorRegistry();
}
return fRegistry;
}
-
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see ILabelDecorator#decorateText(String, Object)
*/
public String decorateText(String text, Object element) {
return text;
- }
+ }
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see ILabelDecorator#decorateImage(Image, Object)
*/
public Image decorateImage(Image image, Object obj) {
- int adornmentFlags= computeAdornmentFlags(obj);
+ int adornmentFlags = computeAdornmentFlags(obj);
if (adornmentFlags != 0) {
- ImageDescriptor baseImage= new ImageImageDescriptor(image);
- Rectangle bounds= image.getBounds();
- return getRegistry().get(new JavaElementImageDescriptor(baseImage, adornmentFlags, new Point(bounds.width, bounds.height)));
+ ImageDescriptor baseImage = new ImageImageDescriptor(image);
+ Rectangle bounds = image.getBounds();
+ return getRegistry().get(
+ new JavaElementImageDescriptor(baseImage, adornmentFlags,
+ new Point(bounds.width, bounds.height)));
}
return image;
}
/**
- * Note: This method is for internal use only. Clients should not call this method.
+ * Note: This method is for internal use only. Clients should not call this
+ * method.
*/
protected int computeAdornmentFlags(Object obj) {
try {
if (obj instanceof IJavaElement) {
- IJavaElement element= (IJavaElement) obj;
- int type= element.getElementType();
+ IJavaElement element = (IJavaElement) obj;
+ int type = element.getElementType();
switch (type) {
- case IJavaElement.JAVA_PROJECT:
- case IJavaElement.PACKAGE_FRAGMENT_ROOT:
- return getErrorTicksFromMarkers(element.getResource(), IResource.DEPTH_INFINITE, null);
- case IJavaElement.PACKAGE_FRAGMENT:
- case IJavaElement.CLASS_FILE:
- return getErrorTicksFromMarkers(element.getResource(), IResource.DEPTH_ONE, null);
- case IJavaElement.COMPILATION_UNIT:
- case IJavaElement.PACKAGE_DECLARATION:
- case IJavaElement.IMPORT_DECLARATION:
- case IJavaElement.IMPORT_CONTAINER:
- case IJavaElement.TYPE:
- case IJavaElement.INITIALIZER:
- case IJavaElement.METHOD:
- case IJavaElement.FIELD:
- ICompilationUnit cu= (ICompilationUnit) element.getAncestor(IJavaElement.COMPILATION_UNIT);
- if (cu != null) {
- ISourceReference ref= (type == IJavaElement.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((ICompilationUnit) cu.getOriginalElement(), ref);
- }
- return getErrorTicksFromMarkers(cu.getResource(), IResource.DEPTH_ONE, ref);
+ case IJavaElement.JAVA_PROJECT:
+ case IJavaElement.PACKAGE_FRAGMENT_ROOT:
+ return getErrorTicksFromMarkers(element.getResource(),
+ IResource.DEPTH_INFINITE, null);
+ case IJavaElement.PACKAGE_FRAGMENT:
+ case IJavaElement.CLASS_FILE:
+ return getErrorTicksFromMarkers(element.getResource(),
+ IResource.DEPTH_ONE, null);
+ case IJavaElement.COMPILATION_UNIT:
+ case IJavaElement.PACKAGE_DECLARATION:
+ case IJavaElement.IMPORT_DECLARATION:
+ case IJavaElement.IMPORT_CONTAINER:
+ case IJavaElement.TYPE:
+ case IJavaElement.INITIALIZER:
+ case IJavaElement.METHOD:
+ case IJavaElement.FIELD:
+ ICompilationUnit cu = (ICompilationUnit) element
+ .getAncestor(IJavaElement.COMPILATION_UNIT);
+ if (cu != null) {
+ ISourceReference ref = (type == IJavaElement.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(
+ (ICompilationUnit) cu.getOriginalElement(),
+ ref);
}
- break;
- default:
+ return getErrorTicksFromMarkers(cu.getResource(),
+ IResource.DEPTH_ONE, ref);
+ }
+ break;
+ default:
}
} else if (obj instanceof IResource) {
- return getErrorTicksFromMarkers((IResource) obj, IResource.DEPTH_INFINITE, null);
+ return getErrorTicksFromMarkers((IResource) obj,
+ IResource.DEPTH_INFINITE, null);
}
} catch (CoreException e) {
if (e instanceof JavaModelException) {
@@ -198,162 +225,195 @@ public class ProblemsLabelDecorator implements ILabelDecorator, ILightweightLabe
return 0;
}
- private int getErrorTicksFromMarkers(IResource res, int depth, ISourceReference sourceElement) throws CoreException {
+ private int getErrorTicksFromMarkers(IResource res, int depth,
+ ISourceReference sourceElement) throws CoreException {
if (res == null || !res.isAccessible()) {
return 0;
}
- int info= 0;
-
- IMarker[] markers= res.findMarkers(IMarker.PROBLEM, true, depth);
+ int info = 0;
+
+ IMarker[] markers = res.findMarkers(IMarker.PROBLEM, true, depth);
if (markers != null) {
- for (int i= 0; i < markers.length && (info != ERRORTICK_ERROR); i++) {
- IMarker curr= markers[i];
- if (sourceElement == null || isMarkerInRange(curr, sourceElement)) {
- int priority= curr.getAttribute(IMarker.SEVERITY, -1);
+ for (int i = 0; i < markers.length && (info != ERRORTICK_ERROR); i++) {
+ IMarker curr = markers[i];
+ if (sourceElement == null
+ || isMarkerInRange(curr, sourceElement)) {
+ int priority = curr.getAttribute(IMarker.SEVERITY, -1);
if (priority == IMarker.SEVERITY_WARNING) {
- info= ERRORTICK_WARNING;
+ info = ERRORTICK_WARNING;
} else if (priority == IMarker.SEVERITY_ERROR) {
- info= ERRORTICK_ERROR;
+ info = ERRORTICK_ERROR;
}
}
- }
+ }
}
return info;
}
- private boolean isMarkerInRange(IMarker marker, ISourceReference sourceElement) throws CoreException {
+ private boolean isMarkerInRange(IMarker marker,
+ ISourceReference sourceElement) throws CoreException {
if (marker.isSubtypeOf(IMarker.TEXT)) {
- int pos= marker.getAttribute(IMarker.CHAR_START, -1);
+ int pos = marker.getAttribute(IMarker.CHAR_START, -1);
return isInside(pos, sourceElement);
}
return false;
}
-
-
- private int getErrorTicksFromWorkingCopy(ICompilationUnit original, ISourceReference sourceElement) throws CoreException {
- int info= 0;
- FileEditorInput editorInput= new FileEditorInput((IFile) original.getResource());
- IAnnotationModel model= PHPeclipsePlugin.getDefault().getCompilationUnitDocumentProvider().getAnnotationModel(editorInput);
+
+ private int getErrorTicksFromWorkingCopy(ICompilationUnit original,
+ ISourceReference sourceElement) throws CoreException {
+ int info = 0;
+ FileEditorInput editorInput = new FileEditorInput((IFile) original
+ .getResource());
+ IAnnotationModel model = PHPeclipsePlugin.getDefault()
+ .getCompilationUnitDocumentProvider().getAnnotationModel(
+ editorInput);
if (model != null) {
- Iterator iter= model.getAnnotationIterator();
+ Iterator iter = model.getAnnotationIterator();
while ((info != ERRORTICK_ERROR) && iter.hasNext()) {
- Annotation curr= (Annotation) iter.next();
- IMarker marker= isAnnotationInRange(model, curr, sourceElement);
+ Annotation curr = (Annotation) iter.next();
+ IMarker marker = isAnnotationInRange(model, curr, sourceElement);
if (marker != null) {
- int priority= marker.getAttribute(IMarker.SEVERITY, -1);
+ int priority = marker.getAttribute(IMarker.SEVERITY, -1);
if (priority == IMarker.SEVERITY_WARNING) {
- info= ERRORTICK_WARNING;
+ info = ERRORTICK_WARNING;
} else if (priority == IMarker.SEVERITY_ERROR) {
- info= ERRORTICK_ERROR;
+ info = ERRORTICK_ERROR;
}
}
}
}
return info;
}
-
- private IMarker isAnnotationInRange(IAnnotationModel model, Annotation annot, ISourceReference sourceElement) throws CoreException {
+
+ private IMarker isAnnotationInRange(IAnnotationModel model,
+ Annotation annot, ISourceReference sourceElement)
+ throws CoreException {
if (annot instanceof MarkerAnnotation) {
- IMarker marker= ((MarkerAnnotation) annot).getMarker();
+ IMarker marker = ((MarkerAnnotation) annot).getMarker();
if (marker.exists() && marker.isSubtypeOf(IMarker.PROBLEM)) {
- Position pos= model.getPosition(annot);
- if (sourceElement == null || isInside(pos.getOffset(), sourceElement)) {
+ Position pos = model.getPosition(annot);
+ if (sourceElement == null
+ || isInside(pos.getOffset(), sourceElement)) {
return marker;
}
}
}
return null;
}
-
+
/**
* Tests if a position is inside the source range of an element.
- * @param pos Position to be tested.
- * @param sourceElement Source element (must be a IJavaElement)
- * @return boolean Return true
if position is located inside the source element.
- * @throws CoreException Exception thrown if element range could not be accessed.
+ *
+ * @param pos
+ * Position to be tested.
+ * @param sourceElement
+ * Source element (must be a IJavaElement)
+ * @return boolean Return true
if position is located inside
+ * the source element.
+ * @throws CoreException
+ * Exception thrown if element range could not be accessed.
*
* @since 2.1
*/
- protected boolean isInside(int pos, ISourceReference sourceElement) throws CoreException {
- ISourceRange range= sourceElement.getSourceRange();
+ protected boolean isInside(int pos, ISourceReference sourceElement)
+ throws CoreException {
+ ISourceRange range = sourceElement.getSourceRange();
if (range != null) {
- int rangeOffset= range.getOffset();
- return (rangeOffset <= pos && rangeOffset + range.getLength() > pos);
+ int rangeOffset = range.getOffset();
+ return (rangeOffset <= pos && rangeOffset + range.getLength() > pos);
}
return false;
- }
-
- /* (non-Javadoc)
+ }
+
+ /*
+ * (non-Javadoc)
+ *
* @see IBaseLabelProvider#dispose()
*/
public void dispose() {
if (fProblemChangedListener != null) {
- PHPeclipsePlugin.getDefault().getProblemMarkerManager().removeListener(fProblemChangedListener);
- fProblemChangedListener= null;
+ PHPeclipsePlugin.getDefault().getProblemMarkerManager()
+ .removeListener(fProblemChangedListener);
+ fProblemChangedListener = null;
}
if (fRegistry != null && fUseNewRegistry) {
fRegistry.dispose();
}
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see IBaseLabelProvider#isLabelProperty(Object, String)
*/
public boolean isLabelProperty(Object element, String property) {
return true;
}
-
- /* (non-Javadoc)
+
+ /*
+ * (non-Javadoc)
+ *
* @see IBaseLabelProvider#addListener(ILabelProviderListener)
*/
public void addListener(ILabelProviderListener listener) {
if (fListeners == null) {
- fListeners= new ListenerList();
+ fListeners = new ListenerList();
}
fListeners.add(listener);
if (fProblemChangedListener == null) {
- fProblemChangedListener= new IProblemChangedListener() {
- public void problemsChanged(IResource[] changedResources, boolean isMarkerChange) {
+ fProblemChangedListener = new IProblemChangedListener() {
+ public void problemsChanged(IResource[] changedResources,
+ boolean isMarkerChange) {
fireProblemsChanged(changedResources, isMarkerChange);
}
};
- PHPeclipsePlugin.getDefault().getProblemMarkerManager().addListener(fProblemChangedListener);
+ PHPeclipsePlugin.getDefault().getProblemMarkerManager()
+ .addListener(fProblemChangedListener);
}
- }
+ }
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see IBaseLabelProvider#removeListener(ILabelProviderListener)
*/
public void removeListener(ILabelProviderListener listener) {
if (fListeners != null) {
fListeners.remove(listener);
if (fListeners.isEmpty() && fProblemChangedListener != null) {
- PHPeclipsePlugin.getDefault().getProblemMarkerManager().removeListener(fProblemChangedListener);
- fProblemChangedListener= null;
+ PHPeclipsePlugin.getDefault().getProblemMarkerManager()
+ .removeListener(fProblemChangedListener);
+ fProblemChangedListener = null;
}
}
}
-
- private void fireProblemsChanged(IResource[] changedResources, boolean isMarkerChange) {
+
+ private void fireProblemsChanged(IResource[] changedResources,
+ boolean isMarkerChange) {
if (fListeners != null && !fListeners.isEmpty()) {
- LabelProviderChangedEvent event= new ProblemsLabelChangedEvent(this, changedResources, isMarkerChange);
- Object[] listeners= fListeners.getListeners();
- for (int i= 0; i < listeners.length; i++) {
- ((ILabelProviderListener) listeners[i]).labelProviderChanged(event);
+ LabelProviderChangedEvent event = new ProblemsLabelChangedEvent(
+ this, changedResources, isMarkerChange);
+ Object[] listeners = fListeners.getListeners();
+ for (int i = 0; i < listeners.length; i++) {
+ ((ILabelProviderListener) listeners[i])
+ .labelProviderChanged(event);
}
}
}
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ILightweightLabelDecorator#decorate(java.lang.Object, org.eclipse.jface.viewers.IDecoration)
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.viewers.ILightweightLabelDecorator#decorate(java.lang.Object,
+ * org.eclipse.jface.viewers.IDecoration)
*/
- public void decorate(Object element, IDecoration decoration) {
- int adornmentFlags= computeAdornmentFlags(element);
+ public void decorate(Object element, IDecoration decoration) {
+ int adornmentFlags = computeAdornmentFlags(element);
if (adornmentFlags == ERRORTICK_ERROR) {
decoration.addOverlay(PHPUiImages.DESC_OVR_ERROR);
} else if (adornmentFlags == ERRORTICK_WARNING) {
decoration.addOverlay(PHPUiImages.DESC_OVR_WARNING);
- }
+ }
}
}