DropTarget.st
author Claus Gittinger <cg@exept.de>
Tue, 03 Sep 2013 17:23:55 +0200
changeset 3228 187a4158a51a
parent 2334 ec0c03d247f5
permissions -rw-r--r--
class: FlyByHelp changed: #initiateHelpFor:at:now: #showHelp:for: changed the flyBy suppression slightly: if the same text is to be shown again, do not show it except if the help is for another widget. (used to check for the text only previously)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
     1
"
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
     2
 COPYRIGHT (c) 1998 by eXept Software AG / Claus Gittinger
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
     3
              All Rights Reserved
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
     4
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
     5
 This software is furnished under a license and may be used
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    10
 hereby transferred.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    11
"
1550
b58979898957 use new #perform:withOptionalArg
Claus Gittinger <cg@exept.de>
parents: 873
diff changeset
    12
"{ Package: 'stx:libview2' }"
b58979898957 use new #perform:withOptionalArg
Claus Gittinger <cg@exept.de>
parents: 873
diff changeset
    13
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    14
Object subclass:#DropTarget
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    15
	instanceVariableNames:'receiver enterSelector leaveSelector overSelector dropSelector
2258
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
    16
		canDropSelector argument oldDropAPI'
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    17
	classVariableNames:''
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    18
	poolDictionaries:''
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    19
	category:'Interface-DragAndDrop'
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    20
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    21
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    22
!DropTarget class methodsFor:'documentation'!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    23
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    24
copyright
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    25
"
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    26
 COPYRIGHT (c) 1998 by eXept Software AG / Claus Gittinger
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    27
              All Rights Reserved
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    28
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    29
 This software is furnished under a license and may be used
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    30
 only in accordance with the terms of that license and with the
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    31
 inclusion of the above copyright notice.   This software may not
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    32
 be provided or otherwise made available to, or used by, any
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    33
 other person.  No title to or ownership of the software is
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    34
 hereby transferred.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    35
"
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    36
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    37
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    38
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    39
documentation
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    40
"
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    41
    this class keeps the current target of the drop operation; the object respoonsible
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    42
    for the widget under the current mouse position.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    43
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
    44
    receiver        <Object>        receiver to which the requests are sent. 
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
    45
                                    The widget or an application.
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    46
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    47
    argument        <Object>        user defined argument
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    48
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    49
    enterSelector   <Symbol>        send the first time to the drop target when entering
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    50
                                    the widget.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    51
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    52
    leaveSelector   <Symbol>        send the last time to the drop target when leaving
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    53
                                    the widget.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    54
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    55
    overSelector    <Symbol>        send all the time to the drop target when moveing the
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    56
                                    mouse over the widget.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    57
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    58
    dropSelector    <Symbol>        send to the drop target to drop the collection of
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    59
                                    objects.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    60
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    61
    canDropSelector <Symbol>        send to the drop target to ask if the context could
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    62
                                    be dropped.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    63
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    64
    [see also:]
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    65
        DragAndDropManager
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    66
        DropSource
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    67
        DropContext
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    68
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    69
    [author:]
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    70
        Claus Atzkern
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    71
"
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    72
! !
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    73
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    74
!DropTarget class methodsFor:'instance creation'!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    75
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    76
receiver:aReceiver
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    77
    ^ self new receiver:aReceiver
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    78
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    79
2258
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
    80
receiver:aReceiver argument:anArgument 
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
    81
    ^ self new receiver:aReceiver argument:anArgument.
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    82
2258
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
    83
    "Modified: / 13-10-2006 / 18:19:53 / cg"
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    84
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    85
2256
02d92cd76f35 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
    86
receiver:aReceiver argument:anArgument dropSelector:aSelector 
02d92cd76f35 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
    87
    ^ self new 
02d92cd76f35 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
    88
        receiver:aReceiver
02d92cd76f35 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
    89
        argument:anArgument
02d92cd76f35 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
    90
        dropSelector:aSelector
02d92cd76f35 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
    91
        canDropSelector:nil
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    92
2256
02d92cd76f35 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
    93
    "Modified: / 13-10-2006 / 17:50:12 / cg"
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    94
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
    95
2258
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
    96
