author | Claus Gittinger <cg@exept.de> |
Tue, 19 Aug 2003 19:55:33 +0200 | |
changeset 1793 | eba6da749414 |
parent 1733 | 84cd0766db27 |
child 1999 | dceba4dfb4e8 |
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 |
]. |
|
138 |
^ displayObjectSelector numArgs == 0 ifTrue:[receiver perform:displayObjectSelector] |
|
139 |
ifFalse:[receiver perform:displayObjectSelector with:self] |
|
140 |
! |
|
141 |
||
142 |
dropObjects |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
143 |
"returns a collection of objects to drop" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
144 |
|
873 | 145 |
dropObjectSelector isNil ifTrue:[ |
146 |
^ nil |
|
147 |
]. |
|
148 |
||
149 |
^ dropObjectSelector numArgs == 0 ifTrue:[receiver perform:dropObjectSelector] |
|
150 |
ifFalse:[receiver perform:dropObjectSelector with:self] |
|
151 |
! |
|
152 |
||
153 |
receiver |
|
154 |
"return the value of the instance variable 'receiver' (automatically generated)" |
|
155 |
||
1679 | 156 |
^ receiver |
157 |
! |
|
873 | 158 |
|
159 |
receiver:something |
|
160 |
"set the value of the instance variable 'receiver' (automatically generated)" |
|
161 |
||
1679 | 162 |
receiver := something. |
163 |
! ! |
|
873 | 164 |
|
1679 | 165 |
!DropSource methodsFor:'accessing-selectors'! |
873 | 166 |
|
167 |
displayObjectSelector |
|
168 |
"selector to access the displayObjects; a sequence of String, Text, Icon or Image, |
|
169 |
LabelAndIcon ... |
|
170 |
If an argument is required, the argument is the dropSource (self) |
|
171 |
" |
|
172 |
^ displayObjectSelector |
|
173 |
! |
|
174 |
||
175 |
displayObjectSelector:aSelectorWithNoneOrOneArgs |
|
176 |
"selector to access the displayObjects; a sequence of String, Text, Icon or Image, |
|
177 |
LabelAndIcon ... |
|
178 |
If an argument is required, the argument is the dropSource (self) |
|
179 |
" |
|
180 |
displayObjectSelector := aSelectorWithNoneOrOneArgs. |
|
181 |
! |
|
182 |
||
1731
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 |
"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
|
185 |
the selector is the dropContext" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
186 |
|
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 |
! |
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 |
"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
|
192 |
the selector is the dropContext" |
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 |
! |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
196 |
|
873 | 197 |
dropObjectSelector |
198 |
"selector to access the draggable objects; a sequence of DropObject's |
|
199 |
If an argument is required, the argument is the dropSource (self) |
|
200 |
" |
|
201 |
^ dropObjectSelector |
|
202 |
! |
|
203 |
||
204 |
dropObjectSelector:aSelectorWithNoneOrOneArgs |
|
205 |
"selector to access the draggable objects; a sequence of DropObject's |
|
206 |
If an argument is required, the argument is the dropSource (self) |
|
207 |
" |
|
208 |
dropObjectSelector := aSelectorWithNoneOrOneArgs. |
|
209 |
! |
|
210 |
||
211 |
startDragSelector |
|
212 |
"send to the receiver to start a DragAndDropManager. If no selector is specified, |
|
213 |
the default drag & drop operation is performed. |
|
214 |
Thus the operator is able to set the cursor, .... before starting the operation. |
|
215 |
||
216 |
the arguments to the selector are: |
|
217 |
2 aDropSource (self) Widget |
|
218 |
3 aDropSource (self) Widget Point |
|
219 |
" |
|
220 |
^ startDragSelector |
|
221 |
! |
|
222 |
||
223 |
startDragSelector:aTwoOrThreeArgSelector |
|
224 |
"send to the receiver to start a DragAndDropManager. If no selector is specified, |
|
225 |
the default drag & drop operation is performed. |
|
226 |
Thus the operator is able to set the cursor, .... before starting the operation. |
|
227 |
||
228 |
the arguments to the selector are: |
|
229 |
2 aDropSource (self) Widget |
|
230 |
3 aDropSource (self) Widget Point |
|
231 |
" |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
232 |
|
873 | 233 |
startDragSelector := aTwoOrThreeArgSelector |
234 |
! ! |
|
235 |
||
236 |
!DropSource methodsFor:'actions'! |
|
237 |
||
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
238 |
dropFeedBackFrom:aDropContext |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
239 |
"drop feedback to receiver" |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
240 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
241 |
dropFeedBackSelector isNil ifTrue:[ |
873 | 242 |
^ self |
243 |
]. |
|
244 |
||
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
245 |
^ receiver perform:dropFeedBackSelector withOptionalArgument:aDropContext |
873 | 246 |
! |
247 |
||
248 |
startDragIn:aView at:aPoint |
|
249 |
"start drag operation for a widget |
|
250 |
" |
|
251 |
|args| |
|
252 |
||
253 |
startDragSelector notNil ifTrue:[ |
|
254 |
args := startDragSelector numArgs. |
|
255 |
args == 2 ifTrue:[ ^ receiver perform:startDragSelector with:self with:aView ]. |
|
256 |
args == 3 ifTrue:[ ^ receiver perform:startDragSelector with:self with:aView with:aPoint ]. |
|
257 |
]. |
|
258 |
"/ |
|
259 |
"/ the default |
|
260 |
"/ |
|
261 |
DragAndDropManager startDragFrom:aView dropSource:self |
|
262 |
||
263 |
! ! |
|
264 |
||
265 |
!DropSource methodsFor:'instance creation'! |
|
266 |
||
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
267 |
receiver:aReceiver argument:anArgument dropObjectSelector:s1 displayObjectSelector:s2 dropFeedBackSelector:s3 |
873 | 268 |
receiver := aReceiver. |
269 |
argument := anArgument. |
|
270 |
dropObjectSelector := s1. |
|
271 |
displayObjectSelector := s2. |
|
1731
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
272 |
dropFeedBackSelector := s3. |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
273 |
! ! |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
274 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
275 |
!DropSource methodsFor:'obsolete'! |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
276 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
277 |
feedBackSelector |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
278 |
"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
|
279 |
the selector is the dropContext" |
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 |
"/ self obsoleteMethodWarning:'use dropFeedBackSelector'. |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
282 |
^ self dropFeedBackSelector |
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 |
|
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
285 |
feedBackSelector:aSelectorWithZeroOrOneArgs |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
286 |
"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
|
287 |
the selector is the dropContext" |
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 |
"/ self obsoleteMethodWarning:'use dropFeedBackSelector:'. |
643fd1153e5d
feedBackSelector -> dropFeedBackSelector
Claus Gittinger <cg@exept.de>
parents:
1679
diff
changeset
|
290 |
self dropFeedBackSelector:aSelectorWithZeroOrOneArgs. |
873 | 291 |
! ! |
292 |
||
293 |
!DropSource class methodsFor:'documentation'! |
|
294 |
||
295 |
version |
|
1733 | 296 |
^ '$Header: /cvs/stx/stx/libview2/DropSource.st,v 1.4 2003-03-30 13:07:42 cg Exp $' |
873 | 297 |
! ! |