"
COPYRIGHT (c) 1998 by eXept Software AG / Claus Gittinger
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
Object subclass:#DropTarget
instanceVariableNames:'receiver enterSelector leaveSelector overSelector dropSelector
canDropSelector argument'
classVariableNames:''
poolDictionaries:''
category:'Interface-DragAndDrop'
!
!DropTarget class methodsFor:'documentation'!
copyright
"
COPYRIGHT (c) 1998 by eXept Software AG / Claus Gittinger
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
!
documentation
"
this class keeps the current target of the drop operation; the object respoonsible
for the widget under the current mouse position.
receiver <Object> receiver to which the requests are sent. the
widget or an application.
argument <Object> user defined argument
enterSelector <Symbol> send the first time to the drop target when entering
the widget.
leaveSelector <Symbol> send the last time to the drop target when leaving
the widget.
overSelector <Symbol> send all the time to the drop target when moveing the
mouse over the widget.
dropSelector <Symbol> send to the drop target to drop the collection of
objects.
canDropSelector <Symbol> send to the drop target to ask if the context could
be dropped.
[see also:]
DragAndDropManager
DropSource
DropContext
[author:]
Claus Atzkern
"
! !
!DropTarget class methodsFor:'instance creation'!
receiver:aReceiver
^ self new receiver:aReceiver
!
receiver:aReceiver argument:anArgument
^ self new receiver:aReceiver
argument:anArgument.
!
receiver:aReceiver argument:anArgument dropSelector:aSelector
^ self new receiver:aReceiver
argument:anArgument
dropSelector:aSelector
canDropSelector:nil
!
receiver:aReceiver argument:anArgument dropSelector:s1 canDropSelector:s2
^ self new receiver:aReceiver
argument:anArgument
dropSelector:s1
canDropSelector:s2
! !
!DropTarget methodsFor:'accessing'!
argument
"returns the user defined argument; this argument is used for a drop action
with two arguments, the context and the argument
"
^ argument
!
argument:something
"set the user defined argument; this argument is used for a drop action
with two arguments, the context and the argument
"
^ something
!
canDropSelector
"selector called to get a feedback if context is droppable.
the arguments to the selector are:
0 nothing
1 aDropContext
2 aDropContext and the argument
"
^ canDropSelector
!
canDropSelector:something
"selector called to get a feedback if context is droppable.
the arguments to the selector are:
0 nothing
1 aDropContext
2 aDropContext and the argument
"
canDropSelector := something.
!
dropSelector
"selector called to drop a collection of draggable objects.
the arguments to the selector are:
0 nothing
1 aDropContext
2 aDropContext and the argument
"
^ dropSelector
!
dropSelector:something
"selector called to drop a collection of draggable objects.
the arguments to the selector are:
0 nothing
1 aDropContext
2 aDropContext and the argument
"
dropSelector := something.
!
enterSelector
"send the first time to the drop target when entering the widget.
the arguments to the selector are:
0 nothing
1 aDropContext
2 aDropContext and the argument
"
^ enterSelector
!
enterSelector:something
"send the first time to the drop target when entering the widget.
the arguments to the selector are:
0 nothing
1 aDropContext
2 aDropContext and the argument
"
enterSelector := something.
!
leaveSelector
"send the last time to the drop target when leaving the widget.
the arguments to the selector are:
0 nothing
1 aDropContext
2 aDropContext and the argument
"
^ leaveSelector
!
leaveSelector:something
"send the last time to the drop target when leaving the widget.
the arguments to the selector are:
0 nothing
1 aDropContext
2 aDropContext and the argument
"
leaveSelector := something.
!
overSelector
"send all the time to the drop target when moveing the mouse over the widget
the arguments to the selector are:
0 nothing
1 aDropContext
2 aDropContext and the argument
"
^ overSelector
!
overSelector:something
"send all the time to the drop target when moveing the mouse over the widget
the arguments to the selector are:
0 nothing
1 aDropContext
2 aDropContext and the argument
"
overSelector := something.
!
receiver
"receiver to which the requests are sent. a widget or an application ...
"
^ receiver
!
receiver:something
"receiver to which the requests are sent. a widget or an application ...
"
receiver := something.
! !
!DropTarget methodsFor:'actions'!
drop:aContext
"send when the mouse button is released within the current widget.
"
self perform:dropSelector withContext:aContext
!
enter:aContext
"send the first time, when entering the widget
"
self perform:enterSelector withContext:aContext
!
leave:aContext
"send the last time, when leaving the widget
"
self perform:leaveSelector withContext:aContext
!
over:aContext
"send all the time, when moveing the mouse over the widget
"
self perform:overSelector withContext:aContext
! !
!DropTarget methodsFor:'instance creation'!
receiver:aReceiver argument:anArgument
"set the receiver and an user defined argument
"
receiver := aReceiver.
argument := anArgument.
!
receiver:aReceiver argument:anArgument dropSelector:s1 canDropSelector:s2
"set the receiver and an user defined argument
"
receiver := aReceiver.
argument := anArgument.
dropSelector := s1.
canDropSelector := s2.
! !
!DropTarget methodsFor:'private'!
perform:aSelector withContext:aContext
"perform the selector
"
|numArgs|
aSelector notNil ifTrue:[
(numArgs := aSelector numArgs) == 0 ifTrue:[
receiver perform:aSelector
] ifFalse:[
numArgs == 1 ifTrue:[
receiver perform:aSelector with:aContext
] ifFalse:[
receiver perform:aSelector with:aContext with:argument
]
]
]
! !
!DropTarget methodsFor:'queries'!
canDrop:aContext
"send to the receiver to ask if the context is droppable
"
|numArgs|
canDropSelector notNil ifTrue:[
(numArgs := canDropSelector numArgs) == 0 ifTrue:[
^ receiver perform:canDropSelector
].
numArgs == 1 ifTrue:[
^ receiver perform:canDropSelector with:aContext
].
^ receiver perform:canDropSelector with:aContext with:argument
].
^ true
! !
!DropTarget class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libview2/DropTarget.st,v 1.1 1998-03-30 11:59:33 ca Exp $'
! !