FileOperation.st
author penk
Thu, 05 Sep 2002 14:38:22 +0200
changeset 3848 17af78da62a3
parent 3842 8fb3630b63de
child 3849 1cb0ddf4b8e4
permissions -rw-r--r--
new
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
     1
"{ Package: 'stx:libtool2' }"
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
     2
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
     3
Object subclass:#FileOperation
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
     4
	instanceVariableNames:'errorString result'
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
     5
	classVariableNames:''
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
     6
	poolDictionaries:''
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
     7
	category:'Interface-Support'
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
     8
!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
     9
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    10
FileOperation subclass:#Copy
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    11
	instanceVariableNames:'colOfCopiedFiles'
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    12
	classVariableNames:''
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    13
	poolDictionaries:''
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    14
	privateIn:FileOperation
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    15
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    16
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    17
FileOperation subclass:#Create
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    18
	instanceVariableNames:''
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    19
	classVariableNames:''
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    20
	poolDictionaries:''
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    21
	privateIn:FileOperation
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    22
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    23
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    24
FileOperation subclass:#Delete
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    25
	instanceVariableNames:'fileName errorString'
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    26
	classVariableNames:''
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    27
	poolDictionaries:''
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    28
	privateIn:FileOperation
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    29
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    30
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    31
FileOperation subclass:#Move
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    32
	instanceVariableNames:'colOfMovedFiles'
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    33
	classVariableNames:''
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    34
	poolDictionaries:''
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    35
	privateIn:FileOperation
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    36
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    37
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    38
FileOperation subclass:#Rename
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    39
	instanceVariableNames:'renamedFiles'
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    40
	classVariableNames:''
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    41
	poolDictionaries:''
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    42
	privateIn:FileOperation
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    43
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    44
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    45
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    46
!FileOperation class methodsFor:'defaults'!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    47
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    48
copyMoveIfExistSuffixString
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    49
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    50
    ^ '.copy'
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    51
! !
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    52
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    53
!FileOperation class methodsFor:'private class access'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    54
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    55
copy
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    56
    ^ Copy 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    57
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    58
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    59
create
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    60
    ^ Create 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    61
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    62
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    63
delete
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    64
    ^ Delete 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    65
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    66
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    67
move
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    68
    ^ Move
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    69
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    70
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    71
rename
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    72
    ^ Rename
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    73
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
    74
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    75
!FileOperation methodsFor:'accessing'!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    76
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    77
errorString
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    78
    "return the value of the static variable 'ErrorString' (automatically generated)"
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    79
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    80
    ^ errorString
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    81
!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    82
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    83
errorString:something
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    84
    "set the value of the static variable 'ErrorString' (automatically generated)"
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    85
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    86
    errorString := something.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    87
!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    88
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    89
result
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    90
    "return the value of the instance variable 'result' (automatically generated)"
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    91
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    92
    ^ result
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    93
!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    94
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    95
result:something
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    96
    "set the value of the instance variable 'result' (automatically generated)"
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    97
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    98
    result := something.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
    99
! !
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   100
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   101
!FileOperation methodsFor:'dialogs'!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   102
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   103
fileExistDialogFor:aFile
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   104
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   105
    ^ self fileExistDialogFor:aFile withCancel:false.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   106
