Move.st
author penk
Wed, 04 Sep 2002 17:35:44 +0200
changeset 1591 d5692dd57326
parent 1588 6dde5ad32643
permissions -rw-r--r--
removed via FileBrowser

"{ Package: 'stx:libtool2' }"

FileOperations subclass:#Move
	instanceVariableNames:'colOfMovedFiles'
	classVariableNames:''
	poolDictionaries:''
	category:'Interface-Support'
!


!Move class methodsFor:'actions'!

moveFile:aSourceFile to:aDestFile
    "delete current selected files/directories
    "

    |instance|

    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

    ^ 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 fileString targetDirectory targetIsDirectory suffix|

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

version
    ^ '$Header$'
! !