335 setRootForFile:aFilename |
335 setRootForFile:aFilename |
336 |f root d parent| |
336 |f root d parent| |
337 |
337 |
338 f := aFilename asFilename. |
338 f := aFilename asFilename. |
339 root := Filename rootDirectoryOnVolume:f volume. |
339 root := Filename rootDirectoryOnVolume:f volume. |
|
340 self directory:aFilename. |
340 |
341 |
341 "/ on some systems, the root itself is not readable, |
342 "/ on some systems, the root itself is not readable, |
342 "/ but subdirs are (WIN32-network drives and VMS) |
343 "/ but subdirs are (WIN32-network drives and VMS) |
|
344 "/ to avoid trouble in the treeView, search for the |
|
345 "/ last readable directory and fake that as the trees root. |
343 |
346 |
344 (root exists and:[root isDirectory and:[root isReadable]]) |
347 (root exists and:[root isDirectory and:[root isReadable]]) |
345 ifFalse:[ |
348 ifFalse:[ |
346 "/ search backward from aFilename for the last readable dir. |
349 "/ search backward from aFilename for the last readable dir. |
347 root := f. |
350 root := f. |
381 readDirectory |
384 readDirectory |
382 |
385 |
383 self directoryTreeView selection notNil |
386 self directoryTreeView selection notNil |
384 ifTrue: |
387 ifTrue: |
385 [ |
388 [ |
386 directoryView directory: self selectionOfDirectory value; readDirectory. |
389 directoryView directory: self selectionOfDirectory value. |
|
390 directoryView readDirectory. |
387 self class lastSelection notNil ifTrue: [self class lastSelection: self selectionOfDirectory value] |
391 self class lastSelection notNil ifTrue: [self class lastSelection: self selectionOfDirectory value] |
388 ] |
392 ] |
|
393 |
|
394 "Modified: / 24.9.1998 / 21:58:50 / cg" |
|
395 ! ! |
|
396 |
|
397 !FileSelectionBrowser methodsFor:'misc'! |
|
398 |
|
399 entryCompletion |
|
400 |completedDirectory f dir treeView inputField| |
|
401 |
|
402 treeView := self directoryTreeView. |
|
403 inputField := self directoryInputField. |
|
404 |
|
405 f := inputField contents. |
|
406 dir := f asFilename directoryName. |
|
407 |
|
408 (completedDirectory := Filename |
|
409 filenameCompletionFor:f |
|
410 directory:dir |
|
411 directoriesOnly:true |
|
412 filesOnly:false |
|
413 ifMultiple: |
|
414 [:dir | |
|
415 treeView selection notNil ifTrue:[ |
|
416 treeView selectedNodeExpand: true |
|
417 ] |
|
418 ]) asFilename exists |
|
419 ifTrue: |
|
420 [ |
|
421 "/ volume changed ... (win32 or VMS) |
|
422 completedDirectory asFilename volume ~= directory asFilename volume ifTrue:[ |
|
423 self setRootForFile:completedDirectory asFilename. |
|
424 ]. |
|
425 treeView selectPathname: completedDirectory. |
|
426 inputField contents: completedDirectory. |
|
427 "/ self directoryTreeView selectPathname: completedDirectory. |
|
428 self readDirectory |
|
429 ] ifFalse: [ |
|
430 inputField flash |
|
431 ] |
|
432 |
|
433 "Created: / 24.9.1998 / 21:33:37 / cg" |
|
434 "Modified: / 24.9.1998 / 22:20:23 / cg" |
389 ! ! |
435 ! ! |
390 |
436 |
391 !FileSelectionBrowser methodsFor:'startup / release'! |
437 !FileSelectionBrowser methodsFor:'startup / release'! |
392 |
438 |
393 closeCancel |
439 closeCancel |
429 ((self valueOfFileName value ? 'unknown') readStream upTo: $.), '.', |
475 ((self valueOfFileName value ? 'unknown') readStream upTo: $.), '.', |
430 (fileFilter copy reverse readStream upTo: $.) reverse) |
476 (fileFilter copy reverse readStream upTo: $.) reverse) |
431 ]. |
477 ]. |
432 self directoryTreeView selectPathname: directory ? self class lastSelection ? Filename currentDirectory asAbsoluteFilename name. |
478 self directoryTreeView selectPathname: directory ? self class lastSelection ? Filename currentDirectory asAbsoluteFilename name. |
433 |
479 |
434 self directoryInputField entryCompletionBlock: |
480 self directoryInputField |
435 [:f| |
481 entryCompletionBlock:[:f| self entryCompletion]. |
436 |completedDirectory| |
|
437 |
|
438 (completedDirectory := Filename |
|
439 filenameCompletionFor: self directoryInputField contents |
|
440 directory:(directory asFilename) |
|
441 directoriesOnly:true |
|
442 filesOnly:false |
|
443 ifMultiple: |
|
444 [:dir | |
|
445 self directoryTreeView selection notNil ifTrue: [ |
|
446 self directoryTreeView selectedNodeExpand: true] |
|
447 ]) asFilename exists |
|
448 ifTrue: |
|
449 [ |
|
450 "/ volume changed ... (win32 or VMS) |
|
451 completedDirectory asFilename volume ~= directory asFilename volume ifTrue:[ |
|
452 self setRootForFile:completedDirectory asFilename. |
|
453 ]. |
|
454 |
|
455 self directoryInputField contents: completedDirectory. |
|
456 self directoryTreeView selectPathname: completedDirectory. |
|
457 self readDirectory |
|
458 ] |
|
459 ifFalse: [self directoryInputField flash] |
|
460 ]. |
|
461 |
482 |
462 directoryView selectionOfFile value: |
483 directoryView selectionOfFile value: |
463 (directoryView listOfFiles detect: [:row| row baseName = self valueOfFileName value] ifNone: nil). |
484 (directoryView listOfFiles detect: [:row| row baseName = self valueOfFileName value] ifNone: nil). |
464 |
485 |
465 ^super postBuildWith:aBuilder |
486 ^super postBuildWith:aBuilder |
466 |
487 |
467 "Modified: / 23.9.1998 / 16:40:38 / cg" |
488 "Modified: / 24.9.1998 / 21:34:05 / cg" |
468 ! ! |
489 ! ! |
469 |
490 |
470 !FileSelectionBrowser class methodsFor:'documentation'! |
491 !FileSelectionBrowser class methodsFor:'documentation'! |
471 |
492 |
472 version |
493 version |