receiver:aReceiver argument:anArgument dropSelector:s1 canDropSelector:s2 
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
    97
    ^ self new 
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
    98
        receiver:aReceiver
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
    99
        argument:anArgument
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   100
        dropSelector:s1
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   101
        canDropSelector:s2
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   102
2258
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   103
    "Modified: / 13-10-2006 / 18:19:58 / cg"
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   104
! !
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   105
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   106
!DropTarget methodsFor:'accessing'!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   107
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   108
argument
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   109
    "returns the user defined argument; this argument is used for a drop action
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   110
     with two arguments, the context and the argument"
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   111
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   112
    ^ argument
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   113
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   114
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   115
argument:something
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   116
    "set the user defined argument; this argument is used for a drop action
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   117
     with two arguments, the context and the argument"
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   118
2334
ec0c03d247f5 bugfix: setter for argument was wrong
sr
parents: 2258
diff changeset
   119
    argument := something.
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   120
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   121
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   122
canDropSelector
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   123
    "selector called to get a feedback if context is droppable.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   124
     the arguments to the selector are:
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   125
        0       nothing
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   126
        1       aDropContext
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
   127
        2       aDropContext and the argument"
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
   128
    
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   129
    ^ canDropSelector
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   130
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   131
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
   132
canDropSelector:something 
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   133
    "selector called to get a feedback if context is droppable.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   134
     the arguments to the selector are:
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   135
        0       nothing
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   136
        1       aDropContext
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
   137
        2       aDropContext and the argument"
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
   138
    
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   139
    canDropSelector := something.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   140
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   141
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   142
dropSelector
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   143
    "return the selector of the message which is sent to the drop target 
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   144
     when the objects are to be dropped (i.e. when the mouse button is released).
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   145
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   146
     Depending on the number of arguments of the selector,
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   147
     the arguments of the message are:
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   148
        0       nothing
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   149
        1       aDropContext
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   150
        2       aDropContext and the argument"
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   151
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   152
    ^ dropSelector
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   153
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   154
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   155
dropSelector:something
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   156
    "specify the selector of the message which is sent to the drop target 
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   157
     when the objects are to be dropped (i.e. when the mouse button is released).
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   158
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   159
     Depending on the number of arguments of the selector,
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   160
     the arguments of the message are:
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   161
        0       nothing
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   162
        1       aDropContext
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   163
        2       aDropContext and the argument"
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   164
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   165
    dropSelector := something.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   166
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   167
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   168
enterSelector
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   169
    "return the selector of the message which is sent to the drop target 
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   170
     when entering the widget for the first time.
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   171
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   172
     Depending on the number of arguments of the selector,
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   173
     the arguments of the message are:
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   174
        0       nothing
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   175
        1       aDropContext
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   176
        2       aDropContext and the argument
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   177
    "
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   178
    ^ enterSelector
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   179
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   180
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   181
enterSelector:something
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   182
    "specify the selector of the message which is sent to the drop target 
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   183
     when entering the widget for the first time.
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   184
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   185
     Depending on the number of arguments of the selector,
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   186
     the arguments of the message are:
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   187
        0       nothing
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   188
        1       aDropContext
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   189
        2       aDropContext and the argument"
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   190
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   191
    enterSelector := something.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   192
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   193
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   194
leaveSelector
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   195
    "return the selector of the message which is sent to the drop target 
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   196
     when leaving the widget.
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   197
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   198
     Depending on the number of arguments of the selector,
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   199
     the arguments of the message are:
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   200
        0       nothing
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   201
        1       aDropContext
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   202
        2       aDropContext and the argument"
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   203
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   204
    ^ leaveSelector
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   205
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   206
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   207
leaveSelector:something
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   208
    "specify the selector of the message which is sent to the drop target 
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   209
     when leaving the widget.
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   210
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   211
     Depending on the number of arguments of the selector,
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   212
     the arguments of the message are:
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   213
        0       nothing
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   214
        1       aDropContext
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   215
        2       aDropContext and the argument"
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   216
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   217
    leaveSelector := something.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   218
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   219
2258
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   220
oldDropAPI:something
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   221
    oldDropAPI := something.
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   222
!
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   223
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   224
overSelector
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   225
    "send all the time to the drop target when moveing the mouse over the widget
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   226
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   227
     Depending on the number of arguments of the selector,
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   228
     the arguments of the message are:
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   229
        0       nothing
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   230
        1       aDropContext
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
   231
        2       aDropContext and the argument"
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
   232
    
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   233
    ^ overSelector
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   234
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   235
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   236
overSelector:something
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   237
    "specify the selector of the message which is sent to the drop target 
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   238
     when the mouse is moved over the widget.
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   239
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   240
     Depending on the number of arguments of the selector,
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   241
     the arguments of the message are:
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   242
        0       nothing
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   243
        1       aDropContext
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   244
        2       aDropContext and the argument"
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   245
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   246
    overSelector := something.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   247
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   248
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   249
receiver
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   250
    "returns the receiver to which the requests are sent: a widget or an application."
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   251
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   252
    ^ receiver
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   253
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   254
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   255
receiver:something
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   256
    "define the receiver to which the requests are sent. 
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   257
     The argument is a widget or an application."
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   258
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   259
    receiver := something.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   260
