]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/actions/AddEquipmentAction.java
Missing library URI from Equipment selection dialog parameters.
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / actions / AddEquipmentAction.java
index 6c66909a845f6fae241885f8f14c56ea98767581..d41dba44cec095c27447165578b7f05f8eede6f5 100644 (file)
@@ -1,31 +1,48 @@
 package org.simantics.plant3d.actions;
 
 import org.eclipse.jface.action.Action;
+import org.eclipse.swt.widgets.Display;
+import org.simantics.plant3d.dialog.EquipmentSelectionDialog;
 import org.simantics.plant3d.scenegraph.Equipment;
 import org.simantics.plant3d.scenegraph.P3DRootNode;
+import org.simantics.plant3d.utils.ComponentUtils;
 import org.simantics.plant3d.utils.Item;
 import org.simantics.utils.ui.ExceptionUtils;
 
+/**
+ * Action that allows user to choose added Equipment with a dialog.
+ * 
+ * @author luukkainen
+ *
+ */
 public class AddEquipmentAction extends Action {
 
        P3DRootNode root;
-       private Item item;
        
-       public AddEquipmentAction(P3DRootNode root, Item item) {
+       private String libUri;
+       
+       public AddEquipmentAction(P3DRootNode root, String libUri) {
                this.root = root;
-               this.item = item;
-               setText("Add " + item.getName());
+               this.libUri = libUri;
+               setText("Add equipment");
        }
        
        @Override
        public void run() {
+           EquipmentSelectionDialog dialog = new EquipmentSelectionDialog(Display.getCurrent().getActiveShell(), root, libUri);
+           if (dialog.open() == EquipmentSelectionDialog.CANCEL)
+               return;
+           Item item = dialog.getSelected();
+           if (item == null)
+               return;
+           Item selectedNozzle = dialog.getSelectedNozzle();
                try {
-                       Equipment equipment = root.createEquipment();
-                       equipment.setType(item.getUri());
-                       String n = root.getUniqueName(item.getName());
-                       equipment.setName(n);
-                       root.addChild(equipment);
-                       root.getNodeMap().commit();
+                   Equipment equipment = null;
+                   if (selectedNozzle == null)
+                       equipment = ComponentUtils.createEquipment(root, item);
+                   else
+                       equipment = ComponentUtils.createEquipmentWithNozzles(root, item, selectedNozzle);
+                       root.getNodeMap().commit("Add equipment " + equipment.getName());
                } catch (Exception e) {
                        ExceptionUtils.logAndShowError("Cannot create equipment",e);
                }