Don't allow parallelise keypress to return 0-length ways
[potlatch2.git] / net / systemeD / potlatch2 / controller / SelectedParallelWay.as
index 50ce67b0cd43afa7cc1d106840f1f352e0968dc6..8ff494c41c8364e7cae4befb5f8fa69d029ff375 100644 (file)
@@ -4,35 +4,38 @@ package net.systemeD.potlatch2.controller {
     import net.systemeD.halcyon.connection.*;
     import net.systemeD.halcyon.Map;
        import net.systemeD.potlatch2.tools.Parallelise;
-       import net.systemeD.halcyon.Globals;
 
+    /** The state midway during the use of the "parallelise tool", where a parallel way has been created but is stuck to the 
+    * mouse cursor, allowing the user to choose how far from the original way it should go. This transforms it in the process. */
     public class SelectedParallelWay extends SelectedWay {
                private var startlon:Number;
                private var startlatp:Number;
                private var parallelise:Parallelise;
                private var originalWay:Way;
 
+        /** Initialises by parallelising the originalWay. */
         public function SelectedParallelWay(originalWay:Way) {
                        this.originalWay = originalWay;
                        parallelise = new Parallelise(originalWay);
-                       selectedWay=parallelise.parallelWay;
-                       super (selectedWay);
+                       super (parallelise.parallelWay);
         }
 
         override public function processMouseEvent(event:MouseEvent, entity:Entity):ControllerState {
-                       if (event.type==MouseEvent.MOUSE_MOVE) {
+                       if (event.type==MouseEvent.MOUSE_MOVE || event.type==MouseEvent.MOUSE_UP) {
                                var lon:Number =controller.map.coord2lon(controller.map.mouseX);
                                var latp:Number=controller.map.coord2latp(controller.map.mouseY);
                                parallelise.draw(distanceFromWay(lon,latp));
-                       } else if (event.type==MouseEvent.MOUSE_UP) {
-                               return new SelectedWay(selectedWay);
+                       }
+                       if (event.type==MouseEvent.MOUSE_UP) {
+                               return new SelectedWay(firstSelected as Way);
                        }
                        return this;
         }
 
+               /** Cancel parallel way creation if ESC pressed. */
                override public function processKeyboardEvent(event:KeyboardEvent):ControllerState {
                        if (event.keyCode==27) {                        // Escape
-                               selectedWay.remove(MainUndoStack.getGlobalStack().addAction);
+                               Way(firstSelected).remove(MainUndoStack.getGlobalStack().addAction);
                                return new NoSelection();
                        }
                        var cs:ControllerState = sharedKeyboardEvents(event);
@@ -71,15 +74,16 @@ package net.systemeD.potlatch2.controller {
                        return furthdist*furthsgn;
                }
 
+               /** Creates the WayUI for the parallel way. */
                override public function enterState():void {
-                       controller.map.paint.createWayUI(selectedWay);
+                       selection=[parallelise.parallelWay];
+                       layer.createWayUI(firstSelected as Way);
                        startlon =controller.map.coord2lon(controller.map.mouseX);
                        startlatp=controller.map.coord2latp(controller.map.mouseY);
-                       Globals.vars.root.addDebug("**** -> "+this);
         }
-               override public function exitState():void {
-            clearSelection();
-                       Globals.vars.root.addDebug("**** <- "+this);
+               /** Unselects. */
+               override public function exitState(newState:ControllerState):void {
+            clearSelection(newState);
         }
 
         override public function toString():String {