]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/DistrictNetworkUIUtil.java
Refactoring of diagram element selection method to utils.
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / DistrictNetworkUIUtil.java
index 9ce6937a50b5fbea4866cb222e3ab22da442e17e..b9ac68f8b1bd9e10c96e39b98cd77413f466515a 100644 (file)
@@ -2,10 +2,13 @@ package org.simantics.district.network.ui;
 
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.List;
 import java.util.function.Consumer;
 
 import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IEditorPart;
+import org.simantics.Simantics;
 import org.simantics.db.ReadGraph;
 import org.simantics.db.Resource;
 import org.simantics.db.common.request.UnaryRead;
@@ -24,6 +27,7 @@ import org.simantics.scl.runtime.tuple.Tuple4;
 import org.simantics.ui.selection.WorkbenchSelectionUtils;
 import org.simantics.utils.threads.ThreadUtils;
 import org.simantics.utils.ui.ISelectionUtils;
+import org.simantics.utils.ui.SWTUtils;
 
 /**
  * @author Tuukka Lehtonen
@@ -165,4 +169,18 @@ public class DistrictNetworkUIUtil {
         openEditorWithSelection(DistrictDiagramEditor.ID, input, selection);
     }
 
+    public static boolean openDNDiagramWithSelection(Display display, List<Resource> dnElements) throws DatabaseException {
+        if (dnElements.isEmpty())
+            return false;
+
+        Input in = Simantics.getSession().syncRequest(
+                new ElementToInput(dnElements.get(0)));
+        if (in == null)
+            return false;
+
+        SWTUtils.asyncExec(display,
+                () -> openDNDiagramEditorWithSelection(in, dnElements.toArray()));
+        return true;
+    }
+
 }