]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/action/RemoveAction.java
9bbce07342402c2fbdcdf62035d4e19f34edf984
[simantics/3d.git] / org.simantics.g3d.vtk / src / org / simantics / g3d / vtk / action / RemoveAction.java
1 package org.simantics.g3d.vtk.action;\r
2 \r
3 import org.eclipse.jface.action.Action;\r
4 import org.simantics.g3d.scenegraph.IG3DNode;\r
5 import org.simantics.g3d.scenegraph.structural.IStructuralNode;\r
6 import org.simantics.g3d.vtk.Activator;\r
7 import org.simantics.g3d.vtk.common.VTKNodeMap;\r
8 \r
9 public class RemoveAction extends Action {\r
10 \r
11         private VTKNodeMap nodeMap;\r
12         protected IG3DNode node;\r
13         \r
14         public RemoveAction(VTKNodeMap nodeMap) {\r
15                 setText("Remove");\r
16                 setImageDescriptor(Activator.imageDescriptorFromPlugin("com.famfamfam.silk", "icons/delete.png"));\r
17                 this.nodeMap = nodeMap;\r
18         }\r
19         \r
20         public void setNode(IG3DNode node) {\r
21                 this.node = node;\r
22                 setEnabled(isRemovable(node));\r
23         }\r
24         \r
25         public boolean isRemovable(IG3DNode node) {\r
26                 if ((node instanceof IStructuralNode) && ((IStructuralNode)node).isPartOfInstantiatedModel() && !((IStructuralNode)node).isInstantiatedModelRoot())\r
27                         return false;\r
28                 return true;\r
29         }\r
30         \r
31         @Override\r
32         public void run() {\r
33                 \r
34                 doRemove(node);\r
35                 nodeMap.commit();\r
36                 node = null;\r
37         }\r
38         \r
39         protected void doRemove(IG3DNode node) {\r
40                 node.remove();\r
41         }\r
42 }\r