refactored
authorClaus Gittinger <cg@exept.de>
Mon, 24 Mar 2003 17:59:39 +0100
changeset 4713 37f134e02205
parent 4712 da798b51457b
child 4714 13d009e2ffba
refactored
DirectoryContentsBrowser.st
DirectoryTreeBrowser.st
--- a/DirectoryContentsBrowser.st	Mon Mar 24 17:59:28 2003 +0100
+++ b/DirectoryContentsBrowser.st	Mon Mar 24 17:59:39 2003 +0100
@@ -1,11 +1,10 @@
 "{ Package: 'stx:libtool' }"
 
-AbstractFileBrowser subclass:#DirectoryContentsBrowser
+AbstractDirectoryBrowser subclass:#DirectoryContentsBrowser
 	instanceVariableNames:'modificationTime directory columnDescriptors iconIndex
 		fileDescriptionIndex iconExtent tableColumns previewIndex
-		updateToExternFileHolderLock inDropMode draggedItem canDropItem
-		viewBrowserMenu updateContentsSelection selectionInFileList
-		contentsBrowser browserItemList matchBlock updateTask
+		draggedItem viewBrowserMenu updateContentsSelection
+		selectionInFileList browserItemList matchBlock updateTask
 		directoryChangeFlag directoryContentsChangeFlag filterChangeFlag
 		sortBlockChangeFlag isBusy changeSema filteredItems allItems
 		diskUsageInfo diskUsageUpdateProcess'
@@ -26,9 +25,24 @@
 !DirectoryContentsBrowser class methodsFor:'documentation'!
 
 documentation
-
 "
-    DirectoryContentsBrowser openIn:Filename currentDirectory pathName
+    An application for displaying a directories' contents flat (or as a tree, alternatively).
+    To be used as a building block in file browsers and fileSelection dialogs.
+    This is used as the top-right component in the new fileBrowser.
+
+    [author:]
+        Christian Penk (penk@bierfix)
+
+    [see also:]
+        FileBrowserV2
+"
+!
+
+examples
+"
+                                                                [exBegin]
+    DirectoryContentsBrowser openIn:(Filename currentDirectory pathName)
+                                                                [exEnd]
 "
 ! !
 
@@ -907,15 +921,6 @@
         updateContentsSelection := self class newLock.
     ].
     ^ updateContentsSelection
-!
-
-updateToExternFileHolderLock
-    "return the value of the instance variable 'updateToExternFileHolder' (automatically generated)"
-
-    updateToExternFileHolderLock isNil ifTrue:[
-        updateToExternFileHolderLock := self class newLock.
-    ].
-    ^ updateToExternFileHolderLock
 ! !
 
 !DirectoryContentsBrowser methodsFor:'actions'!
@@ -969,7 +974,7 @@
 "/Processor activeProcess ~~ self windowGroup process ifTrue:[self halt].
     selection := self selectedItems.
     browserItemList do:[:el| el resetImageFile ].
-    contentsBrowser columnDescriptors:(self tableColumns value).
+    browser columnDescriptors:(self tableColumns value).
     self selectItems:selection.
     self wakeUp.
 !
