--- 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'!