initial selection;
authorClaus Gittinger <cg@exept.de>
Tue, 08 Apr 2003 18:35:46 +0200
changeset 4804 406ea13c6b0a
parent 4803 9224c562e352
child 4805 a25bdf89086d
initial selection; initial expand; multiple select; cleanup
FileDialog.st
--- a/FileDialog.st	Tue Apr 08 18:32:06 2003 +0200
+++ b/FileDialog.st	Tue Apr 08 18:35:46 2003 +0200
@@ -1,14 +1,13 @@
 "{ Package: 'stx:libtool' }"
 
 SimpleDialog subclass:#FileDialog
-	instanceVariableNames:'aspects treeBrowser enableBack enableDirectoryUp enableForward
-		enableHome directory pattern filterHolder initialText
-		doubleClickAction cancelLabelHolder okLabelHolder startFilename
-		result filterField filenameField viewFiles filenameLabelHolder
-		asLoadDialog newDirectoryVisibilityHolder
-		appendButtonVisibleHolder multipleSelect appendWasPressed
+	instanceVariableNames:'aspects treeBrowser directory pattern filterHolder initialText
+		multipleSelect doubleClickAction cancelLabelHolder okLabelHolder
+		startFilename result filterField filenameField viewFiles
+		filenameLabelHolder isLoadDialog newDirectoryVisibilityHolder
+		appendButtonVisibleHolder appendWasPressed
 		buttonPanelVisibleHolder'
-	classVariableNames:'LastFileSelectionDirectory'
+	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-Tools-File'
 !
@@ -36,19 +35,26 @@
   Starting the application:
                                                                 [exBegin]
     FileDialog open
-
                                                                 [exEnd]
 
-  more examples to be added:
                                                                 [exBegin]
-    ... add code fragment for 
-    ... executable example here ...
+     FileDialog 
+        requestFileName:'enter a fileName:'
+        default:''
+        version:nil
+        ifFail:['none']
+        pattern:'*.conf'
+        fromDirectory:'/etc'
+        whenBoxCreatedEvaluate:nil.
+                                                                [exEnd]
+                                                                [exBegin]
+    |fd|
+
+    fd := FileDialog new.
+    fd multipleSelect:true.
+    fd open
                                                                 [exEnd]
 "
-!
-
-history
-    "Created: / 19.9.2002 / 13:05:28 / martin"
 ! !
 
 !FileDialog class methodsFor:'instance creation'!
@@ -464,7 +470,7 @@
     instance initialText:titleString.
     instance okLabelHolder value:okText.
     instance cancelLabelHolder value:abortText.
-    instance asLoadDialog:asLoadDialog ? false.
+    instance beLoadDialog:asLoadDialog ? false.
     instance viewFiles:(forDirectory isNil ifTrue:[true] ifFalse:[forDirectory not]).
     self setDoubleClickActionFor:instance.
     instance allButOpenInterface:#windowSpec.
@@ -477,30 +483,6 @@
 
 !FileDialog class methodsFor:'accessing'!
 
-lastFileSelectionDirectory
-    "return the name of the directory used in the previous
-     fileSelection dialog. This will be used as default for the next dialog,
-     if no explicit path is specified (see requestFileName:* methods)"
-
-    |f|
-
-    LastFileSelectionDirectory notNil ifTrue:[
-        ((f := LastFileSelectionDirectory asFilename) exists 
-        and:[f isDirectory]) ifFalse:[
-            LastFileSelectionDirectory := nil.
-        ]
-    ].
-    ^ LastFileSelectionDirectory
-!
-
-lastFileSelectionDirectory:aDirectoryString
-    "set the name of the directory used in the previous
-     fileSelection dialog. This will be used as default for the next dialog,
-     if no explicit path is specified (see requestFileName:* methods)"
-
-    LastFileSelectionDirectory := aDirectoryString
-!
-
 setDoubleClickActionFor:instance
 
     instance doubleClickAction:[:anIndex|
@@ -588,7 +570,7 @@
           #name: 'FileDialog'
           #min: #(#Point 10 10)
           #max: #(#Point 1024 768)
-          #bounds: #(#Rectangle 14 46 414 446)
+          #bounds: #(#Rectangle 16 46 416 446)
         )
         #component: 
        #(#SpecCollection
@@ -608,7 +590,7 @@
                   )
                  #(#SubCanvasSpec
                     #name: 'DirectoryTreeBrowser'
-                    #layout: #(#LayoutFrame 0 0.0 30 0 0 1.0 -60 1)
+                    #layout: #(#LayoutFrame 0 0.0 55 0 0 1.0 -60 1)
                     #tabable: true
                     #hasHorizontalScrollBar: false
                     #hasVerticalScrollBar: false
@@ -627,30 +609,56 @@
                   )
                  #(#FilenameInputFieldSpec
                     #name: 'FilenameEntryField'
