Move.st
author penk
Wed, 04 Sep 2002 14:23:01 +0200
changeset 1588 6dde5ad32643
parent 1585 91ec771207a2
permissions -rw-r--r--
now ready to use
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1585
91ec771207a2 initial checkin
penk
parents:
diff changeset
     1
"{ Package: 'stx:libtool2' }"
91ec771207a2 initial checkin
penk
parents:
diff changeset
     2
91ec771207a2 initial checkin
penk
parents:
diff changeset
     3
FileOperations subclass:#Move
1588
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
     4
	instanceVariableNames:'colOfMovedFiles'
1585
91ec771207a2 initial checkin
penk
parents:
diff changeset
     5
	classVariableNames:''
91ec771207a2 initial checkin
penk
parents:
diff changeset
     6
	poolDictionaries:''
91ec771207a2 initial checkin
penk
parents:
diff changeset
     7
	category:'Interface-Support'
91ec771207a2 initial checkin
penk
parents:
diff changeset
     8
!
91ec771207a2 initial checkin
penk
parents:
diff changeset
     9
91ec771207a2 initial checkin
penk
parents:
diff changeset
    10
91ec771207a2 initial checkin
penk
parents:
diff changeset
    11
!Move class methodsFor:'actions'!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    12
91ec771207a2 initial checkin
penk
parents:
diff changeset
    13
moveFile:aSourceFile to:aDestFile
1588
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    14
    "delete current selected files/directories
1585
91ec771207a2 initial checkin
penk
parents:
diff changeset
    15
    "
91ec771207a2 initial checkin
penk
parents:
diff changeset
    16
91ec771207a2 initial checkin
penk
parents:
diff changeset
    17
    |instance|
91ec771207a2 initial checkin
penk
parents:
diff changeset
    18
91ec771207a2 initial checkin
penk
parents:
diff changeset
    19
    instance := self new.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    20
    instance moveFile:aSourceFile to:aDestFile.
91ec771207a2 initial checkin
penk
parents:
diff changeset
    21
    ^ instance
1588
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    22
!
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    23
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    24
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    25
    "delete current selected files/directories
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    26
    "
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    27
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    28
    |instance|
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    29
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    30
    instance := self new.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    31
    instance moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    32
    ^ instance
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    33
!
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    34
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    35
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    36
    "delete current selected files/directories
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    37
    "
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    38
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    39
    |instance|
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    40
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    41
    instance := self new.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    42
    instance moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    43
    ^ instance
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    44
!
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    45
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    46
moveFiles:aColOfSourceFiles to:aDirectory
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    47
    "delete current selected files/directories
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    48
    "
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    49
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    50
    |instance|
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    51
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    52
    instance := self new.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    53
    instance moveFiles:aColOfSourceFiles to:aDirectory.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    54
    ^ instance
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    55
!
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    56
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    57
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    58
    "delete current selected files/directories
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    59
    "
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    60
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    61
    |instance|
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    62
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    63
    instance := self new.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    64
    instance moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    65
    ^ instance
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    66
!
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    67
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    68
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    69
    "delete current selected files/directories
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    70
    "
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    71
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    72
    |instance|
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    73
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    74
    instance := self new.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    75
    instance moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    76
    ^ instance
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    77
! !
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    78
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    79
!Move methodsFor:'accessing'!
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    80
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    81
colOfMovedFiles
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    82
    "return the value of the instance variable 'colOfMovedFiles' (automatically generated)"
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    83
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    84
    colOfMovedFiles isNil ifTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    85
        colOfMovedFiles := OrderedCollection new.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    86
    ].
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    87
    ^ colOfMovedFiles
1585
91ec771207a2 initial checkin
penk
parents:
diff changeset
    88
! !
91ec771207a2 initial checkin
penk
parents:
diff changeset
    89
91ec771207a2 initial checkin
penk
parents:
diff changeset
    90
!Move methodsFor:'actions'!
91ec771207a2 initial checkin
penk
parents:
diff changeset
    91
91ec771207a2 initial checkin
penk
parents:
diff changeset
    92
moveFile:aSourceFile to:aDestFile
1588
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    93
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    94
    ^ self moveFile:aSourceFile to:aDestFile withOverWriteWarning:true.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    95
!
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    96
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    97
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    98
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
    99
    ^ self moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:true
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   100
!
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   101
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   102
moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move
1585
91ec771207a2 initial checkin
penk
parents:
diff changeset
   103
1588
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   104
    |newFile fileString targetDirectory targetIsDirectory suffix|
1585
91ec771207a2 initial checkin
penk
parents:
diff changeset
   105
1588
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   106
    targetIsDirectory := aDestFile isDirectory.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   107
    targetIsDirectory ifTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   108
        targetDirectory := aDestFile.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   109
        newFile := aDestFile construct:(aSourceFile baseName).
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   110
    ] ifFalse:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   111
        targetDirectory := aDestFile directory.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   112
        newFile := aDestFile.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   113
    ].
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   114
    "/ do not copy if destination directory doest exist.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   115
    (targetDirectory exists not) ifTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   116
        DialogBox warn:'cant move to not existing directory ', targetDirectory asString. 
