X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2FdiagramEditor%2FOpenDiagramFromConfigurationAdapter.java;fp=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2FdiagramEditor%2FOpenDiagramFromConfigurationAdapter.java;h=82f51feeab1988a150d4bf131eaf95a0d7fda4a5;hb=6c053c235936bc4356ac2cf4e9839119b880f1b7;hp=2394c490b5a02d117269edc75184e0ee4ab7fbee;hpb=7e2576f82cbd14ee0ef24139801bd59f63bb4514;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/OpenDiagramFromConfigurationAdapter.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/OpenDiagramFromConfigurationAdapter.java index 2394c490b..82f51feea 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/OpenDiagramFromConfigurationAdapter.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagramEditor/OpenDiagramFromConfigurationAdapter.java @@ -150,42 +150,51 @@ public class OpenDiagramFromConfigurationAdapter extends AbstractResourceEditorA * @param selectedObjects * @throws DatabaseException */ - public static boolean openEditor(ReadGraph g, Resource r, final String editorId, final Collection selectedObjects) throws DatabaseException { - - final Resource diagram = getDiagram(g, r, selectedObjects); - if (diagram == null) - return false; - - final Resource configurationComposite = ComponentUtils.getPossibleDiagramComposite(g, diagram); - if (configurationComposite == null) - return false; - - Pair modelAndRVI = getModelAndRVI(g, configurationComposite); + public static boolean openEditor(ReadGraph g, Resource r, String editorId, Collection selectedObjects) throws DatabaseException { + Resource diagram = getDiagram(g, r, selectedObjects); + Resource configurationComposite = diagram != null ? ComponentUtils.getPossibleDiagramComposite(g, diagram) : null; + Pair modelAndRVI = configurationComposite != null ? getModelAndRVI(g, configurationComposite) : null; //System.out.println("modelAndRVI: " + modelAndRVI); if (modelAndRVI == null) return false; + scheduleOpenEditor(editorId, diagram, modelAndRVI.first, modelAndRVI.second, selectedObjects); + return true; + } + + /** + * @param g + * @param configurationComposite + * @param editorId + * @param selectedObjects + * @throws DatabaseException + */ + public static boolean openEditor(ReadGraph g, Resource r, String editorId, Collection selectedObjects, Resource model, RVI rvi) throws DatabaseException { + Resource diagram = getDiagram(g, r, selectedObjects); + if (diagram == null) + return false; + scheduleOpenEditor(editorId, diagram, model, rvi, selectedObjects); + return true; + } - final Runnable editorActivator = NavigateToTarget.editorActivator(editorId, diagram, modelAndRVI.first, modelAndRVI.second, part -> { + /** + * @param g + * @param configurationComposite + * @param editorId + * @param selectedObjects + * @throws DatabaseException + */ + private static void scheduleOpenEditor(String editorId, Resource diagram, Resource model, RVI rvi, Collection selectedObjects) throws DatabaseException { + Runnable editorActivator = NavigateToTarget.editorActivator(editorId, diagram, model, rvi, part -> { if (selectedObjects.isEmpty()) return; - - final ICanvasContext openedCanvas = (ICanvasContext) part.getAdapter(ICanvasContext.class); + ICanvasContext openedCanvas = (ICanvasContext) part.getAdapter(ICanvasContext.class); assert openedCanvas != null; // CanvasContext-wide denial of initial zoom-to-fit on diagram open. openedCanvas.getDefaultHintContext().setHint(DiagramHints.KEY_INITIAL_ZOOM_TO_FIT, Boolean.FALSE); - //System.out.println("ASDF: " + element); ThreadUtils.asyncExec(openedCanvas.getThreadAccess(), NavigateToTarget.elementSelectorZoomer(openedCanvas, selectedObjects, false)); }); - - PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() { - @Override - public void run() { - editorActivator.run(); - } - }); - - return true; + PlatformUI.getWorkbench().getDisplay().asyncExec(editorActivator); } }