]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/actions/AddComponentAction.java
Add units to ComponentSelectionDialog
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / actions / AddComponentAction.java
index dae8c629b4335a7bfacb88503086d7d34285311b..f87e63f70aa216639bc947d8e3dc9f5bf3f53f09 100644 (file)
@@ -52,6 +52,7 @@ public class AddComponentAction extends vtkSwtAction {
        private String libUri;
        
        private double lengthFactor = 1.0;
+       private String lengthUnit = "m";
        
        public AddComponentAction(InteractiveVtkComposite panel, P3DRootNode root, String libUri) {
                super(panel);
@@ -67,6 +68,10 @@ public class AddComponentAction extends vtkSwtAction {
                this.lengthFactor = lengthFactor;
        }
 
+       public void setLengthUnit(String lengthUnit) {
+               this.lengthUnit = lengthUnit;
+       }
+
        public void setComponent(PipelineComponent component) {
                this.component = component;
                
@@ -106,6 +111,7 @@ public class AddComponentAction extends vtkSwtAction {
                // Set list of already reserved component names
                dialog.addUsedNames(ComponentUtils.getPipelineComponentNames(root));
                dialog.setLengthFactor(lengthFactor);
+               dialog.setLengthUnit(lengthUnit);
                
                if (dialog.open() == ComponentSelectionDialog.CANCEL)
                        return;
@@ -206,12 +212,23 @@ public class AddComponentAction extends vtkSwtAction {
                        inst.insertPosition = insertPosition;
                        inst.rotationAngle = rotationAngle;
                        inst.position = position;
-                       ComponentUtils.addComponent(root, component, inst);
+                       PipelineComponent newComponent = ComponentUtils.addComponent(root, component, inst);
+                       componentAdded(newComponent);
                } catch (Exception e) {
                        ExceptionUtils.logAndShowError("Cannot add component", e);
                }
        }
        
+       /**
+        * This method does nothing, but can be overridden by a subclass to do additional
+        * post-processing for a newly added component.
+        * 
+        * @param newComponent  A newly added pipeline component
+        */
+       protected void componentAdded(PipelineComponent newComponent) {
+               // Nothing to do here
+       }
+
        public boolean mouseClicked(MouseEvent e) {
                if (e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON1) {
                        int type = panel.getPickType();