X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.proconf.g3d%2Fsrc%2Forg%2Fsimantics%2Fproconf%2Fg3d%2Fbase%2FScenegraphAdapterImpl.java;h=d90b9dd0a3226b5db08eef62cc4f112ef89a9122;hb=7b23bd59260035f6f4b5958b0148e06883ee5a5f;hp=c7ba95dbc80bca818789d4abe98dbefd9922b8e6;hpb=39d031c7686c8ac90b39e6d6ae2609736bcd11be;p=simantics%2F3d.git diff --git a/org.simantics.proconf.g3d/src/org/simantics/proconf/g3d/base/ScenegraphAdapterImpl.java b/org.simantics.proconf.g3d/src/org/simantics/proconf/g3d/base/ScenegraphAdapterImpl.java index c7ba95db..d90b9dd0 100644 --- a/org.simantics.proconf.g3d/src/org/simantics/proconf/g3d/base/ScenegraphAdapterImpl.java +++ b/org.simantics.proconf.g3d/src/org/simantics/proconf/g3d/base/ScenegraphAdapterImpl.java @@ -317,7 +317,7 @@ public abstract class ScenegraphAdapterImpl implements ScenegraphAdapter { */ protected IGraphicsNode addNode(IEntity parent, IEntity r) { if (!r.isInstanceOf(Resources.g3dResource.G3DNode)) { - ErrorLogger.defaultLogError("Trying to add node into scenegraph that is not instance of graphicsnode " + r,new Exception("ASSERT!")); + ErrorLogger.defaultLogError("Trying to add node into scenegraph that is not instance of G3DNode " + r,new Exception("ASSERT!")); return null; } if (parent.equals(r)) { @@ -473,6 +473,7 @@ public abstract class ScenegraphAdapterImpl implements ScenegraphAdapter { protected Resource nodeResource; private boolean disposed = false; + private IQueryListener listener = null; public NodeQuery(Resource r) { this.nodeResource = r; @@ -541,6 +542,25 @@ public abstract class ScenegraphAdapterImpl implements ScenegraphAdapter { public boolean isDisposed() { return disposed; } + + // without separate listener, this query would work only once + @Override + public IQueryListener getListener() { + if (listener == null) { + listener = new IQueryListener() { + @Override + public boolean isDisposed() { + return NodeQuery.this.disposed; + } + + @Override + public void resultChangedRaw(Object oldResult, Object newResult) { + NodeQuery.this.resultChangedRaw(oldResult, newResult); + } + }; + } + return listener; + } } /**