!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   107
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   108
fileExistDialogFor:aFile withCancel:aBoolean
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   109
    | stream string|
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   110
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   111
    aFile exists ifTrue:[
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   112
        stream := WriteStream on:''.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   113
        stream nextPutAll:'overwrite '.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   114
        stream nextPutAll:(aFile asString).
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   115
        stream nextPutAll:' from '.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   116
        (aFile modificationTime) printOn:stream format:'%(Day)-%(mon)-%(year) %h:%m:%s'.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   117
        stream nextPutAll:' with size of '.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   118
        stream nextPutAll:aFile fileSize asString.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   119
        stream cr.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   120
        stream nextPutAll:' with '.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   121
        stream nextPutAll:aFile asString.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   122
        stream nextPutAll:' from '.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   123
        (aFile modificationTime) printOn:stream format:'%(Day)-%(mon)-%(year) %h:%m:%s'.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   124
        stream nextPutAll:' with size of '.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   125
        stream nextPutAll:aFile fileSize asString.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   126
        string := stream contents. 
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   127
        stream close.
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   128
        aBoolean ifTrue:[
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   129
            ^ (Dialog confirmWithCancel:(string)).
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   130
        ] ifFalse:[
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   131
            ^ (Dialog confirm:(string)).
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   132
        ].
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   133
    ].
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   134
    ^ true
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   135
! !
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   136
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   137
!FileOperation::Copy class methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   138
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   139
copyFile:aSourceFile to:aDestFile
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   140
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   141
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   142
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   143
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   144
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   145
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   146
    instance copyFile:aSourceFile to:aDestFile.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   147
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   148
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   149
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   150
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   151
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   152
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   153
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   154
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   155
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   156
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   157
    instance copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   158
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   159
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   160
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   161
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning copyFileIfSame:copy
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   162
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   163
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   164
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   165
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   166
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   167
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   168
    instance copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning copyFileIfSame:copy.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   169
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   170
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   171
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   172
copyFiles:aColOfSourceFiles to:aDirectory
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   173
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   174
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   175
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   176
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   177
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   178
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   179
    instance copyFiles:aColOfSourceFiles to:aDirectory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   180
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   181
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   182
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   183
copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   184
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   185
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   186
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   187
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   188
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   189
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   190
    instance copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   191
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   192
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   193
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   194
copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning copyFileIfSame:copy
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   195
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   196
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   197
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   198
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   199
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   200
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   201
    instance copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning copyFileIfSame:copy.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   202
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   203
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   204
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   205
!FileOperation::Copy class methodsFor:'documentation'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   206
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   207
version
3848
penk
parents: 3842
diff changeset
   208
    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.3 2002-09-05 12:38:22 penk Exp $'
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   209
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   210
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   211
!FileOperation::Copy methodsFor:'accessing'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   212
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   213
colOfCopiedFiles
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   214
    "return the value of the instance variable 'colOfCopiedFiles' (automatically generated)"
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   215
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   216
    colOfCopiedFiles isNil ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   217
        colOfCopiedFiles := OrderedCollection new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   218
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   219
    ^ colOfCopiedFiles
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   220
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   221
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   222
!FileOperation::Copy methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   223
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   224
copyFile:aSourceFile to:aDestFile
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   225
    "defete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   226
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   227
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   228
    self copyFile:aSourceFile to:aDestFile withOverWriteWarning:true
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   229
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   230
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   231
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   232
    "copy to
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   233
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   234
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   235
    self copyFile:aSourceFile to:aDestFile withOverWriteWarning:true copyFileIfSame:true
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   236
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   237
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   238
copyFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning copyFileIfSame:copy
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   239
    "copy to
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   240
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   241
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   242
    |newFile fileString targetDirectory targetIsDirectory sourceIsDirectory suffix|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   243
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   244
    sourceIsDirectory := aSourceFile isDirectory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   245
    targetIsDirectory := aDestFile isDirectory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   246
    targetIsDirectory ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   247
        targetDirectory := aDestFile.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   248
        newFile := aDestFile construct:(aSourceFile baseName).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   249
    ] ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   250
        targetDirectory := aDestFile directory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   251
        newFile := aDestFile.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   252
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   253
    "/ do not copy if destination directory doest exist.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   254
    (targetDirectory exists not) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   255
        DialogBox warn:'cant copy to not existing directory ', targetDirectory asString. 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   256
        result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   257
        ^ self
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   258
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   259
    (newFile exists) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   260
        ((newFile asString = aSourceFile asString) and:[copy]) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   261
            [newFile exists] whileTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   262
                suffix := newFile suffix.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   263
                fileString := newFile baseName withoutSuffix, self class copyMoveIfExistSuffixString, '.', suffix.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   264
                newFile := targetDirectory construct:fileString.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   265
            ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   266
        ] ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   267
            overWriteWarning ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   268
                (self fileExistDialogFor:newFile) ifFalse:[ 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   269
                    result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   270
                    ^ self.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   271
                ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   272
            ] ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   273
                    result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   274
                    ^ self.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   275
            ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   276
        ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   277
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   278
    Error handle:[:ex|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   279
        "was not able to copy it"
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   280
        WarningBox warn:'on copy file - ', ex errorString.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   281
        self errorString:('on copy file - ', ex description asString).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   282
        result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   283
    ] do:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   284
        sourceIsDirectory ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   285
            OperatingSystem recursiveCopyDirectory:(aSourceFile pathName) 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   286
                                                to:newFile.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   287
        ] ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   288
            aSourceFile copyTo:newFile.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   289
        ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   290
        DirectoryContents flushCachedDirectory:(aSourceFile directory).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   291
        result := true.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   292
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   293
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   294
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   295
copyFiles:aColOfSourceFiles to:aDirectory
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   296
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   297
    ^ self copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:true. 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   298
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   299
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   300
copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   301
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   302
    ^ self copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning copyFileIfSame:true.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   303
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   304
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   305
copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning copyFileIfSame:copy
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   306
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   307
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   308
    |newFile suffix fileString sourceIsDirectory askResult|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   309
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   310
    (aDirectory exists not) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   311
        DialogBox warn:'cant copy to not existing directory ', aDirectory asString. 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   312
        result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   313
        ^ self
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   314
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   315
    (aDirectory isDirectory not) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   316
        DialogBox warn:'destination ', aDirectory asString, ' is not a directory'. 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   317
        result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   318
        ^ self
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   319
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   320
    aColOfSourceFiles do:[: filename |
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   321
        newFile := aDirectory construct:(filename baseName).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   322
        sourceIsDirectory := filename isDirectory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   323
        (newFile exists) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   324
            askResult := true.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   325
            ((newFile asString = filename asString) and:[copy]) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   326
                [newFile exists] whileTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   327
                    suffix := newFile suffix.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   328
                    fileString := newFile baseName withoutSuffix, self class copyMoveIfExistSuffixString, '.', suffix.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   329
                    newFile := aDirectory construct:fileString.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   330
                ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   331
            ] ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   332
                overWriteWarning ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   333
                    askResult := (self fileExistDialogFor:newFile withCancel:true).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   334
                    askResult isNil ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   335
                        result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   336
                        ^ self.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   337
                    ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   338
                ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   339
            ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   340
        ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   341
        askResult ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   342
            Error handle:[:ex|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   343
                "was not able to copy it"
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   344
                result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   345
                self errorString:('on copy file - ', ex description asString).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   346
                ( Dialog 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   347
                    confirm:('error on copy file - ', ex description asString) 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   348
                    title:'Copy'
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   349
                    yesLabel:'Continue' 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   350
                    noLabel:'Abort') ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   351
                    ^ self.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   352
                ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   353
            ] do:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   354
                sourceIsDirectory ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   355
                    OperatingSystem recursiveCopyDirectory:(filename asString)  
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   356
                                                        to:(newFile asString).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   357
                ] ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   358
                    filename copyTo:newFile.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   359
                ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   360
            ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   361
            self colOfCopiedFiles add:filename
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   362
        ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   363
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   364
    DirectoryContents flushCachedDirectory:aDirectory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   365
    result := true.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   366
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   367
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   368
!FileOperation::Create class methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   369
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   370
createDirectory:newName
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   371
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   372
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   373
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   374
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   375
    instance createDirectory:newName.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   376
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   377
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   378
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   379
createFile:newName
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   380
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   381
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   382
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   383
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   384
    instance createFile:newName.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   385
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   386
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   387
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   388
!FileOperation::Create class methodsFor:'documentation'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   389
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   390
version
3848
penk
parents: 3842
diff changeset
   391
    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.3 2002-09-05 12:38:22 penk Exp $'
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   392
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   393
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   394
!FileOperation::Create methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   395
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   396
createDirectory:newName
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   397
    |msg|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   398
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   399
    newName exists ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   400
        DialogBox warn:(newName, ' already exists.').
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   401
        result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   402
        ^ self
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   403
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   404
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   405
    newName makeDirectory ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   406
        msg := errorString := ('cannot create directory '', newName,'' !!') , '\\(' , (OperatingSystem lastErrorString) , ')'.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   407
        errorString := msg withCRs.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   408
        DialogBox warn:errorString.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   409
        result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   410
        ^ self
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   411
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   412
    result := true.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   413
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   414
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   415
createFile:file
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   416
    "create an empty file"
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   417
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   418
    |aStream newName msg|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   419
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   420
    newName := file baseName.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   421
    file exists ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   422
        (Dialog 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   423
            confirm:(newName, ' already exists\\truncate ?') withCRs
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   424
            yesLabel:('Truncate')
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   425
            noLabel:('Cancel'))
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   426
        ifFalse:[^ self].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   427
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   428
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   429
    FileStream openErrorSignal handle:[:ex|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   430
        msg := ('Cannot create file '', newName,'' !!') , '\\(' , (FileStream lastErrorString) , ')'.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   431
        errorString := msg withCRs.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   432
        ^ DialogBox warn:errorString
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   433
    ] do:[    
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   434
        aStream := file newReadWriteStream.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   435
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   436
    aStream notNil ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   437
        aStream close.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   438
    ] ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   439
        msg := ('Cannot create file '', newName, '' !!') , '\\(' , (FileStream lastErrorString) , ')'.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   440
        errorString := msg withCRs.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   441
        ^ DialogBox warn:errorString
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   442
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   443
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   444
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   445
!FileOperation::Delete class methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   446
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   447
deleteFile:aFileOrDirectory
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   448
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   449
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   450
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   451
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   452
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   453
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   454
    instance deleteFile:aFileOrDirectory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   455
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   456
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   457
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   458
deleteFiles:aColOfFiles
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   459
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   460
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   461
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   462
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   463
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   464
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   465
    instance deleteFiles:aColOfFiles.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   466
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   467
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   468
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   469
!FileOperation::Delete class methodsFor:'documentation'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   470
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   471
version
3848
penk
parents: 3842
diff changeset
   472
    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.3 2002-09-05 12:38:22 penk Exp $'
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   473
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   474
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   475
!FileOperation::Delete methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   476
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   477
deleteFile:aFileOrDirectory
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   478
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   479
    | file isDirectory |
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   480
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   481
    aFileOrDirectory notNil ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   482
        file := aFileOrDirectory asFilename.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   483
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   484
        file exists ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   485
            isDirectory := file isDirectory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   486
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   487
            Error handle:[:ex|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   488
                "was not able to remove it"
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   489
                Smalltalk beep.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   490
                self errorString:((ex description, '\', ex signal notifierString) withCRs).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   491
                result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   492
            ] do:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   493
                isDirectory ifTrue:[file recursiveRemove] ifFalse:[file remove].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   494
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   495
             "/ flush parent directory or directory
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   496
                DirectoryContents flushCachedDirectory:(file directory).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   497
            ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   498
        ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   499
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   500
    result := true.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   501
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   502
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   503
deleteFiles:colOfFiles
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   504
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   505
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   506
    | retVal ask size|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   507
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   508
    ask := true.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   509
    size := colOfFiles size.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   510
    colOfFiles do:[: filename |
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   511
        ask ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   512
            size = 1 ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   513
                retVal := Dialog 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   514
                    confirmWithCancel:('really delete ', filename asString , ' ?')
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   515
                               labels:#('Yes' 'No' 'Cancel')
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   516
                               values:#(#yes #no #cancel)
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   517
                              default:1.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   518
            ] ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   519
                retVal := Dialog 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   520
                    confirmWithCancel:('really delete ', filename asString , ' ?')
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   521
                               labels:#('Yes' 'No' 'Yes to All' 'Cancel')
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   522
                               values:#(#yes #no #yesToAll #cancel)
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   523
                              default:1.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   524
            ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   525
        ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   526
        retVal == #cancel ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   527
            ^ self.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   528
        ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   529
        retVal == #yes ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   530
            self deleteFile:filename.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   531
        ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   532
        retVal == #yesToAll ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   533
            self deleteFile:filename.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   534
            ask := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   535
            retVal := #yes.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   536
        ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   537
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   538
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   539
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   540
!FileOperation::Move class methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   541
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   542
moveFile:aSourceFile to:aDestFile
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   543
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   544
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   545
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   546
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   547
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   548
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   549
    instance moveFile:aSourceFile to:aDestFile.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   550
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   551
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   552
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   553
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   554
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   555
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   556
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   557
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   558
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   559
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   560
    instance moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   561
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   562
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   563
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   564
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   565
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   566
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   567
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   568
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   569
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   570
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   571
    instance moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   572
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   573
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   574
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   575
moveFiles:aColOfSourceFiles to:aDirectory
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   576
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   577
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   578
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   579
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   580
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   581
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   582
    instance moveFiles:aColOfSourceFiles to:aDirectory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   583
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   584
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   585
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   586
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   587
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   588
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   589
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   590
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   591
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   592
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   593
    instance moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   594
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   595
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   596
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   597
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   598
    "delete current selected files/directories
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   599
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   600
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   601
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   602
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   603
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   604
    instance moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   605
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   606
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   607
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   608
!FileOperation::Move class methodsFor:'documentation'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   609
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   610
version
3848
penk
parents: 3842
diff changeset
   611
    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.3 2002-09-05 12:38:22 penk Exp $'
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   612
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   613
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   614
!FileOperation::Move methodsFor:'accessing'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   615
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   616
colOfMovedFiles
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   617
    "return the value of the instance variable 'colOfMovedFiles' (automatically generated)"
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   618
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   619
    colOfMovedFiles isNil ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   620
        colOfMovedFiles := OrderedCollection new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   621
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   622
    ^ colOfMovedFiles
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   623
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   624
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   625
!FileOperation::Move methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   626
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   627
moveFile:aSourceFile to:aDestFile
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   628
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   629
    ^ self moveFile:aSourceFile to:aDestFile withOverWriteWarning:true.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   630
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   631
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   632
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   633
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   634
    ^ self moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:true
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   635
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   636
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   637
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   638
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   639
    |newFile fileString targetDirectory targetIsDirectory suffix|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   640
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   641
    targetIsDirectory := aDestFile isDirectory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   642
    targetIsDirectory ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   643
        targetDirectory := aDestFile.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   644
        newFile := aDestFile construct:(aSourceFile baseName).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   645
    ] ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   646
        targetDirectory := aDestFile directory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   647
        newFile := aDestFile.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   648
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   649
    "/ do not copy if destination directory doest exist.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   650
    (targetDirectory exists not) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   651
        DialogBox warn:'cant move to not existing directory ', targetDirectory asString. 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   652
        result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   653
        ^ self
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   654
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   655
    (newFile exists) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   656
        ((newFile asString = aSourceFile asString) and:[move]) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   657
            [newFile exists] whileTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   658
                suffix := newFile suffix.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   659
                fileString := newFile baseName withoutSuffix, self class copyMoveIfExistSuffixString, '.', suffix.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   660
                newFile := targetDirectory construct:fileString.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   661
            ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   662
        ] ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   663
            overWriteWarning ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   664
                (self fileExistDialogFor:newFile) ifFalse:[ 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   665
                    result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   666
                    ^ self.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   667
                ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   668
            ] ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   669
                    result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   670
                    ^ self.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   671
            ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   672
        ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   673
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   674
    Error handle:[:ex|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   675
        "was not able to copy it"
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   676
        WarningBox warn:'on copy file - ', ex errorString.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   677
        self errorString:('on copy file - ', ex description asString).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   678
        result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   679
    ] do:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   680
        aSourceFile moveTo:newFile.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   681
        DirectoryContents flushCachedDirectory:(aSourceFile directory).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   682
        result := true.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   683
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   684
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   685
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   686
moveFiles:aColOfSourceFiles to:aDirectory
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   687
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   688
    ^ self moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:true
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   689
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   690
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   691
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   692
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   693
    ^ self moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:true
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   694
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   695
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   696
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   697
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   698
    |newFile suffix fileString askResult|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   699
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   700
    (aDirectory exists not) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   701
        DialogBox warn:'cant move to not existing directory ', aDirectory asString. 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   702
        result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   703
        ^ self
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   704
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   705
    (aDirectory isDirectory not) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   706
        DialogBox warn:'destination ', aDirectory asString, ' is not a directory'. 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   707
        result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   708
        ^ self
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   709
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   710
    aColOfSourceFiles do:[: filename |
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   711
        newFile := aDirectory construct:filename baseName.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   712
        (newFile exists) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   713
            askResult := true.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   714
            ((newFile asString = filename asString) and:[move]) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   715
                [newFile exists] whileTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   716
                    suffix := newFile suffix.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   717
                    fileString := newFile baseName withoutSuffix, self class copyMoveIfExistSuffixString, '.', suffix.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   718
                    newFile := aDirectory construct:fileString.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   719
                ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   720
            ] ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   721
                overWriteWarning ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   722
                    askResult := (self fileExistDialogFor:newFile withCancel:true).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   723
                    askResult isNil ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   724
                        result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   725
                        ^ self.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   726
                    ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   727
                ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   728
            ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   729
        ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   730
        askResult ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   731
            Error handle:[:ex|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   732
                "was not able to copy it"
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   733
                result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   734
                self errorString:('on move file - ', ex description asString).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   735
                ( Dialog 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   736
                    confirm:('error on move file - ', ex description asString) 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   737
                    title:'Move'
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   738
                    yesLabel:'Continue' 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   739
                    noLabel:'Abort') ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   740
                    ^ self.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   741
                ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   742
            ] do:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   743
                filename moveTo:newFile.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   744
            ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   745
            self colOfMovedFiles add:filename
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   746
        ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   747
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   748
    DirectoryContents flushCachedDirectory:aDirectory.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   749
    result := true.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   750
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   751
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   752
!FileOperation::Rename class methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   753
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   754
renameFile:oldFile to:newName
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   755
    "move from to
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   756
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   757
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   758
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   759
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   760
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   761
    instance renameFile:oldFile to:newName.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   762
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   763
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   764
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   765
renameFiles:aColOfFiles 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   766
    "move from to
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   767
    "
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   768
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   769
    |instance|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   770
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   771
    instance := self new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   772
    instance renameFiles:aColOfFiles.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   773
    ^ instance
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   774
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   775
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   776
!FileOperation::Rename class methodsFor:'defaults'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   777
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   778
goodRenameDefaultFor:oldName lastOld:lastOldName lastNew:lastNewName
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   779
    |prefix suffix lastNewSize lastOldSize t
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   780
     lastOldWOSuffix lastNewWOSuffix oldWOSuffix lastOldRest oldRest lastNewRest
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   781
     lastRemoved lastInserted|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   782
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   783
    lastNewName isNil ifTrue:[ ^ nil].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   784
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   785
    lastNewSize := lastNewName size.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   786
    lastOldSize := lastOldName size.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   787
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   788
    "/ intelligent default ...
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   789
    (lastNewName endsWith:lastOldName) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   790
        prefix := lastNewName copyTo:(lastNewSize - lastOldSize).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   791
        ^ (prefix , oldName).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   792
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   793
    (lastOldName endsWith:lastNewName) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   794
        prefix := lastOldName copyTo:(lastOldSize - lastNewSize).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   795
        ^ (oldName copyFrom:prefix size+1).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   796
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   797
    (lastOldName withoutSeparators = lastNewName) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   798
        "/ intelligent default ...
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   799
        ^ oldName withoutSeparators.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   800
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   801
    (lastNewName startsWith:lastOldName) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   802
        "/ intelligent default ...
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   803
        suffix := lastNewName copyLast:(lastNewSize - lastOldSize).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   804
        ^ (oldName , suffix).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   805
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   806
    (lastOldName startsWith:lastNewName) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   807
        suffix := lastOldName copyLast:(lastOldSize - lastNewSize).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   808
        (oldName endsWith:suffix) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   809
            ^ (oldName copyWithoutLast:suffix size).
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   810
        ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   811
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   812
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   813
    lastOldWOSuffix := lastOldName asFilename withoutSuffix name.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   814
    lastNewWOSuffix := lastNewName asFilename withoutSuffix name.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   815
    oldWOSuffix := oldName asFilename withoutSuffix name.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   816
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   817
    prefix := lastOldWOSuffix commonPrefixWith:oldWOSuffix.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   818
    (lastNewWOSuffix startsWith:prefix) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   819
        lastOldRest := lastOldWOSuffix copyFrom:prefix size + 1.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   820
        lastNewRest := lastNewWOSuffix copyFrom:prefix size + 1.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   821
        oldRest := oldWOSuffix copyFrom:prefix size + 1.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   822
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   823
        (lastNewRest endsWith:lastOldRest) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   824
            t := lastNewRest copyWithoutLast:lastOldRest size.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   825
            ^ ((prefix , t , oldRest) asFilename withSuffix:oldName asFilename suffix) name
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   826
        ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   827
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   828
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   829
    suffix := lastOldWOSuffix commonSuffixWith:lastNewWOSuffix.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   830
    suffix size > 0 ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   831
        "/ last change changed something at the beginning
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   832
        prefix := oldWOSuffix commonPrefixWith:lastOldWOSuffix.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   833
        prefix size > 0 ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   834
            "/ this name starts with the same characters
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   835
            lastRemoved := lastOldWOSuffix copyWithoutLast:suffix size.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   836
            lastInserted := lastNewWOSuffix copyWithoutLast:suffix size.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   837
            ^ lastInserted , (oldName copyFrom:lastRemoved size + 1)
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   838
        ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   839
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   840
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   841
    ^ nil
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   842
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   843
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   844
!FileOperation::Rename class methodsFor:'documentation'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   845
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   846
version
3848
penk
parents: 3842
diff changeset
   847
    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.3 2002-09-05 12:38:22 penk Exp $'
