Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Niewrzal2015-01-05 09:39:47 +0000
committerMichal Niewrzal2015-01-05 09:39:47 +0000
commit2b5e32345cfafe01c16200e6fe189a051ba06cd6 (patch)
tree94a6f40410a119bc1cdc7dddd3c2cc8211912375
parentafcf40b98b2cc2719b4b94088185e90ec6e2c7b4 (diff)
downloadorg.eclipse.dltk.core-2b5e32345cfafe01c16200e6fe189a051ba06cd6.tar.gz
org.eclipse.dltk.core-2b5e32345cfafe01c16200e6fe189a051ba06cd6.tar.xz
org.eclipse.dltk.core-2b5e32345cfafe01c16200e6fe189a051ba06cd6.zip
Bug 456645 - ProblemTreeViewer contains obsolete code which is causing
invalid selection Change-Id: I70a5ea1bc07a31fd2a93e74f68355380ff760049 Signed-off-by: Michal Niewrzal <michal.n@zend.com>
-rw-r--r--core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/viewsupport/ProblemTreeViewer.java134
1 files changed, 70 insertions, 64 deletions
diff --git a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/viewsupport/ProblemTreeViewer.java b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/viewsupport/ProblemTreeViewer.java
index a840a116e..74d0a208e 100644
--- a/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/viewsupport/ProblemTreeViewer.java
+++ b/core/plugins/org.eclipse.dltk.ui/src/org/eclipse/dltk/ui/viewsupport/ProblemTreeViewer.java
@@ -18,11 +18,7 @@ import org.eclipse.dltk.core.IMember;
import org.eclipse.dltk.internal.ui.IWorkingCopyProvider;
import org.eclipse.dltk.ui.ProblemsLabelDecorator.ProblemsLabelChangedEvent;
import org.eclipse.jface.viewers.IBaseLabelProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.ITreeSelection;
import org.eclipse.jface.viewers.LabelProviderChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.swt.widgets.Composite;
@@ -32,11 +28,12 @@ import org.eclipse.swt.widgets.Widget;
/**
- * Extends a TreeViewer to allow more performance when showing error ticks.
- * A <code>ProblemItemMapper</code> is contained that maps all items in
- * the tree to underlying resource
+ * Extends a TreeViewer to allow more performance when showing error ticks. A
+ * <code>ProblemItemMapper</code> is contained that maps all items in the tree
+ * to underlying resource
*/
-public class ProblemTreeViewer extends TreeViewer implements ResourceToItemsMapper.IContentViewerAccessor {
+public class ProblemTreeViewer extends TreeViewer implements
+ ResourceToItemsMapper.IContentViewerAccessor {
protected ResourceToItemsMapper fResourceToItemsMapper;
@@ -67,12 +64,11 @@ public class ProblemTreeViewer extends TreeViewer implements ResourceToItemsMapp
public void doUpdateItem(Widget item) {
doUpdateItem(item, item.getData(), true);
}
-
+
private void initMapper() {
- fResourceToItemsMapper= new ResourceToItemsMapper(this);
+ fResourceToItemsMapper = new ResourceToItemsMapper(this);
}
-
-
+
/*
* @see StructuredViewer#mapElement(Object, Widget)
*/
@@ -89,7 +85,7 @@ public class ProblemTreeViewer extends TreeViewer implements ResourceToItemsMapp
protected void unmapElement(Object element, Widget item) {
if (item instanceof Item) {
fResourceToItemsMapper.removeFromMap(element, (Item) item);
- }
+ }
super.unmapElement(element, item);
}
@@ -106,17 +102,17 @@ public class ProblemTreeViewer extends TreeViewer implements ResourceToItemsMapp
*/
protected void handleLabelProviderChanged(LabelProviderChangedEvent event) {
if (event instanceof ProblemsLabelChangedEvent) {
- ProblemsLabelChangedEvent e= (ProblemsLabelChangedEvent) event;
+ ProblemsLabelChangedEvent e = (ProblemsLabelChangedEvent) event;
if (!e.isMarkerChange() && canIgnoreChangesFromAnnotionModel()) {
return;
}
}
- Object[] changed= addAditionalProblemParents(event.getElements());
-
+ Object[] changed = addAditionalProblemParents(event.getElements());
+
if (changed != null && !fResourceToItemsMapper.isEmpty()) {
- ArrayList others= new ArrayList();
- for (int i= 0; i < changed.length; i++) {
- Object curr= changed[i];
+ ArrayList others = new ArrayList();
+ for (int i = 0; i < changed.length; i++) {
+ Object curr = changed[i];
if (curr instanceof IResource) {
fResourceToItemsMapper.resourceChanged((IResource) curr);
} else {
@@ -126,44 +122,56 @@ public class ProblemTreeViewer extends TreeViewer implements ResourceToItemsMapp
if (others.isEmpty()) {
return;
}
- event= new LabelProviderChangedEvent((IBaseLabelProvider) event.getSource(), others.toArray());
+ event = new LabelProviderChangedEvent(
+ (IBaseLabelProvider) event.getSource(), others.toArray());
} else {
- // we have modified the list of changed elements via add additional parents.
+ // we have modified the list of changed elements via add additional
+ // parents.
if (event.getElements() != changed)
- event= new LabelProviderChangedEvent((IBaseLabelProvider) event.getSource(), changed);
+ event = new LabelProviderChangedEvent(
+ (IBaseLabelProvider) event.getSource(), changed);
}
super.handleLabelProviderChanged(event);
}
-
+
/**
- * Answers whether this viewer can ignore label provider changes resulting from
- * marker changes in annotation models
+ * Answers whether this viewer can ignore label provider changes resulting
+ * from marker changes in annotation models
*/
private boolean canIgnoreChangesFromAnnotionModel() {
- Object contentProvider= getContentProvider();
- return contentProvider instanceof IWorkingCopyProvider && !((IWorkingCopyProvider)contentProvider).providesWorkingCopies();
+ Object contentProvider = getContentProvider();
+ return contentProvider instanceof IWorkingCopyProvider
+ && !((IWorkingCopyProvider) contentProvider)
+ .providesWorkingCopies();
}
-
-
+
/**
- * Decides if {@link #isExpandable(Object)} should also test filters. The default behaviour is to
- * do this only for IMembers. Implementors can replace this behaviour.
- * @param parent the given element
- * @return returns if if {@link #isExpandable(Object)} should also test filters for the given element.
+ * Decides if {@link #isExpandable(Object)} should also test filters. The
+ * default behaviour is to do this only for IMembers. Implementors can
+ * replace this behaviour.
+ *
+ * @param parent
+ * the given element
+ * @return returns if if {@link #isExpandable(Object)} should also test
+ * filters for the given element.
*/
protected boolean evaluateExpandableWithFilters(Object parent) {
return parent instanceof IMember;
}
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.AbstractTreeViewer#isExpandable(java.lang.Object)
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jface.viewers.AbstractTreeViewer#isExpandable(java.lang.Object
+ * )
*/
public boolean isExpandable(Object parent) {
if (hasFilters() && evaluateExpandableWithFilters(parent)) {
// workaround for 65762
- Object[] children= getRawChildren(parent);
+ Object[] children = getRawChildren(parent);
if (children.length > 0) {
- ViewerFilter[] filters= getFilters();
+ ViewerFilter[] filters = getFilters();
for (int i = 0; i < children.length; i++) {
if (!isFiltered(children[i], parent, filters)) {
return true;
@@ -174,7 +182,7 @@ public class ProblemTreeViewer extends TreeViewer implements ResourceToItemsMapp
}
return super.isExpandable(parent);
}
-
+
/**
* method to test if a element has any children that passed the filters
*
@@ -183,13 +191,15 @@ public class ProblemTreeViewer extends TreeViewer implements ResourceToItemsMapp
* @return return <code>true</code> if the element has at least a child that
* passed the filters
*/
- protected final boolean hasFilteredChildren(Object parent) {
+ protected final boolean hasFilteredChildren(Object parent) {
Object[] rawChildren = getRawChildren(parent);
return containsNonFiltered(rawChildren, parent);
}
- /*
- * @see org.eclipse.jface.viewers.AbstractTreeViewer#getFilteredChildren(java.lang.Object)
+ /*
+ * @see
+ * org.eclipse.jface.viewers.AbstractTreeViewer#getFilteredChildren(java
+ * .lang.Object)
*/
protected Object[] getFilteredChildren(Object parent) {
return filter(getRawChildren(parent), parent);
@@ -227,23 +237,30 @@ public class ProblemTreeViewer extends TreeViewer implements ResourceToItemsMapp
return false;
}
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.StructuredViewer#filter(java.lang.Object[])
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.jface.viewers.StructuredViewer#filter(java.lang.Object[])
*/
protected final Object[] filter(Object[] elements) {
return filter(elements, getRoot());
}
-
+
/**
- * All element filter tests must go through this method.
- * Can be overridden by subclasses.
+ * All element filter tests must go through this method. Can be overridden
+ * by subclasses.
*
- * @param object the object to filter
- * @param parent the parent
- * @param filters the filters to apply
+ * @param object
+ * the object to filter
+ * @param parent
+ * the parent
+ * @param filters
+ * the filters to apply
* @return true if the element is filtered
*/
- protected boolean isFiltered(Object object, Object parent, ViewerFilter[] filters) {
+ protected boolean isFiltered(Object object, Object parent,
+ ViewerFilter[] filters) {
for (int i = 0; i < filters.length; i++) {
ViewerFilter filter = filters[i];
if (!filter.select(this, parent, object))
@@ -251,21 +268,10 @@ public class ProblemTreeViewer extends TreeViewer implements ResourceToItemsMapp
}
return false;
}
-
+
protected Object[] addAditionalProblemParents(Object[] elements) {
return elements;
}
-
- /* (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) {
- // workaround for bug 125708: TODO: Remove when bug 125708 is fixed
- if (!invalidSelection.isEmpty() && newSelection.isEmpty() && invalidSelection instanceof ITreeSelection) {
- newSelection= new StructuredSelection(((IStructuredSelection) invalidSelection).toArray());
- setSelection(newSelection);
- }
- super.handleInvalidSelection(invalidSelection, newSelection);
- }
+
}

Back to the top