! !
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   261
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   262
!DropTarget methodsFor:'actions'!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   263
2251
7e4757269c0c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2091
diff changeset
   264
drop:aDropContext
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
   265
    "sent, when the mouse button is released within the current widget."
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   266
2258
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   267
    oldDropAPI == true ifTrue:[
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   268
        receiver perform:dropSelector with:(aDropContext dropObjects) with:(aDropContext targetPoint)
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   269
    ] ifFalse:[
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   270
        receiver perform:dropSelector withOptionalArgument:aDropContext and:argument
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   271
    ]
2251
7e4757269c0c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2091
diff changeset
   272
2258
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   273
    "Modified: / 13-10-2006 / 18:21:26 / cg"
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   274
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   275
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   276
enter:aContext
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
   277
    "sent, when entering a widget."
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   278
2258
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   279
    enterSelector notNil ifTrue:[
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   280
        receiver perform:enterSelector withOptionalArgument:aContext and:argument
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   281
    ]
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   282
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   283
    "Modified: / 13-10-2006 / 18:14:33 / cg"
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   284
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   285
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   286
leave:aContext
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
   287
    "sent, when leaving a widget."
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   288
2258
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   289
    leaveSelector notNil ifTrue:[
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   290
        receiver perform:leaveSelector withOptionalArgument:aContext and:argument
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   291
    ]
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   292
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   293
    "Modified: / 13-10-2006 / 18:14:43 / cg"
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   294
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   295
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   296
over:aContext
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
   297
    "sent, whenever the mouse is moved over the widget."
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   298
2258
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   299
    overSelector notNil ifTrue:[
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   300
        receiver perform:overSelector withOptionalArgument:aContext and:argument
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   301
    ]
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   302
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   303
    "Modified: / 13-10-2006 / 18:14:53 / cg"
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   304
! !
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   305
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   306
!DropTarget methodsFor:'instance creation'!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   307
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   308
receiver:aReceiver argument:anArgument
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   309
    "set the receiver and a user defined argument"
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   310
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   311
    receiver := aReceiver.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   312
    argument := anArgument.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   313
!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   314
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   315
receiver:aReceiver argument:anArgument dropSelector:s1 canDropSelector:s2
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   316
    "set the receiver and a user defined argument"
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   317
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   318
    receiver        := aReceiver.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   319
    argument        := anArgument.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   320
    dropSelector    := s1.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   321
    canDropSelector := s2.
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   322
! !
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   323
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   324
!DropTarget methodsFor:'private'!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   325
2091
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
   326
receiverPerform:aSelector withContext:aContext
0fdd1265fd82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1822
diff changeset
   327
    "let the receiver perform the selector"
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   328
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   329
    aSelector notNil ifTrue:[
1550
b58979898957 use new #perform:withOptionalArg
Claus Gittinger <cg@exept.de>
parents: 873
diff changeset
   330
        ^ receiver perform:aSelector withOptionalArgument:aContext and:argument
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   331
    ]
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   332
! !
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   333
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   334
!DropTarget methodsFor:'queries'!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   335
2251
7e4757269c0c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2091
diff changeset
   336
canDrop:aDropContext
1822
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   337
    "send to the receiver to ask if the context is droppable"
ceeb17948f5d comments
Claus Gittinger <cg@exept.de>
parents: 1550
diff changeset
   338
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   339
    canDropSelector notNil ifTrue:[
2258
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   340
        ^ receiver perform:canDropSelector withOptionalArgument:aDropContext and:argument
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   341
    ].
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   342
    ^ true
2251
7e4757269c0c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2091
diff changeset
   343
2258
bb57190f8205 drag and drop cleanup
Claus Gittinger <cg@exept.de>
parents: 2256
diff changeset
   344
    "Modified: / 13-10-2006 / 18:13:34 / cg"
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   345
! !
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   346
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   347
!DropTarget class methodsFor:'documentation'!
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   348
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   349
version
2334
ec0c03d247f5 bugfix: setter for argument was wrong
sr
parents: 2258
diff changeset
   350
    ^ '$Header: /cvs/stx/stx/libview2/DropTarget.st,v 1.8 2007-07-03 13:18:40 sr Exp $'
873
c5cd8f56dc6e initial checkin
ca
parents:
diff changeset
   351
! !