@@ -1179,14 +1184,14 @@
     ].
     buffer := columns copy.
     self viewDetails value = false ifTrue:[
-        contentsBrowser showLabels:false.
+        browser showLabels:false.
         buffer do:[:col |
             (col readSelector = #baseName or:[col readSelector = #icon]) ifFalse:[
                 columns remove:col.                
             ]
         ]
     ] ifFalse:[
-        contentsBrowser showLabels:true.
+        browser showLabels:true.
         currentSortOrder := self currentSortOrder value.
         currentSortOrderColumn := currentSortOrder at:#column ifAbsent:nil.
         currentSortOrderReverse := currentSortOrder at:#reverse ifAbsent:nil.
@@ -1252,11 +1257,6 @@
 
 !DirectoryContentsBrowser methodsFor:'drag & drop'!
 
-canDrop:aContext
-
-    ^ inDropMode and:[canDropItem]
-!
-
 doDrop:aContext 
 
     |col destinationPath receiver|
@@ -1295,39 +1295,6 @@
     ^ super doStartDrag:aDropSource in:aView
 !
 
-dropEnter:aContext
-
-    |dropedObjects|
-
-    self dropTargetItemChangedTo:nil in:aContext.
-    inDropMode := false.
-
-    self directory isNil ifTrue:[^ self].
-    dropedObjects := aContext dropObjects.
-
-    dropedObjects do:[:aObject| 
-        |checkObject checkObjectString|
-
-        aObject isFileObject ifFalse:[^ self].
-
-        checkObject := aObject theObject.
-        checkObject isFilename not ifTrue:[^ self].
-        ((aContext dropSource argument == #archivApplication) not) ifTrue:[
-            checkObject isSpecialFile ifTrue:[^ self].
-            checkObject isReadable ifFalse:[^ self].
-        ].
-    ].
-    inDropMode := true.
-!
-
-dropLeave:aDropContext
-
-    inDropMode ifTrue:[
-        self dropTargetItemChangedTo:nil in:aDropContext.
-        inDropMode := false.
-    ].
-!
-
 dropOver:aDropContext 
     "called during drag & drop while moving over the widget."
 
@@ -1393,45 +1360,38 @@
             anItem icon:(FileBrowser iconForKeyMatching:#directoryOpenGray).
         ].
     ].
-    contentsBrowser shown ifTrue:[
-        contentsBrowser invalidateVisibleRow:current colAt:iconIndex.
-        contentsBrowser invalidateVisibleRow:anItem colAt:iconIndex.
-        contentsBrowser repairDamage.
+    browser shown ifTrue:[
+        browser invalidateVisibleRow:current colAt:iconIndex.
+        browser invalidateVisibleRow:anItem colAt:iconIndex.
+        browser repairDamage.
     ].
 !
 
 getDisplayObjects:anArgument
-
-    | selectedFiles string  fnName stream|
-    selectedFiles := self selectedFiles.
-    selectedFiles isEmpty ifTrue:[ ^ ''].
+    |selectedItems string fnName stream|
+
+    selectedItems := self selectedFiles.
+    selectedItems isEmpty ifTrue:[ ^ ''].
+
     stream := WriteStream on:''.
-
-    stream nextPutAll:(selectedFiles first baseName).
-    selectedFiles size == 1 ifTrue:[
+    stream nextPutAll:(selectedItems first baseName).
+    selectedItems size == 1 ifTrue:[
         fnName := 'ui_menuitem.xpm'.
     ] ifFalse:[
         fnName := 'ui_submenu_open.xpm'.
         stream nextPutAll:' ... '.
-        stream nextPutAll:(selectedFiles last baseName).
+        stream nextPutAll:(selectedItems last baseName).
     ].
     string := stream contents.
     stream close.
+
     ^ Array with:(LabelAndIcon icon:(Image fromFile:fnName)
                              string:(Text string:string emphasis:#bold)
                  )
 !
 
-getDropObjects:anArgument
-
-    ^ self selectedFiles collect:[:file| DropObject newFile:file].
-!
-
-getLineNumberFor:aDropContext
-    | yVisible|
-
-    yVisible := (aDropContext targetPoint y).
-    ^ contentsBrowser yVisibleToRowNr:yVisible.
+removeExpandItemTimedBlock
+    "left blank"
 ! !
 
 !DirectoryContentsBrowser methodsFor:'event handling'!
@@ -1442,75 +1402,55 @@
 
     |focusView key rawKey|
 
-    anEvent isKeyPressEvent ifTrue:[
-        focusView := anEvent targetView.
-        key := anEvent key.
-        rawKey := anEvent rawKey.
-
-        (focusView == contentsBrowser) ifTrue:[
-           "/ (key ~= #'Alt_L') ifTrue:[self halt.].
-            key == #Accept ifTrue:[
-                self fileFileIn.
-                ^ true.
-            ].
-            key == #Paste ifTrue:[
-                self pasteFiles.
-                ^ true.
-            ].
-"/            (key == #CursorLeft) ifTrue:[
-"/                self doGoDirectoryUp.
-"/                ^ true
-"/            ].
-"/            (key == #CursorRight) ifTrue:[
-"/                self doBack.
-"/                ^ true
-"/            ].
-            browserItemList size == 0 ifTrue:[
-                ^ false
-            ].
-            key == #Copy ifTrue:[
-                self doCopy.
-                ^ true.
-            ].
-            (key == #Return) ifTrue:[
-                self doOpenSelectedFile.
-                ^ true.
-            ].
-            key == #Delete ifTrue:[
-                self doDelete.
-                ^ true.
-            ].
-            key == #Cut ifTrue:[
-                self doCut.
-                ^ true.
-            ].
-        ]
+    anEvent isKeyPressEvent ifFalse:[^ false].
+
+    focusView := anEvent targetView.
+    (focusView isNil or:[focusView ~~ browser]) ifTrue:[ ^ false].
+
+    key := anEvent key.
+    rawKey := anEvent rawKey.
+
+   "/ (key ~= #'Alt_L') ifTrue:[self halt.].
+    key == #Accept ifTrue:[
+        self fileFileIn.
+        ^ true.
+    ].
+    key == #Paste ifTrue:[
+        self pasteFiles.
+        ^ true.
     ].
