Delete.st
changeset 1585 91ec771207a2
equal deleted inserted replaced
1584:51c53d6656f4 1585:91ec771207a2
       
     1 "{ Package: 'stx:libtool2' }"
       
     2 
       
     3 FileOperations subclass:#Delete
       
     4 	instanceVariableNames:'fileName errorString'
       
     5 	classVariableNames:''
       
     6 	poolDictionaries:''
       
     7 	category:'Interface-Support'
       
     8 !
       
     9 
       
    10 
       
    11 !Delete class methodsFor:'actions'!
       
    12 
       
    13 deleteFile:aFileOrDirectory
       
    14     "delete current selected files/directories
       
    15     "
       
    16 
       
    17     |instance|
       
    18 
       
    19     instance := self new.
       
    20     instance deleteFile:aFileOrDirectory.
       
    21     ^ instance
       
    22 !
       
    23 
       
    24 deleteFiles:aColOfFiles
       
    25     "delete current selected files/directories
       
    26     "
       
    27 
       
    28     |instance|
       
    29 
       
    30     instance := self new.
       
    31     instance deleteFiles:aColOfFiles.
       
    32     ^ instance
       
    33 ! !
       
    34 
       
    35 !Delete methodsFor:'actions'!
       
    36 
       
    37 deleteFile:aFileOrDirectory
       
    38 
       
    39     | file isDirectory |
       
    40 
       
    41     aFileOrDirectory notNil ifTrue:[
       
    42         file := aFileOrDirectory asFilename.
       
    43 
       
    44         file exists ifTrue:[
       
    45             isDirectory := file isDirectory.
       
    46 
       
    47             Error handle:[:ex|
       
    48                 "was not able to remove it"
       
    49                 Smalltalk beep.
       
    50                 self errorString:((ex description, '\', ex signal notifierString) withCRs).
       
    51                 result := false.
       
    52             ] do:[
       
    53                 isDirectory ifTrue:[file recursiveRemove] ifFalse:[file remove].
       
    54 
       
    55              "/ flush parent directory or directory
       
    56                 DirectoryContents flushCachedDirectory:(file directory).
       
    57             ]
       
    58         ]
       
    59     ].
       
    60     result := true.
       
    61 !
       
    62 
       
    63 deleteFiles:colOfFiles
       
    64     "delete current selected files/directories
       
    65     "
       
    66     | retVal ask size|
       
    67 
       
    68     ask := true.
       
    69     size := colOfFiles size.
       
    70     colOfFiles do:[: filename |
       
    71         ask ifTrue:[
       
    72             size = 1 ifTrue:[
       
    73                 retVal := Dialog 
       
    74                     confirmWithCancel:('really delete ', filename asString , ' ?')
       
    75                                labels:#('Yes' 'No' 'Cancel')
       
    76                                values:#(#yes #no #cancel)
       
    77                               default:1.
       
    78             ] ifFalse:[
       
    79                 retVal := Dialog 
       
    80                     confirmWithCancel:('really delete ', filename asString , ' ?')
       
    81                                labels:#('Yes' 'No' 'Yes to All' 'Cancel')
       
    82                                values:#(#yes #no #yesToAll #cancel)
       
    83                               default:1.
       
    84             ]
       
    85         ].
       
    86         retVal == #cancel ifTrue:[
       
    87             ^ self.
       
    88         ].
       
    89         retVal == #yes ifTrue:[
       
    90             self deleteFile:filename.
       
    91         ].
       
    92         retVal == #yesToAll ifTrue:[
       
    93             self deleteFile:filename.
       
    94             ask := false.
       
    95             retVal := #yes.
       
    96         ].
       
    97     ].
       
    98 ! !
       
    99 
       
   100 !Delete class methodsFor:'documentation'!
       
   101 
       
   102 version
       
   103     ^ '$Header$'
       
   104 ! !