diff --git a/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeView.java b/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeView.java
index d3eb7ec..c7e26d8 100644
--- a/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeView.java
+++ b/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeView.java
@@ -272,7 +272,7 @@
{
DescriptorView view = DescriptorView.INSTANCE.getValue();
Set<ElementDescriptor> toBeHidden = view.getAllChecked(false);
- world.filter(toBeHidden);
+ world.setDisabledDescriptors(toBeHidden);
}
}
diff --git a/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeWorld.java b/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeWorld.java
index 25320dd..d3b682b 100644
--- a/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeWorld.java
+++ b/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/ThreeDeeWorld.java
@@ -82,6 +82,7 @@
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -100,6 +101,8 @@
private static boolean PRODUCTION = false;
+ private Set<ElementDescriptor> disabledDescriptors = Collections.emptySet();
+
private Map<Element, ElementGroup> elementGroups = new HashMap<Element, ElementGroup>();
private Map<Element, Map<Element, ReferenceShape>> referenceShapes = new HashMap<Element, Map<Element, ReferenceShape>>();
@@ -494,17 +497,24 @@
private ElementGroup createElementGroup(Element element)
{
ElementGroup group = new ElementGroup(element, canvas);
+ ElementDescriptor descriptor = element.getDescriptor();
+ if (disabledDescriptors.contains(descriptor))
+ {
+ group.setVisible(false);
+ }
+
elementGroups.put(element, group);
return group;
}
- public void filter(Set<ElementDescriptor> toBeHidden)
+ public void setDisabledDescriptors(Set<ElementDescriptor> disabledDescriptors)
{
+ this.disabledDescriptors = disabledDescriptors;
for (ElementGroup elementGroup : elementGroups.values())
{
Element element = elementGroup.getModel();
ElementDescriptor descriptor = element.getDescriptor();
- elementGroup.setVisible(!toBeHidden.contains(descriptor));
+ elementGroup.setVisible(!disabledDescriptors.contains(descriptor));
}
updateReferences();
@@ -590,7 +600,6 @@
BranchGroup branchGroup = new BranchGroup();
branchGroup.setCapability(BranchGroup.ALLOW_DETACH);
- // branchGroup.setCapability(Node.ALLOW_PICKABLE_WRITE);
branchGroup.addChild(transformGroup);
universe.addBranchGraph(branchGroup);
@@ -652,6 +661,16 @@
return;
}
+ if (disabledDescriptors.contains(source.getDescriptor()))
+ {
+ return;
+ }
+
+ if (disabledDescriptors.contains(target.getDescriptor()))
+ {
+ return;
+ }
+
getCallThread().add(source, target, transmission);
}