diff options
author | Uwe Stieber | 2011-11-06 15:14:22 +0000 |
---|---|---|
committer | Uwe Stieber | 2011-11-06 15:14:22 +0000 |
commit | d86a68802c53ee7d4b47487997fed52bbda64e59 (patch) | |
tree | abfeb3e0829c8982aa53aebd0460c91e6b28e051 /target_explorer | |
parent | 180da54390231b8931144122b8532f60d0a8d793 (diff) | |
download | org.eclipse.tcf-d86a68802c53ee7d4b47487997fed52bbda64e59.tar.gz org.eclipse.tcf-d86a68802c53ee7d4b47487997fed52bbda64e59.tar.xz org.eclipse.tcf-d86a68802c53ee7d4b47487997fed52bbda64e59.zip |
Target Explorer: Fix working set content provider
Diffstat (limited to 'target_explorer')
3 files changed, 41 insertions, 2 deletions
diff --git a/target_explorer/plugins/org.eclipse.tm.te.ui.views/plugin.xml b/target_explorer/plugins/org.eclipse.tm.te.ui.views/plugin.xml index 5e5bd33aa..cbf8cd758 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.ui.views/plugin.xml +++ b/target_explorer/plugins/org.eclipse.tm.te.ui.views/plugin.xml @@ -53,6 +53,9 @@ <viewerContentBinding viewerId="org.eclipse.tm.te.ui.views.TargetExplorer"> <includes> + <contentExtension + isRoot="true" + pattern="org.eclipse.tm.te.ui.views.navigator.workingSets"/> <contentExtension pattern="org.eclipse.tm.te.ui.views.navigator.*"/> </includes> </viewerContentBinding> diff --git a/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/workingsets/WorkingSetFilter.java b/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/workingsets/WorkingSetFilter.java index 44207cbba..2a084c346 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/workingsets/WorkingSetFilter.java +++ b/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/workingsets/WorkingSetFilter.java @@ -9,11 +9,15 @@ *******************************************************************************/
package org.eclipse.tm.te.ui.views.workingsets;
+import java.util.Arrays;
+import java.util.List;
+
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerFilter;
import org.eclipse.tm.te.runtime.interfaces.workingsets.IWorkingSetElement;
+import org.eclipse.ui.IAggregateWorkingSet;
import org.eclipse.ui.IContainmentAdapter;
import org.eclipse.ui.IWorkingSet;
@@ -54,6 +58,10 @@ public class WorkingSetFilter extends ViewerFilter { if (workingSet == null || (workingSet.isAggregateWorkingSet() && workingSet.isEmpty())) {
return true;
}
+ if (parentElement instanceof IAggregateWorkingSet) {
+ List<IWorkingSet> workingSets = Arrays.asList(((IAggregateWorkingSet)parentElement).getComponents());
+ if (workingSets.contains(element)) return true;
+ }
if (element != null) {
return isEnclosed(element);
}
diff --git a/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/workingsets/WorkingSetsContentProvider.java b/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/workingsets/WorkingSetsContentProvider.java index 1ca650a12..bdf5c3f8f 100644 --- a/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/workingsets/WorkingSetsContentProvider.java +++ b/target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/workingsets/WorkingSetsContentProvider.java @@ -9,14 +9,20 @@ *******************************************************************************/ package org.eclipse.tm.te.ui.views.workingsets; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.WeakHashMap; +import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.util.IPropertyChangeListener; import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; +import org.eclipse.tm.te.runtime.interfaces.workingsets.IWorkingSetElement; import org.eclipse.tm.te.ui.views.interfaces.IUIConstants; +import org.eclipse.tm.te.ui.views.internal.ViewRoot; import org.eclipse.ui.IAggregateWorkingSet; import org.eclipse.ui.IMemento; import org.eclipse.ui.IWorkingSet; @@ -119,8 +125,30 @@ public class WorkingSetsContentProvider implements ICommonContentProvider { return NO_CHILDREN; } - /* default */IAdaptable[] getWorkingSetElements(IWorkingSet workingSet) { - return workingSet.getElements(); + /* default */ IAdaptable[] getWorkingSetElements(IWorkingSet workingSet) { + Assert.isNotNull(workingSet); + List<IAdaptable> elements = new ArrayList<IAdaptable>(); + for (IAdaptable candidate : workingSet.getElements()) { + if (candidate instanceof WorkingSetElementHolder) { + WorkingSetElementHolder holder = (WorkingSetElementHolder)candidate; + IWorkingSetElement element = holder.getElement(); + // If the element is null, try to look up the element through the content provider + if (element == null) { + ITreeContentProvider contentProvider = (ITreeContentProvider)viewer.getContentProvider(); + for (Object elementCandidate : contentProvider.getElements(ViewRoot.getInstance())) { + if (elementCandidate instanceof IWorkingSetElement && ((IWorkingSetElement)elementCandidate).getElementId().equals(holder.getElementId())) { + holder.setElement((IWorkingSetElement)elementCandidate); + element = holder.getElement(); + break; + } + } + } + if (element != null) elements.add(element); + } else { + elements.add(candidate); + } + } + return elements.toArray(new IAdaptable[elements.size()]); } /* (non-Javadoc) |