From de866a453af3d7e0dcb447a47e29819fe188325f Mon Sep 17 00:00:00 2001 From: Richard Fairhurst Date: Sat, 22 May 2010 08:50:27 +0000 Subject: [PATCH] keyboard shortcut for Undo, plus gratuitous use of ternary operator --- net/systemeD/halcyon/connection/MainUndoStack.as | 2 ++ net/systemeD/potlatch2/controller/ControllerState.as | 7 +++++++ net/systemeD/potlatch2/controller/DrawWay.as | 3 ++- net/systemeD/potlatch2/controller/NoSelection.as | 8 ++++++-- net/systemeD/potlatch2/controller/SelectedPOINode.as | 6 +++--- net/systemeD/potlatch2/controller/SelectedWay.as | 6 +++--- net/systemeD/potlatch2/controller/SelectedWayNode.as | 6 +++--- 7 files changed, 26 insertions(+), 12 deletions(-) diff --git a/net/systemeD/halcyon/connection/MainUndoStack.as b/net/systemeD/halcyon/connection/MainUndoStack.as index 5f9790d5..4e7fdb77 100644 --- a/net/systemeD/halcyon/connection/MainUndoStack.as +++ b/net/systemeD/halcyon/connection/MainUndoStack.as @@ -68,6 +68,7 @@ package net.systemeD.halcyon.connection { } public function undo():void { + if (!undoActions.length) { return; } var action:UndoableAction = undoActions.pop(); trace("undoing "+action); action.undoAction(); @@ -77,6 +78,7 @@ package net.systemeD.halcyon.connection { } public function redo():void { + if (!redoActions.length) { return; } var action:UndoableAction = redoActions.pop(); trace("redoing "+action); action.doAction(); diff --git a/net/systemeD/potlatch2/controller/ControllerState.as b/net/systemeD/potlatch2/controller/ControllerState.as index 23946f43..8db5a012 100644 --- a/net/systemeD/potlatch2/controller/ControllerState.as +++ b/net/systemeD/potlatch2/controller/ControllerState.as @@ -45,6 +45,13 @@ package net.systemeD.potlatch2.controller { return "(No state)"; } + protected function sharedKeyboardEvents(event:KeyboardEvent):ControllerState { + switch (event.keyCode) { + case 90: MainUndoStack.getGlobalStack().undo(); return null; // Z + } + return null; + } + protected function sharedMouseEvents(event:MouseEvent, entity:Entity):ControllerState { var paint:MapPaint = getMapPaint(DisplayObject(event.target)); var focus:Entity = getTopLevelFocusEntity(entity); diff --git a/net/systemeD/potlatch2/controller/DrawWay.as b/net/systemeD/potlatch2/controller/DrawWay.as index 1772146b..af1cdeb0 100644 --- a/net/systemeD/potlatch2/controller/DrawWay.as +++ b/net/systemeD/potlatch2/controller/DrawWay.as @@ -96,7 +96,8 @@ package net.systemeD.potlatch2.controller { override public function processKeyboardEvent(event:KeyboardEvent):ControllerState { if ( event.keyCode == 13 || event.keyCode == 27 ) { return stopDrawing(); } else if (event.keyCode == Keyboard.BACKSPACE) { return backspaceNode(MainUndoStack.getGlobalStack().addAction); } - return this; + var cs:ControllerState = sharedKeyboardEvents(event); + return cs ? cs : this; } protected function stopDrawing():ControllerState { diff --git a/net/systemeD/potlatch2/controller/NoSelection.as b/net/systemeD/potlatch2/controller/NoSelection.as index 83bdb057..e40eaa00 100644 --- a/net/systemeD/potlatch2/controller/NoSelection.as +++ b/net/systemeD/potlatch2/controller/NoSelection.as @@ -28,8 +28,12 @@ package net.systemeD.potlatch2.controller { return new DrawWay(way, true, false); } var cs:ControllerState = sharedMouseEvents(event, entity); - if (cs) return cs; - return this; + return cs ? cs : this; + } + + override public function processKeyboardEvent(event:KeyboardEvent):ControllerState { + var cs:ControllerState = sharedKeyboardEvents(event); + return cs ? cs : this; } override public function enterState():void { diff --git a/net/systemeD/potlatch2/controller/SelectedPOINode.as b/net/systemeD/potlatch2/controller/SelectedPOINode.as index 84725631..9d158d95 100644 --- a/net/systemeD/potlatch2/controller/SelectedPOINode.as +++ b/net/systemeD/potlatch2/controller/SelectedPOINode.as @@ -34,8 +34,7 @@ package net.systemeD.potlatch2.controller { override public function processMouseEvent(event:MouseEvent, entity:Entity):ControllerState { if (event.type==MouseEvent.MOUSE_MOVE) { return this; } var cs:ControllerState = sharedMouseEvents(event, entity); - if (cs) return cs; - return this; + return cs ? cs : this; } override public function processKeyboardEvent(event:KeyboardEvent):ControllerState { @@ -43,7 +42,8 @@ package net.systemeD.potlatch2.controller { case Keyboard.BACKSPACE: return deletePOI(); case Keyboard.DELETE: return deletePOI(); } - return this; + var cs:ControllerState = sharedKeyboardEvents(event); + return cs ? cs : this; } public function deletePOI():ControllerState { diff --git a/net/systemeD/potlatch2/controller/SelectedWay.as b/net/systemeD/potlatch2/controller/SelectedWay.as index 7762b7c4..f7e6d327 100644 --- a/net/systemeD/potlatch2/controller/SelectedWay.as +++ b/net/systemeD/potlatch2/controller/SelectedWay.as @@ -54,8 +54,7 @@ package net.systemeD.potlatch2.controller { return d; } var cs:ControllerState = sharedMouseEvents(event, entity); - if (cs) return cs; - return this; + return cs ? cs : this; } override public function processKeyboardEvent(event:KeyboardEvent):ControllerState { @@ -68,7 +67,8 @@ package net.systemeD.potlatch2.controller { case Keyboard.BACKSPACE: if (event.shiftKey) { return deleteWay(); } break; case Keyboard.DELETE: if (event.shiftKey) { return deleteWay(); } break; } - return this; + var cs:ControllerState = sharedKeyboardEvents(event); + return cs ? cs : this; } protected function addNode(event:MouseEvent):int { diff --git a/net/systemeD/potlatch2/controller/SelectedWayNode.as b/net/systemeD/potlatch2/controller/SelectedWayNode.as index 502644b0..be414df2 100644 --- a/net/systemeD/potlatch2/controller/SelectedWayNode.as +++ b/net/systemeD/potlatch2/controller/SelectedWayNode.as @@ -56,8 +56,7 @@ package net.systemeD.potlatch2.controller { return d; } var cs:ControllerState = sharedMouseEvents(event, entity); - if (cs) return cs; - return this; + return cs ? cs : this; } override public function processKeyboardEvent(event:KeyboardEvent):ControllerState { @@ -67,7 +66,8 @@ package net.systemeD.potlatch2.controller { case Keyboard.BACKSPACE: return deleteNode(); case Keyboard.DELETE: return deleteNode(); } - return this; + var cs:ControllerState = sharedKeyboardEvents(event); + return cs ? cs : this; } override public function enterState():void { -- 2.36.1