]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/shape/axesActor.java
vtk 8.2.0 API changes
[simantics/3d.git] / org.simantics.g3d.vtk / src / org / simantics / g3d / vtk / shape / axesActor.java
index 1b1a6150eef6da6d0b57d5f7228c04f0c9fe75bc..7bc9fbbbfdc21774b32718f09c484484a14d862c 100644 (file)
-/*******************************************************************************\r
- * Copyright (c) 2012, 2013 Association for Decentralized Information Management in\r
- * Industry THTH ry.\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.g3d.vtk.shape;\r
-\r
-import javax.vecmath.Matrix4d;\r
-import javax.vecmath.Point3d;\r
-\r
-import org.simantics.g3d.math.MathTools;\r
-import org.simantics.utils.threads.AWTThread;\r
-import org.simantics.utils.threads.ThreadUtils;\r
-\r
-import vtk.vtkActor;\r
-import vtk.vtkAssembly;\r
-import vtk.vtkAxes;\r
-import vtk.vtkConeSource;\r
-import vtk.vtkLinearTransform;\r
-import vtk.vtkMatrix4x4;\r
-import vtk.vtkPolyDataMapper;\r
-import vtk.vtkProp3D;\r
-import vtk.vtkRenderer;\r
-import vtk.vtkTextActor;\r
-import vtk.vtkTubeFilter;\r
-\r
-public class axesActor extends vtkAssembly implements IvtkVisualObject{\r
-\r
-       private vtkRenderer ren;\r
-       private double axisLength = 0.8;\r
-       private vtkTextActor xactor, yactor, zactor;\r
-       private vtkActor tubeActor;\r
-       private vtkActor xconeActor;\r
-       private vtkActor yconeActor;\r
-       private vtkActor zconeActor;\r
-       private boolean rendered = false;\r
-\r
-       public axesActor(vtkRenderer _ren) {\r
-               super();\r
-               ren = _ren;\r
-               createAxes();\r
-       }\r
-       \r
-       public axesActor(vtkRenderer _ren, double axisLength) {\r
-               super();\r
-               ren = _ren;\r
-               this.axisLength = axisLength;\r
-               createAxes();\r
-       }\r
-\r
-       public void createAxes() {\r
-               vtkAxes axes = new vtkAxes();\r
-               axes.SetOrigin(0, 0, 0);\r
-               axes.SetScaleFactor(axisLength);\r
-\r
-               xactor = new vtkTextActor();\r
-               yactor = new vtkTextActor();\r
-               zactor = new vtkTextActor();\r
-\r
-               xactor.SetInput("X");\r
-               yactor.SetInput("Y");\r
-               zactor.SetInput("Z");\r
-\r
-//             xactor.SetTextScaleModeToViewport();\r
-//             yactor.SetTextScaleModeToViewport();\r
-//             zactor.SetTextScaleModeToViewport();\r
-               xactor.SetTextScaleModeToNone();\r
-               yactor.SetTextScaleModeToNone();\r
-               zactor.SetTextScaleModeToNone();\r
-               \r
-               xactor.GetTextProperty().SetColor(0.0, 0.0, 0.0);\r
-               xactor.GetTextProperty().ShadowOff();\r
-               xactor.GetTextProperty().ItalicOff();\r
-               xactor.GetTextProperty().BoldOff();\r
-\r
-               yactor.GetTextProperty().SetColor(0.0, 0.0, 0.0);\r
-               yactor.GetTextProperty().ShadowOff();\r
-               yactor.GetTextProperty().ItalicOff();\r
-               yactor.GetTextProperty().BoldOff();\r
-\r
-               zactor.GetTextProperty().SetColor(0.0, 0.0, 0.0);\r
-               zactor.GetTextProperty().ShadowOff();\r
-               zactor.GetTextProperty().ItalicOff();\r
-               zactor.GetTextProperty().BoldOff();\r
-               \r
-               xactor.GetTextProperty().Delete();\r
-               yactor.GetTextProperty().Delete();\r
-               zactor.GetTextProperty().Delete();\r
-\r
-               xactor.SetMaximumLineHeight(0.25);\r
-               yactor.SetMaximumLineHeight(0.25);\r
-               zactor.SetMaximumLineHeight(0.25);\r
-               \r
-               xactor.SetPickable(0);\r
-               yactor.SetPickable(0);\r
-               zactor.SetPickable(0);\r
-\r
-               vtkTubeFilter tube = new vtkTubeFilter();\r
-               tube.SetInput(axes.GetOutput());\r
-               tube.SetRadius(0.05 * axisLength);\r
-               tube.SetNumberOfSides(8);\r
-\r
-               vtkPolyDataMapper tubeMapper = new vtkPolyDataMapper();\r
-               tubeMapper.SetInput(tube.GetOutput());\r
-\r
-               tubeActor = new vtkActor();\r
-               tubeActor.SetMapper(tubeMapper);\r
-               tubeActor.PickableOff();\r
-\r
-               int coneRes = 12;\r
-               double coneScale = 0.3 * axisLength;\r
-\r
-               // --- x-Cone\r
-               vtkConeSource xcone = new vtkConeSource();\r
-               xcone.SetResolution(coneRes);\r
-               vtkPolyDataMapper xconeMapper = new vtkPolyDataMapper();\r
-               xconeMapper.SetInput(xcone.GetOutput());\r
-               xconeActor = new vtkActor();\r
-               xconeActor.SetMapper(xconeMapper);\r
-               xconeActor.GetProperty().SetColor(1, 0, 0);\r
-               xconeActor.SetScale(coneScale, coneScale, coneScale);\r
-               xconeActor.SetPosition(axisLength, 0.0, 0.0);\r
-               xconeActor.SetPickable(0);\r
-\r
-               // --- y-Cone\r
-               vtkConeSource ycone = new vtkConeSource();\r
-               ycone.SetResolution(coneRes);\r
-               vtkPolyDataMapper yconeMapper = new vtkPolyDataMapper();\r
-               yconeMapper.SetInput(ycone.GetOutput());\r
-               yconeActor = new vtkActor();\r
-               yconeActor.SetMapper(yconeMapper);\r
-               yconeActor.GetProperty().SetColor(1, 1, 0);\r
-               yconeActor.RotateZ(90);\r
-               yconeActor.SetScale(coneScale, coneScale, coneScale);\r
-               yconeActor.SetPosition(0.0, axisLength, 0.0);\r
-               yconeActor.SetPickable(0);\r
-\r
-               // --- z-Cone\r
-               vtkConeSource zcone = new vtkConeSource();\r
-               zcone.SetResolution(coneRes);\r
-               vtkPolyDataMapper zconeMapper = new vtkPolyDataMapper();\r
-               zconeMapper.SetInput(zcone.GetOutput());\r
-               zconeActor = new vtkActor();\r
-               zconeActor.SetMapper(zconeMapper);\r
-               zconeActor.GetProperty().SetColor(0, 1, 0);\r
-               zconeActor.RotateY(-90);\r
-               zconeActor.SetScale(coneScale, coneScale, coneScale);\r
-               zconeActor.SetPosition(0.0, 0.0, axisLength);\r
-               zconeActor.SetPickable(0);\r
-\r
-               \r
-               this.AddPart(tubeActor);\r
-               this.AddPart(xconeActor);\r
-               this.AddPart(yconeActor);\r
-               this.AddPart(zconeActor);\r
-               \r
-               tube.GetOutput().Delete();\r
-               xcone.GetOutput().Delete();\r
-               ycone.GetOutput().Delete();\r
-               zcone.GetOutput().Delete();\r
-               axes.GetOutput().Delete();\r
-               axes.Delete();\r
-               tubeMapper.Delete();\r
-               tube.Delete();\r
-               xcone.Delete();\r
-               ycone.Delete();\r
-               zcone.Delete();\r
-               xconeMapper.Delete();\r
-               yconeMapper.Delete();\r
-               zconeMapper.Delete();\r
-               \r
-               xconeActor.GetProperty().Delete();\r
-               yconeActor.GetProperty().Delete();\r
-               zconeActor.GetProperty().Delete();\r
-       }\r
-       \r
-       public void addToRenderer() {\r
-               if (rendered)\r
-                       return;\r
-               rendered = true;\r
-               \r
-               ren.AddActor2D(xactor);\r
-               ren.AddActor2D(yactor);\r
-               ren.AddActor2D(zactor);\r
-               \r
-               \r
-               ren.AddActor(this);\r
-       }\r
-       \r
-       public void removeFromRenderer() {\r
-               if (!rendered)\r
-                       return;\r
-               rendered = false;\r
-               ren.RemoveActor2D(xactor);\r
-               ren.RemoveActor2D(yactor);\r
-               ren.RemoveActor2D(zactor);\r
-               ren.RemoveActor(this);\r
-       }\r
-       \r
-       public boolean isRendered() {\r
-               return rendered;\r
-       }\r
-\r
-       public void setAxesVisibility(boolean ison) {\r
-               this.SetVisibility(ison ? 1 : 0);\r
-               xactor.SetVisibility(ison ? 1 : 0);\r
-               yactor.SetVisibility(ison ? 1 : 0);\r
-               zactor.SetVisibility(ison ? 1 : 0);\r
-       }\r
-       \r
-       private boolean labelVisible = true;\r
-       \r
-       public void setLabelVisibility(boolean ison) {\r
-               xactor.SetVisibility(ison ? 1 : 0);\r
-               yactor.SetVisibility(ison ? 1 : 0);\r
-               zactor.SetVisibility(ison ? 1 : 0);\r
-               labelVisible = ison;\r
-               if (labelVisible)\r
-                       updateTextLoc();\r
-       }\r
-       \r
-       Matrix4d m = new Matrix4d();\r
-       double mat[] = new double[16];\r
-       Point3d x = new Point3d();\r
-       Point3d y = new Point3d();\r
-       Point3d z = new Point3d();\r
-       \r
-       private void updateTextLoc() {\r
-               if (!labelVisible)\r
-                       return;\r
-               xactor.GetPositionCoordinate().SetCoordinateSystemToWorld();\r
-               yactor.GetPositionCoordinate().SetCoordinateSystemToWorld();\r
-               zactor.GetPositionCoordinate().SetCoordinateSystemToWorld();\r
-               \r
-               GetMatrix(mat);\r
-               MathTools.set(m, mat);\r
-               x.set(axisLength, 0,0);\r
-               y.set(0,axisLength, 0);\r
-               z.set(0,0,axisLength);\r
-               \r
-               m.transform(x);\r
-               m.transform(y);\r
-               m.transform(z);\r
-               xactor.GetPositionCoordinate().SetValue(x.x, x.y, x.z);\r
-               yactor.GetPositionCoordinate().SetValue(y.x, y.y, y.z);\r
-               zactor.GetPositionCoordinate().SetValue(z.x, z.y, z.z);\r
-               \r
-               xactor.GetPositionCoordinate().Delete();\r
-               yactor.GetPositionCoordinate().Delete();\r
-               zactor.GetPositionCoordinate().Delete();\r
-       }\r
-       \r
-       @Override\r
-       public void SetPickable(int id0) {\r
-               super.SetPickable(id0);\r
-               tubeActor.SetPickable(id0);\r
-               xconeActor.SetPickable(id0);\r
-               yconeActor.SetPickable(id0);\r
-               zconeActor.SetPickable(id0);\r
-\r
-       }\r
-       \r
-       @Override\r
-       public void SetOrientation(double id0, double id1, double id2) {\r
-               super.SetOrientation(id0, id1, id2);\r
-               updateTextLoc();\r
-       }\r
-       \r
-       @Override\r
-       public void RotateWXYZ(double id0, double id1, double id2, double id3) {\r
-               super.RotateWXYZ(id0, id1, id2, id3);\r
-               updateTextLoc();\r
-       }\r
-       \r
-       @Override\r
-       public void SetPosition(double[] id0) {\r
-               super.SetPosition(id0);\r
-               updateTextLoc();\r
-       }\r
-       \r
-       @Override\r
-       public void SetPosition(double id0, double id1, double id2) {\r
-               super.SetPosition(id0, id1, id2);\r
-               updateTextLoc();\r
-       }\r
-       \r
-       @Override\r
-       public void SetOrientation(double[] id0) {\r
-               super.SetOrientation(id0);\r
-               updateTextLoc();\r
-       }\r
-       \r
-       @Override\r
-       public void SetScale(double id0) {\r
-               super.SetScale(id0);\r
-               updateTextLoc();\r
-       }\r
-       \r
-       @Override\r
-       public void SetScale(double id0, double id1, double id2) {\r
-               super.SetScale(id0, id1, id2);\r
-               updateTextLoc();\r
-       }\r
-       \r
-       @Override\r
-       public void SetScale(double[] id0) {\r
-               super.SetScale(id0);\r
-               updateTextLoc();\r
-       }\r
-       \r
-       @Override\r
-       public void SetUserMatrix(vtkMatrix4x4 id0) {\r
-               super.SetUserMatrix(id0);\r
-               updateTextLoc();\r
-       }\r
-       \r
-       @Override\r
-       public void SetUserTransform(vtkLinearTransform id0) {\r
-               super.SetUserTransform(id0);\r
-               updateTextLoc();\r
-       }\r
-       \r
-       @Override\r
-       public void Delete() {\r
-               ren.RemoveActor(xactor);\r
-               ren.RemoveActor(yactor);\r
-               ren.RemoveActor(zactor);\r
-               ren.RemoveActor(tubeActor);\r
-               ren.RemoveActor(xconeActor);\r
-               ren.RemoveActor(yconeActor);\r
-               ren.RemoveActor(xconeActor);\r
-               xactor.Delete();\r
-               yactor.Delete();\r
-               zactor.Delete();\r
-               tubeActor.Delete();\r
-               xconeActor.Delete();\r
-               yconeActor.Delete();\r
-               zconeActor.Delete();\r
-               super.Delete();\r
-       }\r
-\r
-       public void dispose() {\r
-               ThreadUtils.asyncExec(AWTThread.getThreadAccess(), new Runnable() {\r
-                       \r
-                       @Override\r
-                       public void run() {\r
-                               removeFromRenderer();\r
-                               Delete();\r
-                       }\r
-               });\r
-       }\r
-       \r
-       @Override\r
-       public vtkProp3D getVtkProp() {\r
-               return this;\r
-       }\r
-       \r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2012, 2013 Association for Decentralized Information Management in
+ * Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.g3d.vtk.shape;
+
+import javax.vecmath.Matrix4d;
+import javax.vecmath.Point3d;
+
+import org.simantics.g3d.math.MathTools;
+import org.simantics.utils.threads.AWTThread;
+import org.simantics.utils.threads.ThreadUtils;
+
+import vtk.vtkActor;
+import vtk.vtkAssembly;
+import vtk.vtkAxes;
+import vtk.vtkConeSource;
+import vtk.vtkLinearTransform;
+import vtk.vtkMatrix4x4;
+import vtk.vtkPolyDataMapper;
+import vtk.vtkProp3D;
+import vtk.vtkRenderer;
+import vtk.vtkTextActor;
+import vtk.vtkTubeFilter;
+
+public class axesActor extends vtkAssembly implements IvtkVisualObject{
+
+       private vtkRenderer ren;
+       private double axisLength = 0.8;
+       private vtkTextActor xactor, yactor, zactor;
+       private vtkActor tubeActor;
+       private vtkActor xconeActor;
+       private vtkActor yconeActor;
+       private vtkActor zconeActor;
+       private boolean rendered = false;
+
+       public axesActor(vtkRenderer _ren) {
+               super();
+               ren = _ren;
+               createAxes();
+       }
+       
+       public axesActor(vtkRenderer _ren, double axisLength) {
+               super();
+               ren = _ren;
+               this.axisLength = axisLength;
+               createAxes();
+       }
+
+       public void createAxes() {
+               vtkAxes axes = new vtkAxes();
+               axes.SetOrigin(0, 0, 0);
+               axes.SetScaleFactor(axisLength);
+
+               xactor = new vtkTextActor();
+               yactor = new vtkTextActor();
+               zactor = new vtkTextActor();
+
+               xactor.SetInput("X");
+               yactor.SetInput("Y");
+               zactor.SetInput("Z");
+
+//             xactor.SetTextScaleModeToViewport();
+//             yactor.SetTextScaleModeToViewport();
+//             zactor.SetTextScaleModeToViewport();
+               xactor.SetTextScaleModeToNone();
+               yactor.SetTextScaleModeToNone();
+               zactor.SetTextScaleModeToNone();
+               
+               xactor.GetTextProperty().SetColor(0.0, 0.0, 0.0);
+               xactor.GetTextProperty().ShadowOff();
+               xactor.GetTextProperty().ItalicOff();
+               xactor.GetTextProperty().BoldOff();
+
+               yactor.GetTextProperty().SetColor(0.0, 0.0, 0.0);
+               yactor.GetTextProperty().ShadowOff();
+               yactor.GetTextProperty().ItalicOff();
+               yactor.GetTextProperty().BoldOff();
+
+               zactor.GetTextProperty().SetColor(0.0, 0.0, 0.0);
+               zactor.GetTextProperty().ShadowOff();
+               zactor.GetTextProperty().ItalicOff();
+               zactor.GetTextProperty().BoldOff();
+               
+               xactor.GetTextProperty().Delete();
+               yactor.GetTextProperty().Delete();
+               zactor.GetTextProperty().Delete();
+
+               xactor.SetMaximumLineHeight(0.25);
+               yactor.SetMaximumLineHeight(0.25);
+               zactor.SetMaximumLineHeight(0.25);
+               
+               xactor.SetPickable(0);
+               yactor.SetPickable(0);
+               zactor.SetPickable(0);
+
+               vtkTubeFilter tube = new vtkTubeFilter();
+               tube.SetInputData(axes.GetOutput());
+               tube.SetRadius(0.05 * axisLength);
+               tube.SetNumberOfSides(8);
+
+               vtkPolyDataMapper tubeMapper = new vtkPolyDataMapper();
+               tubeMapper.SetInputData(tube.GetOutput());
+
+               tubeActor = new vtkActor();
+               tubeActor.SetMapper(tubeMapper);
+               tubeActor.PickableOff();
+
+               int coneRes = 12;
+               double coneScale = 0.3 * axisLength;
+
+               // --- x-Cone
+               vtkConeSource xcone = new vtkConeSource();
+               xcone.SetResolution(coneRes);
+               vtkPolyDataMapper xconeMapper = new vtkPolyDataMapper();
+               xconeMapper.SetInputData(xcone.GetOutput());
+               xconeActor = new vtkActor();
+               xconeActor.SetMapper(xconeMapper);
+               xconeActor.GetProperty().SetColor(1, 0, 0);
+               xconeActor.SetScale(coneScale, coneScale, coneScale);
+               xconeActor.SetPosition(axisLength, 0.0, 0.0);
+               xconeActor.SetPickable(0);
+
+               // --- y-Cone
+               vtkConeSource ycone = new vtkConeSource();
+               ycone.SetResolution(coneRes);
+               vtkPolyDataMapper yconeMapper = new vtkPolyDataMapper();
+               yconeMapper.SetInputData(ycone.GetOutput());
+               yconeActor = new vtkActor();
+               yconeActor.SetMapper(yconeMapper);
+               yconeActor.GetProperty().SetColor(1, 1, 0);
+               yconeActor.RotateZ(90);
+               yconeActor.SetScale(coneScale, coneScale, coneScale);
+               yconeActor.SetPosition(0.0, axisLength, 0.0);
+               yconeActor.SetPickable(0);
+
+               // --- z-Cone
+               vtkConeSource zcone = new vtkConeSource();
+               zcone.SetResolution(coneRes);
+               vtkPolyDataMapper zconeMapper = new vtkPolyDataMapper();
+               zconeMapper.SetInputData(zcone.GetOutput());
+               zconeActor = new vtkActor();
+               zconeActor.SetMapper(zconeMapper);
+               zconeActor.GetProperty().SetColor(0, 1, 0);
+               zconeActor.RotateY(-90);
+               zconeActor.SetScale(coneScale, coneScale, coneScale);
+               zconeActor.SetPosition(0.0, 0.0, axisLength);
+               zconeActor.SetPickable(0);
+
+               
+               this.AddPart(tubeActor);
+               this.AddPart(xconeActor);
+               this.AddPart(yconeActor);
+               this.AddPart(zconeActor);
+               
+               tube.GetOutput().Delete();
+               xcone.GetOutput().Delete();
+               ycone.GetOutput().Delete();
+               zcone.GetOutput().Delete();
+               axes.GetOutput().Delete();
+               axes.Delete();
+               tubeMapper.Delete();
+               tube.Delete();
+               xcone.Delete();
+               ycone.Delete();
+               zcone.Delete();
+               xconeMapper.Delete();
+               yconeMapper.Delete();
+               zconeMapper.Delete();
+               
+               xconeActor.GetProperty().Delete();
+               yconeActor.GetProperty().Delete();
+               zconeActor.GetProperty().Delete();
+       }
+       
+       public void addToRenderer() {
+               if (rendered)
+                       return;
+               rendered = true;
+               
+               ren.AddActor2D(xactor);
+               ren.AddActor2D(yactor);
+               ren.AddActor2D(zactor);
+               
+               
+               ren.AddActor(this);
+       }
+       
+       public void removeFromRenderer() {
+               if (!rendered)
+                       return;
+               rendered = false;
+               ren.RemoveActor2D(xactor);
+               ren.RemoveActor2D(yactor);
+               ren.RemoveActor2D(zactor);
+               ren.RemoveActor(this);
+       }
+       
+       public boolean isRendered() {
+               return rendered;
+       }
+
+       public void setAxesVisibility(boolean ison) {
+               this.SetVisibility(ison ? 1 : 0);
+               xactor.SetVisibility(ison ? 1 : 0);
+               yactor.SetVisibility(ison ? 1 : 0);
+               zactor.SetVisibility(ison ? 1 : 0);
+       }
+       
+       private boolean labelVisible = true;
+       
+       public void setLabelVisibility(boolean ison) {
+               xactor.SetVisibility(ison ? 1 : 0);
+               yactor.SetVisibility(ison ? 1 : 0);
+               zactor.SetVisibility(ison ? 1 : 0);
+               labelVisible = ison;
+               if (labelVisible)
+                       updateTextLoc();
+       }
+       
+       Matrix4d m = new Matrix4d();
+       double mat[] = new double[16];
+       Point3d x = new Point3d();
+       Point3d y = new Point3d();
+       Point3d z = new Point3d();
+       
+       private void updateTextLoc() {
+               if (!labelVisible)
+                       return;
+               xactor.GetPositionCoordinate().SetCoordinateSystemToWorld();
+               yactor.GetPositionCoordinate().SetCoordinateSystemToWorld();
+               zactor.GetPositionCoordinate().SetCoordinateSystemToWorld();
+               
+               GetMatrix(mat);
+               MathTools.set(m, mat);
+               x.set(axisLength, 0,0);
+               y.set(0,axisLength, 0);
+               z.set(0,0,axisLength);
+               
+               m.transform(x);
+               m.transform(y);
+               m.transform(z);
+               xactor.GetPositionCoordinate().SetValue(x.x, x.y, x.z);
+               yactor.GetPositionCoordinate().SetValue(y.x, y.y, y.z);
+               zactor.GetPositionCoordinate().SetValue(z.x, z.y, z.z);
+               
+               xactor.GetPositionCoordinate().Delete();
+               yactor.GetPositionCoordinate().Delete();
+               zactor.GetPositionCoordinate().Delete();
+       }
+       
+       @Override
+       public void SetPickable(int id0) {
+               super.SetPickable(id0);
+               tubeActor.SetPickable(id0);
+               xconeActor.SetPickable(id0);
+               yconeActor.SetPickable(id0);
+               zconeActor.SetPickable(id0);
+
+       }
+       
+       @Override
+       public void SetOrientation(double id0, double id1, double id2) {
+               super.SetOrientation(id0, id1, id2);
+               updateTextLoc();
+       }
+       
+       @Override
+       public void RotateWXYZ(double id0, double id1, double id2, double id3) {
+               super.RotateWXYZ(id0, id1, id2, id3);
+               updateTextLoc();
+       }
+       
+       @Override
+       public void SetPosition(double[] id0) {
+               super.SetPosition(id0);
+               updateTextLoc();
+       }
+       
+       @Override
+       public void SetPosition(double id0, double id1, double id2) {
+               super.SetPosition(id0, id1, id2);
+               updateTextLoc();
+       }
+       
+       @Override
+       public void SetOrientation(double[] id0) {
+               super.SetOrientation(id0);
+               updateTextLoc();
+       }
+       
+       @Override
+       public void SetScale(double id0) {
+               super.SetScale(id0);
+               updateTextLoc();
+       }
+       
+       @Override
+       public void SetScale(double id0, double id1, double id2) {
+               super.SetScale(id0, id1, id2);
+               updateTextLoc();
+       }
+       
+       @Override
+       public void SetScale(double[] id0) {
+               super.SetScale(id0);
+               updateTextLoc();
+       }
+       
+       @Override
+       public void SetUserMatrix(vtkMatrix4x4 id0) {
+               super.SetUserMatrix(id0);
+               updateTextLoc();
+       }
+       
+       @Override
+       public void SetUserTransform(vtkLinearTransform id0) {
+               super.SetUserTransform(id0);
+               updateTextLoc();
+       }
+       
+       @Override
+       public void Delete() {
+               ren.RemoveActor(xactor);
+               ren.RemoveActor(yactor);
+               ren.RemoveActor(zactor);
+               ren.RemoveActor(tubeActor);
+               ren.RemoveActor(xconeActor);
+               ren.RemoveActor(yconeActor);
+               ren.RemoveActor(xconeActor);
+               xactor.Delete();
+               yactor.Delete();
+               zactor.Delete();
+               tubeActor.Delete();
+               xconeActor.Delete();
+               yconeActor.Delete();
+               zconeActor.Delete();
+               super.Delete();
+       }
+
+       public void dispose() {
+               ThreadUtils.asyncExec(AWTThread.getThreadAccess(), new Runnable() {
+                       
+                       @Override
+                       public void run() {
+                               removeFromRenderer();
+                               Delete();
+                       }
+               });
+       }
+       
+       @Override
+       public vtkProp3D getVtkProp() {
+               return this;
+       }
+       
+}