2 | | * Purpose |
3 | | * Hierarchy |
4 | | * Change |
5 | | * ProChange |
6 | | * GroupChange |
7 | | * AutoChange |
8 | | * Usage |
9 | | == Serializing == |
| 8 | * ''Hierarchy'' |
| 9 | * ''Change'' [[BR]] |
| 10 | Change is the base interface for all changes that need to be tracked and respectively undoed, redoed and skipped in Sophie. [[BR]] |
| 11 | Changes can be composed via GroupChanges and actually in Sophie, each more complex action is represented by a GroupChange and thus form a tree of GroupChanges, having internal nodes form the tree structure and leaves being just GroupChanges with a single ProChange in it. |
| 12 | |
| 13 | * ''Top-level Changes'' [[BR]] |
| 14 | Top-level Changes are changes cause by a user actions like creating a frame, changing the background color, etc. [[BR]] |
| 15 | Each top-level Change is represented as a GroupChange and most likely has side-effect Changes. [[BR]] |
| 16 | Top-level Changes can be undoed, redoed and skipped by the UndoManager. |
| 17 | * ''Side-effect Changes'' [[BR]] |
| 18 | Side-effect Changes are Changes which are caused to happen due to a top-level Change. [[BR]] |
| 19 | Side-effect Changes are represented as subChanges of the GroupChanges which represents the top-level Change which caused them. |
| 20 | |
| 21 | * ''Significance of Changes'' [[BR]] |
| 22 | |
| 23 | |
| 24 | * ''Main Changes'' |
| 25 | * ''ProChange'' |
| 26 | * ''GroupChange'' |
| 27 | [wiki:PRO_CHANGE_COMPOSING_R0] |
| 28 | * ''AutoChange'' |
| 29 | * ''Special Changes'' |
| 30 | * ''UndoChange'' [[BR]] |
| 31 | UndoChange is a Change which wraps an '''undo''' command issued by the UndoManager. [[BR]] |
| 32 | It cancels the effect of the last Change in the History it's associated with. |
| 33 | * ''RedoChange'' [[BR]] |
| 34 | RedoChange is a Change which wraps a '''redo''' command issued by the UndoManager. [[BR]] |
| 35 | It is only valid if the last Change the History it's associated with is an UndoChange in which case it cancels its effect. |
| 36 | * ''SkipChange'' [[BR]] |
| 37 | SkipChange is a Change which wraps a '''skip''' command issued by the UndoManager. [[BR]] |
| 38 | It accepts one parameter which is the id of a Change in the History it's associated with and cancels its effect. |
| 39 | * ''CreateChange'' [[BR]] |
| 40 | Creating ProObjects is an important special event which couldn't be handled in the standard manner and thus is wrapped in a CreateChange. |
| 41 | * ''DestroyChange'' [[BR]] |
| 42 | Same applies to destroying ProObjects. |
| 43 | * ''UnmanagedChange'' [[BR]] |
| 44 | UnmanagedChange is a Change which is meant to wrap actions which need special handling of their undo logic. [[BR]] |
| 45 | Since the Change mechanism in Sophie should handle changes related with ProObjects and Immutables automatically, the UnmanagedChange is designed to handle other actions like writing to the filesystem, for instance. |
| 46 | * ''Usage'' |
| 47 | |
| 48 | == History == |
| 49 | |
| 50 | |
| 51 | == ChangeManager == |
| 52 | * ''DefaultChangeManager'' |
| 53 | * |
| 54 | |
| 55 | [wiki:PRO_CHANGE_MANAGER_R0] |
| 56 | == UndoManager == |
| 57 | |
| 58 | * ''Euler traversal'' |
| 59 | |
| 60 | * ''operations'' |
| 61 | * ''undo'' |
| 62 | * ''redo'' |
| 63 | * ''skip'' |
| 64 | |
| 65 | [wiki:PRO_CHANGE_UNDO_MANAGER_R0] |