X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.g2d%2Fsrc%2Forg%2Fsimantics%2Fg2d%2Fdiagram%2Fimpl%2FAbstractDiagram.java;fp=bundles%2Forg.simantics.g2d%2Fsrc%2Forg%2Fsimantics%2Fg2d%2Fdiagram%2Fimpl%2FAbstractDiagram.java;h=7b2ae5f986a772bda7e1edbc4b0c8b73fab53034;hp=76b1496bdc064d108a955e3ab62f2e32ed96ef73;hb=124f3b0f3b0c2078432c3bf224914afa9a067512;hpb=c40d39cfe4383e0da5099b0200abfcc93ffc3bec diff --git a/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/impl/AbstractDiagram.java b/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/impl/AbstractDiagram.java index 76b1496bd..7b2ae5f98 100644 --- a/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/impl/AbstractDiagram.java +++ b/bundles/org.simantics.g2d/src/org/simantics/g2d/diagram/impl/AbstractDiagram.java @@ -11,14 +11,16 @@ *******************************************************************************/ package org.simantics.g2d.diagram.impl; -import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; -import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; +import org.eclipse.collections.api.list.ImmutableList; +import org.eclipse.collections.api.list.MutableList; +import org.eclipse.collections.api.set.MutableSet; +import org.eclipse.collections.impl.factory.Lists; +import org.eclipse.collections.impl.factory.Sets; import org.simantics.g2d.diagram.DiagramClass; import org.simantics.g2d.diagram.IDiagram; import org.simantics.g2d.diagram.handler.DiagramAdapter; @@ -35,15 +37,14 @@ import org.simantics.utils.threads.IThreadWorkQueue; */ public class AbstractDiagram implements IDiagram { - ListenerList compositionVetoListeners; - ListenerList compositionListeners; + protected ListenerList compositionVetoListeners; + protected ListenerList compositionListeners; - Set elements = new HashSet(); - ArrayList list = new ArrayList(); - List unmodifiableList = Collections.unmodifiableList(list); - volatile List snapshot = null; - DiagramClass clazz; - IHintContext hintCtx; + protected MutableList list = Lists.mutable.empty(); + protected MutableSet elements = Sets.mutable.empty(); + protected volatile ImmutableList snapshot = null; + private DiagramClass clazz; + protected IHintContext hintCtx; public AbstractDiagram(DiagramClass clazz, IHintContext hintCtx) { @@ -85,7 +86,6 @@ public class AbstractDiagram implements IDiagram { e.dispose(); } - elements.clear(); list.clear(); snapshot = null; @@ -138,8 +138,8 @@ public class AbstractDiagram implements IDiagram { } snapshot = null; - elements.add(e); list.add(e); + elements.add(e); e.addedToDiagram(this); @@ -232,15 +232,15 @@ public class AbstractDiagram implements IDiagram { @Override public List getSnapshot() { - List snap = snapshot; + ImmutableList snap = snapshot; if (snap != null) - return snap; + return snap.castToList(); synchronized (this) { snap = snapshot; if (snap == null) - snapshot = snap = Collections.unmodifiableList( new ArrayList(list) ); + snapshot = snap = list.toImmutable(); } - return snap; + return snap.castToList(); } protected static void fireDestroyed(IDiagram e) @@ -435,7 +435,7 @@ public class AbstractDiagram implements IDiagram { @Override public List getElements() { - return unmodifiableList; + return getSnapshot(); } @Override