3842
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   848
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   849
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   850
!FileOperation::Rename methodsFor:'accessing'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   851
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   852
renamedFiles
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   853
    "return the value of the instance variable 'lastRenamedFile' (automatically generated)"
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   854
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   855
    renamedFiles isNil ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   856
        renamedFiles := OrderedCollection new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   857
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   858
    ^ renamedFiles
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   859
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   860
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   861
!FileOperation::Rename methodsFor:'actions'!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   862
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   863
renameFile:oldFile to:newName
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   864
    "rename a file (or directory)"
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   865
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   866
    |old new msg|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   867
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   868
    (oldFile isNil or:[newName isNil]) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   869
        result := false
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   870
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   871
    (oldFile asString isBlank or:[newName isBlank]) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   872
        result := false
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   873
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   874
    (oldFile baseName = newName) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   875
        result := false
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   876
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   877
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   878
    old := oldFile.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   879
    new := oldFile directory construct:newName.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   880
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   881
    OperatingSystem errorSignal handle:[:ex|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   882
        msg := ('Cannot rename file ', old baseName,' to ', newName,' !!'), '\\(' ,(OperatingSystem lastErrorString) , ')'.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   883
        DialogBox warn:msg withCRs.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   884
        result := false
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   885
    ] do:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   886
        new exists ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   887
            (DialogBox confirm:(new baseName allBold, ' already exists - rename (i.e. overwrite) anyway ?'))
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   888
            ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   889
                result := false.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   890
                ^ self.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   891
            ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   892
        ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   893
        old renameTo:new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   894
        self renamedFiles add:new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   895
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   896
    result := true.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   897
