|
1 SelectionBrowser subclass:#ResourceSelectionBrowser |
|
2 instanceVariableNames:'resourceMethod resourceClass resourceSuperclass resourceSelector |
|
3 resourceTypes' |
|
4 classVariableNames:'' |
|
5 poolDictionaries:'' |
|
6 category:'Interface-Advanced-Tools' |
|
7 ! |
|
8 |
|
9 |
|
10 !ResourceSelectionBrowser class methodsFor:'instance creation'! |
|
11 |
|
12 openOnSuperclass: aSuperclass class: aClass selector: aSelector resourceTypes: aResourceTypes |
|
13 |
|
14 ^self new openOnSuperclass: aSuperclass class: aClass selector: aSelector resourceTypes: aResourceTypes |
|
15 ! ! |
|
16 |
|
17 !ResourceSelectionBrowser class methodsFor:'interface specs'! |
|
18 |
|
19 windowSpec |
|
20 "this window spec was automatically generated by the ST/X UIPainter" |
|
21 |
|
22 "do not manually edit this - the painter/builder may not be able to |
|
23 handle the specification if its corrupted." |
|
24 |
|
25 " |
|
26 UIPainter new openOnClass:ResourceBrowser andSelector:#windowSpec |
|
27 ResourceBrowser new openInterface:#windowSpec |
|
28 " |
|
29 "ResourceBrowser open" |
|
30 |
|
31 <resource: #canvas> |
|
32 |
|
33 ^ |
|
34 |
|
35 #(#FullSpec |
|
36 #'window:' |
|
37 #(#WindowSpec |
|
38 #'name:' 'Resource Browser' |
|
39 #'layout:' #(#LayoutFrame 541 0 280 0 940 0 579 0) |
|
40 #'label:' 'Resource Browser' |
|
41 #'min:' #(#Point 400 300) |
|
42 #'max:' #(#Point 1152 864) |
|
43 #'bounds:' #(#Rectangle 541 280 941 580) |
|
44 #'usePreferredExtent:' false |
|
45 ) |
|
46 #'component:' |
|
47 #(#SpecCollection |
|
48 #'collection:' |
|
49 #( |
|
50 #(#VariableHorizontalPanelSpec |
|
51 #'name:' 'variableHorizontalPanel' |
|
52 #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -40 1.0) |
|
53 #'component:' |
|
54 #(#SpecCollection |
|
55 #'collection:' |
|
56 #( |
|
57 #(#ViewSpec |
|
58 #'name:' 'view1' |
|
59 #'component:' |
|
60 #(#SpecCollection |
|
61 #'collection:' |
|
62 #( |
|
63 #(#SelectionInTreeViewSpec |
|
64 #'name:' 'listOfClassesView' |
|
65 #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) |
|
66 #'model:' #selectionOfClass |
|
67 #'hasHorizontalScrollBar:' true |
|
68 #'hasVerticalScrollBar:' true |
|
69 #'miniScrollerHorizontal:' true |
|
70 #'showRoot:' false |
|
71 #'valueChangeSelector:' #'classSelected:' |
|
72 #'hierarchicalList:' #listOfClasses |
|
73 ) |
|
74 ) |
|
75 ) |
|
76 #'level:' -1 |
|
77 ) |
|
78 #(#ViewSpec |
|
79 #'name:' 'view2' |
|
80 #'component:' |
|
81 #(#SpecCollection |
|
82 #'collection:' |
|
83 #( |
|
84 #(#DataSetSpec |
|
85 #'name:' 'resourcesDataSetView' |
|
86 #'layout:' #(#LayoutFrame 2 0.0 0 0.0 2 1.0 -22 1.0) |
|
87 #'model:' #selectionOfResource |
|
88 #'hasHorizontalScrollBar:' true |
|
89 #'hasVerticalScrollBar:' true |
|
90 #'miniScrollerHorizontal:' true |
|
91 #'dataList:' #listOfResources |
|
92 #'useIndex:' false |
|
93 #'doubleClickSelector:' #resourceDoubleClicked |
|
94 #'valueChangeSelector:' #resourceSelected |
|
95 #'verticalSpacing:' 1 |
|
96 #'columns:' |
|
97 #( |
|
98 #(#DataSetColumnSpec |
|
99 #'width:' 20 |
|
100 #'model:' #icon |
|
101 #'printSelector:' #'iconOn:' |
|
102 #'canSelect:' false |
|
103 ) |
|
104 #(#DataSetColumnSpec |
|
105 #'label:' 'selector' |
|
106 #'model:' #selector |
|
107 #'canSelect:' false |
|
108 ) |
|
109 #(#DataSetColumnSpec |
|
110 #'label:' 'resource' |
|
111 #'model:' #resourceType |
|
112 #'canSelect:' false |
|
113 ) |
|
114 ) |
|
115 ) |
|
116 #(#InputFieldSpec |
|
117 #'name:' 'selectorInputField' |
|
118 #'layout:' #(#LayoutFrame 2 0.0 -22 1 2 1.0 0 1) |
|
119 #'model:' #valueOfSelector |
|
120 ) |
|
121 ) |
|
122 ) |
|
123 #'level:' -1 |
|
124 ) |
|
125 ) |
|
126 ) |
|
127 #'handles:' #(#Any 0.5 1.0) |
|
128 ) |
|
129 #(#HorizontalPanelViewSpec |
|
130 #'name:' 'horizontalPanelView' |
|
131 #'layout:' #(#LayoutFrame 0 0.0 -40 1 0 1.0 0 1.0) |
|
132 #'component:' |
|
133 #(#SpecCollection |
|
134 #'collection:' |
|
135 #( |
|
136 #(#ActionButtonSpec |
|
137 #'name:' 'actionButton2' |
|
138 #'label:' 'cancel' |
|
139 #'model:' #cancel |
|
140 #'extent:' #(#Point 99 22) |
|
141 ) |
|
142 #(#ActionButtonSpec |
|
143 #'name:' 'actionButton1' |
|
144 #'label:' 'ok' |
|
145 #'model:' #accept |
|
146 #'extent:' #(#Point 99 22) |
|
147 ) |
|
148 ) |
|
149 ) |
|
150 #'level:' 1 |
|
151 #'horizontalLayout:' #center |
|
152 #'verticalLayout:' #center |
|
153 #'horizontalSpace:' 3 |
|
154 #'verticalSpace:' 3 |
|
155 ) |
|
156 ) |
|
157 ) |
|
158 ) |
|
159 ! ! |
|
160 |
|
161 !ResourceSelectionBrowser methodsFor:'actions'! |
|
162 |
|
163 classSelected |
|
164 |a| |
|
165 self selectionOfClass value isNil ifTrue: [^nil]. |
|
166 self listOfResources contents: |
|
167 (a := (Smalltalk at: self selectionOfClass value name ) class methodDictionary |
|
168 asOrderedCollection select: [:m| m resources notNil]). |
|
169 |
|
170 ! |
|
171 |
|
172 classSelected: anIndex |
|
173 |
|
174 self selectionOfClass value isNil ifTrue: [^nil]. |
|
175 self withWaitCursorDo: |
|
176 [ |
|
177 |clsName| |
|
178 clsName := ((builder componentAt: #listOfClassesView) list at: anIndex). |
|
179 self class lastSelection: clsName. |
|
180 self listOfResources contents: |
|
181 ((Smalltalk at: clsName) |
|
182 class methodDictionary |
|
183 asOrderedCollection select: |
|
184 [:m| m resources notNil and: [resourceTypes includes: m resourceType]]). |
|
185 ] |
|
186 ! |
|
187 |
|
188 closeCancel |
|
189 |
|
190 resourceMethod := nil. |
|
191 super closeCancel |
|
192 ! |
|
193 |
|
194 resourceDoubleClicked |
|
195 |
|
196 resourceMethod := self selectionOfResource value. |
|
197 accept value: true. |
|
198 self close |
|
199 ! |
|
200 |
|
201 resourceSelected |
|
202 |
|
203 resourceMethod := self selectionOfResource value. |
|
204 self valueOfSelector value: self selectionOfResource value selector |
|
205 ! ! |
|
206 |
|
207 !ResourceSelectionBrowser methodsFor:'aspects'! |
|
208 |
|
209 listOfClasses |
|
210 |
|
211 |holder| |
|
212 (holder := builder bindingAt:#listOfClasses) isNil ifTrue:[ |
|
213 builder aspectAt:#listOfClasses put:(holder := TreeItem newAsTreeFromSmalltalkClass: |
|
214 (Smalltalk at: resourceSuperclass)). |
|
215 ]. |
|
216 ^ holder |
|
217 |
|
218 |
|
219 ! |
|
220 |
|
221 listOfResources |
|
222 "automatically generated by UIPainter ..." |
|
223 |
|
224 "*** the code below creates a default model when invoked." |
|
225 "*** (which may not be the one you wanted)" |
|
226 "*** Please change as required and accept in the browser." |
|
227 |
|
228 |holder| |
|
229 |
|
230 (holder := builder bindingAt:#listOfResources) isNil ifTrue:[ |
|
231 builder aspectAt:#listOfResources put:(holder := List new). |
|
232 ]. |
|
233 ^ holder |
|
234 ! |
|
235 |
|
236 selectionOfClass |
|
237 |
|
238 |holder| |
|
239 |
|
240 (holder := builder bindingAt:#selectionOfClass) isNil ifTrue:[ |
|
241 builder aspectAt:#selectionOfClass put:(holder := ValueHolder new). |
|
242 ]. |
|
243 ^ holder |
|
244 ! |
|
245 |
|
246 selectionOfResource |
|
247 |
|
248 |holder| |
|
249 |
|
250 (holder := builder bindingAt:#selectionOfResource) isNil ifTrue:[ |
|
251 builder aspectAt:#selectionOfResource put:(holder := ValueHolder new). |
|
252 ]. |
|
253 ^ holder |
|
254 ! |
|
255 |
|
256 valueOfSelector |
|
257 "automatically generated by UIPainter ..." |
|
258 |
|
259 "*** the code below creates a default model when invoked." |
|
260 "*** (which may not be the one you wanted)" |
|
261 "*** Please change as required and accept in the browser." |
|
262 |
|
263 |holder| |
|
264 |
|
265 (holder := builder bindingAt:#valueOfSelector) isNil ifTrue:[ |
|
266 builder aspectAt:#valueOfSelector put:(holder := ValueHolder new). |
|
267 ]. |
|
268 ^ holder |
|
269 ! ! |
|
270 |
|
271 !ResourceSelectionBrowser methodsFor:'initialization'! |
|
272 |
|
273 postBuildWith:aBuilder |
|
274 |
|
275 resourceClass notNil ifTrue: |
|
276 [(builder componentAt: #listOfClassesView) selectFromListOfNames: |
|
277 (((Smalltalk at: self class lastSelection ? resourceClass ifAbsent: [Object])) withAllSuperclasses reverse collect: [:cls| cls name asString])]. |
|
278 ^super postBuildWith:aBuilder |
|
279 |
|
280 ! ! |
|
281 |
|
282 !ResourceSelectionBrowser methodsFor:'instance creation'! |
|
283 |
|
284 openOnSuperclass: aSuperclass class: aClass selector: aSelector resourceTypes: aResourceTypes |
|
285 |
|
286 resourceTypes := aResourceTypes. |
|
287 resourceSuperclass := aSuperclass. |
|
288 resourceClass := aClass. |
|
289 resourceSelector := aSelector. |
|
290 |
|
291 self open. |
|
292 accept value |
|
293 ifTrue: |
|
294 [ |
|
295 ^self selectionOfClass value name, ' ', self valueOfSelector value |
|
296 ]. |
|
297 ^nil |
|
298 ! ! |
|
299 |
|
300 !ResourceSelectionBrowser class methodsFor:'documentation'! |
|
301 |
|
302 version |
|
303 ^ '$Header$' |
|
304 ! ! |