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=dab2040edde8be9947723d35a3c7528fd6825254;hb=aae56c70a404cb2198761325eaea81140947b6df;hp=35d3105fb451f1debc7afca7476e5d1449099007;hpb=824f36cd731304e46deb4765883e47a4eec6132e;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 35d3105f..dab2040e 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,13 @@ 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.db.layer0.util.Layer0Utils; 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; @@ -50,19 +48,19 @@ public abstract class AbstractVTKNodeMap implements VTKNodeMap< 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 +71,7 @@ public abstract class AbstractVTKNodeMap implements VTKNodeMap< protected abstract void updateActor(E node,Set ids); public void repaint() { - panel.repaint(); + view.refresh(); } public void populate() { @@ -128,14 +126,16 @@ public abstract class AbstractVTKNodeMap implements VTKNodeMap< @Override 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 +165,7 @@ public abstract class AbstractVTKNodeMap implements VTKNodeMap< added.add(new Pair(node, id)); rangeModified = true; } - panel.repaint(); + view.refresh(); } @SuppressWarnings("unchecked") @@ -181,7 +181,7 @@ public abstract class AbstractVTKNodeMap implements VTKNodeMap< removed.add(new Pair(node, id)); rangeModified = true; } - panel.repaint(); + view.refresh(); } @SuppressWarnings("unchecked") @@ -198,17 +198,19 @@ public abstract class AbstractVTKNodeMap implements VTKNodeMap< updated.add(node, id); rangeModified = true; } - panel.repaint(); + view.refresh(); } private boolean graphUpdates = false; private Set graphModified = new HashSet(); private boolean requestCommit = false; + private String commitMessage = null; @Override - public void commit() { + public void commit(String message) { requestCommit = true; + commitMessage = message; } protected void doCommit() { @@ -217,6 +219,11 @@ public abstract class AbstractVTKNodeMap implements VTKNodeMap< @Override public void perform(WriteGraph graph) throws DatabaseException { commit(graph); + if (commitMessage != null) { + Layer0Utils.addCommentMetadata(graph, commitMessage); + commitMessage = null; + } + graph.markUndoPoint(); } }, new Callback() { @@ -268,7 +275,7 @@ public abstract class AbstractVTKNodeMap implements VTKNodeMap< } if (mapping.isRangeModified()) - commit(); + commit("Graph sync"); } @Override @@ -461,7 +468,7 @@ public abstract class AbstractVTKNodeMap implements VTKNodeMap< @Override public void delete() { changeTracking = false; - panel.removeListener(this); + view.removeListener(this); mapping.removeMappingListener(this); List nodes = new ArrayList(nodeToActor.getKeySize());