]> gerrit.simantics Code Review - simantics/3d.git/blob - org.simantics.g3d.vtk/src/org/simantics/g3d/vtk/property/VTKPropertyTabContributor.java
32e26353230375fab04eeb298043d7f3da9afa12
[simantics/3d.git] / org.simantics.g3d.vtk / src / org / simantics / g3d / vtk / property / VTKPropertyTabContributor.java
1 package org.simantics.g3d.vtk.property;\r
2 \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
17 \r
18 import vtk.vtkActor;\r
19 import vtk.vtkAlgorithm;\r
20 import vtk.vtkAlgorithmOutput;\r
21 import vtk.vtkMapper;\r
22 import vtk.vtkProp;\r
23 \r
24 public class VTKPropertyTabContributor implements PropertyTabContributor{\r
25         \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
29                 return tab;\r
30         };\r
31         \r
32         \r
33         public class VTKPropertyTab implements IPropertyTab {\r
34                 private Composite composite;\r
35                 private Text text;\r
36                 private vtkProp prop;\r
37                 \r
38                 public VTKPropertyTab(vtkProp prop) {\r
39                         this.prop = prop;\r
40                 }\r
41                 \r
42                 @Override\r
43                 public void createControl(Composite parent, ISessionContext context) {\r
44                         \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
49                                 \r
50                                 @Override\r
51                                 public void run() {\r
52                                         String string = "";\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
59                                                 out.Delete();\r
60                                                 mapper.Delete();\r
61                                                 producer.Delete();\r
62                                         }\r
63                                         string += prop.Print();\r
64                                         final String s = string;\r
65                                         Display.getDefault().asyncExec(new Runnable() {\r
66                                                 @Override\r
67                                                 public void run() {\r
68                                                         if (!text.isDisposed())\r
69                                                                 text.setText(s);\r
70                                                 }\r
71                                         });\r
72                                 }\r
73                         });;\r
74                         \r
75                         \r
76                 }\r
77                 \r
78                 @Override\r
79                 public void requestFocus() {\r
80                         composite.setFocus();\r
81                 }\r
82                 \r
83                 @Override\r
84                 public void dispose() {\r
85                         composite.dispose();\r
86                 }\r
87                 \r
88                 @Override\r
89                 public boolean isDisposed() {\r
90                         return composite.isDisposed();\r
91                 }\r
92                 \r
93                 @Override\r
94                 public Control getControl() {\r
95                         return composite;\r
96                 }\r
97                 \r
98                 @Override\r
99                 public void setInput(ISessionContext context, ISelection selection,\r
100                                 boolean force) {\r
101                         \r
102                 }\r
103                 \r
104                 @Override\r
105                 public ISelectionProvider getSelectionProvider() {\r
106                         return null;\r
107                 }\r
108         }\r
109 \r
110 }\r