]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/actions/AddComponentAction.java
Ask component rotation angle when adding components
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / actions / AddComponentAction.java
index ba6721043d20f7e38c8f63d227e310ddc7591621..ea25230ab57c745bbe8e229e648d5604c293d4a7 100644 (file)
@@ -6,9 +6,9 @@ import java.awt.event.MouseWheelEvent;
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.vecmath.Vector3d;
-
 import org.eclipse.swt.widgets.Display;
+import org.simantics.db.Resource;
+import org.simantics.g3d.math.MathTools;
 import org.simantics.g3d.scenegraph.NodeMap;
 import org.simantics.g3d.scenegraph.base.INode;
 import org.simantics.g3d.vtk.swt.InteractiveVtkComposite;
@@ -19,16 +19,11 @@ import org.simantics.plant3d.gizmo.TerminalSelectionGizmo;
 import org.simantics.plant3d.scenegraph.InlineComponent;
 import org.simantics.plant3d.scenegraph.Nozzle;
 import org.simantics.plant3d.scenegraph.P3DRootNode;
-import org.simantics.plant3d.scenegraph.PipeRun;
 import org.simantics.plant3d.scenegraph.PipelineComponent;
-import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint;
-import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint.Direction;
 import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint.PositionType;
-import org.simantics.plant3d.scenegraph.controlpoint.PipingRules;
 import org.simantics.plant3d.utils.ComponentUtils;
-import org.simantics.plant3d.utils.Item;
 import org.simantics.plant3d.utils.ComponentUtils.InsertInstruction;
-import org.simantics.plant3d.utils.Item.Type;
+import org.simantics.plant3d.utils.Item;
 import org.simantics.utils.threads.ThreadUtils;
 import org.simantics.utils.ui.ExceptionUtils;
 
@@ -39,7 +34,7 @@ public class AddComponentAction extends vtkSwtAction {
 
        private P3DRootNode root;
        private PipelineComponent component;
-       private NodeMap<vtkProp,INode> nodeMap;
+       private NodeMap<Resource,vtkProp,INode> nodeMap;
        
        private TerminalSelectionGizmo gizmo;
        
@@ -47,7 +42,9 @@ public class AddComponentAction extends vtkSwtAction {
        
        private Item toAdd = null;
        private PositionType insertPosition;
+       @SuppressWarnings("unused")
        private boolean insertAdjustable;
+       @SuppressWarnings("unused")
        private boolean lengthAdjustable;
        
        private String libUri;
@@ -77,7 +74,7 @@ public class AddComponentAction extends vtkSwtAction {
                        if (component.getPrevious() == null) {
                                allowed.add(PositionType.PREVIOUS);
                        }
-                       if (component instanceof InlineComponent && !component.getControlPoint().isFixed()){
+                       if (component instanceof InlineComponent && !component.getControlPoint().isFixedLength()){
                                allowed.add(PositionType.SPLIT);
                        }
                }
@@ -86,6 +83,7 @@ public class AddComponentAction extends vtkSwtAction {
        
        private Double length;
        private Double angle;
+       private Double rotationAngle;
        private Double diameter;
        private Double turnRadius;
        
@@ -103,6 +101,7 @@ public class AddComponentAction extends vtkSwtAction {
                this.lengthAdjustable = dialog.isLenghtAdjustable();
                this.length = dialog.getLength();
                this.angle = dialog.getAngle();
+               this.rotationAngle = dialog.getRotationAngle();
                this.diameter = dialog.getDiameter();
                this.turnRadius = dialog.getTurnRadius();
                allowed = dialog.filterAllowed();
@@ -175,11 +174,12 @@ public class AddComponentAction extends vtkSwtAction {
                try  {
                        InsertInstruction inst = new InsertInstruction();
                        inst.typeUri = toAdd.getUri();
-                       inst.angle = angle;
+                       inst.angle = angle != null ? MathTools.degToRad(angle) : null;
                        inst.diameter = diameter;
                        inst.length = length;
                        inst.turnRadius = turnRadius;
                        inst.insertPosition = insertPosition;
+                       inst.rotationAngle = rotationAngle;
                        inst.position = position;
                        ComponentUtils.addComponent(root, component, inst);
                } catch (Exception e) {