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={};
21 public var imagery:Array=[];
22 public var stylesheets:Array=[];
23 public var cursorsEnabled:Boolean=true;
25 [Embed(source="../../../embedded/pen.png")] public var pen:Class;
26 [Embed(source="../../../embedded/pen_x.png")] public var pen_x:Class;
27 [Embed(source="../../../embedded/pen_o.png")] public var pen_o:Class;
28 [Embed(source="../../../embedded/pen_so.png")] public var pen_so:Class;
29 [Embed(source="../../../embedded/pen_plus.png")] public var pen_plus:Class;
31 public function EditController(map:Map, tagViewer:TagViewer, toolbox:Toolbox) {
33 this.tagViewer = tagViewer;
34 this.toolbox = toolbox;
35 this.toolbox.init(this);
36 setState(new NoSelection());
38 map.parent.addEventListener(MouseEvent.MOUSE_MOVE, mapMouseEvent);
39 map.parent.addEventListener(MouseEvent.MOUSE_UP, mapMouseEvent);
40 map.parent.addEventListener(MouseEvent.MOUSE_DOWN, mapMouseEvent);
41 map.parent.addEventListener(MouseEvent.CLICK, mapMouseEvent);
42 map.parent.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
43 map.parent.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
46 public function setActive():void {
47 map.setController(this);
48 _connection = map.connection;
51 public function get map():Map {
55 public function get connection():Connection {
59 public function setSelectedEntity(entity:Entity):void {
60 tagViewer.setEntity(entity);
61 toolbox.setEntity(entity);
64 private function keyDownHandler(event:KeyboardEvent):void {
65 keys[event.keyCode]=true;
68 private function keyUpHandler(event:KeyboardEvent):void {
69 trace("key code "+event.keyCode);
70 if (keys[event.keyCode]) { delete keys[event.keyCode]; }
71 var newState:ControllerState = state.processKeyboardEvent(event);
75 public function keyDown(key:Number):Boolean {
76 return Boolean(keys[key]);
79 private function mapMouseEvent(event:MouseEvent):void {
80 map.stage.focus = map.parent;
82 var mapLoc:Point = map.globalToLocal(new Point(event.stageX, event.stageY));
83 event.localX = mapLoc.x;
84 event.localY = mapLoc.y;
86 var newState:ControllerState = state.processMouseEvent(event, null);
90 public function entityMouseEvent(event:MouseEvent, entity:Entity):void {
91 map.stage.focus = map.parent;
92 //if ( event.type == MouseEvent.MOUSE_DOWN )
93 event.stopPropagation();
95 var mapLoc:Point = map.globalToLocal(new Point(event.stageX, event.stageY));
96 event.localX = mapLoc.x;
97 event.localY = mapLoc.y;
99 var newState:ControllerState = state.processMouseEvent(event, entity);
103 public function setState(newState:ControllerState):void {
104 if ( newState == state )
108 state.exitState(newState);
109 newState.setController(this);
110 newState.setPreviousState(state);
115 public function setCursor(cursor:Class):void {
116 CursorManager.removeAllCursors();
117 if (cursor && cursorsEnabled) { CursorManager.setCursor(cursor,2,-4,0); }