Delete.st
changeset 1585 91ec771207a2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Delete.st	Tue Sep 03 17:23:22 2002 +0200
@@ -0,0 +1,104 @@
+"{ 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$'
+! !