+"/    (key == #CursorLeft) ifTrue:[
+"/        self doGoDirectoryUp.
+"/        ^ true
+"/    ].
+"/    (key == #CursorRight) ifTrue:[
+"/        self doBack.
+"/        ^ true
+"/    ].
+    browserItemList size == 0 ifTrue:[
+        ^ false
+    ].
+
+    key == #Cut ifTrue:[
+        self doCut.
+        ^ true.
+    ].
+    key == #Copy ifTrue:[
+        self doCopy.
+        ^ true.
+    ].
+    key == #Delete ifTrue:[
+        self doDelete.
+        ^ true.
+    ].
+    (key == #Return) ifTrue:[
+        self doOpenSelectedFile.
+        ^ true.
+    ].
+
     ^ false
 ! !
 
-!DirectoryContentsBrowser methodsFor:'file actions'!
-
-doCopy
-    "copy current selected files/directories
-    "
-
-    self copyFilesToClipBoard:(self selectedFiles).
-!
-
-doCut
-    "cut current selected files/directories
-    "
-
-    self cutFilesToClipBoard:(self selectedFiles).
-!
-
-doDelete
-    "delete current selected files/directories
-    "
-    self deleteFiles:(self selectedFiles).
-! !
-
 !DirectoryContentsBrowser methodsFor:'menu accessing'!
 
 viewBrowserMenu
@@ -1664,23 +1604,18 @@
     ^ self selectedFileItems collect:[:item| item fileName].
 !
 
-selectedFiles
-
-    ^ self selectedItems collect:[: item| item fileName].
-!
-
 selectedItems
