1 package net.systemeD.potlatch2.controller {
3 import flash.ui.Keyboard;
4 import net.systemeD.potlatch2.EditController;
5 import net.systemeD.halcyon.connection.*;
7 public class SelectedPOINode extends ControllerState {
8 protected var initNode:Node;
10 public function SelectedPOINode(node:Node) {
14 protected function selectNode(node:Node):void {
15 if ( firstSelected is Node && Node(firstSelected)==node )
19 editableLayer.setHighlight(node, { selected: true });
21 controller.updateSelectionUI();
25 protected function clearSelection(newState:ControllerState):void {
27 editableLayer.setHighlight(firstSelected, { selected: false });
29 if (!newState.isSelectionState()) { controller.updateSelectionUI(); }
33 override public function processMouseEvent(event:MouseEvent, entity:Entity):ControllerState {
34 if (event.type==MouseEvent.MOUSE_MOVE) { return this; }
35 if (event.type==MouseEvent.MOUSE_DOWN && event.ctrlKey && entity && entity!=firstSelected) {
36 return new SelectedMultiple([firstSelected,entity]);
38 if (event.type==MouseEvent.MOUSE_DOWN && event.shiftKey && !entity) {
39 return new DrawQuadrilateral(firstSelected as Node);
41 var cs:ControllerState = sharedMouseEvents(event, entity);
42 return cs ? cs : this;
45 override public function processKeyboardEvent(event:KeyboardEvent):ControllerState {
46 switch (event.keyCode) {
47 case Keyboard.BACKSPACE: return deletePOI();
48 case Keyboard.DELETE: return deletePOI();
49 case 82: repeatTags(firstSelected); return this; // 'R'
51 var cs:ControllerState = sharedKeyboardEvents(event);
52 return cs ? cs : this;
55 public function deletePOI():ControllerState {
56 firstSelected.connection.unregisterPOI(firstSelected as Node);
57 firstSelected.remove(MainUndoStack.getGlobalStack().addAction);
58 return new NoSelection();
61 override public function enterState():void {
63 editableLayer.setPurgable(selection,false);
65 override public function exitState(newState:ControllerState):void {
66 if(firstSelected.hasTags()) {
67 controller.clipboards['node']=firstSelected.getTagsCopy();
69 editableLayer.setPurgable(selection,true);
70 clearSelection(newState);
73 override public function toString():String {
74 return "SelectedPOINode";