DropSource.st
changeset 1731 643fd1153e5d
parent 1679 cbff43d2fe2a
child 1733 84cd0766db27
equal deleted inserted replaced
1730:f6732f77edf8 1731:643fd1153e5d
    12 
    12 
    13 
    13 
    14 "{ Package: 'stx:libview2' }"
    14 "{ Package: 'stx:libview2' }"
    15 
    15 
    16 Object subclass:#DropSource
    16 Object subclass:#DropSource
    17 	instanceVariableNames:'receiver argument feedBackSelector dropObjectSelector
    17 	instanceVariableNames:'receiver argument dropObjectSelector displayObjectSelector
    18 		displayObjectSelector startDragSelector'
    18 		startDragSelector dropFeedBackSelector'
    19 	classVariableNames:''
    19 	classVariableNames:''
    20 	poolDictionaries:''
    20 	poolDictionaries:''
    21 	category:'Interface-DragAndDrop'
    21 	category:'Interface-DragAndDrop'
    22 !
    22 !
    23 
    23 
    77 receiver:aReceiver
    77 receiver:aReceiver
    78     ^ self new receiver:aReceiver
    78     ^ self new receiver:aReceiver
    79 !
    79 !
    80 
    80 
    81 receiver:aReceiver argument:anArgument
    81 receiver:aReceiver argument:anArgument
    82     ^ self receiver:aReceiver argument:anArgument
    82     ^ self 
    83                     dropObjectSelector:nil
    83         receiver:aReceiver 
    84                  displayObjectSelector:nil
    84         argument:anArgument
    85                       feedBackSelector:nil
    85         dropObjectSelector:nil
       
    86         displayObjectSelector:nil
       
    87         dropFeedBackSelector:nil
    86 !
    88 !
    87 
    89 
    88 receiver:aReceiver argument:anArgument dropObjectSelector:aSelector
    90 receiver:aReceiver argument:anArgument dropObjectSelector:aSelector
    89 
    91 
    90     ^ self new receiver:aReceiver argument:anArgument
    92     ^ self new receiver:aReceiver argument:anArgument
    91                         dropObjectSelector:aSelector
    93                         dropObjectSelector:aSelector
    92                      displayObjectSelector:nil
    94                      displayObjectSelector:nil
    93                           feedBackSelector:nil
    95                           dropFeedBackSelector:nil
    94 !
    96 !
    95 
    97 
    96 receiver:aReceiver argument:anArgument dropObjectSelector:s1 displayObjectSelector:s2
    98 receiver:aReceiver argument:anArgument dropObjectSelector:s1 displayObjectSelector:s2
    97 
    99 
    98     ^ self new receiver:aReceiver argument:anArgument
   100     ^ self new receiver:aReceiver argument:anArgument
    99                         dropObjectSelector:s1
   101                         dropObjectSelector:s1
   100                      displayObjectSelector:s2
   102                      displayObjectSelector:s2
   101                           feedBackSelector:nil
   103                           dropFeedBackSelector:nil
   102 !
   104 !
   103 
   105 
   104 receiver:aReceiver argument:anArgument dropObjectSelector:s1 displayObjectSelector:s2 feedBackSelector:s3
   106 receiver:aReceiver argument:anArgument dropObjectSelector:s1 displayObjectSelector:s2 dropFeedBackSelector:s3
   105 
   107 
   106     ^ self new receiver:aReceiver argument:anArgument
   108     ^ self new receiver:aReceiver argument:anArgument
   107                         dropObjectSelector:s1
   109                         dropObjectSelector:s1
   108                      displayObjectSelector:s2
   110                      displayObjectSelector:s2
   109                           feedBackSelector:s3
   111                           dropFeedBackSelector:s3
       
   112 !
       
   113 
       
   114 receiver:aReceiver argument:anArgument dropObjectSelector:s1 displayObjectSelector:s2 feedBackSelector:s3
       
   115 
       
   116     ^ self new receiver:aReceiver argument:anArgument
       
   117                         dropObjectSelector:s1
       
   118                      displayObjectSelector:s2
       
   119                           dropFeedBackSelector:s3
   110 ! !
   120 ! !
   111 
   121 
   112 !DropSource methodsFor:'accessing'!
   122 !DropSource methodsFor:'accessing'!
   113 
   123 
   114 argument
   124 argument
   115     "returns the user defined argument
   125     "returns the user defined argument"
   116     "
   126 
   117     ^ argument
   127     ^ argument
   118 !
   128 !
   119 
   129 
   120 argument:anArgument
   130 argument:anArgument
   121     "set the user defined argument
   131     "set the user defined argument"
   122     "
   132 
   123     argument := anArgument
   133     argument := anArgument
   124 !
   134 !
   125 
   135 
   126 displayObjects
   136 displayObjects
   127     "returns a collection of display objects or nil
   137     "returns a collection of display objects or nil"
   128     "
   138 
   129     displayObjectSelector isNil ifTrue:[
   139     displayObjectSelector isNil ifTrue:[
   130         ^ nil
   140         ^ nil
   131     ].
   141     ].
   132     ^ displayObjectSelector numArgs == 0 ifTrue:[receiver perform:displayObjectSelector]
   142     ^ displayObjectSelector numArgs == 0 ifTrue:[receiver perform:displayObjectSelector]
   133                                         ifFalse:[receiver perform:displayObjectSelector with:self]
   143                                         ifFalse:[receiver perform:displayObjectSelector with:self]
   134 !
   144 !
   135 
   145 
   136 dropObjects
   146 dropObjects
   137     "returns a collection of objects to drop
   147     "returns a collection of objects to drop"
   138     "
   148 
   139     dropObjectSelector isNil ifTrue:[
   149     dropObjectSelector isNil ifTrue:[
   140         ^ nil
   150         ^ nil
   141     ].
   151     ].
   142 
   152 
   143     ^ dropObjectSelector numArgs == 0 ifTrue:[receiver perform:dropObjectSelector]
   153     ^ dropObjectSelector numArgs == 0 ifTrue:[receiver perform:dropObjectSelector]
   172      If an argument is required, the argument is the dropSource (self)
   182      If an argument is required, the argument is the dropSource (self)
   173     "
   183     "
   174     displayObjectSelector := aSelectorWithNoneOrOneArgs.
   184     displayObjectSelector := aSelectorWithNoneOrOneArgs.
   175 !
   185 !
   176 
   186 
       
   187 dropFeedBackSelector
       
   188     "selector called at end of a drop to give a feedback; the argument to
       
   189      the selector is the dropContext"
       
   190 
       
   191     ^ dropFeedBackSelector
       
   192 !
       
   193 
       
   194 dropFeedBackSelector:aSelectorWithZeroOrOneArgs
       
   195     "selector called at end of a drop to give a feedback; the argument to
       
   196      the selector is the dropContext"
       
   197 
       
   198     dropFeedBackSelector := aSelectorWithZeroOrOneArgs.
       
   199 !
       
   200 
   177 dropObjectSelector
   201 dropObjectSelector
   178     "selector to access the draggable objects; a sequence of DropObject's
   202     "selector to access the draggable objects; a sequence of DropObject's
   179      If an argument is required, the argument is the dropSource (self)
   203      If an argument is required, the argument is the dropSource (self)
   180     "
   204     "
   181     ^ dropObjectSelector
   205     ^ dropObjectSelector
   184 dropObjectSelector:aSelectorWithNoneOrOneArgs
   208 dropObjectSelector:aSelectorWithNoneOrOneArgs
   185     "selector to access the draggable objects; a sequence of DropObject's
   209     "selector to access the draggable objects; a sequence of DropObject's
   186      If an argument is required, the argument is the dropSource (self)
   210      If an argument is required, the argument is the dropSource (self)
   187     "
   211     "
   188     dropObjectSelector := aSelectorWithNoneOrOneArgs.
   212     dropObjectSelector := aSelectorWithNoneOrOneArgs.
   189 !
       
   190 
       
   191 feedBackSelector
       
   192     "selector called at end of a drop to give a feedback; the argument to
       
   193      the selector is the dropContext
       
   194     "
       
   195     ^ feedBackSelector
       
   196 !
       
   197 
       
   198 feedBackSelector:aSelectorWithNoneOrOneArgs
       
   199     "selector called at end of a drop to give a feedback; the argument to
       
   200      the selector is the dropContext
       
   201     "
       
   202     feedBackSelector := aSelectorWithNoneOrOneArgs.
       
   203 !
   213 !
   204 
   214 
   205 startDragSelector
   215 startDragSelector
   206     "send to the receiver to start a DragAndDropManager. If no selector is specified,
   216     "send to the receiver to start a DragAndDropManager. If no selector is specified,
   207      the default drag & drop operation is performed.
   217      the default drag & drop operation is performed.
   221 
   231 
   222      the arguments to the selector are:
   232      the arguments to the selector are:
   223         2       aDropSource (self)      Widget
   233         2       aDropSource (self)      Widget
   224         3       aDropSource (self)      Widget    Point
   234         3       aDropSource (self)      Widget    Point
   225     "
   235     "
       
   236 
   226     startDragSelector := aTwoOrThreeArgSelector
   237     startDragSelector := aTwoOrThreeArgSelector
   227 ! !
   238 ! !
   228 
   239 
   229 !DropSource methodsFor:'actions'!
   240 !DropSource methodsFor:'actions'!
   230 
   241 
   231 feedBack:aDropContext
   242 dropFeedBackFrom:aDropContext
   232     "feedback to receiver
   243     "drop feedback to receiver"
   233     "
   244 
   234     feedBackSelector isNil ifTrue:[
   245     dropFeedBackSelector isNil ifTrue:[
   235         ^ self
   246         ^ self
   236     ].
   247     ].
   237 
   248 
   238     ^ feedBackSelector numArgs == 0 ifTrue:[receiver perform:feedBackSelector]
   249     ^ receiver perform:dropFeedBackSelector withOptionalArgument:aDropContext
   239                                    ifFalse:[receiver perform:feedBackSelector with:aDropContext]
       
   240 !
   250 !
   241 
   251 
   242 startDragIn:aView at:aPoint
   252 startDragIn:aView at:aPoint
   243     "start drag operation for a widget
   253     "start drag operation for a widget
   244     "
   254     "
   256 
   266 
   257 ! !
   267 ! !
   258 
   268 
   259 !DropSource methodsFor:'instance creation'!
   269 !DropSource methodsFor:'instance creation'!
   260 
   270 
   261 receiver:aReceiver argument:anArgument dropObjectSelector:s1 displayObjectSelector:s2 feedBackSelector:s3
   271 receiver:aReceiver argument:anArgument dropObjectSelector:s1 displayObjectSelector:s2 dropFeedBackSelector:s3
   262 
       
   263     receiver              := aReceiver.
   272     receiver              := aReceiver.
   264     argument              := anArgument.
   273     argument              := anArgument.
   265     dropObjectSelector    := s1.
   274     dropObjectSelector    := s1.
   266     displayObjectSelector := s2.
   275     displayObjectSelector := s2.
   267     feedBackSelector      := s3.
   276     dropFeedBackSelector  := s3.
       
   277 ! !
       
   278 
       
   279 !DropSource methodsFor:'obsolete'!
       
   280 
       
   281 feedBackSelector
       
   282     "selector called at end of a drop to give a feedback; the argument to
       
   283      the selector is the dropContext"
       
   284 
       
   285     "/ self obsoleteMethodWarning:'use dropFeedBackSelector'.
       
   286     ^ self dropFeedBackSelector
       
   287 !
       
   288 
       
   289 feedBackSelector:aSelectorWithZeroOrOneArgs
       
   290     "selector called at end of a drop to give a feedback; the argument to
       
   291      the selector is the dropContext"
       
   292 
       
   293     "/ self obsoleteMethodWarning:'use dropFeedBackSelector:'.
       
   294     self dropFeedBackSelector:aSelectorWithZeroOrOneArgs.
   268 ! !
   295 ! !
   269 
   296 
   270 !DropSource class methodsFor:'documentation'!
   297 !DropSource class methodsFor:'documentation'!
   271 
   298 
   272 version
   299 version
   273     ^ '$Header: /cvs/stx/stx/libview2/DropSource.st,v 1.2 2002-12-10 11:03:11 cg Exp $'
   300     ^ '$Header: /cvs/stx/stx/libview2/DropSource.st,v 1.3 2003-03-30 13:02:05 cg Exp $'
   274 ! !
   301 ! !