1 package net.systemeD.potlatch2 {
2 import net.systemeD.halcyon.Map;
3 import net.systemeD.halcyon.MapController;
4 import net.systemeD.halcyon.connection.*;
8 public class EditController implements MapController {
11 private var tagViewer:TagViewer;
12 private var selectedEntity:Entity;
14 private var draggingNode:Node = null;
17 public function EditController(map:Map, tagViewer:TagViewer) {
19 this.tagViewer = tagViewer;
21 map.parent.addEventListener(MouseEvent.MOUSE_MOVE, mapMouseEvent);
22 map.parent.addEventListener(MouseEvent.MOUSE_UP, mapMouseEvent);
23 map.parent.addEventListener(MouseEvent.MOUSE_DOWN, mapMouseEvent);
26 public function setActive():void {
27 map.setController(this);
30 private function mapMouseEvent(event:MouseEvent):void {
31 if ( draggingNode != null ) {
32 var mapLoc:Point = map.globalToLocal(new Point(event.stageX, event.stageY));
33 event.localX = mapLoc.x;
34 event.localY = mapLoc.y;
36 processNodeEvent(event, null);
40 public function entityMouseEvent(event:MouseEvent, entity:Entity):void {
41 if ( event.type == MouseEvent.MOUSE_DOWN )
42 event.stopPropagation();
44 if ( entity is Node || draggingNode != null ) {
45 processNodeEvent(event, entity);
49 if ( event.type == MouseEvent.CLICK ) {
50 if ( selectedEntity != null ) {
51 map.setHighlight(selectedEntity, "selected", false);
52 map.setHighlight(selectedEntity, "showNodes", false);
54 tagViewer.setEntity(entity);
55 map.setHighlight(entity, "selected", true);
56 map.setHighlight(entity, "showNodes", true);
57 selectedEntity = entity;
58 } else if ( event.type == MouseEvent.MOUSE_OVER )
59 map.setHighlight(entity, "hover", true);
60 else if ( event.type == MouseEvent.MOUSE_OUT )
61 map.setHighlight(entity, "hover", false);
65 private function processNodeEvent(event:MouseEvent, entity:Entity):void {
66 if ( draggingNode != null ) {
67 if ( event.type == MouseEvent.MOUSE_UP ) {
69 } else if ( event.type == MouseEvent.MOUSE_MOVE ) {
70 draggingNode.lat = map.coord2lat(event.localY);
71 draggingNode.lon = map.coord2lon(event.localX);
73 } else if ( event.type == MouseEvent.MOUSE_DOWN ) {
74 draggingNode = entity as Node;