1 package org.simantics.g3d.vtk.swt;
3 import java.util.Collection;
5 import org.eclipse.jface.action.Action;
6 import org.simantics.g3d.vtk.Activator;
7 import org.simantics.g3d.vtk.common.VtkView;
8 import org.simantics.utils.threads.AWTThread;
13 public class FocusAction extends Action {
16 vtkCameraAndSelectorAction cameraAndSelectorAction;
17 Collection<vtkProp> props;
19 public FocusAction(VtkView view, vtkCameraAndSelectorAction cameraAndSelectorAction) {
21 setImageDescriptor(Activator.imageDescriptorFromPlugin("com.famfamfam.silk", "icons/eye.png"));
23 this.cameraAndSelectorAction = cameraAndSelectorAction;
26 public void setProps(Collection<vtkProp> props) {
32 view.getThreadQueue().asyncExec(new Runnable() {
37 double loc[] = new double[] {0,0,0};
38 for (vtkProp prop : props) {
39 if (prop instanceof vtkProp3D) {
40 vtkProp3D prop3d = (vtkProp3D)prop;
41 double l[] = prop3d.GetCenter();
42 for (int i = 0; i < 3; i++)
43 loc[i] = loc[i] + l[i];
48 for (int i = 0; i < 3; i++)
49 loc[i] = loc[i] / count;
50 cameraAndSelectorAction.focus(loc[0],loc[1],loc[2]);