]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.proconf.g3d/src/org/simantics/proconf/g3d/base/ScenegraphAdapterImpl.java
git-svn-id: https://www.simantics.org/svn/simantics/3d/branches/dev@9342 ac1ea38d...
[simantics/3d.git] / org.simantics.proconf.g3d / src / org / simantics / proconf / g3d / base / ScenegraphAdapterImpl.java
index c7ba95dbc80bca818789d4abe98dbefd9922b8e6..2760c2918c74fac88d9ac0bf0851a539e31b9a3f 100644 (file)
@@ -179,7 +179,7 @@ public abstract class ScenegraphAdapterImpl implements ScenegraphAdapter {
        String name = nameMap.getRight(nodeResource);\r
        if (name == null) {\r
                //name = UUID.randomUUID().toString();\r
-               name = Long.toString(nodeResource.getResourceId());\r
+               name = Long.toString(nodeResource.getResourceId(session));\r
                nameMap.map(nodeResource, name);\r
        }\r
        return name;\r
@@ -317,12 +317,12 @@ public abstract class ScenegraphAdapterImpl implements ScenegraphAdapter {
      */\r
     protected IGraphicsNode addNode(IEntity parent, IEntity r) {\r
         if (!r.isInstanceOf(Resources.g3dResource.G3DNode)) {\r
-            ErrorLogger.defaultLogError("Trying to add node into scenegraph that is not instance of graphicsnode " + r,new Exception("ASSERT!"));\r
+            ErrorLogger.defaultLogError("Trying to add node into scenegraph that is not instance of G3DNode " + r,new Exception("ASSERT!"));\r
             return null;\r
         }\r
         if (parent.equals(r)) {\r
-               if (DEBUG) System.out.println("ThreeDimensionalEditorBase.addNodeP(" + r.getResource().getResourceId() + ") adding node to itself?!");\r
-            ErrorLogger.defaultLogError("Adding scnegraphnode " + r.getResource().getResourceId() + " to itself!", new Exception("ASSERT!"));\r
+               if (DEBUG) System.out.println("ThreeDimensionalEditorBase.addNodeP(" + r.getResource().getResourceId(session) + ") adding node to itself?!");\r
+            ErrorLogger.defaultLogError("Adding scnegraphnode " + r.getResource().getResourceId(session) + " to itself!", new Exception("ASSERT!"));\r
             return abstractGraphicsNodes.get(r);\r
         }\r
         \r
@@ -335,10 +335,10 @@ public abstract class ScenegraphAdapterImpl implements ScenegraphAdapter {
                 return null;\r
             }\r
             if (parent.equals(inView.getParent().getResource())) {\r
-               if (DEBUG) System.out.println("ThreeDimensionalEditorBase.addNodeP(" + r.getResource().getResourceId() + ") already in view");\r
+               if (DEBUG) System.out.println("ThreeDimensionalEditorBase.addNodeP(" + r.getResource().getResourceId(session) + ") already in view");\r
                 return inView;\r
             } else {\r
-               if (DEBUG) System.out.println("ThreeDimensionalEditorBase.addNodeP(" + r.getResource().getResourceId() + ") already in view, but has different parent, current parent is ("+inView.getParent().getResource()+") and node is added to  ("+parent+") -> removing from old parent and inserting to new");\r
+               if (DEBUG) System.out.println("ThreeDimensionalEditorBase.addNodeP(" + r.getResource().getResourceId(session) + ") already in view, but has different parent, current parent is ("+inView.getParent().getResource().getResourceId(session)+") and node is added to  ("+parent+") -> removing from old parent and inserting to new");\r
                 removeNode(inView.getParent().getResource(),r.getResource());\r
             }\r
         }\r
@@ -348,15 +348,15 @@ public abstract class ScenegraphAdapterImpl implements ScenegraphAdapter {
         IGraphicsNode mo;\r
         IGraphicsNode parentNode = abstractGraphicsNodes.get(parent);\r
         if (parentNode == null) {\r
-               if (DEBUG) System.out.println("No graphicsnode for (" + parent.getResource().getResourceId() + ")");\r
+               if (DEBUG) System.out.println("No graphicsnode for (" + parent.getResource().getResourceId(session) + ")");\r
             return null;\r
         } else {\r
             mo = instantiateNode(parentNode, node);\r
             if (mo == null) {\r
-                ErrorLogger.defaultLogError("Could not instantiate scenegraph node for " + r.getResource().getResourceId(), null);\r
+                ErrorLogger.defaultLogError("Could not instantiate scenegraph node for " + r.getResource().getResourceId(session), null);\r
                 return null;\r
             }\r
-            if (DEBUG) System.out.println("ThreeDimensionalEditorBase.addNodeP(" + r.getResource().getResourceId() + ") added to parent (" + parent.getResource().getResourceId() + ") " + mo.getClass());\r
+            if (DEBUG) System.out.println("ThreeDimensionalEditorBase.addNodeP(" + r.getResource().getResourceId(session) + ") added to parent (" + parent.getResource().getResourceId(session) + ") " + mo.getClass());\r
         }\r
         addSubnodeListener(node);\r
         addPropertyListener(node);\r
@@ -473,6 +473,7 @@ public abstract class ScenegraphAdapterImpl implements ScenegraphAdapter {
         protected Resource nodeResource;\r
         private boolean disposed = false;\r
         \r
+        private IQueryListener listener = null;\r
        \r
        public NodeQuery(Resource r) {\r
                this.nodeResource = r;\r
@@ -541,6 +542,25 @@ public abstract class ScenegraphAdapterImpl implements ScenegraphAdapter {
         public boolean isDisposed() {\r
             return disposed;\r
         }\r
+        \r
+        // without separate listener, this query would work only once\r
+        @Override\r
+        public IQueryListener getListener() {\r
+               if (listener == null) {\r
+                       listener = new IQueryListener() {\r
+                               @Override\r
+                               public boolean isDisposed() {\r
+                                       return NodeQuery.this.disposed;\r
+                               }\r
+                               \r
+                               @Override\r
+                               public void resultChangedRaw(Object oldResult, Object newResult) {\r
+                                       NodeQuery.this.resultChangedRaw(oldResult, newResult);\r
+                               }\r
+                       };\r
+               }\r
+               return listener;\r
+        }\r
     }\r
     \r
     /**\r