author | Claus Gittinger <cg@exept.de> |
Sun, 30 Mar 2003 15:02:05 +0200 | |
changeset 1731 | 643fd1153e5d |
parent 1679 | cbff43d2fe2a |
child 1733 | 84cd0766db27 |
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 |
|
78 |
^ self new receiver:aReceiver |
|
79 |
! |
|
80 |
||
81 |
receiver:aReceiver argument:anArgument |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
82 |
^ self |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
83 |
receiver:aReceiver |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
84 |
argument:anArgument |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
85 |
dropObjectSelector:nil |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
86 |
displayObjectSelector:nil |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
87 |
dropFeedBackSelector:nil |
873 | 88 |
! |
89 |
||
90 |
receiver:aReceiver argument:anArgument dropObjectSelector:aSelector |
|
91 |
||
92 |
^ self new receiver:aReceiver argument:anArgument |
|
93 |
dropObjectSelector:aSelector |
|
94 |
displayObjectSelector:nil |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
95 |
dropFeedBackSelector:nil |
873 | 96 |
! |
97 |
||
98 |
receiver:aReceiver argument:anArgument dropObjectSelector:s1 displayObjectSelector:s2 |
|
99 |
||
100 |
^ self new receiver:aReceiver argument:anArgument |
|
101 |
dropObjectSelector:s1 |
|
102 |
displayObjectSelector:s2 |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
103 |
dropFeedBackSelector:nil |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
104 |
! |
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 |
receiver:aReceiver argument:anArgument dropObjectSelector:s1 displayObjectSelector:s2 dropFeedBackSelector:s3 |
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 |
^ self new receiver:aReceiver argument:anArgument |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
109 |
dropObjectSelector:s1 |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
110 |
displayObjectSelector:s2 |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
111 |
dropFeedBackSelector:s3 |
873 | 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 |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
119 |
dropFeedBackSelector:s3 |
873 | 120 |
! ! |
121 |
||
122 |
!DropSource methodsFor:'accessing'! |
|
123 |
||
124 |
argument |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
125 |
"returns the user defined argument" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
126 |
|
873 | 127 |
^ argument |
128 |
! |
|
129 |
||
130 |
argument:anArgument |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
131 |
"set the user defined argument" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
132 |
|
873 | 133 |
argument := anArgument |
134 |
! |
|
135 |
||
136 |
displayObjects |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
137 |
"returns a collection of display objects or nil" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
138 |
|
873 | 139 |
displayObjectSelector isNil ifTrue:[ |
140 |
^ nil |
|
141 |
]. |
|
142 |
^ displayObjectSelector numArgs == 0 ifTrue:[receiver perform:displayObjectSelector] |
|
143 |
ifFalse:[receiver perform:displayObjectSelector with:self] |
|
144 |
! |
|
145 |
||
146 |
dropObjects |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
147 |
"returns a collection of objects to drop" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
148 |
|
873 | 149 |
dropObjectSelector isNil ifTrue:[ |
150 |
^ nil |
|
151 |
]. |
|
152 |
||
153 |
^ dropObjectSelector numArgs == 0 ifTrue:[receiver perform:dropObjectSelector] |
|
154 |
ifFalse:[receiver perform:dropObjectSelector with:self] |
|
155 |
! |
|
156 |
||
157 |
receiver |
|
158 |
"return the value of the instance variable 'receiver' (automatically generated)" |
|
159 |
||
1679 | 160 |
^ receiver |
161 |
! |
|
873 | 162 |
|
163 |
receiver:something |
|
164 |
"set the value of the instance variable 'receiver' (automatically generated)" |
|
165 |
||
1679 | 166 |
receiver := something. |
167 |
! ! |
|
873 | 168 |
|
1679 | 169 |
!DropSource methodsFor:'accessing-selectors'! |
873 | 170 |
|
171 |
displayObjectSelector |
|
172 |
"selector to access the displayObjects; a sequence of String, Text, Icon or Image, |
|
173 |
LabelAndIcon ... |
|
174 |
If an argument is required, the argument is the dropSource (self) |
|
175 |
" |
|
176 |
^ displayObjectSelector |
|
177 |
! |
|
178 |
||
179 |
displayObjectSelector:aSelectorWithNoneOrOneArgs |
|
180 |
"selector to access the displayObjects; a sequence of String, Text, Icon or Image, |
|
181 |
LabelAndIcon ... |
|
182 |
If an argument is required, the argument is the dropSource (self) |
|
183 |
" |
|
184 |
displayObjectSelector := aSelectorWithNoneOrOneArgs. |
|
185 |
! |
|
186 |
||
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
187 |
dropFeedBackSelector |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
188 |
"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
|
189 |
the selector is the dropContext" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
190 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
191 |
^ dropFeedBackSelector |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
192 |
! |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
193 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
194 |
dropFeedBackSelector:aSelectorWithZeroOrOneArgs |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
195 |
"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
|
196 |
the selector is the dropContext" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
197 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
198 |
dropFeedBackSelector := aSelectorWithZeroOrOneArgs. |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
199 |
! |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
200 |
|
873 | 201 |
dropObjectSelector |
202 |
"selector to access the draggable objects; a sequence of DropObject's |
|
203 |
If an argument is required, the argument is the dropSource (self) |
|
204 |
" |
|
205 |
^ dropObjectSelector |
|
206 |
! |
|
207 |
||
208 |
dropObjectSelector:aSelectorWithNoneOrOneArgs |
|
209 |
"selector to access the draggable objects; a sequence of DropObject's |
|
210 |
If an argument is required, the argument is the dropSource (self) |
|
211 |
" |
|
212 |
dropObjectSelector := aSelectorWithNoneOrOneArgs. |
|
213 |
! |
|
214 |
||
215 |
startDragSelector |
|
216 |
"send to the receiver to start a DragAndDropManager. If no selector is specified, |
|
217 |
the default drag & drop operation is performed. |
|
218 |
Thus the operator is able to set the cursor, .... before starting the operation. |
|
219 |
||
220 |
the arguments to the selector are: |
|
221 |
2 aDropSource (self) Widget |
|
222 |
3 aDropSource (self) Widget Point |
|
223 |
" |
|
224 |
^ startDragSelector |
|
225 |
! |
|
226 |
||
227 |
startDragSelector:aTwoOrThreeArgSelector |
|
228 |
"send to the receiver to start a DragAndDropManager. If no selector is specified, |
|
229 |
the default drag & drop operation is performed. |
|
230 |
Thus the operator is able to set the cursor, .... before starting the operation. |
|
231 |
||
232 |
the arguments to the selector are: |
|
233 |
2 aDropSource (self) Widget |
|
234 |
3 aDropSource (self) Widget Point |
|
235 |
" |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
236 |
|
873 | 237 |
startDragSelector := aTwoOrThreeArgSelector |
238 |
! ! |
|
239 |
||
240 |
!DropSource methodsFor:'actions'! |
|
241 |
||
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
242 |
dropFeedBackFrom:aDropContext |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
243 |
"drop feedback to receiver" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
244 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
245 |
dropFeedBackSelector isNil ifTrue:[ |
873 | 246 |
^ self |
247 |
]. |
|
248 |
||
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
249 |
^ receiver perform:dropFeedBackSelector withOptionalArgument:aDropContext |
873 | 250 |
! |
251 |
||
252 |
startDragIn:aView at:aPoint |
|
253 |
"start drag operation for a widget |
|
254 |
" |
|
255 |
|args| |
|
256 |
||
257 |
startDragSelector notNil ifTrue:[ |
|
258 |
args := startDragSelector numArgs. |
|
259 |
args == 2 ifTrue:[ ^ receiver perform:startDragSelector with:self with:aView ]. |
|
260 |
args == 3 ifTrue:[ ^ receiver perform:startDragSelector with:self with:aView with:aPoint ]. |
|
261 |
]. |
|
262 |
"/ |
|
263 |
"/ the default |
|
264 |
"/ |
|
265 |
DragAndDropManager startDragFrom:aView dropSource:self |
|
266 |
||
267 |
! ! |
|
268 |
||
269 |
!DropSource methodsFor:'instance creation'! |
|
270 |
||
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
271 |
receiver:aReceiver argument:anArgument dropObjectSelector:s1 displayObjectSelector:s2 dropFeedBackSelector:s3 |
873 | 272 |
receiver := aReceiver. |
273 |
argument := anArgument. |
|
274 |
dropObjectSelector := s1. |
|
275 |
displayObjectSelector := s2. |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
276 |
dropFeedBackSelector := s3. |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
277 |
! ! |
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 |
!DropSource methodsFor:'obsolete'! |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
280 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
281 |
feedBackSelector |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
282 |
"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
|
283 |
the selector is the dropContext" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
284 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
285 |
"/ self obsoleteMethodWarning:'use dropFeedBackSelector'. |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
286 |
^ self dropFeedBackSelector |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
287 |
! |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
288 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
289 |
feedBackSelector:aSelectorWithZeroOrOneArgs |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
290 |
"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
|
291 |
the selector is the dropContext" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
292 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
293 |
"/ self obsoleteMethodWarning:'use dropFeedBackSelector:'. |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
294 |
self dropFeedBackSelector:aSelectorWithZeroOrOneArgs. |
873 | 295 |
! ! |
296 |
||
297 |
!DropSource class methodsFor:'documentation'! |
|
298 |
||
299 |
version |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
300 |
^ '$Header: /cvs/stx/stx/libview2/DropSource.st,v 1.3 2003-03-30 13:02:05 cg Exp $' |
873 | 301 |
! ! |