]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/common/AbstractVTKNodeMap.java
Mark undo pints when committing changes to the graph
[simantics/3d.git] / org.simantics.g3d.vtk / src / org / simantics / g3d / vtk / common / AbstractVTKNodeMap.java
index 646fbe41cdef8300e24e71ea84eba13510995e35..dab2040edde8be9947723d35a3c7528fd6825254 100644 (file)
@@ -26,6 +26,7 @@ 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.RenderListener;
 import org.simantics.g3d.scenegraph.base.INode;
@@ -204,10 +205,12 @@ public abstract class AbstractVTKNodeMap<E extends INode> implements VTKNodeMap<
        private Set<E> graphModified = new HashSet<E>();
        
        private boolean requestCommit = false;
+       private String commitMessage = null;
        
        @Override
-       public void commit() {
+       public void commit(String message) {
                requestCommit = true;
+               commitMessage = message;
        }
        
        protected void doCommit() {
@@ -216,6 +219,11 @@ public abstract class AbstractVTKNodeMap<E extends INode> 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<DatabaseException>() {
@@ -267,7 +275,7 @@ public abstract class AbstractVTKNodeMap<E extends INode> implements VTKNodeMap<
                }
                
                if (mapping.isRangeModified())
-                       commit();
+                       commit("Graph sync");
        }
        
        @Override