Delete.st
author penk
Tue, 03 Sep 2002 17:23:22 +0200
changeset 1585 91ec771207a2
permissions -rw-r--r--
initial checkin

"{ Package: 'stx:libtool2' }"

FileOperations subclass:#Delete
	instanceVariableNames:'fileName errorString'
	classVariableNames:''
	poolDictionaries:''
	category:'Interface-Support'
!


!Delete class methodsFor:'actions'!

deleteFile:aFileOrDirectory
    "delete current selected files/directories
    "

    |instance|

    instance := self new.
    instance deleteFile:aFileOrDirectory.
    ^ instance
!

deleteFiles:aColOfFiles
    "delete current selected files/directories
    "

    |instance|

    instance := self new.
    instance deleteFiles:aColOfFiles.
    ^ instance
! !

!Delete methodsFor:'actions'!

deleteFile:aFileOrDirectory

    | file isDirectory |

    aFileOrDirectory notNil ifTrue:[
        file := aFileOrDirectory asFilename.

        file exists ifTrue:[
            isDirectory := file isDirectory.

            Error handle:[:ex|
                "was not able to remove it"
                Smalltalk beep.
                self errorString:((ex description, '\', ex signal notifierString) withCRs).
                result := false.
            ] do:[
                isDirectory ifTrue:[file recursiveRemove] ifFalse:[file remove].

             "/ flush parent directory or directory
                DirectoryContents flushCachedDirectory:(file directory).
            ]
        ]
    ].
    result := true.
!

deleteFiles:colOfFiles
    "delete current selected files/directories
    "
    | retVal ask size|

    ask := true.
    size := colOfFiles size.
    colOfFiles do:[: filename |
        ask ifTrue:[
            size = 1 ifTrue:[
                retVal := Dialog 
                    confirmWithCancel:('really delete ', filename asString , ' ?')
                               labels:#('Yes' 'No' 'Cancel')
                               values:#(#yes #no #cancel)
                              default:1.
            ] ifFalse:[
                retVal := Dialog 
                    confirmWithCancel:('really delete ', filename asString , ' ?')
                               labels:#('Yes' 'No' 'Yes to All' 'Cancel')
                               values:#(#yes #no #yesToAll #cancel)
                              default:1.
            ]
        ].
        retVal == #cancel ifTrue:[
            ^ self.
        ].
        retVal == #yes ifTrue:[
            self deleteFile:filename.
        ].
        retVal == #yesToAll ifTrue:[
            self deleteFile:filename.
            ask := false.
            retVal := #yes.
        ].
    ].
! !

!Delete class methodsFor:'documentation'!

version
    ^ '$Header$'
! !