]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/action/RemoveAction.java
3D framework (Simca 2012)
[simantics/3d.git] / org.simantics.g3d.vtk / src / org / simantics / g3d / vtk / action / RemoveAction.java
diff --git a/org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/action/RemoveAction.java b/org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/action/RemoveAction.java
new file mode 100644 (file)
index 0000000..9bbce07
--- /dev/null
@@ -0,0 +1,42 @@
+package org.simantics.g3d.vtk.action;\r
+\r
+import org.eclipse.jface.action.Action;\r
+import org.simantics.g3d.scenegraph.IG3DNode;\r
+import org.simantics.g3d.scenegraph.structural.IStructuralNode;\r
+import org.simantics.g3d.vtk.Activator;\r
+import org.simantics.g3d.vtk.common.VTKNodeMap;\r
+\r
+public class RemoveAction extends Action {\r
+\r
+       private VTKNodeMap nodeMap;\r
+       protected IG3DNode node;\r
+       \r
+       public RemoveAction(VTKNodeMap nodeMap) {\r
+               setText("Remove");\r
+               setImageDescriptor(Activator.imageDescriptorFromPlugin("com.famfamfam.silk", "icons/delete.png"));\r
+               this.nodeMap = nodeMap;\r
+       }\r
+       \r
+       public void setNode(IG3DNode node) {\r
+               this.node = node;\r
+               setEnabled(isRemovable(node));\r
+       }\r
+       \r
+       public boolean isRemovable(IG3DNode node) {\r
+               if ((node instanceof IStructuralNode) && ((IStructuralNode)node).isPartOfInstantiatedModel() && !((IStructuralNode)node).isInstantiatedModelRoot())\r
+                       return false;\r
+               return true;\r
+       }\r
+       \r
+       @Override\r
+       public void run() {\r
+               \r
+               doRemove(node);\r
+               nodeMap.commit();\r
+               node = null;\r
+       }\r
+       \r
+       protected void doRemove(IG3DNode node) {\r
+               node.remove();\r
+       }\r
+}\r