AbstractDirectoryBrowser.st
author Claus Gittinger <cg@exept.de>
Mon, 24 Mar 2003 17:59:28 +0100
changeset 4712 da798b51457b
child 4742 972a9d30ec47
permissions -rw-r--r--
initial checkin

"{ 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 $'
! !