]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.views.swt.client/src/org/simantics/views/swt/client/base/SWTParentNode.java
Performance improvements for ParentNode in scene graph
[simantics/platform.git] / bundles / org.simantics.views.swt.client / src / org / simantics / views / swt / client / base / SWTParentNode.java
index 1d0a254423088b4f2793f24329738f04e1cf854d..3fc213126d50b03b9cd5f14e27dfe65b13e60939 100644 (file)
@@ -13,17 +13,17 @@ import org.eclipse.ui.IWorkbenchSite;
 import org.simantics.scenegraph.INode;
 import org.simantics.scenegraph.ParentNode;
 
-abstract public class SWTParentNode extends ParentNode<ISWTViewNode> implements ISWTViewNode {
+public abstract class SWTParentNode extends ParentNode<ISWTViewNode> implements ISWTViewNode {
 
        private boolean disposed = false;
-       
+
        private static final long serialVersionUID = -3548136282051185971L;
 
-       class M implements Map<String, ISWTViewNode> {
-               
-               ArrayList<ISWTViewNode> list = new ArrayList<ISWTViewNode>();
-               Hashtable<String, ISWTViewNode> table = new Hashtable<String, ISWTViewNode>();
-               
+       static class M implements Map<String, INode> {
+
+               ArrayList<INode> list = new ArrayList<>();
+               Hashtable<String, INode> table = new Hashtable<>();
+
                @Override
                public void clear() {
                        table.clear();
@@ -38,11 +38,11 @@ abstract public class SWTParentNode extends ParentNode<ISWTViewNode> implements
                        return table.containsValue(arg0);
                }
                @Override
-               public Set<java.util.Map.Entry<String, ISWTViewNode>> entrySet() {
+               public Set<java.util.Map.Entry<String, INode>> entrySet() {
                        return table.entrySet();
                }
                @Override
-               public ISWTViewNode get(Object arg0) {
+               public INode get(Object arg0) {
                        return table.get(arg0);
                }
                @Override
@@ -54,20 +54,20 @@ abstract public class SWTParentNode extends ParentNode<ISWTViewNode> implements
                        return table.keySet();
                }
                @Override
-               public ISWTViewNode put(String arg0, ISWTViewNode arg1) {
-                       ISWTViewNode exist = table.put(arg0, arg1);
+               public INode put(String arg0, INode arg1) {
+                       INode exist = table.put(arg0, arg1);
                        if(exist != null) list.remove(exist);
                        list.add(arg1);
                        return exist;
                }
                @Override
-               public void putAll(Map<? extends String, ? extends ISWTViewNode> arg0) {
-                       for(Map.Entry<? extends String, ? extends ISWTViewNode> entry : arg0.entrySet())
+               public void putAll(Map<? extends String, ? extends INode> arg0) {
+                       for(Map.Entry<? extends String, ? extends INode> entry : arg0.entrySet())
                                put(entry.getKey(), entry.getValue());
                }
                @Override
-               public ISWTViewNode remove(Object arg0) {
-                       ISWTViewNode node = table.remove(arg0);
+               public INode remove(Object arg0) {
+                       INode node = table.remove(arg0);
                        if(node != null) list.remove(node);
                        return node;
                }
@@ -76,12 +76,12 @@ abstract public class SWTParentNode extends ParentNode<ISWTViewNode> implements
                        return table.size();
                }
                @Override
-               public Collection<ISWTViewNode> values() {
+               public Collection<INode> values() {
                        return list;
                }
-               
+
        }
-       
+
        @Override
        public SWTRoot getRootNode() {
                ParentNode<?> root = super.getRootNode();
@@ -104,18 +104,18 @@ abstract public class SWTParentNode extends ParentNode<ISWTViewNode> implements
        final public void asyncRemoveNode(INode node) {
                throw new Error();
        }
-       
+
        @Override
-       protected Map<String, ISWTViewNode> createChildMap() {
+       protected Map<String, INode> createChildMap(int initialCapacity) {
                return new M();
        }
-       
+
        protected void createChildComposites() {
                createChildComposites((Composite)getControl());
        }
 
        protected void createChildComposites(Composite composite) {
-               for(ISWTViewNode node : children.values()) node.createControls(composite);
+               for(ISWTViewNode node : getNodes()) node.createControls(composite);
        }
        
        @Override
@@ -133,7 +133,7 @@ abstract public class SWTParentNode extends ParentNode<ISWTViewNode> implements
        }
 
        public Collection<ISWTViewNode> getChildComposites() {
-               return children.values();
+               return getNodes();
        }
        
        @Override