Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Stieber2011-11-06 15:14:22 +0000
committerUwe Stieber2011-11-06 15:14:22 +0000
commitd86a68802c53ee7d4b47487997fed52bbda64e59 (patch)
treeabfeb3e0829c8982aa53aebd0460c91e6b28e051 /target_explorer
parent180da54390231b8931144122b8532f60d0a8d793 (diff)
downloadorg.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')
-rw-r--r--target_explorer/plugins/org.eclipse.tm.te.ui.views/plugin.xml3
-rw-r--r--target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/workingsets/WorkingSetFilter.java8
-rw-r--r--target_explorer/plugins/org.eclipse.tm.te.ui.views/src/org/eclipse/tm/te/ui/views/workingsets/WorkingSetsContentProvider.java32
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)

Back to the top