X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.tests.modelled.ui%2Fsrc%2Forg%2Fsimantics%2Ftests%2Fmodelled%2Fui%2FSTSEditorAdapter.java;fp=bundles%2Forg.simantics.tests.modelled.ui%2Fsrc%2Forg%2Fsimantics%2Ftests%2Fmodelled%2Fui%2FSTSEditorAdapter.java;h=363087f76304678bccc4ea92160a255329714923;hb=f03893d9b643eae3f03debf7a656edbfa5b9b501;hp=0000000000000000000000000000000000000000;hpb=51006ffec13cbf8e0d9c8b07212d69478e4bdd4e;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.tests.modelled.ui/src/org/simantics/tests/modelled/ui/STSEditorAdapter.java b/bundles/org.simantics.tests.modelled.ui/src/org/simantics/tests/modelled/ui/STSEditorAdapter.java new file mode 100644 index 000000000..363087f76 --- /dev/null +++ b/bundles/org.simantics.tests.modelled.ui/src/org/simantics/tests/modelled/ui/STSEditorAdapter.java @@ -0,0 +1,68 @@ +package org.simantics.tests.modelled.ui; + +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.simantics.Simantics; +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.common.request.ReadRequest; +import org.simantics.db.exception.DatabaseException; +import org.simantics.tests.modelled.ontology.TestsResource; +import org.simantics.ui.workbench.editor.AbstractResourceEditorAdapter; +import org.simantics.ui.workbench.editor.EditorAdapter; +import org.simantics.utils.ui.workbench.WorkbenchUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class STSEditorAdapter extends AbstractResourceEditorAdapter implements EditorAdapter { + + private static final Logger LOGGER = LoggerFactory.getLogger(STSEditorAdapter.class); + + public STSEditorAdapter() { + super("SCL Module Editor", null, 20); + } + + @Override + public boolean canHandle(ReadGraph g, Object input) + throws DatabaseException { + if(input instanceof IStructuredSelection) + input = ((IStructuredSelection)input).getFirstElement(); + if(!(input instanceof Resource)) { + if(input instanceof IAdaptable) { + input = ((IAdaptable)input).getAdapter(Resource.class); + if(input == null) + return false; + } + else + return false; + } + Resource resource = (Resource)input; + return g.isInstanceOf(resource, TestsResource.getInstance(g).STSTest); + } + + protected void openEditor(Resource input) throws Exception { + IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + if(page == null) + return; + Simantics.getSession().asyncRequest(new ReadRequest() { + @Override + public void run(ReadGraph graph) throws DatabaseException { + String uri = graph.getURI(input); + PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { + @Override + public void run() { + try { + WorkbenchUtils.openEditor("org.simantics.tests.ui.stsTestEditor", new STSTestEditorInput(uri)); + } catch (PartInitException e) { + LOGGER.error("Could not initialize part", e); + } + } + }); + } + }); + } + +}