1 package net.systemeD.halcyon.connection.actions {
3 import net.systemeD.halcyon.connection.*;
5 public class RemoveNodeFromWayAction extends UndoableEntityAction {
7 private var nodeList:Array;
8 private var nodeRemovedFrom:Array;
10 public function RemoveNodeFromWayAction(way:Way, node:Node, nodeList:Array) {
11 super(way, "Remove node "+node.id+" from ");
13 this.nodeList = nodeList;
16 public override function doAction():uint {
19 while ((i=nodeList.indexOf(node))>-1) {
21 nodeRemovedFrom.push(i);
22 entity.dispatchEvent(new WayNodeEvent(Connection.WAY_NODE_REMOVED, node, Way(entity), i));
25 if ( nodeRemovedFrom.length > 0 ) {
26 node.removeParent(entity);
34 public override function undoAction():uint {
35 node.addParent(entity);
37 for (var i:int = nodeRemovedFrom.length - 1; i >= 0; i--) {
38 var index:int = nodeRemovedFrom[i];
39 nodeList.splice(index, 0, node);
40 entity.dispatchEvent(new WayNodeEvent(Connection.WAY_NODE_ADDED, node, Way(entity), index));