]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - 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
diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/ProceduralComponentInstanceViewerEditorAdapter.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/componentTypeEditor/ProceduralComponentInstanceViewerEditorAdapter.java
new file mode 100644 (file)
index 0000000..4814798
--- /dev/null
@@ -0,0 +1,71 @@
+package org.simantics.modeling.ui.componentTypeEditor;\r
+\r
+import org.eclipse.jface.resource.ImageDescriptor;\r
+import org.eclipse.ui.PartInitException;\r
+import org.eclipse.ui.PlatformUI;\r
+import org.simantics.Simantics;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.request.ReadRequest;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.modeling.ModelingResources;\r
+import org.simantics.modeling.ui.Activator;\r
+import org.simantics.structural.stubs.StructuralResource2;\r
+import org.simantics.ui.workbench.ResourceEditorInput;\r
+import org.simantics.ui.workbench.editor.AbstractResourceEditorAdapter;\r
+\r
+public class ProceduralComponentInstanceViewerEditorAdapter extends\r
+        AbstractResourceEditorAdapter {\r
+    \r
+    public static final ImageDescriptor ICON = ImageDescriptor.createFromURL(Activator.getDefault().getBundle()\r
+            .getResource("icons/shape_3d_gray.png"));\r
+    public static final String EDITOR_ID = "org.simantics.modeling.ui.proceduralComponentInstanceViewer";\r
+    \r
+    public ProceduralComponentInstanceViewerEditorAdapter() {\r
+        super("Procedural Component Instance Viewer", ICON, -10);\r
+    }\r
+\r
+    private static Resource browseComponent(ReadGraph graph, Resource input) throws DatabaseException {\r
+        ModelingResources MOD = ModelingResources.getInstance(graph);\r
+        \r
+        Resource temp = graph.getPossibleObject(input, MOD.ElementToComponent);\r
+        if(temp != null)\r
+            return temp;\r
+        else\r
+            return input;\r
+    }\r
+    \r
+    @Override\r
+    protected boolean canHandle(ReadGraph graph, Resource input)\r
+            throws DatabaseException {\r
+        input = browseComponent(graph, input);\r
+        StructuralResource2 STR = StructuralResource2.getInstance(graph);\r
+        Resource type = graph.getPossibleType(input, STR.Component);\r
+        if(type == null)\r
+            return false;\r
+        return graph.isInstanceOf(type, STR.ProceduralComponentType);\r
+    }\r
+    \r
+    @Override\r
+    protected void openEditor(final Resource input) throws Exception {\r
+        Simantics.getSession().asyncRequest(new ReadRequest() {\r
+            @Override\r
+            public void run(ReadGraph graph) throws DatabaseException {\r
+                final Resource actualInput = browseComponent(graph, input);\r
+                PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {\r
+                    @Override\r
+                    public void run() {\r
+                        try {\r
+                            openEditorWithId(EDITOR_ID, new ResourceEditorInput(EDITOR_ID, actualInput));\r
+                        } catch (PartInitException e) {\r
+                            e.printStackTrace();\r
+                        }\r
+                    }\r
+                    \r
+                });\r
+            }\r
+            \r
+        });\r
+    }\r
+    \r
+}\r