131 |
131 |
132 #(#FullSpec |
132 #(#FullSpec |
133 #'window:' |
133 #'window:' |
134 #(#WindowSpec |
134 #(#WindowSpec |
135 #'name:' 'File Selection Browser' |
135 #'name:' 'File Selection Browser' |
136 #'layout:' #(#LayoutFrame 40 0 584 0 538 0 890 0) |
136 #'layout:' #(#LayoutFrame 197 0 172 0 695 0 478 0) |
137 #'label:' 'File Selection Browser' |
137 #'label:' 'File Selection Browser' |
138 #'min:' #(#Point 10 10) |
138 #'min:' #(#Point 10 10) |
139 #'max:' #(#Point 1152 900) |
139 #'max:' #(#Point 1152 900) |
140 #'bounds:' #(#Rectangle 40 584 539 891) |
140 #'bounds:' #(#Rectangle 197 172 696 479) |
141 #'usePreferredExtent:' false |
141 #'usePreferredExtent:' false |
142 ) |
142 ) |
143 #'component:' |
143 #'component:' |
144 #(#SpecCollection |
144 #(#SpecCollection |
145 #'collection:' |
145 #'collection:' |
157 #(#SpecCollection |
157 #(#SpecCollection |
158 #'collection:' |
158 #'collection:' |
159 #( |
159 #( |
160 #(#FileSelectionTreeSpec |
160 #(#FileSelectionTreeSpec |
161 #'name:' 'directoryTreeView' |
161 #'name:' 'directoryTreeView' |
162 #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) |
162 #'layout:' #(#LayoutFrame 0 0.0 25 0.0 0 1.0 0 1.0) |
163 #'model:' #selectionOfDirectory |
163 #'model:' #selectionOfDirectory |
164 #'hasHorizontalScrollBar:' true |
164 #'hasHorizontalScrollBar:' true |
165 #'hasVerticalScrollBar:' true |
165 #'hasVerticalScrollBar:' true |
166 #'miniScrollerHorizontal:' true |
166 #'miniScrollerHorizontal:' true |
167 #'showRoot:' false |
167 #'showDirectoryIndicatorForRoot:' false |
168 #'showDirectoryIndicator:' true |
168 #'showDirectoryIndicator:' true |
169 #'valueChangeSelector:' #readDirectory |
169 #'valueChangeSelector:' #readDirectory |
170 #'hierarchicalList:' #rootOfDirectory |
170 #'hierarchicalList:' #rootOfDirectory |
171 #'itemClass:' 'Directory' |
171 #'itemClass:' 'Directory' |
|
172 ) |
|
173 #(#InputFieldSpec |
|
174 #'name:' 'directoryInputField' |
|
175 #'layout:' #(#LayoutFrame 0 0.0 1 0 0 1.0 23 0) |
|
176 #'model:' #selectionOfDirectory |
|
177 #'immediateAccept:' false |
172 ) |
178 ) |
173 ) |
179 ) |
174 ) |
180 ) |
175 ) |
181 ) |
176 #(#ViewSpec |
182 #(#ViewSpec |
283 self close |
293 self close |
284 ! |
294 ! |
285 |
295 |
286 readDirectory |
296 readDirectory |
287 |
297 |
288 |dir| |
298 self directoryTreeView selection notNil |
289 directoryView directory: |
299 ifTrue: |
290 (dir := (self directoryTreeView model list at: |
300 [ |
291 self directoryTreeView model selection) contents name); |
301 directoryView directory: self selectionOfDirectory value; readDirectory. |
292 readDirectory. |
302 directory isNil ifTrue: [self class lastSelection: self selectionOfDirectory value] |
293 directory isNil ifTrue: [self class lastSelection: dir] |
303 ] |
294 ! ! |
304 ! ! |
295 |
305 |
296 !FileSelectionBrowser methodsFor:'startup / release'! |
306 !FileSelectionBrowser methodsFor:'startup / release'! |
297 |
307 |
298 closeCancel |
308 closeCancel |
314 accept value ifTrue:[ |
324 accept value ifTrue:[ |
315 ^ (self selectionOfDirectory value ? '') asFilename |
325 ^ (self selectionOfDirectory value ? '') asFilename |
316 constructString:(self valueOfFileName value ? '') |
326 constructString:(self valueOfFileName value ? '') |
317 ]. |
327 ]. |
318 ^ nil |
328 ^ nil |
319 |
|
320 "Modified: / 28.1.1998 / 15:21:40 / stefan" |
|
321 ! |
329 ! |
322 |
330 |
323 postBuildWith:aBuilder |
331 postBuildWith:aBuilder |
324 |
332 |
325 directoryView listOfFileFilters: listOfFileFilters ? #('*'). |
333 directoryView listOfFileFilters: listOfFileFilters ? #('*'). |
327 directoryView fileDoubleClickAction: [:aFileName |self fileDoubleClicked: aFileName asFilename baseName]. |
335 directoryView fileDoubleClickAction: [:aFileName |self fileDoubleClicked: aFileName asFilename baseName]. |
328 directoryView fileFilterSelectAction: [:fileFilter| |
336 directoryView fileFilterSelectAction: [:fileFilter| |
329 self valueOfFileName value: ( |
337 self valueOfFileName value: ( |
330 ((self valueOfFileName value ? 'unknown') readStream upTo: $.), '.', |
338 ((self valueOfFileName value ? 'unknown') readStream upTo: $.), '.', |
331 (fileFilter copy reverse readStream upTo: $.) reverse)]. |
339 (fileFilter copy reverse readStream upTo: $.) reverse)]. |
332 self directoryTreeView selectPathname: directory ? self class lastSelection. |
340 self directoryTreeView selectPathname: directory ? self class lastSelection ? '/'. |
|
341 |
|
342 self directoryInputField entryCompletionBlock: |
|
343 [:f| |
|
344 |completedDirectory| |
|
345 (completedDirectory := Filename |
|
346 filenameCompletionFor: self directoryInputField contents |
|
347 directory:directory |
|
348 directoriesOnly:true |
|
349 filesOnly:false |
|
350 ifMultiple: |
|
351 [:dir | |
|
352 self directoryTreeView selection notNil ifTrue: [ |
|
353 self directoryTreeView nodeAt: self directoryTreeView selection expand:true] |
|
354 ]) asFilename exists |
|
355 ifTrue: |
|
356 [ |
|
357 self directoryInputField contents: completedDirectory. |
|
358 self directoryTreeView selectPathname: completedDirectory. |
|
359 self readDirectory |
|
360 ] |
|
361 ifFalse: [self directoryInputField flash] |
|
362 ]. |
333 |
363 |
334 ^super postBuildWith:aBuilder |
364 ^super postBuildWith:aBuilder |
335 ! ! |
365 ! ! |
336 |
366 |
337 !FileSelectionBrowser class methodsFor:'documentation'! |
367 !FileSelectionBrowser class methodsFor:'documentation'! |