private var _connection:Connection;
private var keys:Object={};
+ public var clipboards:Object={};
public function EditController(map:Map, tagViewer:TagViewer, toolbox:Toolbox) {
this._map = map;
return null;
}
+ protected function repeatTags(object:Entity):void {
+ if (!controller.clipboards[object.getType()]) { return; }
+ object.suspend();
+ var undo:CompositeUndoableAction = new CompositeUndoableAction("Repeat tags");
+ for (var k:String in controller.clipboards[object.getType()]) {
+ object.setTag(k, controller.clipboards[object.getType()][k], undo.push)
+ }
+ MainUndoStack.getGlobalStack().addAction(undo);
+
+ object.resume();
+ }
}
}
}
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); }
+ switch (event.keyCode) {
+ case 13: return stopDrawing();
+ case 27: return stopDrawing();
+ case Keyboard.BACKSPACE: return backspaceNode(MainUndoStack.getGlobalStack().addAction);
+ case 82: repeatTags(selectedWay); return this;
+ }
var cs:ControllerState = sharedKeyboardEvents(event);
return cs ? cs : this;
}
switch (event.keyCode) {
case Keyboard.BACKSPACE: return deletePOI();
case Keyboard.DELETE: return deletePOI();
+ case 82: repeatTags(selectedNode); return this; // 'R'
}
var cs:ControllerState = sharedKeyboardEvents(event);
return cs ? cs : this;
selectedNode.remove(MainUndoStack.getGlobalStack().addAction);
return new NoSelection();
}
-
+
override public function enterState():void {
selectNode(initNode);
Globals.vars.root.addDebug("**** -> "+this);
}
override public function exitState():void {
+ controller.clipboards['node']=selectedNode.getTagsCopy();
clearSelection();
Globals.vars.root.addDebug("**** <- "+this);
}
switch (event.keyCode) {
case 80: return new SelectedParallelWay(selectedWay);
case 81: Quadrilateralise.quadrilateralise(selectedWay); return this;
- case 82: selectedWay.reverseNodes(MainUndoStack.getGlobalStack().addAction); return this;
+ case 82: repeatTags(selectedWay); return this;
+ case 86: selectedWay.reverseNodes(MainUndoStack.getGlobalStack().addAction); return this;
case 89: Simplify.simplify(selectedWay, controller.map, true); return this;
case Keyboard.BACKSPACE: if (event.shiftKey) { return deleteWay(); } break;
case Keyboard.DELETE: if (event.shiftKey) { return deleteWay(); } break;
Globals.vars.root.addDebug("**** -> "+this+" "+selectedWay.id);
}
override public function exitState():void {
+ controller.clipboards['way']=selectedWay.getTagsCopy();
clearSelection();
Globals.vars.root.addDebug("**** <- "+this);
}
override public function processKeyboardEvent(event:KeyboardEvent):ControllerState {
switch (event.keyCode) {
- case 189: return removeNode(); // '-'
- case 88: return splitWay(); // 'X'
+ case 189: return removeNode(); // '-'
+ case 88: return splitWay(); // 'X'
+ case 82: repeatTags(selectedNode); return this; // 'R'
case Keyboard.BACKSPACE: return deleteNode();
case Keyboard.DELETE: return deleteNode();
}
Globals.vars.root.addDebug("**** -> "+this);
}
override public function exitState():void {
+ controller.clipboards['node']=selectedNode.getTagsCopy();
clearSelection();
Globals.vars.root.addDebug("**** <- "+this);
}