diff -r 91a7b38eb142 -r 6dde5ad32643 Move.st --- a/Move.st Wed Sep 04 12:29:17 2002 +0200 +++ b/Move.st Wed Sep 04 14:23:01 2002 +0200 @@ -1,7 +1,7 @@ "{ Package: 'stx:libtool2' }" FileOperations subclass:#Move - instanceVariableNames:'' + instanceVariableNames:'colOfMovedFiles' classVariableNames:'' poolDictionaries:'' category:'Interface-Support' @@ -11,7 +11,7 @@ !Move class methodsFor:'actions'! moveFile:aSourceFile to:aDestFile - "move from to + "delete current selected files/directories " |instance| @@ -19,33 +19,199 @@ instance := self new. instance moveFile:aSourceFile to:aDestFile. ^ instance +! + +moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning + "delete current selected files/directories + " + + |instance| + + instance := self new. + instance moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning. + ^ instance +! + +moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move + "delete current selected files/directories + " + + |instance| + + instance := self new. + instance moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move. + ^ instance +! + +moveFiles:aColOfSourceFiles to:aDirectory + "delete current selected files/directories + " + + |instance| + + instance := self new. + instance moveFiles:aColOfSourceFiles to:aDirectory. + ^ instance +! + +moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning + "delete current selected files/directories + " + + |instance| + + instance := self new. + instance moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning. + ^ instance +! + +moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move + "delete current selected files/directories + " + + |instance| + + instance := self new. + instance moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move. + ^ instance +! ! + +!Move methodsFor:'accessing'! + +colOfMovedFiles + "return the value of the instance variable 'colOfMovedFiles' (automatically generated)" + + colOfMovedFiles isNil ifTrue:[ + colOfMovedFiles := OrderedCollection new. + ]. + ^ colOfMovedFiles ! ! !Move methodsFor:'actions'! moveFile:aSourceFile to:aDestFile - "defete current selected files/directories - " + + ^ self moveFile:aSourceFile to:aDestFile withOverWriteWarning:true. +! + +moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning + + ^ self moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:true +! + +moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move - |newFile| + |newFile fileString targetDirectory targetIsDirectory suffix| - aDestFile exists not ifTrue:[ - DialogBox warn:'cant move to:', aDestFile asString. + targetIsDirectory := aDestFile isDirectory. + targetIsDirectory ifTrue:[ + targetDirectory := aDestFile. + newFile := aDestFile construct:(aSourceFile baseName). + ] ifFalse:[ + targetDirectory := aDestFile directory. + newFile := aDestFile. + ]. + "/ do not copy if destination directory doest exist. + (targetDirectory exists not) ifTrue:[ + DialogBox warn:'cant move to not existing directory ', targetDirectory asString. result := false. ^ self ]. - newFile := (aDestFile pathName asFilename) construct:(aSourceFile baseName). - (self fileExistDialogFor:newFile) ifFalse:[ - result := false. - ^ self. + (newFile exists) ifTrue:[ + ((newFile asString = aSourceFile asString) and:[move]) ifTrue:[ + [newFile exists] whileTrue:[ + suffix := newFile suffix. + fileString := newFile baseName withoutSuffix, self class copyMoveIfExistSuffixString, '.', suffix. + newFile := targetDirectory construct:fileString. + ]. + ] ifFalse:[ + overWriteWarning ifTrue:[ + (self fileExistDialogFor:newFile) ifFalse:[ + result := false. + ^ self. + ] + ] ifFalse:[ + result := false. + ^ self. + ] + ]. ]. Error handle:[:ex| - DialogBox warn:ex errorString. + "was not able to copy it" + WarningBox warn:'on copy file - ', ex errorString. + self errorString:('on copy file - ', ex description asString). result := false. ] do:[ - aSourceFile renameTo:(aDestFile construct:(aSourceFile baseName)). + aSourceFile moveTo:newFile. + DirectoryContents flushCachedDirectory:(aSourceFile directory). result := true. ]. +! + +moveFiles:aColOfSourceFiles to:aDirectory + + ^ self moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:true +! + +moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning + + ^ self moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:true +! + +moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:move + + |newFile suffix fileString askResult| + + (aDirectory exists not) ifTrue:[ + DialogBox warn:'cant move to not existing directory ', aDirectory asString. + result := false. + ^ self + ]. + (aDirectory isDirectory not) ifTrue:[ + DialogBox warn:'destination ', aDirectory asString, ' is not a directory'. + result := false. + ^ self + ]. + aColOfSourceFiles do:[: filename | + newFile := aDirectory construct:filename baseName. + (newFile exists) ifTrue:[ + askResult := true. + ((newFile asString = filename asString) and:[move]) ifTrue:[ + [newFile exists] whileTrue:[ + suffix := newFile suffix. + fileString := newFile baseName withoutSuffix, self class copyMoveIfExistSuffixString, '.', suffix. + newFile := aDirectory construct:fileString. + ]. + ] ifFalse:[ + overWriteWarning ifTrue:[ + askResult := (self fileExistDialogFor:newFile withCancel:true). + askResult isNil ifTrue:[ + result := false. + ^ self. + ] + ] + ]. + ]. + askResult ifTrue:[ + Error handle:[:ex| + "was not able to copy it" + result := false. + self errorString:('on move file - ', ex description asString). + ( Dialog + confirm:('error on move file - ', ex description asString) + title:'Move' + yesLabel:'Continue' + noLabel:'Abort') ifFalse:[ + ^ self. + ]. + ] do:[ + filename moveTo:newFile. + ]. + self colOfMovedFiles add:filename + ] + ]. + DirectoryContents flushCachedDirectory:aDirectory. + result := true. ! ! !Move class methodsFor:'documentation'!