"{ Package: 'stx:libtool' }"
AbstractFileBrowser subclass:#AbstractDirectoryBrowser
instanceVariableNames:'inDropMode canDropItem browser updateToExternFileHolderLock'
classVariableNames:''
poolDictionaries:''
category:'Interface-Tools-File'
!
!AbstractDirectoryBrowser class methodsFor:'documentation'!
documentation
"
Abstract class containing the common code from DirectoryTreeBrowser and
DirectoryContentsBrowser applications.
"
! !
!AbstractDirectoryBrowser methodsFor:'accessing'!
updateToExternFileHolderLock
"return the value of the instance variable 'updateToExternFileHolder' (automatically generated)"
updateToExternFileHolderLock isNil ifTrue:[
updateToExternFileHolderLock := self class newLock.
].
^ updateToExternFileHolderLock
! !
!AbstractDirectoryBrowser methodsFor:'drag & drop'!
autoScrollDownForDrop:aDropContext
aDropContext saveDraw:[
browser scrollDown
]
!
autoScrollUpForDrop:aDropContext
aDropContext saveDraw:[
browser scrollUp
]
!
canDrop:aContext
^ inDropMode and:[canDropItem]
!
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
"send the last time, when leaving the widget
"
inDropMode ifFalse:[ ^ self ].
self dropTargetItemChangedTo:nil in:aDropContext.
self removeExpandItemTimedBlock.
inDropMode := false.
!
getDropObjects:anArgument
^ self selectedFiles collect:[:file| DropObject newFile:file].
!
getLineNumberFor:aDropContext
| yVisible|
yVisible := (aDropContext targetPoint y).
^ browser yVisibleToRowNr:yVisible.
!
initiateAutoScrollDownFor:aDropContext
self window sensor pushUserEvent:#autoScrollDownForDrop: for:self withArgument:aDropContext.
!
initiateAutoScrollUpFor:aDropContext
self window sensor pushUserEvent:#autoScrollUpForDrop: for:self withArgument:aDropContext
! !
!AbstractDirectoryBrowser 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).
! !
!AbstractDirectoryBrowser methodsFor:'selection'!
selectedFiles
^ self selectedItems collect:[:item| item fileName].
! !
!AbstractDirectoryBrowser methodsFor:'startup & release'!
initialize
inDropMode := false.
^ super initialize.
!
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.
! !
!AbstractDirectoryBrowser class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libtool/AbstractDirectoryBrowser.st,v 1.1 2003-03-24 16:59:28 cg Exp $'
! !