]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/gizmo/SplitPointSelectionGizmo.java
Allow adding adjustable length components in the middle of a pipe
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / gizmo / SplitPointSelectionGizmo.java
index 336fdbd56fbd2ea3311e82158607cef4d91fdc98..e5d83fb0da7202fa8fd056580da988cebacb0f37 100644 (file)
@@ -1,7 +1,5 @@
 package org.simantics.plant3d.gizmo;
 
-import java.awt.event.MouseEvent;
-import java.awt.event.MouseMotionListener;
 import java.util.ArrayList;
 import java.util.Collection;
 
@@ -11,6 +9,7 @@ import javax.vecmath.Tuple3d;
 import javax.vecmath.Vector2d;
 import javax.vecmath.Vector3d;
 
+import org.eclipse.swt.events.MouseMoveListener;
 import org.simantics.g3d.math.MathTools;
 import org.simantics.g3d.math.Ray;
 import org.simantics.g3d.scenegraph.RenderListener;
@@ -18,9 +17,10 @@ import org.simantics.g3d.shape.Color4d;
 import org.simantics.g3d.shape.Cone;
 import org.simantics.g3d.shape.Cylinder;
 import org.simantics.g3d.shape.Mesh;
-import org.simantics.g3d.vtk.common.InteractiveVtkPanel;
+import org.simantics.g3d.vtk.common.VtkView;
 import org.simantics.g3d.vtk.gizmo.vtkGizmo;
 import org.simantics.g3d.vtk.shape.MeshActor;
+import org.simantics.g3d.vtk.swt.InteractiveVtkComposite;
 import org.simantics.g3d.vtk.utils.vtkUtil;
 
 import vtk.vtkProp;
@@ -29,9 +29,10 @@ public class SplitPointSelectionGizmo extends vtkGizmo {
        
        MeshActor actor;
        
-       InteractiveVtkPanel panel;
+       VtkView panel;
        private RenderListener listener;
-       private MouseMotionListener mouseListener;
+       //private MouseMotionListener mouseListener;
+       private MouseMoveListener mouseListener;
        
        Point3d start;
        Point3d end;
@@ -44,7 +45,7 @@ public class SplitPointSelectionGizmo extends vtkGizmo {
        
        Tuple3d splitPoint = null;
        
-       public SplitPointSelectionGizmo(InteractiveVtkPanel panel) {
+       public SplitPointSelectionGizmo(VtkView panel) {
                this.panel = panel;
                
                int res = 16;
@@ -61,11 +62,12 @@ public class SplitPointSelectionGizmo extends vtkGizmo {
                
                actor = new MeshActor();
                actor.setMesh(tube_x);
+               panel.addDeletable(actor);
                
                this.listener = new RenderListener() {
                        @Override
                        public void preRender() {
-                               Ray ray = vtkUtil.createMouseRay(getRenderer(), mousePos.x, mousePos.y);
+                               Ray ray = vtkUtil.createMouseRay(SplitPointSelectionGizmo.this.panel.getRenderer(), mousePos.x, mousePos.y);
                                //ray.dir.add(ray.pos);
                                //if (MathTools.intersectLineLine(start, end, ray.pos, ray.dir, pa, pb)) {
                                double mu[] = new double[2];
@@ -97,20 +99,30 @@ public class SplitPointSelectionGizmo extends vtkGizmo {
                        }
                };
                
-               this.mouseListener = new MouseMotionListener() {
+//             this.mouseListener = new MouseMotionListener() {
+//                     
+//                     @Override
+//                     public void mouseMoved(MouseEvent e) {
+//                             mousePos.x = e.getX();
+//                             mousePos.y = e.getY();
+//                             SplitPointSelectionGizmo.this.panel.refresh();
+//                     }
+//                     
+//                     @Override
+//                     public void mouseDragged(MouseEvent e) {
+//                             mousePos.x = e.getX();
+//                             mousePos.y = e.getY();
+//                             SplitPointSelectionGizmo.this.panel.refresh();
+//                     }
+//             };
+               this.mouseListener = new MouseMoveListener() {
                        
                        @Override
-                       public void mouseMoved(MouseEvent e) {
-                               mousePos.x = e.getX();
-                               mousePos.y = e.getY();
-                               SplitPointSelectionGizmo.this.panel.repaint();
-                       }
-                       
-                       @Override
-                       public void mouseDragged(MouseEvent e) {
-                               mousePos.x = e.getX();
-                               mousePos.y = e.getY();
-                               SplitPointSelectionGizmo.this.panel.repaint();
+                       public void mouseMove(org.eclipse.swt.events.MouseEvent e) {
+                               mousePos.x = e.x;
+                               mousePos.y = e.y;
+                               SplitPointSelectionGizmo.this.panel.refresh();
+                               
                        }
                };
 
@@ -124,16 +136,19 @@ public class SplitPointSelectionGizmo extends vtkGizmo {
        }
        
        @Override
-       public void attach(Object renderingPart) {
+       public void attach(VtkView renderingPart) {
                super.attach(renderingPart);
                panel.addListener(listener);
-               panel.addMouseMotionListener(mouseListener);
+               // FIXME
+               //panel.addMouseMotionListener(mouseListener);
+               ((InteractiveVtkComposite)panel).getComponent().addMouseMoveListener(mouseListener);
        }
        
        @Override
        public void deattach() {
                panel.removeListener(listener);
-               panel.removeMouseMotionListener(mouseListener);
+               // FIXME
+               //panel.removeMouseMotionListener(mouseListener);
                super.deattach();
        }