1 package org.simantics.g3d.vtk.property;
\r
3 import org.eclipse.jface.viewers.ISelection;
\r
4 import org.eclipse.jface.viewers.ISelectionProvider;
\r
5 import org.eclipse.swt.SWT;
\r
6 import org.eclipse.swt.layout.FillLayout;
\r
7 import org.eclipse.swt.widgets.Composite;
\r
8 import org.eclipse.swt.widgets.Control;
\r
9 import org.eclipse.swt.widgets.Display;
\r
10 import org.eclipse.swt.widgets.Text;
\r
11 import org.eclipse.ui.IWorkbenchSite;
\r
12 import org.simantics.db.management.ISessionContext;
\r
13 import org.simantics.selectionview.IPropertyTab;
\r
14 import org.simantics.selectionview.PropertyTabContributor;
\r
15 import org.simantics.utils.threads.AWTThread;
\r
16 import org.simantics.utils.threads.ThreadUtils;
\r
18 import vtk.vtkActor;
\r
19 import vtk.vtkAlgorithm;
\r
20 import vtk.vtkAlgorithmOutput;
\r
21 import vtk.vtkMapper;
\r
24 public class VTKPropertyTabContributor implements PropertyTabContributor{
\r
26 public org.simantics.selectionview.IPropertyTab create(Composite parent, IWorkbenchSite site, ISessionContext context, Object input) {
\r
27 IPropertyTab tab = new VTKPropertyTab((vtkProp)input);
\r
28 tab.createControl(parent, context);
\r
33 public class VTKPropertyTab implements IPropertyTab {
\r
34 private Composite composite;
\r
36 private vtkProp prop;
\r
38 public VTKPropertyTab(vtkProp prop) {
\r
43 public void createControl(Composite parent, ISessionContext context) {
\r
45 composite = new Composite(parent, SWT.NONE);
\r
46 composite.setLayout(new FillLayout());
\r
47 text = new Text(composite, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL | SWT.READ_ONLY);
\r
48 ThreadUtils.asyncExec(AWTThread.getThreadAccess(), new Runnable() {
\r
53 if (prop instanceof vtkActor) {
\r
54 vtkActor act = (vtkActor)prop;
\r
55 vtkMapper mapper = act.GetMapper();
\r
56 vtkAlgorithmOutput out = mapper.GetInputConnection(0, 0);
\r
57 vtkAlgorithm producer = out.GetProducer();
\r
58 string += producer.GetClassName() +"\n";
\r
63 string += prop.Print();
\r
64 final String s = string;
\r
65 Display.getDefault().asyncExec(new Runnable() {
\r
68 if (!text.isDisposed())
\r
79 public void requestFocus() {
\r
80 composite.setFocus();
\r
84 public void dispose() {
\r
85 composite.dispose();
\r
89 public boolean isDisposed() {
\r
90 return composite.isDisposed();
\r
94 public Control getControl() {
\r
99 public void setInput(ISessionContext context, ISelection selection,
\r
105 public ISelectionProvider getSelectionProvider() {
\r