]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/actions/AddComponentAction.java
Using SWT thread with Plant3d
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / actions / AddComponentAction.java
index 4c116c1f26efb73d9453e850e299a43cb89992f9..5aaa9c71d646c1e5d4499e6ae71b323407edb3ca 100644 (file)
@@ -10,8 +10,8 @@ import javax.vecmath.Vector3d;
 import org.eclipse.swt.widgets.Display;
 import org.simantics.g3d.scenegraph.NodeMap;
 import org.simantics.g3d.scenegraph.base.INode;
-import org.simantics.g3d.vtk.action.vtkAction;
-import org.simantics.g3d.vtk.common.InteractiveVtkPanel;
+import org.simantics.g3d.vtk.swt.InteractiveVtkComposite;
+import org.simantics.g3d.vtk.swt.vtkSwtAction;
 import org.simantics.plant3d.Activator;
 import org.simantics.plant3d.dialog.ComponentSelectionDialog;
 import org.simantics.plant3d.gizmo.TerminalSelectionGizmo;
@@ -26,13 +26,12 @@ import org.simantics.plant3d.scenegraph.controlpoint.PipingRules;
 import org.simantics.plant3d.utils.ComponentUtils;
 import org.simantics.plant3d.utils.Item;
 import org.simantics.plant3d.utils.Item.Type;
-import org.simantics.utils.threads.AWTThread;
 import org.simantics.utils.threads.ThreadUtils;
 import org.simantics.utils.ui.ExceptionUtils;
 
 import vtk.vtkProp;
 
-public class AddComponentAction extends vtkAction {
+public class AddComponentAction extends vtkSwtAction {
        
 
        private P3DRootNode root;
@@ -45,7 +44,7 @@ public class AddComponentAction extends vtkAction {
        
        private Item toAdd = null;
        
-       public AddComponentAction(InteractiveVtkPanel panel, P3DRootNode root) {
+       public AddComponentAction(InteractiveVtkComposite panel, P3DRootNode root) {
                super(panel);
                this.root = root;
                setText("Add Component");
@@ -90,14 +89,14 @@ public class AddComponentAction extends vtkAction {
                allowed = dialog.filterAllowed();
                gizmo.setComponent(component, allowed);
                super.run();
-               panel.repaint();
+               panel.refresh();
        }
        
        @Override
-       public void keyPressed(KeyEvent e) {
+       public boolean keyPressed(KeyEvent e) {
                if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
                        panel.useDefaultAction();
-               
+               return true;
                
        }
        
@@ -106,7 +105,7 @@ public class AddComponentAction extends vtkAction {
                        return;
                
                super.attach();
-               ThreadUtils.asyncExec(AWTThread.getThreadAccess(), new Runnable() {
+               ThreadUtils.asyncExec(panel.getThreadQueue(), new Runnable() {
                        public void run() {
                                attachUI();
                        }
@@ -120,12 +119,12 @@ public class AddComponentAction extends vtkAction {
                nodeMap.commit();
                deattachUI();
                super.deattach();
-               panel.repaint();
+               panel.refresh();
        }
        
        private void attachUI() {
                //panel.setCursor(activeCursor);
-               gizmo.attach(panel.GetRenderer());
+               gizmo.attach(panel);
        }
        
        private void deattachUI() {
@@ -134,23 +133,23 @@ public class AddComponentAction extends vtkAction {
        }
        
        @Override
-       public void mouseMoved(MouseEvent e) {
-               panel.getDefaultAction().mouseMoved(e);
+       public boolean mouseMoved(MouseEvent e) {
+               return getDefaultAction().mouseMoved(e);
        }
        
        @Override
-       public void mousePressed(MouseEvent e) {
-               panel.getDefaultAction().mousePressed(e);
+       public boolean mousePressed(MouseEvent e) {
+               return getDefaultAction().mousePressed(e);
        }
 
        @Override
-       public void mouseReleased(MouseEvent e) {
-               panel.getDefaultAction().mouseReleased(e);
+       public boolean mouseReleased(MouseEvent e) {
+               return getDefaultAction().mouseReleased(e);
        }
        
        @Override
-       public void mouseDragged(MouseEvent e) {
-               panel.getDefaultAction().mouseDragged(e);
+       public boolean mouseDragged(MouseEvent e) {
+               return getDefaultAction().mouseDragged(e);
        }
        
        public void doInsert(PositionType position) {
@@ -253,19 +252,21 @@ public class AddComponentAction extends vtkAction {
                }
        }
        
-       public void mouseClicked(MouseEvent e) {
+       public boolean mouseClicked(MouseEvent e) {
                if (e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON1) {
                        int type = panel.getPickType();
-                       panel.setPickType(0);
+                       //panel.setPickType(0);
+                       panel.setPickType(5);
                        vtkProp[] picked = panel.pick(e.getX(), e.getY());
                        panel.setPickType(type);
                        PositionType position = gizmo.getPickedPosition(picked);
+
                        if (position != null) {
                                doInsert(position);
                                panel.useDefaultAction();
-                               return;
+                               return true;
                        }
                } 
-               panel.getDefaultAction().mouseClicked(e);
+               return getDefaultAction().mouseClicked(e);
        }
 }