]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/common/AbstractVTKNodeMap.java
Use generics type variable for mapping db object.
[simantics/3d.git] / org.simantics.g3d.vtk / src / org / simantics / g3d / vtk / common / AbstractVTKNodeMap.java
index b762200786217a0434515a068a8d0f89cbe222e6..953ef198b2d43cbbd18c7f7285596fffaf88935c 100644 (file)
@@ -48,12 +48,12 @@ import org.simantics.utils.ui.ExceptionUtils;
 
 import vtk.vtkProp;
 
-public abstract class AbstractVTKNodeMap<E extends INode> implements VTKNodeMap<E>, IMappingListener, RenderListener, NodeListener, UndoRedoSupport.ChangeListener{
+public abstract class AbstractVTKNodeMap<DBObject,E extends INode> implements VTKNodeMap<DBObject,E>, IMappingListener, RenderListener, NodeListener, UndoRedoSupport.ChangeListener{
 
-       private static final boolean DEBUG = true;
+       private static final boolean DEBUG = false;
        
        protected Session session;
-       protected IMapping<Object,E> mapping;
+       protected IMapping<DBObject,E> mapping;
        protected VtkView view;
        
        protected MapList<E, vtkProp> nodeToActor = new MapList<E, vtkProp>();
@@ -66,7 +66,7 @@ public abstract class AbstractVTKNodeMap<E extends INode> implements VTKNodeMap<
        protected int redoOpCount = 0;
        protected boolean runUndo = false;
        protected boolean runRedo = false;
-       public AbstractVTKNodeMap(Session session, IMapping<Object,E> mapping, VtkView view, ParentNode<E> rootNode) {
+       public AbstractVTKNodeMap(Session session, IMapping<DBObject,E> mapping, VtkView view, ParentNode<E> rootNode) {
                this.session = session;
                this.mapping = mapping;
                this.view = view;
@@ -143,6 +143,10 @@ public abstract class AbstractVTKNodeMap<E extends INode> implements VTKNodeMap<
 
        private boolean rangeModified = false;
        
+       public boolean isRangeModified() {
+        return rangeModified;
+    }
+       
        @Override
        public void onChanged() {
                try {
@@ -317,10 +321,11 @@ public abstract class AbstractVTKNodeMap<E extends INode> implements VTKNodeMap<
        
        protected void reset(ReadGraph graph) throws MappingException {
                if (DEBUG) System.out.println("Reset");
+               
                synchronized (syncMutex) {
                        graphUpdates = true;
                        mapping.getRangeModified().clear();
-                       for (Object o : mapping.getDomain())
+                       for (DBObject o : mapping.getDomain())
                                mapping.domainModified(o);
                        mapping.updateRange(graph);
                        graphModified.clear();
@@ -337,7 +342,7 @@ public abstract class AbstractVTKNodeMap<E extends INode> implements VTKNodeMap<
                } else {
                        synchronized (syncMutex) {
                                graphUpdates = true;
-                               for (Object domainObject : mapping.getDomainModified()) {
+                               for (DBObject domainObject : mapping.getDomainModified()) {
                                        E rangeObject = mapping.get(domainObject);
                                        if (rangeObject != null)
                                                graphModified.add(rangeObject);
@@ -456,7 +461,10 @@ public abstract class AbstractVTKNodeMap<E extends INode> implements VTKNodeMap<
                    E n = stack.pop();
                    boolean conflict = filterChange(removed, n);
                    if (conflict) {
-                       filterChange(added, n);   
+                       System.out.println("Prevent removing " + n);
+                       //filterChange(added, n)
+                       if (filterChange(added, n))
+                           System.out.println("Prevent adding " + n);
                    }
                    if (n instanceof ParentNode) {
                        ParentNode<INode> pn = (ParentNode<INode>)n;
@@ -657,7 +665,7 @@ public abstract class AbstractVTKNodeMap<E extends INode> implements VTKNodeMap<
                
        }
        
-       public IMapping<Object,E> getMapping() {
+       public IMapping<DBObject,E> getMapping() {
                return mapping;
        }