1 package org.simantics.modeling.ui.componentTypeEditor;
3 import org.eclipse.jface.resource.ImageDescriptor;
4 import org.eclipse.ui.PartInitException;
5 import org.eclipse.ui.PlatformUI;
6 import org.simantics.Simantics;
7 import org.simantics.db.ReadGraph;
8 import org.simantics.db.Resource;
9 import org.simantics.db.common.request.ReadRequest;
10 import org.simantics.db.exception.DatabaseException;
11 import org.simantics.modeling.ModelingResources;
12 import org.simantics.modeling.ui.Activator;
13 import org.simantics.structural.stubs.StructuralResource2;
14 import org.simantics.ui.workbench.ResourceEditorInput;
15 import org.simantics.ui.workbench.editor.AbstractResourceEditorAdapter;
17 public class ProceduralComponentInstanceViewerEditorAdapter extends
18 AbstractResourceEditorAdapter {
20 public static final ImageDescriptor ICON = ImageDescriptor.createFromURL(Activator.getDefault().getBundle()
21 .getResource("icons/shape_3d_gray.png"));
22 public static final String EDITOR_ID = "org.simantics.modeling.ui.proceduralComponentInstanceViewer";
24 public ProceduralComponentInstanceViewerEditorAdapter() {
25 super("Procedural Component Instance Viewer", ICON, -10);
28 private static Resource browseComponent(ReadGraph graph, Resource input) throws DatabaseException {
29 ModelingResources MOD = ModelingResources.getInstance(graph);
31 Resource temp = graph.getPossibleObject(input, MOD.ElementToComponent);
39 protected boolean canHandle(ReadGraph graph, Resource input)
40 throws DatabaseException {
41 input = browseComponent(graph, input);
42 StructuralResource2 STR = StructuralResource2.getInstance(graph);
43 Resource type = graph.getPossibleType(input, STR.Component);
46 return graph.isInstanceOf(type, STR.ProceduralComponentType);
50 protected void openEditor(final Resource input) throws Exception {
51 Simantics.getSession().asyncRequest(new ReadRequest() {
53 public void run(ReadGraph graph) throws DatabaseException {
54 final Resource actualInput = browseComponent(graph, input);
55 PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
59 openEditorWithId(EDITOR_ID, new ResourceEditorInput(EDITOR_ID, actualInput));
60 } catch (PartInitException e) {