Bundle-Vendor: Semantum Oy
Require-Bundle: org.simantics.layer0,
org.simantics.district.network.ontology;bundle-version="1.0.0",
- org.simantics.diagram.ontology;bundle-version="2.2.0"
+ org.simantics.diagram.ontology;bundle-version="2.2.0",
+ org.simantics.action.ontology;bundle-version="1.1.0",
+ org.simantics.silk.ontology;bundle-version="1.1.0",
+ org.simantics.viewpoint.ontology;bundle-version="1.2.0"
Automatic-Module-Name: fi.vtt.apros.district.route.ontology
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Export-Package: org.simantics.district.route.ontology
--- /dev/null
+L0 = <http://www.simantics.org/Layer0-1.1>
+DN = <http://www.simantics.org/DistrictNetwork-1.0>
+DNR = <http://www.simantics.org/DistrictNetworkRoutes-1.0>
+VP = <http://www.simantics.org/Viewpoint-1.2>
+ACT = <http://www.simantics.org/Action-1.1>
+SILK = <http://www.simantics.org/Silk-1.1>
+
+RAC = DNR.RouteActionContext : VP.BrowseContext
+ @VP.actionContribution "Select Route" DNR.Route SILK.wand VP.EditActionCategory DNR.Actions.SelectRoute
+
+DNR.Actions : L0.Library
+
+DNR.Actions.SelectRoute : ACT.Action
public class RouteResource {
+ public final Resource Actions;
+ public final Resource Actions_SelectRoute;
public final Resource Route;
+ public final Resource RouteActionContext;
public final Resource RouteFolder;
public static class URIs {
+ public static final String Actions = "http://www.simantics.org/DistrictNetworkRoutes-1.0/Actions";
+ public static final String Actions_SelectRoute = "http://www.simantics.org/DistrictNetworkRoutes-1.0/Actions/SelectRoute";
public static final String Route = "http://www.simantics.org/DistrictNetworkRoutes-1.0/Route";
+ public static final String RouteActionContext = "http://www.simantics.org/DistrictNetworkRoutes-1.0/RouteActionContext";
public static final String RouteFolder = "http://www.simantics.org/DistrictNetworkRoutes-1.0/RouteFolder";
}
}
public RouteResource(ReadGraph graph) {
+ Actions = getResourceOrNull(graph, URIs.Actions);
+ Actions_SelectRoute = getResourceOrNull(graph, URIs.Actions_SelectRoute);
Route = getResourceOrNull(graph, URIs.Route);
+ RouteActionContext = getResourceOrNull(graph, URIs.RouteActionContext);
RouteFolder = getResourceOrNull(graph, URIs.RouteFolder);
}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<adapters>
+ <target interface="org.simantics.db.layer0.adapter.ActionFactory">
+ <resource uri="http://www.simantics.org/DistrictNetworkRoutes-1.0/Actions/SelectRoute"
+ class="org.simantics.district.route.ui.actions.SelectRouteAction" />
+ </target>
+</adapters>
bin.includes = META-INF/,\
.,\
plugin.xml,\
+ adapters.xml,\
fragment.e4xmi,\
OSGI-INF/
--- /dev/null
+package org.simantics.district.route.ui.actions;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+
+import org.eclipse.swt.widgets.Display;
+import org.simantics.Simantics;
+import org.simantics.db.Resource;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.db.layer0.adapter.ActionFactory;
+import org.simantics.district.network.ui.DistrictNetworkUIUtil;
+import org.simantics.district.route.Route;
+import org.simantics.district.route.RouteJob;
+import org.simantics.district.route.RouterConfiguration;
+import org.simantics.district.route.internal.RoutePersistence;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class SelectRouteAction implements ActionFactory {
+
+ protected static final Logger LOGGER = LoggerFactory.getLogger(SelectRouteAction.class);
+
+ @Override
+ public Runnable create(Object target) {
+ if (!(target instanceof Resource))
+ return null;
+
+ return new Runnable() {
+ @Override
+ public void run() {
+ try {
+ Route route = Simantics.getSession().syncRequest(new RoutePersistence.RouteRequest((Resource)target));
+ if (route == null) {
+ LOGGER.error("Reading a route object failed"); //$NON-NLS-1$
+ return;
+ }
+
+ CompletableFuture<List<Resource>> result = new CompletableFuture<>();
+ result
+ .exceptionally(e -> Collections.emptyList())
+ .thenAccept(dnElements -> {
+ if (!dnElements.isEmpty()) {
+ try {
+ Display display = Display.getDefault();
+ if (display != null)
+ DistrictNetworkUIUtil.openDNDiagramWithSelection(display, dnElements);
+ else
+ LOGGER.error("No display found"); //$NON-NLS-1$
+ } catch (DatabaseException e) {
+ LOGGER.error("Failed to open district network diagram with selection " + dnElements, e); //$NON-NLS-1$
+
+ }
+ }
+ });
+
+ RouterConfiguration config = new RouterConfiguration();
+ new RouteJob(config, route, result).schedule();
+ }
+ catch (DatabaseException e) {
+ LOGGER.error("Error in selecting route " + target, e); //$NON-NLS-1$
+ }
+ }
+ };
+ }
+
+}