-                    #layout: #(#LayoutFrame 70 0 -50 1 -10 1 -30 1)
+                    #layout: #(#LayoutFrame 70 0 -50 1 -2 1 -30 1)
                     #tabable: true
                     #model: #filenameHolder
                     #immediateAccept: false
                     #acceptOnPointerLeave: false
                     #postBuildCallback: #postBuildFileNameField:
                   )
-                 #(#LabelSpec
-                    #label: 'Filter:'
-                    #name: 'FilterLabel'
-                    #layout: #(#LayoutFrame 3 0 -25 1 67 0 -5 1)
-                    #translateLabel: true
-                    #adjust: #left
-                  )
-                 #(#InputFieldSpec
-                    #name: 'FilterEntryField'
-                    #layout: #(#LayoutFrame 70 0 -25 1 -10 1 -5 1)
-                    #model: #filterHolder
-                    #immediateAccept: false
-                    #acceptOnReturn: true
-                    #acceptOnTab: true
-                    #acceptOnLostFocus: true
-                    #acceptOnPointerLeave: false
-                    #postBuildCallback: #postBuildFilterField:
+                 #(#VariableHorizontalPanelSpec
+                    #name: 'VariableHorizontalPanel1'
+                    #layout: #(#LayoutFrame 0 0 30 0 0 1 55 0)
+                    #level: 1
+                    #showHandle: false
+                    #barLevel: 0
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#ViewSpec
+                          #name: 'Box1'
+                        )
+                       #(#ViewSpec
+                          #name: 'Box2'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#LabelSpec
+                                #label: 'Filter:'
+                                #name: 'FilterLabel'
+                                #layout: #(#LayoutFrame 8 0 2 0 59 0 -2 1)
+                                #translateLabel: true
+                                #adjust: #right
+                              )
+                             #(#InputFieldSpec
+                                #name: 'FilterEntryField'
+                                #layout: #(#LayoutFrame 60 0 -22 1 -2 1 -2 1)
+                                #model: #filterHolder
+                                #immediateAccept: true
+                                #acceptOnReturn: true
+                                #acceptOnTab: true
+                                #acceptOnLostFocus: true
+                                #acceptOnPointerLeave: false
+                                #postBuildCallback: #postBuildFilterField:
+                              )
+                             )
+                           
+                          )
+                        )
+                       )
+                     
+                    )
+                    #handles: #(#Any 0.5 1.0)
                   )
                  )
                
@@ -874,13 +882,18 @@
 !FileDialog methodsFor:'accessing-behavior'!
 
 asLoadDialog
-
-    ^ asLoadDialog
+    self halt.
+    ^ self isLoadDialog
 !
 
 asLoadDialog:aBoolean
+    self halt.
+    self beLoadDialog:aBoolean
+!
 
-    asLoadDialog := aBoolean
+beLoadDialog:aBoolean
+
+    isLoadDialog := aBoolean
 !
 
 doubleClickAction
@@ -895,19 +908,20 @@
     doubleClickAction := something.
 !
 
-multipleSelect
-    "return the value of the instance variable 'pattern' (automatically generated)"
+isLoadDialog
 
-    multipleSelect isNil ifTrue:[
-        multipleSelect := true.
-    ].
-    ^ multipleSelect
+    ^ isLoadDialog ? true
+!
+
+multipleSelect
+    ^ multipleSelect ? false
 !
 
 multipleSelect:aBoolean
-    "set the value of the instance variable 'multipleSelect' (automatically generated)"
-
-    multipleSelect := aBoolean
+    multipleSelect := aBoolean.
+    treeBrowser notNil ifTrue:[
+        treeBrowser multipleSelect:aBoolean.
+    ].
 ! !
 
 !FileDialog methodsFor:'accessing-components'!
@@ -937,8 +951,6 @@
 !
 
 newDirectoryVisibilityHolder
-    "return the value of the instance variable 'newDirectoryVisibilityHolder' (automatically generated)"
-
     newDirectoryVisibilityHolder isNil ifTrue:[
         newDirectoryVisibilityHolder := true asValue.
     ].
@@ -970,6 +982,17 @@
     ^ appendButtonVisibleHolder
 !
 
