UndoSupport.st
author Claus Gittinger <cg@exept.de>
Fri, 25 Feb 2005 12:00:07 +0100
changeset 1525 6384f91af636
parent 1522 7a569eca4d68
child 1526 f980a40d3c69
permissions -rw-r--r--
better info of replace action (compound-undo-action has info, too)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1522
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
     1
"
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
     2
 COPYRIGHT (c) 2004 by eXept Software AG
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
     3
              All Rights Reserved
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
     4
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
     5
 This software is furnished under a license and may be used
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
     6
 only in accordance with the terms of that license and with the
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
     8
 be provided or otherwise made available to, or used by, any
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
     9
 other person.  No title to or ownership of the software is
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    10
 hereby transferred.
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    11
"
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    12
1454
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"{ Package: 'stx:libbasic2' }"
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
Object subclass:#UndoSupport
1525
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
    16
	instanceVariableNames:'actionPerformer transaction undoList redoList
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
    17
		infoOfCurrentTransaction'
1454
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	classVariableNames:''
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	category:'Views-Text'
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
Object subclass:#CompoundAction
1525
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
    24
	instanceVariableNames:'actions userFriendlyInfo'
1454
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
	classVariableNames:''
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
	poolDictionaries:''
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
	privateIn:UndoSupport
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
!UndoSupport class methodsFor:'documentation'!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
1522
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    32
copyright
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    33
"
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    34
 COPYRIGHT (c) 2004 by eXept Software AG
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    35
              All Rights Reserved
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    36
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    37
 This software is furnished under a license and may be used
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    38
 only in accordance with the terms of that license and with the
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    39
 inclusion of the above copyright notice.   This software may not
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    40
 be provided or otherwise made available to, or used by, any
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    41
 other person.  No title to or ownership of the software is
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    42
 hereby transferred.
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    43
"
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    44
!
7a569eca4d68 copyright
Claus Gittinger <cg@exept.de>
parents: 1500
diff changeset
    45
1454
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
documentation
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
"
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
    Framework for undo & redo.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    See concrete usage in EditTextView.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    [author:]
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
         (cg@betti)
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
    [instance variables:]
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
    [class variables:]
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
    [see also:]
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
"
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
examples
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
"
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
    See usage in EditTextView
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
"
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
! !
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
!UndoSupport class methodsFor:'instance creation'!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
for:anActionPerformer
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    ^ self new actionPerformer:anActionPerformer.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
new
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
    ^ self basicNew initialize.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
! !
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
1525
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
    79
!UndoSupport methodsFor:'accessing'!
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
    80
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
    81
actionInfo:aString
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
    82
    infoOfCurrentTransaction := aString
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
    83
! !
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
    84
1454
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
!UndoSupport methodsFor:'initialization'!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
actionPerformer:something
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    actionPerformer := something.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
initialize
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    self resetHistories.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
resetHistories
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
    transaction := nil.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    undoList := OrderedCollection new.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
    redoList := OrderedCollection new.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
! !
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
!UndoSupport methodsFor:'undo & again'!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
addUndo:action
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
    transaction notNil ifTrue:[
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
        transaction add:action
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
    ].
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
closeTransactionAndAddTo:aList
1525
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   110
    |actionToAdd|
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   111
1454
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
    transaction notEmptyOrNil ifTrue:[
1525
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   113
        (transaction size == 1 and:[infoOfCurrentTransaction isNil]) ifTrue:[
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   114
            actionToAdd := transaction first
1454
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
        ] ifFalse:[
1525
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   116
            actionToAdd := (CompoundAction new actions:transaction).
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   117
            actionToAdd info:infoOfCurrentTransaction.
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   118
        ].
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   119
        aList add:actionToAdd.
1454
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
    ].
1525
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   121
    infoOfCurrentTransaction := nil.
1454
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    transaction := nil
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
executeActionFrom:doList addUndoTo:unDoList
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
    |action trans|
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
    doList notEmptyOrNil ifTrue:[
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
        action := doList removeLast.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
        trans := transaction.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
        transaction := OrderedCollection new.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
        action executeIn:actionPerformer.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
        self closeTransactionAndAddTo:unDoList.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
        transaction := trans.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    ]
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
hasRedoAction
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
    ^ redoList size > 0
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
hasUndoAction
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
    ^ undoList size > 0
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
lastRedoAction
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
    ^ redoList removeLast
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
lastUndoAction
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
    ^ undoList removeLast
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
nonUndoableDo:aBlock
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
    |prev|
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
    prev := transaction.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
    transaction := nil.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    aBlock 
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
        ensure:[
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
            transaction := prev.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
        ].
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
redo
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
    self executeActionFrom:redoList addUndoTo:undoList
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
undo
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
    self executeActionFrom:undoList addUndoTo:redoList
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
1500
f94575558ca5 info string in undo
Claus Gittinger <cg@exept.de>
parents: 1454
diff changeset
   177
undoActionInfo
f94575558ca5 info string in undo
Claus Gittinger <cg@exept.de>
parents: 1454
diff changeset
   178
    ^ undoList last info
f94575558ca5 info string in undo
Claus Gittinger <cg@exept.de>
parents: 1454
diff changeset
   179
!
f94575558ca5 info string in undo
Claus Gittinger <cg@exept.de>
parents: 1454
diff changeset
   180
1454
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
undoableDo:aBlock
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
    transaction notNil ifTrue:[
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
        aBlock value.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
    ] ifFalse:[
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
        transaction := OrderedCollection new.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
        aBlock 
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
            ensure:[  
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
                self closeTransactionAndAddTo:undoList.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
            ].
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
    ].
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
! !
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
1525
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   193
!UndoSupport::CompoundAction methodsFor:'accessing'!
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   194
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   195
info
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   196
    ^ userFriendlyInfo
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   197
!
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   198
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   199
info:aString
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   200
    userFriendlyInfo := aString
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   201
! !
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   202
1454
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
!UndoSupport::CompoundAction methodsFor:'adding'!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
actions:aCollection
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
    actions := aCollection
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
add:action
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
    actions isNil ifTrue:[
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
        actions := OrderedCollection new.
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
    ].
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
    actions add:action
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
! !
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
!UndoSupport::CompoundAction methodsFor:'execution'!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
executeIn:editor 
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
    actions reverseDo:[:each | each executeIn:editor ]
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
! !
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
!UndoSupport class methodsFor:'documentation'!
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
version
1525
6384f91af636 better info of replace action (compound-undo-action has info, too)
Claus Gittinger <cg@exept.de>
parents: 1522
diff changeset
   225
    ^ '$Header: /cvs/stx/stx/libbasic2/UndoSupport.st,v 1.4 2005-02-25 11:00:07 cg Exp $'
1454
d77bede2a767 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
! !