]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/participants/DNPointerInteractor.java
Minor usability fixes for routing in district diagrams
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / participants / DNPointerInteractor.java
index a1a8ae5ac5169ff2216549c3b537137f29ab17f7..c61adba9fa335f7303a75bc223080dd42f4d4fa5 100644 (file)
@@ -7,6 +7,7 @@ import java.util.Set;
 
 import org.simantics.district.network.ui.adapters.DistrictNetworkEdgeElement;
 import org.simantics.district.network.ui.adapters.DistrictNetworkVertexElement;
+import org.simantics.g2d.canvas.ICanvasContext;
 import org.simantics.g2d.canvas.ICanvasParticipant;
 import org.simantics.g2d.diagram.handler.PickRequest.PickSorter;
 import org.simantics.g2d.diagram.participant.pointertool.PointerInteractor;
@@ -14,10 +15,15 @@ import org.simantics.g2d.diagram.participant.pointertool.TerminalUtil.TerminalIn
 import org.simantics.g2d.element.ElementHints;
 import org.simantics.g2d.element.IElement;
 import org.simantics.scenegraph.g2d.IG2DNode;
+import org.simantics.scenegraph.g2d.events.EventHandlerReflection.EventHandler;
+import org.simantics.scenegraph.g2d.events.KeyEvent.KeyReleasedEvent;
+import org.simantics.scenegraph.g2d.events.KeyEvent;
 import org.simantics.scenegraph.g2d.nodes.SingleElementNode;
 
 public class DNPointerInteractor extends PointerInteractor {
 
+    private RoutingMode routingMode;
+
     private static class DNPickSorter implements PickSorter {
 
         @Override
@@ -62,4 +68,17 @@ public class DNPointerInteractor extends PointerInteractor {
             Set<IElement> elementsToDrag) {
         return new DNTranslateMode(startCanvasPos, curCanvasPos, mouseId, elementsToDrag);
     }
+
+    @EventHandler(priority = 1000)
+    public boolean enterroutingMode(KeyEvent ke) {
+        if (Character.toLowerCase(ke.character) == 't' && ke instanceof KeyReleasedEvent) {
+            ICanvasContext canvasContext = getContext();
+            if (routingMode == null || routingMode.isRemoved()) {
+                routingMode = new RoutingMode(0);
+                canvasContext.add(routingMode);
+            }
+        }
+        return false;
+    }
+
 }