author | Claus Gittinger <cg@exept.de> |
Tue, 29 Aug 2017 23:16:03 +0200 | |
changeset 4000 | d39d58494281 |
parent 2409 | 0629f9c77e8e |
permissions | -rw-r--r-- |
873 | 1 |
" |
2 |
COPYRIGHT (c) 1998 by eXept Software AG / Claus Gittinger |
|
3 |
All Rights Reserved |
|
4 |
||
5 |
This software is furnished under a license and may be used |
|
6 |
only in accordance with the terms of that license and with the |
|
7 |
inclusion of the above copyright notice. This software may not |
|
8 |
be provided or otherwise made available to, or used by, any |
|
9 |
other person. No title to or ownership of the software is |
|
10 |
hereby transferred. |
|
11 |
" |
|
1679 | 12 |
"{ Package: 'stx:libview2' }" |
13 |
||
873 | 14 |
Object subclass:#DropSource |
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
15 |
instanceVariableNames:'receiver argument dropObjectSelector displayObjectSelector |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
16 |
startDragSelector dropFeedBackSelector' |
873 | 17 |
classVariableNames:'' |
18 |
poolDictionaries:'' |
|
19 |
category:'Interface-DragAndDrop' |
|
20 |
! |
|
21 |
||
22 |
!DropSource class methodsFor:'documentation'! |
|
23 |
||
24 |
copyright |
|
25 |
" |
|
26 |
COPYRIGHT (c) 1998 by eXept Software AG / Claus Gittinger |
|
27 |
All Rights Reserved |
|
28 |
||
29 |
This software is furnished under a license and may be used |
|
30 |
only in accordance with the terms of that license and with the |
|
31 |
inclusion of the above copyright notice. This software may not |
|
32 |
be provided or otherwise made available to, or used by, any |
|
33 |
other person. No title to or ownership of the software is |
|
34 |
hereby transferred. |
|
35 |
" |
|
36 |
||
37 |
! |
|
38 |
||
39 |
documentation |
|
40 |
" |
|
41 |
this class keeps the source from which the drag and drop operation is started. |
|
42 |
||
43 |
receiver <Object> the receiver of the drop feedBack; a widget or |
|
44 |
application or .... |
|
45 |
||
46 |
argument <Object> user defined argument |
|
47 |
||
48 |
startDragSelector <Symbol> send to the receiver to start a DragAndDropManager. |
|
49 |
If no selector is specified, the default drag & drop |
|
50 |
operation is performed. Thus the operator is able |
|
51 |
to set the cursor, .... before starting the operation. |
|
52 |
||
53 |
feedBackSelector <Symbol> send to the receiver to give a feedBack of the |
|
54 |
finished drag & drop operation |
|
55 |
||
56 |
dropObjectSelector <Symbol> used to get to get the list of draggable objects. |
|
57 |
||
58 |
displayObjectSelector <Symbol> used to get to get the list of display objects. |
|
59 |
In case of an empty or undefined list, the draggable |
|
60 |
objects are used as display objects. |
|
61 |
||
62 |
[see also:] |
|
63 |
DragAndDropManager |
|
64 |
DropObject |
|
65 |
DropTarget |
|
66 |
DropContext |
|
67 |
||
68 |
[author:] |
|
69 |
Claus Atzkern |
|
70 |
" |
|
71 |
! ! |
|
72 |
||
73 |
!DropSource class methodsFor:'instance creation'! |
|
74 |
||
75 |
receiver:aReceiver |
|
1733 | 76 |
^ self new |
77 |
receiver:aReceiver |
|
873 | 78 |
! |
79 |
||
80 |
receiver:aReceiver argument:anArgument |
|
1733 | 81 |
^ self new |
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
82 |
receiver:aReceiver |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
83 |
argument:anArgument |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
84 |
dropObjectSelector:nil |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
85 |
displayObjectSelector:nil |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
86 |
dropFeedBackSelector:nil |
873 | 87 |
! |
88 |
||
89 |
receiver:aReceiver argument:anArgument dropObjectSelector:aSelector |
|
1733 | 90 |
^ self new |
91 |
receiver:aReceiver |
|
92 |
argument:anArgument |
|
93 |
dropObjectSelector:aSelector |
|
94 |
displayObjectSelector:nil |
|
95 |
dropFeedBackSelector:nil |
|
873 | 96 |
! |
97 |
||
98 |
receiver:aReceiver argument:anArgument dropObjectSelector:s1 displayObjectSelector:s2 |
|
1733 | 99 |
^ self new |
100 |
receiver:aReceiver |
|
101 |
argument:anArgument |
|
102 |
dropObjectSelector:s1 |
|
103 |
displayObjectSelector:s2 |
|
104 |
dropFeedBackSelector:nil |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
105 |
! |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
106 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
107 |
receiver:aReceiver argument:anArgument dropObjectSelector:s1 displayObjectSelector:s2 dropFeedBackSelector:s3 |
1733 | 108 |
^ self new |
109 |
receiver:aReceiver |
|
110 |
argument:anArgument |
|
111 |
dropObjectSelector:s1 |
|
112 |
displayObjectSelector:s2 |
|
113 |
dropFeedBackSelector:s3 |
|
873 | 114 |
! ! |
115 |
||
116 |
!DropSource methodsFor:'accessing'! |
|
117 |
||
118 |
argument |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
119 |
"returns the user defined argument" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
120 |
|
873 | 121 |
^ argument |
122 |
! |
|
123 |
||
124 |
argument:anArgument |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
125 |
"set the user defined argument" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
126 |
|
873 | 127 |
argument := anArgument |
128 |
! |
|
129 |
||
130 |
displayObjects |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
131 |
"returns a collection of display objects or nil" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
132 |
|
873 | 133 |
displayObjectSelector isNil ifTrue:[ |
134 |
^ nil |
|
135 |
]. |
|
1999 | 136 |
^ receiver perform:displayObjectSelector withOptionalArgument:self |
873 | 137 |
! |
138 |
||
139 |
dropObjects |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
140 |
"returns a collection of objects to drop" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
141 |
|
873 | 142 |
dropObjectSelector isNil ifTrue:[ |
143 |
^ nil |
|
144 |
]. |
|
145 |
||
1999 | 146 |
^ receiver perform:dropObjectSelector withOptionalArgument:self |
873 | 147 |
! |
148 |
||
149 |
receiver |
|
150 |
"return the value of the instance variable 'receiver' (automatically generated)" |
|
151 |
||
1679 | 152 |
^ receiver |
153 |
! |
|
873 | 154 |
|
155 |
receiver:something |
|
156 |
"set the value of the instance variable 'receiver' (automatically generated)" |
|
157 |
||
1679 | 158 |
receiver := something. |
159 |
! ! |
|
873 | 160 |
|
1679 | 161 |
!DropSource methodsFor:'accessing-selectors'! |
873 | 162 |
|
163 |
displayObjectSelector |
|
1999 | 164 |
"selector to access the displayObjects; a sequence of String, Text, Icon or Image, LabelAndIcon ... |
165 |
If the selector is for a one-arg message, the argument will be the dropSource (self)" |
|
166 |
||
873 | 167 |
^ displayObjectSelector |
168 |
! |
|
169 |
||
170 |
displayObjectSelector:aSelectorWithNoneOrOneArgs |
|
1999 | 171 |
"selector to access the displayObjects; a sequence of String, Text, Icon or Image, LabelAndIcon ... |
172 |
If the selector is for a 1-arg message, the argument will be the dropSource (self)" |
|
173 |
||
873 | 174 |
displayObjectSelector := aSelectorWithNoneOrOneArgs. |
175 |
! |
|
176 |
||
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
177 |
dropFeedBackSelector |
1999 | 178 |
"selector of a 1-arg message sent at end of a drop operation (to give a feedback); |
179 |
the argument to the message is the dropContext" |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
180 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
181 |
^ dropFeedBackSelector |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
182 |
! |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
183 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
184 |
dropFeedBackSelector:aSelectorWithZeroOrOneArgs |
1999 | 185 |
"selector of a 1-arg message sent at end of a drop operation (to give a feedback); |
186 |
the argument to the message is the dropContext" |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
187 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
188 |
dropFeedBackSelector := aSelectorWithZeroOrOneArgs. |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
189 |
! |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
190 |
|
873 | 191 |
dropObjectSelector |
1999 | 192 |
"selector to access the draggable objects; a sequence of DropObjects. |
193 |
If the selector is for a 1-arg message, the argument will be the dropSource (self)" |
|
194 |
||
873 | 195 |
^ dropObjectSelector |
196 |
! |
|
197 |
||
198 |
dropObjectSelector:aSelectorWithNoneOrOneArgs |
|
1999 | 199 |
"selector to access the draggable objects; a sequence of DropObjects. |
200 |
If the selector is for a 1-arg message, the argument will be the dropSource (self)" |
|
201 |
||
873 | 202 |
dropObjectSelector := aSelectorWithNoneOrOneArgs. |
203 |
! |
|
204 |
||
205 |
startDragSelector |
|
1999 | 206 |
"send to the receiver to start a DragAndDropManager. |
207 |
If no selector is specified, the default drag & drop operation is performed. |
|
873 | 208 |
Thus the operator is able to set the cursor, .... before starting the operation. |
209 |
||
1999 | 210 |
the (optional) arguments to the message are: |
211 |
1 dropSource (self) |
|
212 |
2 dropSource (self) Widget |
|
213 |
3 dropSource (self) Widget Point |
|
873 | 214 |
" |
1999 | 215 |
|
873 | 216 |
^ startDragSelector |
217 |
! |
|
218 |
||
219 |
startDragSelector:aTwoOrThreeArgSelector |
|
220 |
"send to the receiver to start a DragAndDropManager. If no selector is specified, |
|
221 |
the default drag & drop operation is performed. |
|
222 |
Thus the operator is able to set the cursor, .... before starting the operation. |
|
223 |
||
1999 | 224 |
the (optional) arguments to the message are: |
225 |
1 dropSource (self) |
|
226 |
2 dropSource (self) Widget |
|
227 |
3 dropSource (self) Widget Point |
|
873 | 228 |
" |
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
229 |
|
873 | 230 |
startDragSelector := aTwoOrThreeArgSelector |
231 |
! ! |
|
232 |
||
233 |
!DropSource methodsFor:'actions'! |
|
234 |
||
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
235 |
dropFeedBackFrom:aDropContext |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
236 |
"drop feedback to receiver" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
237 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
238 |
dropFeedBackSelector isNil ifTrue:[ |
873 | 239 |
^ self |
240 |
]. |
|
241 |
||
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
242 |
^ receiver perform:dropFeedBackSelector withOptionalArgument:aDropContext |
873 | 243 |
! |
244 |
||
245 |
startDragIn:aView at:aPoint |
|
1999 | 246 |
"start drag operation for a widget" |
873 | 247 |
|
248 |
startDragSelector notNil ifTrue:[ |
|
1999 | 249 |
^ receiver perform:startDragSelector withOptionalArgument:self and:aView and:aPoint |
873 | 250 |
]. |
1999 | 251 |
|
873 | 252 |
"/ |
253 |
"/ the default |
|
254 |
"/ |
|
2409
0629f9c77e8e
changed #startDragIn:at: returns the DragAndDropManager instanciated
ca
parents:
2132
diff
changeset
|
255 |
^ DragAndDropManager startDragFrom:aView dropSource:self |
873 | 256 |
! ! |
257 |
||
258 |
!DropSource methodsFor:'instance creation'! |
|
259 |
||
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
260 |
receiver:aReceiver argument:anArgument dropObjectSelector:s1 displayObjectSelector:s2 dropFeedBackSelector:s3 |
873 | 261 |
receiver := aReceiver. |
262 |
argument := anArgument. |
|
263 |
dropObjectSelector := s1. |
|
264 |
displayObjectSelector := s2. |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
265 |
dropFeedBackSelector := s3. |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
266 |
! ! |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
267 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
268 |
!DropSource methodsFor:'obsolete'! |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
269 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
270 |
feedBackSelector |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
271 |
"selector called at end of a drop to give a feedback; the argument to |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
272 |
the selector is the dropContext" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
273 |
|
2132 | 274 |
<resource: #obsolete> |
275 |
||
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
276 |
"/ self obsoleteMethodWarning:'use dropFeedBackSelector'. |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
277 |
^ self dropFeedBackSelector |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
278 |
! |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
279 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
280 |
feedBackSelector:aSelectorWithZeroOrOneArgs |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
281 |
"selector called at end of a drop to give a feedback; the argument to |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
282 |
the selector is the dropContext" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
283 |
|
2132 | 284 |
<resource: #obsolete> |
285 |
||
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
286 |
"/ self obsoleteMethodWarning:'use dropFeedBackSelector:'. |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
287 |
self dropFeedBackSelector:aSelectorWithZeroOrOneArgs. |
873 | 288 |
! ! |
289 |
||
290 |
!DropSource class methodsFor:'documentation'! |
|
291 |
||
292 |
version |
|
2409
0629f9c77e8e
changed #startDragIn:at: returns the DragAndDropManager instanciated
ca
parents:
2132
diff
changeset
|
293 |
^ '$Header: /cvs/stx/stx/libview2/DropSource.st,v 1.7 2008-03-20 12:17:56 ca Exp $' |
873 | 294 |
! ! |