== Core geometry ==
* Undo/redo
-* Reverse way direction
* Deleting a way with junction nodes doesn't redraw them
way.addEventListener(Connection.TAG_CHANGED, wayTagChanged);
way.addEventListener(Connection.WAY_NODE_ADDED, wayNodeAdded);
way.addEventListener(Connection.WAY_NODE_REMOVED, wayNodeRemoved);
+ way.addEventListener(Connection.WAY_REORDERED, wayReordered);
way.addEventListener(Connection.WAY_DELETED, wayDeleted);
way.addEventListener(Connection.ADDED_TO_RELATION, wayRelationAdded);
way.addEventListener(Connection.REMOVED_FROM_RELATION, wayRelationRemoved);
private function wayDeleted(event:EntityEvent):void {
redraw();
}
+
+ private function wayReordered(event:EntityEvent):void {
+ redraw();
+ }
private function init():void {
recalculate();
public static var NODE_MOVED:String = "node_moved";
public static var WAY_NODE_ADDED:String = "way_node_added";
public static var WAY_NODE_REMOVED:String = "way_node_removed";
+ public static var WAY_REORDERED:String = "way_reordered";
public static var NODE_DELETED:String = "node_deleted";
public static var WAY_DELETED:String = "way_deleted";
public static var RELATION_DELETED:String = "relation_deleted";
}
}
-
+ public function reverseNodes(performAction:Function):void {
+ performAction(new ReverseNodesAction(this, nodes));
+ }
/**
* Finds the 1st way segment which intersects the projected
--- /dev/null
+package net.systemeD.halcyon.connection.actions {
+
+ import net.systemeD.halcyon.connection.*;
+
+ public class ReverseNodesAction extends UndoableEntityAction {
+
+ private var nodeList:Array;
+
+ public function ReverseNodesAction(way:Way, nodeList:Array) {
+ super(way, "Reverse");
+ this.nodeList = nodeList;
+ }
+
+ public override function doAction():uint {
+ nodeList.reverse();
+ markDirty();
+ entity.dispatchEvent(new EntityEvent(Connection.WAY_REORDERED, entity));
+ return SUCCESS;
+ }
+
+ public override function undoAction():uint {
+ nodeList.reverse();
+ markClean();
+ entity.dispatchEvent(new EntityEvent(Connection.WAY_REORDERED, entity));
+ return SUCCESS;
+ }
+ }
+}
\ No newline at end of file
controller.setState(new NoSelection());
}
}
+
+ public function doReverseDirection():void {
+ if (entity is Way) {
+ Way(entity).reverseNodes(MainUndoStack.getGlobalStack().addAction);
+ }
+ }
public function doQuadrilateralise():void {
if (entity is Way) {
click='toolbox.doDelete();'
width="28" height="28" textAlign="left" paddingLeft="6" paddingRight="0" />
<mx:Button icon="@Embed('embedded/direction.svg')"
+ click='toolbox.doReverseDirection();'
width="28" height="28" textAlign="left" paddingLeft="8" paddingRight="0" />
<mx:Button icon="@Embed('embedded/straighten.svg')"
click='toolbox.doStraighten();'