]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.processeditor/src/org/simantics/processeditor/actions/TranslateStraightAction.java
Removing ancient 3d framework
[simantics/3d.git] / org.simantics.processeditor / src / org / simantics / processeditor / actions / TranslateStraightAction.java
diff --git a/org.simantics.processeditor/src/org/simantics/processeditor/actions/TranslateStraightAction.java b/org.simantics.processeditor/src/org/simantics/processeditor/actions/TranslateStraightAction.java
deleted file mode 100644 (file)
index c3e848d..0000000
+++ /dev/null
@@ -1,404 +0,0 @@
-/*******************************************************************************\r
- * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.processeditor.actions;\r
-\r
-import java.util.List;\r
-\r
-import javax.vecmath.AxisAngle4f;\r
-import javax.vecmath.Point3d;\r
-import javax.vecmath.Vector3d;\r
-\r
-import org.eclipse.jface.action.IToolBarManager;\r
-import org.simantics.db.Graph;\r
-import org.simantics.db.GraphRequestAdapter;\r
-import org.simantics.db.GraphRequestStatus;\r
-import org.simantics.db.Resource;\r
-import org.simantics.layer0.utils.EntityFactory;\r
-import org.simantics.layer0.utils.IEntity;\r
-import org.simantics.processeditor.Activator;\r
-import org.simantics.processeditor.ProcessResource;\r
-import org.simantics.processeditor.common.ControlPointTools;\r
-import org.simantics.processeditor.common.PipingTools2;\r
-import org.simantics.processeditor.stubs.FixedLengthInlineComponent;\r
-import org.simantics.processeditor.stubs.PipeControlPoint;\r
-import org.simantics.proconf.g3d.actions.ConstrainedTransformAction;\r
-import org.simantics.proconf.g3d.actions.TranslateActionConstraints;\r
-import org.simantics.proconf.g3d.base.G3DTools;\r
-import org.simantics.proconf.g3d.base.MathTools;\r
-import org.simantics.proconf.g3d.base.ThreeDimensionalEditorBase;\r
-import org.simantics.proconf.g3d.gizmo.AbstractGizmo;\r
-import org.simantics.proconf.g3d.gizmo.TransformGizmo;\r
-import org.simantics.proconf.g3d.gizmo.TransformInlineGizmo;\r
-\r
-
-\r
-\r
-/**\r
- * Action that allows translating VariableLengthInlineComontolPoints.\r
- * \r
- * TODO : Action won't show two gizmos when both ends can be moved\r
- * TODO : With loose ends, gizmo is in the middle of component, when it should be positioned on the end of the component\r
- * \r
- * \r
- * @author Marko Luukkainen <Marko.Luukkainen@vtt.fi>\r
- *\r
- */\r
-public class TranslateStraightAction extends ConstrainedTransformAction {\r
-       \r
-       private static final int CONNECTED = 0;\r
-    private static final int LOOSE = 1;\r
-    \r
-    private AbstractGizmo gizmo; \r
-    private TransformGizmo transformGizmo;\r
-    private TransformInlineGizmo transformInlineGizmo;\r
-    \r
-    \r
-    //private Straight straight;\r
-    //private PipeControlPoint pcp;\r
-    \r
-    private Resource pcpResource;\r
-    \r
-    private int type;\r
-\r
-    Vector3d prevTranslate = new Vector3d();\r
-    \r
-    Point3d start;\r
-    Point3d end;\r
-    Vector3d dir;\r
-    double istep = 10.0;\r
-    int decimals = 2;\r
-    public TranslateStraightAction(ThreeDimensionalEditorBase parent) {\r
-       super(parent);\r
-        transformGizmo = new TransformGizmo(component.getDisplaySystem().getRenderer());\r
-        transformInlineGizmo = new TransformInlineGizmo(component.getDisplaySystem().getRenderer());\r
-    }\r
-    \r
-    public void init() {\r
-        this.setText("Translate");\r
-        this.setToolTipText("Translate one end of a straight");\r
-        this.setImageDescriptor(Activator.imageDescriptorFromPlugin(Activator.PLUGIN_ID, "icons/translate_d.png"));\r
-    }\r
-    \r
-    @Override\r
-    public boolean usable(Graph graph, List<Resource> resources) {\r
-        if (resources.size() != 1)\r
-            return false;\r
-       \r
-        IEntity r = EntityFactory.create(graph,resources.get(0));\r
-        if (!r.isInstanceOf(ProcessResource.plant3Dresource.VariableLengthInlineComponent)) {\r
-                       return false;\r
-               }\r
-        FixedLengthInlineComponent flic = new FixedLengthInlineComponent(r);\r
-        PipeControlPoint scp = flic.getControlPoint();\r
-        PipeControlPoint start = scp.getPrevious();\r
-        PipeControlPoint end = scp.getNext(); \r
-        \r
-        if (start == null) {\r
-               pcpResource = scp.getResource();\r
-               type = LOOSE;\r
-               return true;\r
-        }\r
-        if (end == null) {\r
-               pcpResource = scp.getResource();\r
-               type = LOOSE;\r
-               return true;\r
-        }\r
-        if (start.isInstanceOf(ProcessResource.plant3Dresource.BranchEndControlPoint)) {\r
-               pcpResource = graph.getObjects(start.getResource(), ProcessResource.plant3Dresource.SubPointOf).iterator().next();\r
-               type = CONNECTED;\r
-               return true;\r
-        }\r
-        if (end.isInstanceOf(ProcessResource.plant3Dresource.BranchEndControlPoint)) {\r
-               pcpResource = graph.getObjects(end.getResource(), ProcessResource.plant3Dresource.SubPointOf).iterator().next();\r
-               type = CONNECTED;\r
-               return true;\r
-        }\r
-       \r
-\r
-        return false;\r
-        \r
-    }\r
-    \r
-    @Override\r
-    public void deactivate() {\r
-       super.deactivate();\r
-        parent.setGizmo(null);\r
-\r
-    }\r
-\r
-    @Override\r
-    public void activate() {\r
-       parent.getSession().syncRead(new GraphRequestAdapter() {\r
-               @Override\r
-               public GraphRequestStatus perform(Graph g) throws Exception {\r
-                       PipeControlPoint pcp = new PipeControlPoint(g,pcpResource);\r
-                       if (type == CONNECTED) {\r
-                   gizmo = transformInlineGizmo;\r
-                   \r
-                   start = new Point3d();\r
-                   end = new Point3d();\r
-                   dir = new Vector3d();\r
-                   //ControlPointTools.getInlineControlPointEnds(pcp, start, end, dir);\r
-                   ControlPointTools.getInlineMovement(pcp, start, end);\r
-                       \r
-                       //PipingTools2.getInlineComponentEnds(ic, start, end);\r
-                    dir.set(end);\r
-                    dir.sub(start);\r
-                    \r
-                   //System.out.println(start + " " + end + " " + dir);\r
-                   Vector3d front = new Vector3d(1.0,0.0,0.0);\r
-                   Vector3d current = new Vector3d(dir);\r
-                   float angle = (float)current.angle(front);\r
-                   AxisAngle4f aa;\r
-                   if (angle < 0.01 || (Math.PI - angle) < 0.01) {\r
-                       aa = new AxisAngle4f();\r
-                   } else {\r
-                       current.normalize();\r
-                       Vector3d right = new Vector3d();\r
-                       right.cross(front, current);\r
-\r
-                       right.normalize();\r
-                       if (right.lengthSquared() < 0.01) {\r
-                           aa = new AxisAngle4f();\r
-                       } else {\r
-                           aa = new AxisAngle4f((float) right.x, (float) right.y, (float) right.z, angle);\r
-                       }\r
-                   }\r
-                   transformInlineGizmo.setRotation(aa);\r
-                   \r
-               } else {\r
-                   gizmo = transformGizmo;\r
-               }\r
-               parent.setGizmo(gizmo);\r
-\r
-               component.getNoShadowRoot().attachChild(gizmo.getNode());\r
-\r
-               updateGizmo(pcp);\r
-               TranslateActionConstraints.addConstraints(new Resource[]{pcpResource}, detector);\r
-               parent.setViewChanged(true);\r
-               \r
-                       return GraphRequestStatus.transactionComplete();\r
-               }\r
-       });\r
-        \r
-    }\r
-    \r
-    \r
-    // FIXME : copy-paste from TranslateInlineAction.getTranslate()\r
-    Vector3d getTranslate() {\r
-        Vector3d translate = new Vector3d();\r
-        Vector3d o = new Vector3d();\r
-        Vector3d d = new Vector3d();\r
-        parent.createPickRay(o, d);\r
-        // Vector3d p = gizmo.getPosition();\r
-        if (((TransformInlineGizmo) gizmo).isSelected()) {\r
-            double s[] = new double[1];\r
-\r
-            Vector3d i1 = new Vector3d();\r
-            Vector3d i2 = new Vector3d();\r
-            s = new double[2];\r
-            MathTools.intersectStraightStraight(start, dir, o, d, i2, i1, s);\r
-            translate.set(dir);\r
-            if (s[0] < 0.0)\r
-                s[0] = 0.0;\r
-            else if (s[0] > 1.0)\r
-                s[0] = 1.0;\r
-            translate.scale(s[0]);\r
-            translate.add(start);\r
-            \r
-            if (useConstraints) {\r
-                Vector3d t = new Vector3d(translate);\r
-                // FIXME : snapped point may be outside of proper range\r
-                Point3d snap = detector.getPointSnap2(t, dir);\r
-                if (snap != null) {\r
-                    translate = new Vector3d(snap);\r
-                }\r
-            }\r
-\r
-            return translate;\r
-        }\r
-        return null;\r
-    }\r
-    // FIXME : copy-paste from TranslateAction.getTranslate(Vector3d v)\r
-    Vector3d getTranslate(PipeControlPoint pcp, Vector3d offset) {\r
-        Vector3d translate = new Vector3d();\r
-        Vector3d o = new Vector3d();\r
-        Vector3d d = new Vector3d();\r
-        parent.createPickRay(o, d);\r
-        Vector3d p = ((TransformGizmo)gizmo).getPosition();\r
-        Vector3d dir = null;\r
-        switch (((TransformGizmo)gizmo).getSelected()) {\r
-        case TransformGizmo.XYZ :\r
-            Vector3d normal = camera.getUnNormalizedHeading();\r
-            normal.normalize();\r
-            double s[] = new double[1];\r
-            Vector3d r = new Vector3d();\r
-            if (MathTools.intersectStraightPlane(o, d, p, normal, r)) {\r
-                r.sub(p);\r
-                translate.x = r.x;\r
-                translate.y = r.y;\r
-                translate.z = r.z;\r
-            }\r
-            break;\r
-        case TransformGizmo.X :\r
-            dir = new Vector3d(1.0,0.0,0.0);\r
-            Vector3d i1 = new Vector3d();\r
-            Vector3d i2 = new Vector3d();\r
-            s = new double[2];\r
-            MathTools.intersectStraightStraight( p, dir,o, d, i2, i1,s);\r
-            translate.x = s[0];\r
-            \r
-            break;\r
-        case TransformGizmo.Y :\r
-            dir = new Vector3d(0.0,1.0,0.0);\r
-            i1 = new Vector3d();\r
-            i2 = new Vector3d();\r
-            s = new double[2];\r
-            MathTools.intersectStraightStraight( p, dir,o, d, i2, i1,s);\r
-            translate.y = s[0];\r
-            break;\r
-        case TransformGizmo.Z :\r
-            dir = new Vector3d(0.0,0.0,1.0);\r
-            i1 = new Vector3d();\r
-            i2 = new Vector3d();\r
-            s = new double[2];\r
-            MathTools.intersectStraightStraight( p, dir,o, d, i2, i1,s);\r
-            translate.z = s[0];\r
-            break;\r
-        case TransformGizmo.XY :\r
-            normal = new Vector3d(0.0,0.0,1.0);\r
-            s = new double[1];\r
-            r = new Vector3d();\r
-            if (MathTools.intersectStraightPlane(o, d, p, normal, r)) {\r
-                r.sub(p);\r
-                translate.x = r.x;\r
-                translate.y = r.y;\r
-            }\r
-            break;\r
-        case TransformGizmo.XZ :\r
-            normal = new Vector3d(0.0,1.0,0.0);\r
-            s = new double[1];\r
-            r = new Vector3d();\r
-            if (MathTools.intersectStraightPlane(o, d, p, normal, r)) {\r
-                r.sub(p);\r
-                translate.x = r.x;\r
-                translate.z = r.z;\r
-            }\r
-            break;\r
-        case TransformGizmo.YZ :\r
-            normal = new Vector3d(1.0,0.0,0.0);\r
-            s = new double[1];\r
-            r = new Vector3d();\r
-            if (MathTools.intersectStraightPlane(o, d, p, normal, r)) {\r
-                r.sub(p);\r
-                translate.y = r.y;\r
-                translate.z = r.z;\r
-            }\r
-            break;\r
-        default :\r
-            \r
-            return null;\r
-        }\r
-        //System.out.println(translate + " " + offset);\r
-        translate.sub(offset);\r
-        \r
-        if (useConstraints) {\r
-            switch (((TransformGizmo)gizmo).getSelected()) {\r
-            case TransformGizmo.X:\r
-            case TransformGizmo.Y:\r
-            case TransformGizmo.Z:\r
-                Vector3d t = new Vector3d(translate);\r
-                // TODO : to the test against all translated objects and snap to closest one\r
-                Point3d pos = G3DTools.getPoint(pcp.getLocalPosition());\r
-                t.add(pos);\r
-                Point3d snap = detector.getPointSnap2(t, dir);\r
-                if (snap != null) {\r
-                   // System.out.print("t: " + translate);\r
-                    translate = new Vector3d(snap);\r
-                    translate.sub(pos);\r
-                   // System.out.println(" " + translate);\r
-                }\r
-                break;\r
-                \r
-            }\r
-        }\r
-        //System.out.println(translate);\r
-        return translate;\r
-    }\r
-    \r
-    \r
-    \r
-    @Override\r
-    public void doChanges(Graph graph) throws Exception {\r
-       PipeControlPoint pcp = new PipeControlPoint(graph, pcpResource); \r
-        if (input.mousePressed()) {\r
-            if (type == LOOSE)\r
-                prevTranslate = getTranslate(pcp,new Vector3d());\r
-            \r
-        }\r
-        if (input.mouseClicked()) {\r
-            //System.out.println("end");\r
-            end();\r
-            return;\r
-        }\r
-        if (!input.mouseDragged()) {\r
-            parent.getDefaultAction().update();\r
-            return;\r
-        } \r
-        detector.clearConstraintHighlights();\r
-        parent.setViewChanged(true);\r
-        \r
-        \r
-        Vector3d translate;\r
-        if (type == CONNECTED)\r
-            translate = getTranslate();\r
-        else\r
-            translate = getTranslate(pcp,prevTranslate);\r
-       \r
-        if (translate == null) {\r
-            //cameraRotateAction.update();\r
-            parent.getDefaultAction().update();\r
-            updateGizmo(pcp);\r
-            return;\r
-        }\r
-\r
-        String text = "";\r
-        \r
-        if (type == CONNECTED) {\r
-                G3DTools.setTuple3(pcp.getWorldPosition(), translate);\r
-                // mo.setLocalTranslation(translate);\r
-                //text += GraphicsNodeTools.getWorldTranslation(mo.getGraphicsNode()) + " " + translate;// mo.getWorldPosition()\r
-                if (useConstraints)\r
-                    text+=detector.getSnapString();\r
-\r
-        } else {\r
-                G3DTools.addTuple3(pcp.getWorldPosition(), translate);\r
-               // mo.modifyWorldTranslation(translate);\r
-                //text += GraphicsNodeTools.getWorldTranslation(mo.getGraphicsNode()) + " ";//mo.getWorldPosition() + " ";\r
-            if (useConstraints)\r
-                text+=detector.getSnapString();\r
-            \r
-        }\r
-        \r
-        setInfoText(text);\r
-        updateGizmo(pcp);\r
-\r
-    }\r
-    \r
-    protected void updateGizmo(PipeControlPoint pcp) {\r
-               gizmo.update(G3DTools.getVector(pcp.getWorldPosition()), camera.getCameraPos(), component);\r
-    }\r
-    \r
-    public void setInfoText(String text) {\r
-       \r
-    }\r
-\r
-}
\ No newline at end of file