+aspectOrNil:aKey forSubApplication:aSubApp
+    "this hook provides an aspect for a subApp"
+
+    aKey == #currentFileNameHolder ifTrue:[
+        directory notNil ifTrue:[
+            ^ (OrderedCollection with:directory) asValue
+        ]
+    ].
+    ^ nil
+!
+
 buttonPanelVisibleHolder
     buttonPanelVisibleHolder isNil ifTrue:[
         buttonPanelVisibleHolder := true asValue.
@@ -993,38 +1016,19 @@
 !
 
 enableBack
-    "Return a value holder for the input string.
-    "
-    enableBack isNil ifTrue:[
-        enableBack := treeBrowser enableBack.
-    ].
-    ^ enableBack
+    ^ treeBrowser enableBack.
 !
 
 enableDirectoryUp
-
-    enableDirectoryUp isNil ifTrue:[
-        enableDirectoryUp := treeBrowser enableDirectoryUp.
-    ].
-    ^ enableDirectoryUp
+    ^ treeBrowser enableDirectoryUp.
 !
 
 enableForward
-    "Return a value holder for the input string.
-    "
-    enableForward isNil ifTrue:[
-        enableForward := treeBrowser enableForward.
-    ].
-    ^ enableForward
+    ^ treeBrowser enableForward.
 !
 
 enableHome
-    "Return a value holder for the input string.
-    "
-    enableHome isNil ifTrue:[
-        enableHome := treeBrowser enableHome.
-    ].
-    ^ enableHome
+    ^ treeBrowser enableHome.
 !
 
 filenameHolder
@@ -1098,50 +1102,35 @@
 !
 
 update:something with:aParameter from:changedObject
-    "Invoked when an object that I depend upon sends a change notification."
-
-    "stub code automatically generated - please change as required"
+    |files newFile newLabel fn|
 
     changedObject == treeBrowser currentFileNameHolder ifTrue:[
-        | files newDir|
-        files := treeBrowser currentFileNameHolder value.
+        files := changedObject value.
 
         (files isEmpty) ifTrue:[
-            self filenameHolder value:nil withoutNotifying:self.
+            newFile := nil.
         ] ifFalse:[
             files size == 1 ifTrue:[
-                self filenameHolder value:(files first) withoutNotifying:self.    
+                newFile := files first.    
             ] ifFalse:[
-                self filenameHolder value:'' withoutNotifying:self.
+                newFile := ''.
             ].
         ].
+        self filenameHolder value:newFile withoutNotifying:self.
     ].
+
     changedObject == treeBrowser viewFilesInDirectoryTree ifTrue:[
         changedObject value ifTrue:[
-            self filenameLabelHolder value:(resources string:'Filename:').
+            newLabel := 'Filename:'.
         ] ifFalse:[
-            self filenameLabelHolder value:(resources string:'Directory:').
-        ]
+            newLabel := 'Directory:'.
+        ].
+        self filenameLabelHolder value:(resources string:newLabel)
     ].
     changedObject == self filenameHolder ifTrue:[
-        (changedObject value asFilename exists not) ifTrue:[^ self].
-        treeBrowser currentFileNameHolder value:(OrderedCollection with:(changedObject value asFilename)) withoutNotifying:self.
-    ].
-    changedObject == treeBrowser enableBack ifTrue:[
-        self enableBack value:changedObject value.
-        ^ self.
-    ].
-    changedObject == treeBrowser enableForward ifTrue:[
-        self enableForward value:changedObject value.
-        ^ self.
-    ].
-    changedObject == treeBrowser enableHome ifTrue:[
-        self enableHome value:changedObject value.
-        ^ self.
-    ].
-    changedObject == treeBrowser enableDirectoryUp ifTrue:[
-        self enableDirectoryUp value:changedObject value.
-        ^ self.
+        fn := changedObject value asFilename.
+        (fn exists) ifFalse:[^ self].
+        treeBrowser currentFileNameHolder value:(OrderedCollection with:fn) withoutNotifying:self.
     ].
     ^ super update:something with:aParameter from:changedObject
 ! !
@@ -1194,8 +1183,7 @@
 !
 
 postBuildWith:aBuilder    
-
-    treeBrowser multipleSelect:self multipleSelect.
+    treeBrowser multipleSelect:multipleSelect.
     appendWasPressed := false.
     ^ super postBuildWith:aBuilder
 !
@@ -1210,17 +1198,14 @@
 
     treeBrowser currentFileNameHolder addDependent:self.
     treeBrowser doubleClickAction:(self doubleClickAction).
-    treeBrowser enableBack addDependent:self.
-    treeBrowser enableForward addDependent:self.
-    treeBrowser enableHome addDependent:self.
-    treeBrowser enableDirectoryUp addDependent:self.
     treeBrowser viewFilesInDirectoryTree addDependent:self.
     treeBrowser rootHolder value:((self directory) ? (Filename currentDirectory asAbsoluteFilename)).
-    treeBrowser viewFilesInDirectoryTree value:(self viewFiles ? true).
+
+    treeBrowser viewFilesInDirectoryTree setValue:(self viewFiles ? true).
     treeBrowser viewFilesInDirectoryTree changed.
     treeBrowser currentFileNameHolder value:(OrderedCollection with:(self startFilename)).
-    treeBrowser expandSelectedItems.
-    self asLoadDialog ifTrue:[
+
+    self isLoadDialog ifTrue:[
         treeBrowser newVisibilityHolder value:false.
         treeBrowser allowFileOperations value:false.
         self newDirectoryVisibilityHolder value:false.
@@ -1347,5 +1332,5 @@
 !FileDialog class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.33 2003-04-08 14:04:06 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.34 2003-04-08 16:35:46 cg Exp $'
 ! !