X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.g3d.vtk%2Fsrc%2Forg%2Fsimantics%2Fg3d%2Fvtk%2Fcommon%2FAbstractVTKNodeMap.java;h=646fbe41cdef8300e24e71ea84eba13510995e35;hb=84132a1d750c45f9161afbd58b78572964e50d26;hp=8b04a7755b93cc6c79567fe4445c5644e51f2899;hpb=9c5be9fa9ff5fece5710b9f21bcafca58388899d;p=simantics%2F3d.git diff --git a/org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/common/AbstractVTKNodeMap.java b/org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/common/AbstractVTKNodeMap.java index 8b04a775..646fbe41 100644 --- a/org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/common/AbstractVTKNodeMap.java +++ b/org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/common/AbstractVTKNodeMap.java @@ -21,15 +21,12 @@ import java.util.Set; import java.util.Stack; import org.simantics.db.ReadGraph; -import org.simantics.db.Resource; import org.simantics.db.Session; import org.simantics.db.WriteGraph; import org.simantics.db.common.request.ReadRequest; import org.simantics.db.common.request.WriteRequest; import org.simantics.db.exception.DatabaseException; import org.simantics.g3d.ontology.G3D; -import org.simantics.g3d.scenegraph.G3DNode; -import org.simantics.g3d.scenegraph.IG3DNode; import org.simantics.g3d.scenegraph.RenderListener; import org.simantics.g3d.scenegraph.base.INode; import org.simantics.g3d.scenegraph.base.NodeListener; @@ -44,25 +41,25 @@ import org.simantics.utils.ui.ExceptionUtils; import vtk.vtkProp; -public abstract class AbstractVTKNodeMap implements VTKNodeMap, IMappingListener, RenderListener, NodeListener{ +public abstract class AbstractVTKNodeMap implements VTKNodeMap, IMappingListener, RenderListener, NodeListener{ private static final boolean DEBUG = false; protected Session session; protected IMapping mapping; - protected InteractiveVtkPanel panel; + protected VtkView view; protected MapList nodeToActor = new MapList(); protected Map actorToNode = new HashMap(); protected ParentNode rootNode; - public AbstractVTKNodeMap(Session session, IMapping mapping, InteractiveVtkPanel panel, ParentNode rootNode) { + public AbstractVTKNodeMap(Session session, IMapping mapping, VtkView view, ParentNode rootNode) { this.session = session; this.mapping = mapping; - this.panel = panel; + this.view = view; this.rootNode = rootNode; - panel.addListener(this); + view.addListener(this); mapping.addMappingListener(this); rootNode.addListener(this); } @@ -73,7 +70,7 @@ public abstract class AbstractVTKNodeMap implements VTKNodeM protected abstract void updateActor(E node,Set ids); public void repaint() { - panel.repaint(); + view.refresh(); } public void populate() { @@ -90,7 +87,7 @@ public abstract class AbstractVTKNodeMap implements VTKNodeM @SuppressWarnings("unchecked") @Override - public Collection getRenderObjects(IG3DNode node) { + public Collection getRenderObjects(INode node) { return nodeToActor.getValues((E)node); } @@ -126,16 +123,18 @@ public abstract class AbstractVTKNodeMap implements VTKNodeM @SuppressWarnings("unchecked") @Override - public void updateRenderObjectsFor(IG3DNode node) { + public void updateRenderObjectsFor(INode node) { List toDelete = new ArrayList(); + view.lock(); for (vtkProp prop : nodeToActor.getValues((E)node)) { if (prop.GetVTKId() != 0) { - panel.GetRenderer().RemoveActor(prop); + view.getRenderer().RemoveActor(prop); //prop.Delete(); toDelete.add(prop); } actorToNode.remove(prop); } + view.unlock(); nodeToActor.remove((E)node); Collection coll = getActors((E)node); if (coll == null) @@ -165,7 +164,7 @@ public abstract class AbstractVTKNodeMap implements VTKNodeM added.add(new Pair(node, id)); rangeModified = true; } - panel.repaint(); + view.refresh(); } @SuppressWarnings("unchecked") @@ -181,7 +180,7 @@ public abstract class AbstractVTKNodeMap implements VTKNodeM removed.add(new Pair(node, id)); rangeModified = true; } - panel.repaint(); + view.refresh(); } @SuppressWarnings("unchecked") @@ -198,7 +197,7 @@ public abstract class AbstractVTKNodeMap implements VTKNodeM updated.add(node, id); rangeModified = true; } - panel.repaint(); + view.refresh(); } private boolean graphUpdates = false; @@ -461,7 +460,7 @@ public abstract class AbstractVTKNodeMap implements VTKNodeM @Override public void delete() { changeTracking = false; - panel.removeListener(this); + view.removeListener(this); mapping.removeMappingListener(this); List nodes = new ArrayList(nodeToActor.getKeySize());