--- /dev/null
+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