X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.debug.ui%2Fsrc%2Forg%2Fsimantics%2Fdebug%2Fui%2Finternal%2FSearchResourceHandler.java;h=3fb4013d8f7690516481e43ab0e0c358f753b966;hb=0a314ce9afeeac53b4d4653125cf56cb99be7976;hp=38e60653c4ce4cfa7470cbc3ceb4083a94d440dd;hpb=6470931159a573043ba403cc94cd5e5e3916fd62;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.debug.ui/src/org/simantics/debug/ui/internal/SearchResourceHandler.java b/bundles/org.simantics.debug.ui/src/org/simantics/debug/ui/internal/SearchResourceHandler.java index 38e60653c..3fb4013d8 100644 --- a/bundles/org.simantics.debug.ui/src/org/simantics/debug/ui/internal/SearchResourceHandler.java +++ b/bundles/org.simantics.debug.ui/src/org/simantics/debug/ui/internal/SearchResourceHandler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Association for Decentralized Information Management + * Copyright (c) 2007, 2016 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,14 +8,16 @@ * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation + * Semantum Oy - refactoring (#6855) *******************************************************************************/ package org.simantics.debug.ui.internal; +import java.util.function.BiConsumer; + import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.jface.action.IAction; -import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.handlers.HandlerUtil; import org.simantics.Simantics; @@ -29,6 +31,7 @@ import org.simantics.debug.ui.ResourceSearch; import org.simantics.debug.ui.SearchResourceDialog; import org.simantics.ui.workbench.action.ChooseActionRequest; import org.simantics.utils.Container; +import org.simantics.utils.ui.SWTUtils; import org.simantics.utils.ui.action.IPriorityAction; import org.simantics.utils.ui.workbench.WorkbenchUtils; @@ -39,7 +42,7 @@ public class SearchResourceHandler extends AbstractHandler { Shell shell = HandlerUtil.getActiveShellChecked(event); Session session = Simantics.getSession(); SearchResourceDialog rld = new SearchResourceDialog(session, false, shell, "Open Resource"); - rld.setResourceFilter(ResourceSearch.FILTER_RELATIONS); + rld.setResourceFilter(ResourceSearch.FILTER_ALL); rld.setBlockOnOpen(true); rld.open(); if (rld.getResult() == null) @@ -50,38 +53,32 @@ public class SearchResourceHandler extends AbstractHandler { for (Object o : rld.getResult()) { @SuppressWarnings("unchecked") Container rc = (Container) o; - openPreferredEditor(session, rc.get(), currentPerspectiveId); + openPreferredEditor(shell, session, rc.get(), currentPerspectiveId); } return null; } - void openPreferredEditor(Session s, final Resource r, final String defaultPerspective) { + private static void openPreferredEditor(Shell parent, Session s, Resource r, String defaultPerspective) { + findActions(s, r, defaultPerspective, (resourceName, actions) -> { + SWTUtils.asyncExec(parent, () -> { + IAction action = ChooseActionRequest.chooseAction(parent, actions, resourceName); + if (action != null) + action.run(); + }); + }); + } + private static void findActions(Session s, Resource r, String defaultPerspective, BiConsumer consumer) { s.asyncRequest(new ReadRequest() { - - String resourceName; - IPriorityAction[] actions; - @Override public void run(ReadGraph g) throws DatabaseException { - resourceName = NameUtils.getSafeName(g, r); - actions = ChooseActionRequest.findActions(g, r, defaultPerspective); - if (actions == null) - return; - Display.getDefault().asyncExec(new Runnable() { - @Override - public void run() { - IAction action = ChooseActionRequest.chooseAction(null, actions, resourceName); - if (action == null) - return; - action.run(); - } - }); + String resourceName = NameUtils.getSafeName(g, r); + IPriorityAction[] actions = ChooseActionRequest.findActions(g, r, defaultPerspective); + if (actions != null) + consumer.accept(resourceName, actions); } - }); - } }