diff --git a/org.eclipse.emf.cdo.threedee.common/src/org/eclipse/emf/cdo/threedee/common/descriptors/_INIT_.java b/org.eclipse.emf.cdo.threedee.common/src/org/eclipse/emf/cdo/threedee/common/descriptors/_INIT_.java
index c3735e2..11969d9 100644
--- a/org.eclipse.emf.cdo.threedee.common/src/org/eclipse/emf/cdo/threedee/common/descriptors/_INIT_.java
+++ b/org.eclipse.emf.cdo.threedee.common/src/org/eclipse/emf/cdo/threedee/common/descriptors/_INIT_.java
@@ -36,7 +36,7 @@
Color color = Color.white;
registry.register(new ManagedContainerDescriptor(), color, 0.8f);
- registry.register(new MapEntryDescriptor(), color, 0.7f);
- registry.register(new CollectionDescriptor(), color, 0.7f);
+ // registry.register(new MapEntryDescriptor(), color, 0.7f);
+ // registry.register(new CollectionDescriptor(), color, 0.7f);
}
}
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 74c3d2b..ad02766 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
@@ -85,6 +85,7 @@
public void createPartControl(Composite parent)
{
world = new ThreeDeeWorld(parent);
+
Frontend.INSTANCE.addListener(frontendListener);
DescriptorView.INSTANCE.addListener(descriptorViewListener);
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 a8bb620..b838939 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
@@ -284,7 +284,6 @@
pickCanvas.setMode(PickTool.BOUNDS);
canvas.addMouseListener(new MouseAdapter()
{
- @SuppressWarnings("unchecked")
@Override
public void mouseClicked(MouseEvent e)
{
@@ -295,15 +294,41 @@
Node node = result.getNode(PickResult.PRIMITIVE | PickResult.SHAPE3D);
if (node != null)
{
- ThreeDeeNode<Element> threeDeeNode = ThreeDeeUtil.getThreeDeeNode(node);
- Element element = threeDeeNode.getModel();
- setSelection(new StructuredSelection(element));
+ int modifiers = e.getModifiers();
+ boolean alt = (modifiers & MouseEvent.ALT_MASK) != 0;
+ boolean ctl = (modifiers & MouseEvent.CTRL_MASK) != 0;
+ picked(node, alt, ctl);
return;
}
}
setSelection(StructuredSelection.EMPTY);
}
+
+ private void picked(Node node, boolean alt, boolean ctl)
+ {
+ @SuppressWarnings("unchecked")
+ ThreeDeeNode<Element> threeDeeNode = ThreeDeeUtil.getThreeDeeNode(node);
+ Element element = threeDeeNode.getModel();
+
+ List<Element> elements = new ArrayList<Element>();
+ elements.add(element);
+ if (alt)
+ {
+ addChildren(element, elements);
+ }
+
+ setSelection(new StructuredSelection(elements));
+ }
+
+ private void addChildren(Element element, List<Element> elements)
+ {
+ for (Element child : element.getElements())
+ {
+ elements.add(child);
+ addChildren(child, elements);
+ }
+ }
});
}
diff --git a/org.eclipse.emf.cdo.threedee/src/org/eclipse/emf/cdo/threedee/DescriptorView.java b/org.eclipse.emf.cdo.threedee/src/org/eclipse/emf/cdo/threedee/DescriptorView.java
index e843496..26d2244 100644
--- a/org.eclipse.emf.cdo.threedee/src/org/eclipse/emf/cdo/threedee/DescriptorView.java
+++ b/org.eclipse.emf.cdo.threedee/src/org/eclipse/emf/cdo/threedee/DescriptorView.java
@@ -287,10 +287,10 @@
if (object instanceof ElementDescriptor)
{
ElementDescriptor descriptor = (ElementDescriptor)object;
- if (descriptor.isFolder())
- {
- return folderImage;
- }
+ // if (descriptor.isFolder())
+ // {
+ // return folderImage;
+ // }
Color color = descriptor.getColor().getValue();
return ColorIcons.get(color);