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