change relation.appendMember to use the undo system, and update various places as...
[potlatch2.git] / net / systemeD / halcyon / connection / UndoableAction.as
1 package net.systemeD.halcyon.connection {
2
3     /**
4     * UndoableAction is the base class from which other actions types inherit. An undoable action
5     * is an object that can be added to a list of actions, for example the MainUndoStack or any
6     * other list of actions.
7     *
8     * @see CompositeUndoableAction
9     * @see UndoableEntityAction
10     */
11
12     public class UndoableAction {
13
14
15         /** Something went wrong while attempting the action */
16         public static const FAIL:uint = 0;
17         /** The action worked, and entities were changed */
18         public static const SUCCESS:uint = 1;
19         /** No entity was altered by this action */
20         public static const NO_CHANGE:uint = 2; 
21
22         /**
23         * The doAction function is called when it is time to execute this action or
24         * combination of actions. It is usually triggered by either MainUndoStack.addAction
25         * or by MainUndoStack.redo.
26         *
27         * This should be overridden.
28         *
29         * @return whether the action succeed, failed or nothing happened
30         */
31         public function doAction():uint { return FAIL; }
32
33         /**
34         * The undoAction function is called in order to undo this action or combination
35         * of actions. It is usually triggered by MainUndoStack.undo.
36         *
37         * This should be overridden.
38         *
39         * @return whether undoing the action succeed, failed or nothing happened
40         */
41         public function undoAction():uint { return FAIL; }
42
43         /**
44         * Can this action be merged with the previous action? This is sometimes wanted, such as
45         * when moving nodes around.
46         *
47         * This is overridden when needed.
48         *
49         * @see net.systemeD.halcyon.connection.actions.MoveNodeAction#mergePrevious
50         */
51         public function mergePrevious(previous:UndoableAction):Boolean {
52             return false;
53         }
54     }
55     
56 }