1 package net.systemeD.potlatch2.controller {
3 import flash.ui.Keyboard;
4 import net.systemeD.potlatch2.EditController;
5 import net.systemeD.halcyon.connection.*;
6 import net.systemeD.halcyon.Globals;
8 public class SelectedPOINode extends ControllerState {
9 protected var selectedNode:Node;
10 protected var initNode:Node;
12 public function SelectedPOINode(node:Node) {
16 protected function selectNode(node:Node):void {
17 if ( node == selectedNode )
21 controller.setSelectedEntity(node);
22 controller.map.setHighlight(node, { selected: true });
27 protected function clearSelection():void {
28 if ( selectedNode != null ) {
29 controller.map.setHighlight(selectedNode, { selected: false });
30 controller.setSelectedEntity(null);
35 override public function processMouseEvent(event:MouseEvent, entity:Entity):ControllerState {
36 if (event.type==MouseEvent.MOUSE_MOVE || event.type==MouseEvent.ROLL_OVER || event.type==MouseEvent.MOUSE_OUT) { return this; }
37 var focus:Entity = NoSelection.getTopLevelFocusEntity(entity);
39 if ( event.type == MouseEvent.MOUSE_UP ) {
40 if ( entity is Way ) {
41 return new SelectedWay(entity as Way);
42 // ** do we need 'entity is Node && focus is Way' for POIs in ways?
43 } else if ( focus == null && map.dragstate!=map.DRAGGING ) {
44 return new NoSelection();
46 } else if ( event.type == MouseEvent.MOUSE_DOWN ) {
47 if ( focus is Node ) {
48 return new DragPOINode(entity as Node,event,false);
49 } else if ( entity is Node && focus is Way ) {
50 return new DragWayNode(focus as Way,entity as Node,event,false);
57 override public function processKeyboardEvent(event:KeyboardEvent):ControllerState {
58 switch (event.keyCode) {
59 case Keyboard.BACKSPACE: return deletePOI();
60 case Keyboard.DELETE: return deletePOI();
65 public function deletePOI():ControllerState {
66 controller.connection.unregisterPOI(selectedNode);
67 selectedNode.remove(MainUndoStack.getGlobalStack().addAction);
68 return new NoSelection();
71 override public function enterState():void {
73 Globals.vars.root.addDebug("**** -> "+this);
75 override public function exitState():void {
77 Globals.vars.root.addDebug("**** <- "+this);
80 override public function toString():String {
81 return "SelectedPOINode";