-
-    | sel |
-    sel := self selectionInFileList value copy.
-    sel isNil ifTrue:[ ^ #()].
+    | selection |
+
+    selection := self selectionInFileList value copy.
+    selection isNil ifTrue:[ ^ #()].
     (self viewDirsInContentsBrowser value and:[browserItemList notEmpty]) ifTrue:[
-        sel removeIdentical:(browserItemList first) ifAbsent:[nil]
+        selection removeIdentical:(browserItemList first) ifAbsent:[nil]
     ].
-    ^ sel.
+    ^ selection.
 ! !
 
-!DirectoryContentsBrowser methodsFor:'startup / release'!
+!DirectoryContentsBrowser methodsFor:'startup & release'!
 
 makeDependent
 
@@ -1703,8 +1638,8 @@
 
 postBuildBrowser:aWidget
 
-    contentsBrowser       := aWidget scrolledView.
-    contentsBrowser wantsFocusWithPointerEnter.
+    browser       := aWidget scrolledView.
+    browser wantsFocusWithPointerEnter.
 "/ dont register icons anymore
 "/    FileBrowser icons keysAndValuesDo:[:aKey :anIcon|
 "/        browser registerImage:anIcon key:aKey.
@@ -1722,29 +1657,6 @@
     self windowGroup addPreEventHook:self.
 !
 
-postOpenAsSubcanvasWith:aBuilder
-
-    super postOpenAsSubcanvasWith:aBuilder.
-    self postOpen.
-!
-
-postOpenWith:aBuilder
-
-    "
-    only invoked if the application not started from a master
-    "
-    super postOpenWith:aBuilder.
-    self postOpen.
-!
-
-preBuildWith:aBuilder
-
-    self masterApplication isNil ifTrue:[
-        self masterApplication:nil.
-    ].
-    ^ super preBuildWith:aBuilder.
-!
-
 release
     "release my resources
     "                    
@@ -1768,13 +1680,13 @@
 findNextVisibleItemFor:aConditionBlock
     |vis idx stillSearching |
 
-    vis := contentsBrowser indexOfFirstRowShown.
+    vis := browser indexOfFirstRowShown.
     vis = 0 ifTrue:[vis := 1].
 
     idx := vis.
     stillSearching := true.
     [ stillSearching ] whileTrue:[
-        ((idx <= browserItemList size) and:[ (contentsBrowser isRowVisible:idx) ]) ifFalse:[
+        ((idx <= browserItemList size) and:[ (browser isRowVisible:idx) ]) ifFalse:[
             stillSearching := false.
             idx := nil.
         ] ifTrue:[
@@ -1836,7 +1748,7 @@
 
     | column icon|
     
-    column := contentsBrowser columnAt:previewIndex.
+    column := browser columnAt:previewIndex.
     column isNil ifTrue:[
         previewIndex := 0.
     ] ifFalse:[
@@ -1855,7 +1767,7 @@
                         scale := scale x max:(scale y).
                         icon  := icon magnifiedTo:((extent / scale max:8.0) asInteger).
                     ].
-                    icon := icon onDevice:(contentsBrowser device).
+                    icon := icon onDevice:(browser device).
                     icon clearMaskedPixels.
                 ]
             ]
@@ -1894,7 +1806,7 @@
 
         desc notNil ifTrue:[
             self updateChangesFor:desc.
-            contentsBrowser invalidateVisibleRow:desc.
+            browser invalidateVisibleRow:desc.
             self debugMessage:'item properties are changed', desc baseName.
             ^ true.
         ].
@@ -1904,7 +1816,7 @@
             icon := self getIconFor:desc.
             desc icon:icon.
             (icon notNil and:[iconIndex ~~ 0]) ifTrue:[
-                contentsBrowser invalidateVisibleRow:desc colAt:iconIndex
+                browser invalidateVisibleRow:desc colAt:iconIndex
             ].
             self debugMessage:'icon for visible items by suffix', desc baseName.
             ^ true
@@ -1919,7 +1831,7 @@
 "/            icon := self getIconForMimeTypeByContents:desc.
             desc icon:icon.
             (icon notNil and:[iconIndex ~~ 0]) ifTrue:[
-                contentsBrowser invalidateVisibleRow:desc colAt:iconIndex
+                browser invalidateVisibleRow:desc colAt:iconIndex
             ].
             ^ true
         ].
@@ -1928,7 +1840,7 @@
             desc := self findNextVisibleItemFor:[:n| n fileType isEmpty ].
             desc notNil ifTrue:[
                 type := self getFileInfoFor:desc.
-                type notNil ifTrue:[contentsBrowser invalidateVisibleRow:desc colAt:fileDescriptionIndex].
+                type notNil ifTrue:[browser invalidateVisibleRow:desc colAt:fileDescriptionIndex].
                 self debugMessage:'file info for visible items if file info column is shown', desc baseName.
                 ^ true
             ]
@@ -1939,7 +1851,7 @@
             desc notNil ifTrue:[
                 preview := self getPreviewFor:desc.
                 preview notNil ifTrue:[
-                    contentsBrowser invalidateVisibleRow:desc colAt:previewIndex
+                    browser invalidateVisibleRow:desc colAt:previewIndex
                 ].
                 self debugMessage:'preview for visible items if preview column is shown', desc baseName.
                 ^ true
@@ -2878,5 +2790,5 @@
 !DirectoryContentsBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/DirectoryContentsBrowser.st,v 1.90 2003-03-19 10:07:15 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DirectoryContentsBrowser.st,v 1.91 2003-03-24 16:59:39 cg Exp $'
 ! !
--- a/DirectoryTreeBrowser.st	Mon Mar 24 17:59:28 2003 +0100
+++ b/DirectoryTreeBrowser.st	Mon Mar 24 17:59:39 2003 +0100
@@ -1,8 +1,7 @@
 "{ Package: 'stx:libtool' }"
 
-AbstractFileBrowser subclass:#DirectoryTreeBrowser
-	instanceVariableNames:'dirBrowser updateToExternFileHolderLock oldDropItem
-		expandItemTimedBlock updateTreeSelection inDropMode canDropItem
+AbstractDirectoryBrowser subclass:#DirectoryTreeBrowser
+	instanceVariableNames:'oldDropItem expandItemTimedBlock updateTreeSelection
 		doubleClickAction newVisibilityHolder allowFileOperations
 		multipleSelect treeSelectionHolder sortInTreeVisibilityHolder
 		sortPropertyInTree sortCaselessInTreeBrowser'
@@ -22,31 +21,22 @@
 
 documentation
 "
-    documentation to be added.
+    An application for displaying directories as a tree.
+    To be used as a building block in file browsers and fileSelection dialogs.
+    This is used as the top-left component in the new fileBrowser.
 
     [author:]
         Christian Penk (penk@bierfix)
 
     [see also:]
-
-    [instance variables:]
-
-    [class variables:]
+        FileBrowserV2
 "
 !
 
 examples
 "
-  Starting the application:
                                                                 [exBegin]
     DirectoryTreeBrowser open
-
-                                                                [exEnd]
-
-  more examples to be added:
-                                                                [exBegin]
-    ... add code fragment for 
-    ... executable example here ...
                                                                 [exEnd]
 "
 ! !
@@ -405,15 +395,6 @@
     doubleClickAction := aBlock
 !
 
-updateToExternFileHolderLock
-    "return the value of the instance variable 'updateToExternFileHolder' (automatically generated)"
-
-    updateToExternFileHolderLock isNil ifTrue:[
-        updateToExternFileHolderLock := self class newLock.
-    ].
-    ^ updateToExternFileHolderLock
-!
-
 updateTreeSelection
     "return the value of the instance variable 'updateToExternFileHolder' (automatically generated)"
 
@@ -577,7 +558,7 @@
 
 treeViewFileRename
 
-    dirBrowser openEditor.
+    browser openEditor.
 !
 
 updateSelectedItem
@@ -631,8 +612,8 @@
 multipleSelect:aBoolean
 
     multipleSelect := aBoolean.
-    dirBrowser notNil ifTrue:[
-        dirBrowser multipleSelectOk:aBoolean.
+    browser notNil ifTrue:[
+        browser multipleSelectOk:aBoolean.
     ].
 !
 
@@ -807,23 +788,6 @@
 
 !DirectoryTreeBrowser methodsFor:'drag & drop'!
 
-autoScrollDownForDrop:aDropContext
-    aDropContext saveDraw:[
-        dirBrowser scrollDown
-    ]
-!
-
-autoScrollUpForDrop:aDropContext
-    aDropContext saveDraw:[
-        dirBrowser scrollUp
-    ]
-!
-
-canDrop:aContext
-
-    ^ inDropMode and:[canDropItem]
-!
-
 doDrop:aContext 
     |col destination destinationPath receiver|
 
@@ -846,37 +810,6 @@
     ^ true
 !
 
-dropEnter:aContext
-
-    |dropedObjects|
-
-    self dropTargetItemChangedTo:nil in:aContext.
-    inDropMode := false.
-
-    dropedObjects := aContext dropObjects.
-
-    dropedObjects do:[:aObject| |checkObject checkObjectString|
-        aObject isFileObject ifFalse:[^ self].
-        checkObject := aObject theObject.
-        checkObject isFilename not ifTrue:[^ self].
-        ((aContext dropSource argument == #archivApplication) not) ifTrue:[
-            checkObject isSpecialFile ifTrue:[^ self].
-            checkObject isReadable ifFalse:[^ self].
-        ].
-    ].
-    inDropMode := true.
-!
-
-dropLeave:aDropContext 
-    "send the last time, when leaving the widget
-    "
-    inDropMode ifTrue:[
-        self dropTargetItemChangedTo:nil in:aDropContext.
-        self removeExpandItemTimedBlock.
-        inDropMode := false.
-    ].
-!
-
 dropOver:aDropContext 
     "called during drag & drop while moving over the widget."
 
@@ -891,7 +824,7 @@
         pointerY <= 3 ifTrue:[
             self initiateAutoScrollUpFor:aDropContext.
         ] ifFalse:[
-            pointerY >= (dirBrowser height - 3) ifTrue:[
+            pointerY >= (browser height - 3) ifTrue:[
                 self initiateAutoScrollDownFor:aDropContext
             ].
         ].
@@ -944,8 +877,8 @@
             ]
         ].
     ].
-    dirBrowser shown ifTrue:[
-        dirBrowser repairDamage.
+    browser shown ifTrue:[
+        browser repairDamage.
     ].
 !
 
@@ -959,19 +892,19 @@
 !
 
 getDisplayObjects:anArgument
+    |selectedItems string fnName stream|
 
-    | string fnName sel size stream|
-    sel := self selectedItems.
-    size := sel size.
-    size == 0  ifTrue:[^ ''].
+    selectedItems := self selectedItems.
+    selectedItems isEmpty ifTrue:[ ^ ''].
+
     stream := WriteStream on:''.
-    stream nextPutAll:sel first baseName.
-    size == 1 ifTrue:[
+    stream nextPutAll:(selectedItems first baseName).
+    selectedItems size == 1 ifTrue:[
         fnName := 'ui_menuitem.xpm'.
     ] ifFalse:[
         fnName := 'ui_submenu_open.xpm'.
         stream nextPutAll:' ... '.
-        stream nextPutAll:sel last baseName.
+        stream nextPutAll:(selectedItems last baseName).
     ].
     string := stream contents.
     stream close.
@@ -982,33 +915,6 @@
                  )
 !
 
-getDropObjects:anArgument
-
-    | sel ret|
-
-    sel := self selectedFiles.
-    sel isEmpty ifTrue:[ ^ self ].
-    ret := sel collect:[:file| 
-        DropObject newFile:file
-    ].
-    ^ ret
-!
-
-getLineNumberFor:aDropContext
-    | yVisible|
-
-    yVisible := (aDropContext targetPoint y).
-    ^ dirBrowser yVisibleToLineNr:yVisible.
-!
-
-initiateAutoScrollDownFor:aDropContext
-    self window sensor pushUserEvent:#autoScrollDownForDrop: for:self withArgument:aDropContext.
-!
-
-initiateAutoScrollUpFor:aDropContext
-    self window sensor pushUserEvent:#autoScrollUpForDrop: for:self withArgument:aDropContext
-!
-
 removeExpandItemTimedBlock
 
     expandItemTimedBlock notNil ifTrue:[
@@ -1023,79 +929,56 @@
     "filter keyboard events.
      Return true, if I have eaten the event"
 
-    |evView key rawKey|
+    |focusView key rawKey|
 
-    anEvent isKeyPressEvent ifTrue:[
-        evView := anEvent targetView.
-        evView isNil ifTrue:[ ^ false].
-        evView == dirBrowser ifFalse:[ ^ false].
-        key    := anEvent key.
-        rawKey := anEvent rawKey.
+    anEvent isKeyPressEvent ifFalse:[^ false].
 
+    focusView := anEvent targetView.
+    (focusView isNil or:[focusView ~~ browser]) ifTrue:[ ^ false].
 
-        (key == #CursorLeft) ifTrue:[
-            "go to last selection in selection history"
-            (self rootSelected and:[(self fileList at:1) isExpanded not]) ifTrue:[
-                self doGoDirectoryUp.
-                ^ true
-            ] ifFalse:[
-                ^ false
-            ]
-        ].
-        (key == #FocusPrevious) ifTrue:[
-            "go to last selection in selection history"
-            self doBack.
-            ^ true
-        ].
-        (key == #FocusNext) ifTrue:[
-            "go to next selection in selection history"
-            self doForward.
-            ^ true
-        ].
-        (key == #Replace) ifTrue:[
-            self treeViewFileRename.
-            ^ true
-        ].
-        (key == #Delete) ifTrue:[
-            self doDelete.
+    key    := anEvent key.
+    rawKey := anEvent rawKey.
+
+    (key == #CursorLeft) ifTrue:[
+        "go to last selection in selection history"
+        (self rootSelected and:[(self fileList at:1) isExpanded not]) ifTrue:[
+            self doGoDirectoryUp.
             ^ true
         ].
-        (key == #Cut) ifTrue:[
-            self doCut.
-            ^ true
-        ].
-        (key == #Paste) ifTrue:[
-            self pasteFiles.
-            ^ true
-        ].
-        (key == #Copy) ifTrue:[
-            self doCopy.
-            ^ true
-        ].
+        ^ false
+    ].
+    (key == #FocusPrevious) ifTrue:[
+        "go to last selection in selection history"
+        self doBack.
+        ^ true
+    ].
+    (key == #FocusNext) ifTrue:[
+        "go to next selection in selection history"
+        self doForward.
+        ^ true
+    ].
+    (key == #Replace) ifTrue:[
+        self treeViewFileRename.
+        ^ true
     ].
-    ^ false
-! !
-
-!DirectoryTreeBrowser methodsFor:'file actions'!
+    (key == #Cut) ifTrue:[
+        self doCut.
+        ^ true
+    ].
+    (key == #Copy) ifTrue:[
+        self doCopy.
+        ^ true
+    ].
+    (key == #Delete) ifTrue:[
+        self doDelete.
+        ^ true
+    ].
+    (key == #Paste) ifTrue:[
+        self pasteFiles.
+        ^ true
+    ].
 
-doCopy
-    "copy current selected files/directories
-    "
-
-    self copyFilesToClipBoard:self selectedFiles.
-!
-
-doCut
-    "cut current selected files/directories
-    "
-    self cutFilesToClipBoard:self selectedFiles.
-!
-
-doDelete
-    "delete current selected files/directories
-    "
-
-    self deleteFiles:self selectedFiles.
+    ^ false
 ! !
 
 !DirectoryTreeBrowser methodsFor:'queries'!
@@ -1233,13 +1116,7 @@
     ^ setOfDirectories.
 !
 
-selectedFiles
-
-    ^ self selectedItems collect:[:item| item fileName].
-!
-
 selectedItems
-
     | selection |
 
     selection := self treeSelectionHolder value.
@@ -1250,12 +1127,6 @@
 
 !DirectoryTreeBrowser methodsFor:'startup & release'!
 
-initialize
-
-    inDropMode := false.
-    ^ super initialize.
-!
-
 makeDependent
 
     super makeDependent.
@@ -1271,14 +1142,14 @@
 !
 
 postBuildDirBrowser:aWidget
-    dirBrowser := aWidget scrolledView.
-    dirBrowser hasConstantHeight:true.
+    browser := aWidget scrolledView.
+    browser hasConstantHeight:true.
 
-    dirBrowser openEditorAction:[:ln :aGC| 
+    browser openEditorAction:[:ln :aGC| 
         |field item filename newFileString rename newFilename alreadyAccepted|
 
         alreadyAccepted := false.
-        dirBrowser closeEditorAction:[:editor |
+        browser closeEditorAction:[:editor |
             alreadyAccepted ifFalse:[
                 editor acceptAction value:(editor contents).
             ].
@@ -1310,11 +1181,11 @@
 
                     (field leaveKey == #CursorUp 
                     or:[field leaveKey == #CursorDown]) ifTrue:[
-                        dirBrowser keyPress:field leaveKey x:0 y:0
+                        browser keyPress:field leaveKey x:0 y:0
                     ].
 
                     field destroy.    "/ takes it from my windowGroup; prevents it from shifting focus
-                    dirBrowser requestFocus.
+                    browser requestFocus.
                 ].
                 
                 field font:(aGC font).
@@ -1325,7 +1196,7 @@
             nil
         ]
     ].
-    dirBrowser multipleSelectOk:self multipleSelect.
+    browser multipleSelectOk:self multipleSelect.
 !
 
 postBuildWith:aBuilder
@@ -1342,27 +1213,6 @@
     self windowGroup addPreEventHook:self.
 !
 
-postOpenAsSubcanvasWith:aBuilder
-
-    super postOpenAsSubcanvasWith:aBuilder.
-    self postOpen.
-!
-
-postOpenWith:aBuilder
-    "only invoked if the application not started from a master"
-
-    super postOpenWith:aBuilder.
-    self postOpen.
-!
-
-preBuildWith:aBuilder
-
-    self masterApplication isNil ifTrue:[
-        self masterApplication:nil.
-    ].
-    ^ super preBuildWith:aBuilder.
-!
-
 release
 
     self fileList stopMonitoringTask.
@@ -1404,5 +1254,5 @@
 !DirectoryTreeBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/DirectoryTreeBrowser.st,v 1.54 2003-03-20 01:22:09 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/DirectoryTreeBrowser.st,v 1.55 2003-03-24 16:59:37 cg Exp $'
 ! !