1 package net.systemeD.halcyon.connection {
3 public class CompositeUndoableAction extends UndoableAction {
5 private var name:String;
6 private var actions:Array = [];
7 private var actionsDone:Boolean = false;
9 public function CompositeUndoableAction(name:String) {
13 public function push(action:UndoableAction):void {
17 public function clearActions():void {
21 public override function doAction():uint {
23 return UndoableAction.FAIL;
25 var somethingDone:Boolean = false;
26 for ( var i:int = 0; i < actions.length; i++ ) {
27 var action:UndoableAction = actions[i];
29 var result:uint = action.doAction();
30 if ( result == UndoableAction.NO_CHANGE ) {
31 // splice this one out as it doesn't do anything
34 } else if ( result == UndoableAction.FAIL ) {
36 return UndoableAction.FAIL;
42 return somethingDone ? UndoableAction.SUCCESS : UndoableAction.NO_CHANGE;
45 public override function undoAction():uint {
47 return UndoableAction.FAIL;
49 undoFrom(actions.length);
50 return UndoableAction.SUCCESS;
53 public function undoFrom(index:int):void {
54 for ( var i:int = index - 1; i >= 0; i-- ) {
55 var action:UndoableAction = actions[i];
56 trace("going to do "+action);
63 public function toString():String {
64 var str:String = " {" + actions.join(",") + "}";