FileSelectionBrowser.st
changeset 592 0383cd70fe79
parent 589 e754379e9e58
child 594 75baf3968708
equal deleted inserted replaced
591:efb80a288277 592:0383cd70fe79
   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
   205                     #'minorKey:' #windowSpecForCommitWithoutChannels
   211                     #'minorKey:' #windowSpecForCommitWithoutChannels
   206                 )
   212                 )
   207               )
   213               )
   208           )
   214           )
   209       )
   215       )
   210 
       
   211     "Modified: / 5.2.1998 / 12:25:27 / cg"
       
   212 ! !
   216 ! !
   213 
   217 
   214 !FileSelectionBrowser methodsFor:'accessing'!
   218 !FileSelectionBrowser methodsFor:'accessing'!
   215 
   219 
   216 directory: aDirectory
   220 directory: aDirectory
   234 
   238 
   235     listOfFileFilters := anArray
   239     listOfFileFilters := anArray
   236 ! !
   240 ! !
   237 
   241 
   238 !FileSelectionBrowser methodsFor:'accessing - views'!
   242 !FileSelectionBrowser methodsFor:'accessing - views'!
       
   243 
       
   244 directoryInputField
       
   245 
       
   246     ^builder componentAt: #directoryInputField
       
   247 
       
   248 !
   239 
   249 
   240 directoryTreeView
   250 directoryTreeView
   241 
   251 
   242     ^builder componentAt: #directoryTreeView
   252     ^builder componentAt: #directoryTreeView
   243 
   253 
   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'!