]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.document/src/org/simantics/document/function/WikiDocumentNodeImpl.java
Performance improvements for ParentNode in scene graph
[simantics/platform.git] / bundles / org.simantics.document / src / org / simantics / document / function / WikiDocumentNodeImpl.java
index 8987298289c882e7bec74f2c257678fe13dfe039..e3c52294c666630a3b706a2e333ba78ee79afaf0 100644 (file)
@@ -24,18 +24,18 @@ import org.simantics.scenegraph.ScenegraphUtils;
 import org.simantics.scl.runtime.function.Function1;
 import org.simantics.scl.runtime.function.Function2;
 
-abstract public class WikiDocumentNodeImpl extends ParentNode<WikiDocumentNode> implements WikiDocumentNode {
+public abstract class WikiDocumentNodeImpl extends ParentNode<WikiDocumentNode> implements WikiDocumentNode {
 
        public Boolean printInPDF = false;
        public String editText = null;
        
        private static final long serialVersionUID = 3394059912639648935L;
 
-       class M implements Map<String, WikiDocumentNode> {
-               
-               ArrayList<WikiDocumentNode> list = new ArrayList<WikiDocumentNode>();
-               Hashtable<String, WikiDocumentNode> table = new Hashtable<String, WikiDocumentNode>();
-               
+       static class M implements Map<String, INode> {
+
+               ArrayList<INode> list = new ArrayList<>();
+               Hashtable<String, INode> table = new Hashtable<>();
+
                @Override
                public void clear() {
                        table.clear();
@@ -50,11 +50,11 @@ abstract public class WikiDocumentNodeImpl extends ParentNode<WikiDocumentNode>
                        return table.containsValue(arg0);
                }
                @Override
-               public Set<java.util.Map.Entry<String, WikiDocumentNode>> entrySet() {
+               public Set<java.util.Map.Entry<String, INode>> entrySet() {
                        return table.entrySet();
                }
                @Override
-               public WikiDocumentNode get(Object arg0) {
+               public INode get(Object arg0) {
                        return table.get(arg0);
                }
                @Override
@@ -66,20 +66,20 @@ abstract public class WikiDocumentNodeImpl extends ParentNode<WikiDocumentNode>
                        return table.keySet();
                }
                @Override
-               public WikiDocumentNode put(String arg0, WikiDocumentNode arg1) {
-                       WikiDocumentNode 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 WikiDocumentNode> arg0) {
-                       for(Map.Entry<? extends String, ? extends WikiDocumentNode> 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 WikiDocumentNode remove(Object arg0) {
-                       WikiDocumentNode node = table.remove(arg0);
+               public INode remove(Object arg0) {
+                       INode node = table.remove(arg0);
                        if(node != null) list.remove(node);
                        return node;
                }
@@ -88,22 +88,22 @@ abstract public class WikiDocumentNodeImpl extends ParentNode<WikiDocumentNode>
                        return table.size();
                }
                @Override
-               public Collection<WikiDocumentNode> values() {
+               public Collection<INode> values() {
                        return list;
                }
-               
+
        }
-       
+
        @Override
        final public void asyncRemoveNode(INode node) {
         throw new Error();
        }
        
        @Override
-       protected Map<String, WikiDocumentNode> createChildMap() {
+       protected Map<String, INode> createChildMap(int initialCapacity) {
                return new M();
        }
-       
+
        @Override
        public Function1<Object, Boolean> getPropertyFunction(String propertyName) {
                return ScenegraphUtils.getMethodPropertyFunction(null, this, propertyName);
@@ -119,7 +119,7 @@ abstract public class WikiDocumentNodeImpl extends ParentNode<WikiDocumentNode>
        }
 
        protected void createChildren(StringBuilder b, boolean isPDF) {
-               for(WikiDocumentNode node : children.values()) node.create(b, isPDF);
+               for(WikiDocumentNode node : getNodes()) node.create(b, isPDF);
        }
        
        public void synchronizePrintInPDF(Boolean value) {