1 package net.systemeD.potlatch2 {
2 import net.systemeD.halcyon.Map;
3 import net.systemeD.halcyon.MapController;
4 import net.systemeD.halcyon.connection.*;
5 import net.systemeD.potlatch2.controller.*;
6 import mx.managers.CursorManager;
10 public class EditController implements MapController {
13 private var tagViewer:TagViewer;
14 private var toolbox:Toolbox;
16 public var state:ControllerState;
17 private var _connection:Connection;
19 private var keys:Object={};
20 public var clipboards:Object={};
22 [Embed(source="../../../embedded/pen.png")] public var pen:Class;
23 [Embed(source="../../../embedded/pen_x.png")] public var pen_x:Class;
24 [Embed(source="../../../embedded/pen_o.png")] public var pen_o:Class;
25 [Embed(source="../../../embedded/pen_so.png")] public var pen_so:Class;
26 [Embed(source="../../../embedded/pen_plus.png")] public var pen_plus:Class;
28 public function EditController(map:Map, tagViewer:TagViewer, toolbox:Toolbox) {
30 this.tagViewer = tagViewer;
31 this.toolbox = toolbox;
32 this.toolbox.init(this);
33 setState(new NoSelection());
35 map.parent.addEventListener(MouseEvent.MOUSE_MOVE, mapMouseEvent);
36 map.parent.addEventListener(MouseEvent.MOUSE_UP, mapMouseEvent);
37 map.parent.addEventListener(MouseEvent.MOUSE_DOWN, mapMouseEvent);
38 map.parent.addEventListener(MouseEvent.CLICK, mapMouseEvent);
39 map.parent.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
40 map.parent.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
43 public function setActive():void {
44 map.setController(this);
45 _connection = map.connection;
48 public function get map():Map {
52 public function get connection():Connection {
56 public function setSelectedEntity(entity:Entity):void {
57 tagViewer.setEntity(entity);
58 toolbox.setEntity(entity);
61 private function keyDownHandler(event:KeyboardEvent):void {
62 keys[event.keyCode]=true;
65 private function keyUpHandler(event:KeyboardEvent):void {
66 trace("key code "+event.keyCode);
67 if (keys[event.keyCode]) { delete keys[event.keyCode]; }
68 var newState:ControllerState = state.processKeyboardEvent(event);
72 public function keyDown(key:Number):Boolean {
73 return Boolean(keys[key]);
76 private function mapMouseEvent(event:MouseEvent):void {
77 map.stage.focus = map.parent;
79 var mapLoc:Point = map.globalToLocal(new Point(event.stageX, event.stageY));
80 event.localX = mapLoc.x;
81 event.localY = mapLoc.y;
83 var newState:ControllerState = state.processMouseEvent(event, null);
87 public function entityMouseEvent(event:MouseEvent, entity:Entity):void {
88 map.stage.focus = map.parent;
89 //if ( event.type == MouseEvent.MOUSE_DOWN )
90 event.stopPropagation();
92 var mapLoc:Point = map.globalToLocal(new Point(event.stageX, event.stageY));
93 event.localX = mapLoc.x;
94 event.localY = mapLoc.y;
96 var newState:ControllerState = state.processMouseEvent(event, entity);
100 public function setState(newState:ControllerState):void {
101 if ( newState == state )
106 newState.setController(this);
107 newState.setPreviousState(state);
112 public function setCursor(cursor:Class):void {
113 CursorManager.removeAllCursors();
114 if (cursor) { CursorManager.setCursor(cursor); }