]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/actions/TranslateInlineAction.java
Indicate ongoing translation operations in UI
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / actions / TranslateInlineAction.java
index 91cc3ceae233e2c68f2f300ed2a612f158ba5620..352f7fd53f38f47ac7627947f0ee835424cdbb12 100644 (file)
@@ -18,46 +18,49 @@ import org.simantics.g3d.vtk.utils.vtkUtil;
 import org.simantics.plant3d.Activator;
 import org.simantics.plant3d.scenegraph.InlineComponent;
 import org.simantics.plant3d.scenegraph.PipelineComponent;
-import org.simantics.plant3d.scenegraph.controlpoint.PipeControlPoint.Direction;
 
-public class TranslateInlineAction extends TranslateAction{
-       
-    private boolean inline;
-    
+public class TranslateInlineAction extends TranslateAction {
+
+       private boolean inline;
+
        private Vector3d s;
        private Vector3d e;
        private Vector3d dir;
 
-       public TranslateInlineAction(InteractiveVtkComposite panel, VTKNodeMap<?, ? extends INode> nodeMap, ToolComposite toolComposite) {
+       public TranslateInlineAction(InteractiveVtkComposite panel, VTKNodeMap<?, ? extends INode> nodeMap,
+                       ToolComposite toolComposite) {
                super(panel, nodeMap, toolComposite);
                setImageDescriptor(Activator.imageDescriptorFromPlugin("com.famfamfam.silk", "icons/arrow_refresh.png"));
        }
-       
+
        @Override
        public void setNode(IG3DNode node) {
                super.setNode(node);
                if (node instanceof InlineComponent) {
-                       InlineComponent comp = (InlineComponent)node;
+                       InlineComponent comp = (InlineComponent) node;
                        if (comp.isVariableLength()) {
-                setEnabled(false);
+                               setEnabled(false);
                        } else if (comp.getNext() == null || comp.getPrevious() == null) {
-                setEnabled(true);
-                inline = false;
-                dir = comp.getControlPoint().getInlineDir();
-                dir.normalize();
-            } else {
+                               setEnabled(true);
+                               inline = false;
+                               dir = comp.getControlPoint().getInlineDir();
+                               dir.normalize();
+                       } else {
                                setEnabled(true);
                                inline = true;
                                PipelineComponent prev = comp.getPrevious();
                                PipelineComponent next = comp.getNext();
                                if (prev == null || next == null) {
-                                       // TODO : we should support open ended translation (when translated component is the first or last of the run).
+                                       // TODO : we should support open ended translation (when translated component is
+                                       // the first or last of the run).
                                        setEnabled(false);
                                        return;
                                }
-                               if (prev.getControlPoint().isInline() && !prev.getControlPoint().isFixedLength() && prev.getPrevious() != null)
+                               if (prev.getControlPoint().isInline() && !prev.getControlPoint().isFixedLength()
+                                               && prev.getPrevious() != null)
                                        prev = prev.getPrevious();
-                               if (next.getControlPoint().isInline() && !next.getControlPoint().isFixedLength() && next.getNext() != null) {
+                               if (next.getControlPoint().isInline() && !next.getControlPoint().isFixedLength()
+                                               && next.getNext() != null) {
                                        next = next.getNext();
                                }
                                Point3d ns = new Point3d();
@@ -67,7 +70,8 @@ public class TranslateInlineAction extends TranslateAction{
                                next.getEnds(ns, ne);
                                prev.getEnds(ps, pe);
                                dir = comp.getControlPoint().getInlineDir();
-                               // We may have offsets in the path leg, hence we have to project the coordinates.
+                               // We may have offsets in the path leg, hence we have to project the
+                               // coordinates.
                                Vector3d wp = node.getWorldPosition();
                                if (prev.getControlPoint().isVariableLength())
                                        s = MathTools.closestPointOnStraight(ps, wp, dir);
@@ -88,80 +92,79 @@ public class TranslateInlineAction extends TranslateAction{
                        setEnabled(false);
                }
        }
-       
+
        @Override
-       protected void createTools(ToolComposite toolComposite) {
-           
+       protected void createAxisSelection(ToolComposite toolComposite) {
+               // No axis selection for inline components
        }
-       
+
        @Override
        public boolean keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
                        panel.useDefaultAction();
                if (!inline) {
-                   return super.keyPressed(e);
+                       return super.keyPressed(e);
                } else {
-               if (valid)
-                       return true;
-               
-               update();
-               return true;
+                       if (valid)
+                               return true;
+
+                       update();
+                       return true;
                }
        }
-       
+
        @Override
        public void setWorldCoord(boolean b) {
-               
+
        }
-       
+
        @Override
        public boolean mouseDragged(MouseEvent e) {
-               //if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) > 0 && valid) { 
-           if (e.getButton() == MouseEvent.BUTTON1  && valid) {
+               // if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) > 0 && valid) {
+               if (e.getButton() == MouseEvent.BUTTON1 && valid) {
                        if (inline) {
-                       Vector3d translate = getTranslate(e.getX(), e.getY(), prevTranslate);
-                       //System.out.println("translate " + translate);
-                       if (translate == null)
-                               return true;
-                       //boolean step = ((e.getModifiers() & MouseEvent.CTRL_MASK) > 0);
-                       Vector3d pos = new Vector3d(node.getWorldPosition());
-                       
+                               Vector3d translate = getTranslate(e.getX(), e.getY(), prevTranslate);
+                               // System.out.println("translate " + translate);
+                               if (translate == null)
+                                       return true;
+                               // boolean step = ((e.getModifiers() & MouseEvent.CTRL_MASK) > 0);
+                               Vector3d pos = new Vector3d(node.getWorldPosition());
+
 //                     System.out.println(pos + " " + translate);
-                       //pos.add(translate);
-                       pos.set(translate);
-                       //pos = constaints(pos, step);
-                       setWorldPos(pos);
-                       update();
+                               // pos.add(translate);
+                               pos.set(translate);
+                               // pos = constaints(pos, step);
+                               setWorldPos(pos);
+                               update();
                        } else {
-                           super.mouseDragged(e);
+                               super.mouseDragged(e);
                        }
                } else {
                        getDefaultAction().mouseDragged(e);
                        update();
-               } 
+               }
                return true;
        }
-       
+
        protected Vector3d getTranslate(double x, double y, Vector3d offset) {
-               
-               Ray ray = vtkUtil.createMouseRay(panel.getRenderer(),x, y);
-               
+
+               Ray ray = vtkUtil.createMouseRay(panel.getRenderer(), x, y);
+
                Vector3d p = node.getWorldPosition();
-               
+
                if (inline) {
-               Vector3d i1 = new Vector3d();
-               Vector3d i2 = new Vector3d();
-               
-               double mu[] = new double[2];
-               MathTools.intersectStraightStraight( p, dir,ray.pos, ray.dir, i2, i1,mu);
-               
-               Vector3d t = MathTools.closestPointOnEdge(i1, s, e);
-               return t;
+                       Vector3d i1 = new Vector3d();
+                       Vector3d i2 = new Vector3d();
+
+                       double mu[] = new double[2];
+                       MathTools.intersectStraightStraight(p, dir, ray.pos, ray.dir, i2, i1, mu);
+
+                       Vector3d t = MathTools.closestPointOnEdge(i1, s, e);
+                       return t;
                } else {
-                   return super.getTranslate(x, y, offset);
+                       return super.getTranslate(x, y, offset);
                }
-               
-       }
 
+       }
 
 }