!
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   898
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   899
renameFiles:aColOfFiles 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   900
    "rename the selected file(s)"
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   901
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   902
    |queryBox b lastNewName lastOldName initialText oldName|
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   903
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   904
    queryBox := FilenameEnterBox new.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   905
    queryBox okText:'Rename'.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   906
    aColOfFiles size > 1 ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   907
        b := queryBox addAbortButtonLabelled:'Cancel All'.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   908
        b action:[^ self]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   909
    ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   910
    aColOfFiles do:[:oldFile | 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   911
        oldName := oldFile baseName asString.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   912
        queryBox title:('Rename ' , oldName , ' to:').
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   913
        lastNewName notNil ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   914
            initialText := self class 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   915
                        goodRenameDefaultFor:oldName
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   916
                        lastOld:lastOldName
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   917
                        lastNew:lastNewName
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   918
        ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   919
        initialText notNil ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   920
            queryBox initialText:initialText
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   921
        ] ifFalse:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   922
            queryBox initialText:oldName
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   923
        ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   924
        queryBox 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   925
            action:[:newName | 
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   926
                (self renameFile:oldFile to:newName asString) ifTrue:[
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   927
                    result := true
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   928
                ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   929
                lastOldName := oldName.
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   930
                lastNewName := newName
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   931
            ].
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   932
        queryBox showAtPointer
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   933
    ]
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   934
! !
8fb3630b63de checkin from browser
penk
parents: 3841
diff changeset
   935
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   936
!FileOperation class methodsFor:'documentation'!
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   937
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   938
version
3848
penk
parents: 3842
diff changeset
   939
    ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.3 2002-09-05 12:38:22 penk Exp $'
3841
5dbada9cdc3f initial checkin
penk
parents:
diff changeset
   940
! !