--- /dev/null
+package org.simantics.g3d.csg.actions;\r
+\r
+import org.eclipse.jface.action.Action;\r
+import org.simantics.g3d.csg.scenegraph2.CSGnode;\r
+import org.simantics.g3d.csg.scenegraph2.CSGrootNode;\r
+import org.simantics.utils.ui.ExceptionUtils;\r
+\r
+public class AddPrimitiveAction2 extends Action {\r
+ \r
+ CSGrootNode root;\r
+ Class<? extends CSGnode> primitiveClass;\r
+ public AddPrimitiveAction2(CSGrootNode root, Class<? extends CSGnode> primitiveClass) {\r
+ super();\r
+ String name = primitiveClass.getSimpleName();\r
+ if (name.endsWith("Node"))\r
+ name = name.substring(0,name.length()-4);\r
+ setText(name);\r
+ this.primitiveClass = primitiveClass;\r
+ this.root = root;\r
+ }\r
+ \r
+ @Override\r
+ public void run() {\r
+ try {\r
+ CSGnode node = primitiveClass.newInstance();\r
+ String name = root.getUniqueName(node.getClass().getSimpleName());\r
+ node.setName(name);\r
+ root.addChild(node);\r
+ root.getNodeMap().commit();\r
+ } catch (Exception e) {\r
+ ExceptionUtils.logAndShowError("Cannot create primitive.", e);\r
+ }\r
+ }\r
+\r
+}\r