}
public function undo():void {
+ if (!undoActions.length) { return; }
var action:UndoableAction = undoActions.pop();
trace("undoing "+action);
action.undoAction();
}
public function redo():void {
+ if (!redoActions.length) { return; }
var action:UndoableAction = redoActions.pop();
trace("redoing "+action);
action.doAction();
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);
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 {
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 {
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 {
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 {
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 {
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 {
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 {
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 {