diff --git "a/org.eclipse.emf.cdo.threedee.ui/ThreeDee Frontend \0503D\051.launch" "b/org.eclipse.emf.cdo.threedee.ui/ThreeDee Frontend \0503D\051.launch"
index 4faac98..0734bd4 100644
--- "a/org.eclipse.emf.cdo.threedee.ui/ThreeDee Frontend \0503D\051.launch"
+++ "b/org.eclipse.emf.cdo.threedee.ui/ThreeDee Frontend \0503D\051.launch"
@@ -20,7 +20,7 @@
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms256m -Xmx512m -XX:MaxPermSize=2048m -Dsun.awt.nopixfmt=true"/>
+<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms256m -Xmx2048m -XX:MaxPermSize=512m -Dsun.awt.nopixfmt=true"/>
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="org.eclipse.platform.ide"/>
<stringAttribute key="selectedPlugin" value="org.eclipse.emf.cdo.threedee"/>
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 099ddd5..0510be3 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
@@ -174,12 +174,14 @@
protected void onAdded(IContainer<Object> container, Object object)
{
addElement(object);
+ world.layout();
}
@Override
protected void onRemoved(IContainer<Object> container, Object object)
{
removeElement(object);
+ world.layout();
}
@Override
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 cb1746a..81bffb2 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
@@ -340,11 +340,8 @@
if (containerContainmentGroup != null)
{
clearReferenceNodes(element.getProvider().getElement(element.getContainerID()));
- updateReferences(containerElement);
}
}
-
- layout();
}
private void addNode(ElementGroup node, ElementGroup parent)
@@ -358,19 +355,6 @@
ThreeDeeUtil.enablePicking(node, true);
parent.addChild(node);
}
-
- layout();
-
- Element element = node.getModel();
- Element containerElement = getContainerElement(element);
- if (containerElement != null)
- {
- updateReferences(containerElement);
- }
- else
- {
- updateReferences(element);
- }
}
private void removeNode(ElementGroup elementGroup, ElementGroup containerElementGroup)
@@ -461,25 +445,18 @@
public void layout()
{
root.layout();
+ updateReferences();
}
public void updateReferences()
{
- synchronized (Frontend.INSTANCE)
+ for (Session session : Frontend.INSTANCE.getElements())
{
- for (Session session : Frontend.INSTANCE.getElements())
- {
- Element[] elements = session.getElements();
- updateReferences(elements);
- }
+ Element[] elements = session.getElements();
+ updateReferences(elements);
}
}
- private void updateReferences(Element source)
- {
- updateReferences(source, new HashSet<Element>());
- }
-
private void updateReferences(Element[] sources)
{
Set<Element> visited = new HashSet<Element>();
diff --git a/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/nodes/RootElementGroup.java b/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/nodes/RootElementGroup.java
index 9703114..ee18525 100644
--- a/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/nodes/RootElementGroup.java
+++ b/org.eclipse.emf.cdo.threedee.ui/src/org/eclipse/emf/cdo/threedee/ui/nodes/RootElementGroup.java
@@ -59,7 +59,6 @@
for (int i = 0; i < n; i++)
{
ThreeDeeNode<Element> child = children[i];
- // child.layout();
double x = radius * Math.cos(phi);
double y = radius * Math.sin(phi);
@@ -72,8 +71,6 @@
phi += distanceAngle;
}
-
- getWorld().updateReferences();
}
private static Appearance createAppearance()