package org.simantics.g3d.vtk.gizmo; import java.util.ArrayList; import java.util.Collection; import java.util.List; import javax.vecmath.Point3d; import org.simantics.g3d.vtk.action.TranslateAction; import org.simantics.g3d.vtk.shape.vtkShape; import vtk.vtkActor; import vtk.vtkProp; public class TranslateAxisGizmo extends vtkGizmo{ private List parts = new ArrayList(); int type = -1; @Override public Collection getGizmo() { for (vtkProp p : parts) p.Delete(); parts.clear(); double l = 100; double w = 3; switch (type) { case TranslateAction.X:{ vtkActor lineActorX = vtkShape.createLineActor(new Point3d(-l,0,0), new Point3d(l,0,0)); lineActorX.GetProperty().SetColor(1, 0, 0); lineActorX.GetProperty().SetLineWidth(w); lineActorX.GetProperty().Delete(); parts.add(lineActorX); break; } case TranslateAction.Y: { vtkActor lineActorY = vtkShape.createLineActor(new Point3d(0,-l,0), new Point3d(0,l,0)); lineActorY.GetProperty().SetColor(0, 1, 0); lineActorY.GetProperty().SetLineWidth(w); lineActorY.GetProperty().Delete(); parts.add(lineActorY); break; } case TranslateAction.Z: { vtkActor lineActorZ = vtkShape.createLineActor(new Point3d(0,0,-l), new Point3d(0,0,l)); lineActorZ.GetProperty().SetColor(0, 0, 1); lineActorZ.GetProperty().SetLineWidth(w); lineActorZ.GetProperty().Delete(); parts.add(lineActorZ); break; } case TranslateAction.XY: { vtkActor lineActorX = vtkShape.createLineActor(new Point3d(-l,0,0), new Point3d(l,0,0)); lineActorX.GetProperty().SetColor(1, 0, 0); lineActorX.GetProperty().SetLineWidth(w); lineActorX.GetProperty().Delete(); parts.add(lineActorX); vtkActor lineActorY = vtkShape.createLineActor(new Point3d(0,-l,0), new Point3d(0,l,0)); lineActorY.GetProperty().SetColor(0, 1, 0); lineActorY.GetProperty().SetLineWidth(w); lineActorY.GetProperty().Delete(); parts.add(lineActorY); break; } case TranslateAction.XZ: { vtkActor lineActorX = vtkShape.createLineActor(new Point3d(-l,0,0), new Point3d(l,0,0)); lineActorX.GetProperty().SetColor(1, 0, 0); lineActorX.GetProperty().Delete(); parts.add(lineActorX); vtkActor lineActorZ = vtkShape.createLineActor(new Point3d(0,0,-l), new Point3d(0,0,l)); lineActorZ.GetProperty().SetColor(0, 0, 1); lineActorZ.GetProperty().Delete(); parts.add(lineActorZ); break; } case TranslateAction.YZ: { vtkActor lineActorY = vtkShape.createLineActor(new Point3d(0,-l,0), new Point3d(0,l,0)); lineActorY.GetProperty().SetColor(0, 1, 0); lineActorY.GetProperty().SetLineWidth(w); lineActorY.GetProperty().Delete(); parts.add(lineActorY); vtkActor lineActorZ = vtkShape.createLineActor(new Point3d(0,0,-l), new Point3d(0,0,l)); lineActorZ.GetProperty().SetColor(0, 0, 1); lineActorZ.GetProperty().SetLineWidth(w); lineActorZ.GetProperty().Delete(); parts.add(lineActorZ); break; } default: { } } return parts; } public void setType(int type) { if (this.type == type) return; this.type = type; if (getRenderer() != null) { deattachActors(); attachActors(); } } }