111894 gmf-head mmostafa 051201 Improve memory consumption of opened notation diagram
diff --git a/org.eclipse.gmf.runtime.notation/src/org/eclipse/gmf/runtime/notation/impl/DiagramImpl.java b/org.eclipse.gmf.runtime.notation/src/org/eclipse/gmf/runtime/notation/impl/DiagramImpl.java index 562fbf0..05dd96d 100644 --- a/org.eclipse.gmf.runtime.notation/src/org/eclipse/gmf/runtime/notation/impl/DiagramImpl.java +++ b/org.eclipse.gmf.runtime.notation/src/org/eclipse/gmf/runtime/notation/impl/DiagramImpl.java
@@ -18,16 +18,15 @@ import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.NotificationChain; -import org.eclipse.emf.common.util.BasicEList; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.util.EContentsEList; import org.eclipse.emf.ecore.util.EObjectContainmentEList; import org.eclipse.emf.ecore.util.InternalEList; - import org.eclipse.gmf.runtime.notation.Diagram; import org.eclipse.gmf.runtime.notation.Edge; import org.eclipse.gmf.runtime.notation.NotationPackage; @@ -91,6 +90,9 @@ * @ordered */ protected EList transientEdges = null; + + + private EContentsEList allEdges = null; /** * <!-- begin-user-doc --> @@ -136,18 +138,13 @@ * <!-- end-user-doc --> */ public EList getEdges() { - List edges = new ArrayList(); - if (persistedEdges!=null && - persistedEdges.size()>0){ - edges.addAll(getPersistedEdges()); + if (allEdges == null){ + allEdges = new EContentsEList(this, + new EStructuralFeature[] { + NotationPackage.eINSTANCE.getDiagram_PersistedEdges(), + NotationPackage.eINSTANCE.getDiagram_TransientEdges()}); } - - if (transientEdges!=null&& - transientEdges.size()>0){ - edges.addAll(getTransientEdges()); - } - - return new BasicEList.UnmodifiableEList(edges.size(), edges.toArray()); + return allEdges; } /**