]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.route.ui/src/org/simantics/district/route/ui/handlers/SelectRouteOnDiagram.java
Refactoring of diagram element selection method to utils.
[simantics/district.git] / org.simantics.district.route.ui / src / org / simantics / district / route / ui / handlers / SelectRouteOnDiagram.java
index 36d14fc6427167b3c102469e4623f9a77e7af294..962c560a85cf28c064c1d1f68a6d570b548ffa20 100644 (file)
@@ -1,5 +1,6 @@
 package org.simantics.district.route.ui.handlers;
 
+import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
 
@@ -12,7 +13,6 @@ import org.eclipse.e4.ui.services.IServiceConstants;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.swt.widgets.Shell;
-import org.simantics.Simantics;
 import org.simantics.db.Resource;
 import org.simantics.db.exception.DatabaseException;
 import org.simantics.district.network.ui.DistrictNetworkUIUtil;
@@ -20,7 +20,6 @@ import org.simantics.district.route.Route;
 import org.simantics.district.route.RouteJob;
 import org.simantics.district.route.RouterConfiguration;
 import org.simantics.utils.ui.ISelectionUtils;
-import org.simantics.utils.ui.SWTUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -47,30 +46,19 @@ public class SelectRouteOnDiagram {
 
         Display display = activeShell.getDisplay();
         CompletableFuture<List<Resource>> result = new CompletableFuture<>();
-        result.thenAccept(dnElements -> {
-            try {
-                openDiagram(display, dnElements);
-            } catch (DatabaseException e) {
-                LOGGER.error("Failed to open district network diagram with selection {}", dnElements);
+        result
+        .exceptionally(e -> Collections.emptyList())
+        .thenAccept(dnElements -> {
+            if (!dnElements.isEmpty()) {
+                try {
+                    DistrictNetworkUIUtil.openDNDiagramWithSelection(display, dnElements);
+                } catch (DatabaseException e) {
+                    LOGGER.error("Failed to open district network diagram with selection {}", dnElements); //$NON-NLS-1$
+                }
             }
         });
 
         RouterConfiguration config = new RouterConfiguration();
         new RouteJob(config, route, result).schedule();
     }
-
-    public static boolean openDiagram(Display display, List<Resource> dnElements) throws DatabaseException {
-        if (dnElements.isEmpty())
-            return false;
-
-        DistrictNetworkUIUtil.Input in = Simantics.getSession().syncRequest(
-                new DistrictNetworkUIUtil.ElementToInput(dnElements.get(0)));
-        if (in == null)
-            return false;
-
-        SWTUtils.asyncExec(display,
-                () -> DistrictNetworkUIUtil.openDNDiagramEditorWithSelection(in, dnElements.toArray()));
-        return true;
-    }
-
-}
\ No newline at end of file
+}