]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.plant3d/src/org/simantics/plant3d/gizmo/TerminalSelectionGizmo.java
Using SWT thread with Plant3d
[simantics/3d.git] / org.simantics.plant3d / src / org / simantics / plant3d / gizmo / TerminalSelectionGizmo.java
index 422e022a95db65dfb96ba84b373971699ec92fa4..f194c8dbbbfa3c82923ca77ddb178d954af7b371 100644 (file)
@@ -10,11 +10,10 @@ import javax.vecmath.Vector3d;
 
 import org.simantics.g3d.scenegraph.RenderListener;
 import org.simantics.g3d.tools.PluginTools;
-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.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.PositionType;
 
@@ -46,10 +45,10 @@ public class TerminalSelectionGizmo extends vtkGizmo {
        Vector3d prev = new Vector3d();
        Vector3d next = new Vector3d();
        
-       InteractiveVtkPanel panel;
+       VtkView panel;
        
        private RenderListener listener;
-       public TerminalSelectionGizmo(InteractiveVtkPanel panel) {
+       public TerminalSelectionGizmo(VtkView panel) {
                this.panel = panel;
                this.listener = new RenderListener() {
                        
@@ -78,8 +77,13 @@ public class TerminalSelectionGizmo extends vtkGizmo {
                };
        }
        
+       vtkRenderer getRenderer() {
+               return panel.getRenderer();
+       }
+       
+       
        @Override
-       public void attach(Object renderingPart) {
+       public void attach(VtkView renderingPart) {
                if (nextProp == null) {
                        loadData();
                        
@@ -107,26 +111,29 @@ public class TerminalSelectionGizmo extends vtkGizmo {
        }
        
        protected void attachActors() {
+               panel.lock();
                vtkRenderer ren = getRenderer();
                if (showPrev) {
-                       ren.AddActor(prevProp);
+                       ren.AddActor2D(prevProp);
                }
                if (showNext) {
-                       ren.AddActor(nextProp);
+                       ren.AddActor2D(nextProp);
                }
                if (showMiddle) {
-                       ren.AddActor(middleProp);
+                       ren.AddActor2D(middleProp);
                }
-               
+               panel.unlock();
        }
        
        @Override
        protected void deattachActors() {
                panel.removeListener(listener);
+               panel.lock();
                vtkRenderer ren = getRenderer();
                ren.RemoveActor(prevProp);
                ren.RemoveActor(nextProp);
                ren.RemoveActor(middleProp);
+               panel.unlock();
        }
        
        public void setComponent(PipelineComponent component, Set<PositionType> allowed) {
@@ -149,10 +156,11 @@ public class TerminalSelectionGizmo extends vtkGizmo {
                        throw new RuntimeException("Cannot resolve required image files.");
                
                vtkPoints points = new vtkPoints();
-               points.InsertNextPoint(-8, -8, 0.0);
-               points.InsertNextPoint( 8, -8, 0.0);
-               points.InsertNextPoint( 8,  8, 0.0);
-               points.InsertNextPoint(-8,  8, 0.0);
+               double pw = 8;
+               points.InsertNextPoint(-pw, -pw, 0.0);
+               points.InsertNextPoint( pw, -pw, 0.0);
+               points.InsertNextPoint( pw,  pw, 0.0);
+               points.InsertNextPoint(-pw,  pw, 0.0);
                
                
                vtkCellArray cellArray = new vtkCellArray();
@@ -195,7 +203,7 @@ public class TerminalSelectionGizmo extends vtkGizmo {
                plusTex.SetInterpolate(1);
                
                vtkPolyDataMapper2D mapper = new vtkPolyDataMapper2D();
-               mapper.SetInput(quad);
+               mapper.SetInputData(quad);
 
                nextProp = new vtkTexturedActor2D();
                prevProp = new vtkTexturedActor2D();
@@ -214,6 +222,15 @@ public class TerminalSelectionGizmo extends vtkGizmo {
                middleProp.SetPickable(1);
                
                
+               middleProp.SetWidth(pw);
+               middleProp.SetHeight(pw);
+               
+               prevProp.SetWidth(pw);
+               prevProp.SetHeight(pw);
+               
+               nextProp.SetWidth(pw);
+               nextProp.SetHeight(pw);
+               
                plusReader.GetOutputPort().Delete();
                plusReader.Delete();
                middleReader.GetOutputPort().Delete();