1585
91ec771207a2 initial checkin
penk
parents:
diff changeset
   117
        result := false.
91ec771207a2 initial checkin
penk
parents:
diff changeset
   118
        ^ self
91ec771207a2 initial checkin
penk
parents:
diff changeset
   119
    ].
1588
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   120
    (newFile exists) ifTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   121
        ((newFile asString = aSourceFile asString) and:[move]) ifTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   122
            [newFile exists] whileTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   123
                suffix := newFile suffix.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   124
                fileString := newFile baseName withoutSuffix, self class copyMoveIfExistSuffixString, '.', suffix.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   125
                newFile := targetDirectory construct:fileString.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   126
            ].
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   127
        ] ifFalse:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   128
            overWriteWarning ifTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   129
                (self fileExistDialogFor:newFile) ifFalse:[ 
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   130
                    result := false.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   131
                    ^ self.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   132
                ]
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   133
            ] ifFalse:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   134
                    result := false.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   135
                    ^ self.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   136
            ]
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   137
        ].
1585
91ec771207a2 initial checkin
penk
parents:
diff changeset
   138
    ].
91ec771207a2 initial checkin
penk
parents:
diff changeset
   139
    Error handle:[:ex|
1588
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   140
        "was not able to copy it"
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   141
        WarningBox warn:'on copy file - ', ex errorString.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   142
        self errorString:('on copy file - ', ex description asString).
1585
91ec771207a2 initial checkin
penk
parents:
diff changeset
   143
        result := false.
91ec771207a2 initial checkin
penk
parents:
diff changeset
   144
    ] do:[
1588
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   145
        aSourceFile moveTo:newFile.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   146
        DirectoryContents flushCachedDirectory:(aSourceFile directory).
1585
91ec771207a2 initial checkin
penk
parents:
diff changeset
   147
        result := true.
91ec771207a2 initial checkin
penk
parents:
diff changeset
   148
    ].
1588
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   149
!
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   150
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   151
moveFiles:aColOfSourceFiles to:aDirectory
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   152
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   153
    ^ self moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:true
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   154
!
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   155
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   156
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   157
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   158
    ^ self moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:true
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   159
!
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   160
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   161
moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   162
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   163
    |newFile suffix fileString askResult|
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   164
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   165
    (aDirectory exists not) ifTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   166
        DialogBox warn:'cant move to not existing directory ', aDirectory asString. 
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   167
        result := false.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   168
        ^ self
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   169
    ].
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   170
    (aDirectory isDirectory not) ifTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   171
        DialogBox warn:'destination ', aDirectory asString, ' is not a directory'. 
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   172
        result := false.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   173
        ^ self
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   174
    ].
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   175
    aColOfSourceFiles do:[: filename |
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   176
        newFile := aDirectory construct:filename baseName.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   177
        (newFile exists) ifTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   178
            askResult := true.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   179
            ((newFile asString = filename asString) and:[move]) ifTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   180
                [newFile exists] whileTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   181
                    suffix := newFile suffix.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   182
                    fileString := newFile baseName withoutSuffix, self class copyMoveIfExistSuffixString, '.', suffix.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   183
                    newFile := aDirectory construct:fileString.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   184
                ].
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   185
            ] ifFalse:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   186
                overWriteWarning ifTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   187
                    askResult := (self fileExistDialogFor:newFile withCancel:true).
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   188
                    askResult isNil ifTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   189
                        result := false.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   190
                        ^ self.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   191
                    ]
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   192
                ]
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   193
            ].
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   194
        ].
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   195
        askResult ifTrue:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   196
            Error handle:[:ex|
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   197
                "was not able to copy it"
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   198
                result := false.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   199
                self errorString:('on move file - ', ex description asString).
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   200
                ( Dialog 
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   201
                    confirm:('error on move file - ', ex description asString) 
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   202
                    title:'Move'
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   203
                    yesLabel:'Continue' 
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   204
                    noLabel:'Abort') ifFalse:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   205
                    ^ self.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   206
                ].
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   207
            ] do:[
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   208
                filename moveTo:newFile.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   209
            ].
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   210
            self colOfMovedFiles add:filename
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   211
        ]
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   212
    ].
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   213
    DirectoryContents flushCachedDirectory:aDirectory.
6dde5ad32643 now ready to use
penk
parents: 1585
diff changeset
   214
    result := true.
1585
91ec771207a2 initial checkin
penk
parents:
diff changeset
   215
! !
91ec771207a2 initial checkin
penk
parents:
diff changeset
   216
91ec771207a2 initial checkin
penk
parents:
diff changeset
   217
!Move class methodsFor:'documentation'!
91ec771207a2 initial checkin
penk
parents:
diff changeset
   218
91ec771207a2 initial checkin
penk
parents:
diff changeset
   219
version
91ec771207a2 initial checkin
penk
parents:
diff changeset
   220
    ^ '$Header$'
91ec771207a2 initial checkin
penk
parents:
diff changeset
   221
! !