]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/ProceduralComponentInstanceViewerEditorAdapter.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / componentTypeEditor / ProceduralComponentInstanceViewerEditorAdapter.java
1 package org.simantics.modeling.ui.componentTypeEditor;\r
2 \r
3 import org.eclipse.jface.resource.ImageDescriptor;\r
4 import org.eclipse.ui.PartInitException;\r
5 import org.eclipse.ui.PlatformUI;\r
6 import org.simantics.Simantics;\r
7 import org.simantics.db.ReadGraph;\r
8 import org.simantics.db.Resource;\r
9 import org.simantics.db.common.request.ReadRequest;\r
10 import org.simantics.db.exception.DatabaseException;\r
11 import org.simantics.modeling.ModelingResources;\r
12 import org.simantics.modeling.ui.Activator;\r
13 import org.simantics.structural.stubs.StructuralResource2;\r
14 import org.simantics.ui.workbench.ResourceEditorInput;\r
15 import org.simantics.ui.workbench.editor.AbstractResourceEditorAdapter;\r
16 \r
17 public class ProceduralComponentInstanceViewerEditorAdapter extends\r
18         AbstractResourceEditorAdapter {\r
19     \r
20     public static final ImageDescriptor ICON = ImageDescriptor.createFromURL(Activator.getDefault().getBundle()\r
21             .getResource("icons/shape_3d_gray.png"));\r
22     public static final String EDITOR_ID = "org.simantics.modeling.ui.proceduralComponentInstanceViewer";\r
23     \r
24     public ProceduralComponentInstanceViewerEditorAdapter() {\r
25         super("Procedural Component Instance Viewer", ICON, -10);\r
26     }\r
27 \r
28     private static Resource browseComponent(ReadGraph graph, Resource input) throws DatabaseException {\r
29         ModelingResources MOD = ModelingResources.getInstance(graph);\r
30         \r
31         Resource temp = graph.getPossibleObject(input, MOD.ElementToComponent);\r
32         if(temp != null)\r
33             return temp;\r
34         else\r
35             return input;\r
36     }\r
37     \r
38     @Override\r
39     protected boolean canHandle(ReadGraph graph, Resource input)\r
40             throws DatabaseException {\r
41         input = browseComponent(graph, input);\r
42         StructuralResource2 STR = StructuralResource2.getInstance(graph);\r
43         Resource type = graph.getPossibleType(input, STR.Component);\r
44         if(type == null)\r
45             return false;\r
46         return graph.isInstanceOf(type, STR.ProceduralComponentType);\r
47     }\r
48     \r
49     @Override\r
50     protected void openEditor(final Resource input) throws Exception {\r
51         Simantics.getSession().asyncRequest(new ReadRequest() {\r
52             @Override\r
53             public void run(ReadGraph graph) throws DatabaseException {\r
54                 final Resource actualInput = browseComponent(graph, input);\r
55                 PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {\r
56                     @Override\r
57                     public void run() {\r
58                         try {\r
59                             openEditorWithId(EDITOR_ID, new ResourceEditorInput(EDITOR_ID, actualInput));\r
60                         } catch (PartInitException e) {\r
61                             e.printStackTrace();\r
62                         }\r
63                     }\r
64                     \r
65                 });\r
66             }\r
67             \r
68         });\r
69     }\r
70     \r
71 }\r