1 package net.systemeD.potlatch2.controller {
3 import net.systemeD.potlatch2.EditController;
4 import net.systemeD.halcyon.connection.*;
5 import net.systemeD.halcyon.Globals;
7 public class DragWayNode extends ControllerState {
8 private var draggingNode:Node;
9 private var isDraggingStarted:Boolean = false;
10 private var isNew:Boolean = false;
12 private var downX:Number;
13 private var downY:Number;
14 private var dragstate:uint=NOT_MOVED;
15 private const NOT_DRAGGING:uint=0;
16 private const NOT_MOVED:uint=1;
17 private const DRAGGING:uint=2;
19 public function DragWayNode(way:Way, node:Node, event:MouseEvent, newNode:Boolean) {
27 override public function processMouseEvent(event:MouseEvent, entity:Entity):ControllerState {
29 if (event.type==MouseEvent.MOUSE_UP) {
30 if (dragstate==DRAGGING) {
31 // mouse-up while dragging, so end drag
32 return new SelectedWayNode(selectedWay,draggingNode);
34 } else if (event.shiftKey && !isNew) {
36 var way:Way = controller.connection.createWay({}, [entity],
37 MainUndoStack.getGlobalStack().addAction);
38 return new DrawWay(way, true, false);
39 } else if (event.shiftKey && isNew) {
40 return new SelectedWayNode(selectedWay,draggingNode);
43 dragstate=NOT_DRAGGING;
44 return SelectedWayNode.selectOrEdit(selectedWay, draggingNode);
47 } else if ( event.type == MouseEvent.MOUSE_MOVE) {
49 if (dragstate==NOT_DRAGGING) {
51 } else if (dragstate==NOT_MOVED && Math.abs(downX - event.localX) < 3 && Math.abs(downY - event.localY) < 3) {
63 private function endDrag():ControllerState {
67 private function dragTo(event:MouseEvent):ControllerState {
68 draggingNode.setLatLon( controller.map.coord2lat(event.localY),
69 controller.map.coord2lon(event.localX),
70 MainUndoStack.getGlobalStack().addAction );
74 public function forceDragStart():void {
78 override public function enterState():void {
79 controller.map.setHighlight(selectedWay, { showNodes: true } );
80 Globals.vars.root.addDebug("**** -> "+this);
82 override public function exitState():void {
83 controller.map.setHighlight(selectedWay, { showNodes: false } );
84 Globals.vars.root.addDebug("**** <- "+this);
86 override public function toString():String {