FileDialog.st
changeset 4728 545cd2c65dfa
parent 4666 2775d69bc8be
child 4729 d2367ffbe952
--- a/FileDialog.st	Wed Mar 26 19:53:55 2003 +0100
+++ b/FileDialog.st	Thu Mar 27 09:58:52 2003 +0100
@@ -6,7 +6,8 @@
 		doubleClickAction cancelLabelHolder okLabelHolder startFilename
 		result filterField filenameField viewFiles filenameLabelHolder
 		asLoadDialog newDirectoryVisibilityHolder
-		appendButtonVisibleHolder multipleSelect appendWasPressed'
+		appendButtonVisibleHolder multipleSelect appendWasPressed
+		buttonPanelVisibleHolder'
 	classVariableNames:'LastFileSelectionDirectory'
 	poolDictionaries:''
 	category:'Interface-Tools-File'
@@ -584,62 +585,73 @@
         #component: 
        #(#SpecCollection
           #collection: #(
-           #(#MenuPanelSpec
-              #name: 'ToolBar1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 30 0)
-              #tabable: true
-              #menu: #toolBarMenu
-              #textDefault: true
-            )
-           #(#SubCanvasSpec
-              #name: 'DirectoryTreeBrowser'
-              #layout: #(#LayoutFrame 0 0.0 30 0 0 1.0 -107 1)
-              #tabable: true
-              #hasHorizontalScrollBar: false
-              #hasVerticalScrollBar: false
-              #majorKey: #DirectoryTreeBrowser
-              #createNewApplication: true
-              #createNewBuilder: true
-              #postBuildCallback: #postBuildTreeBrowser:
-            )
-           #(#LabelSpec
-              #label: 'Filename:'
-              #name: 'FilenameLabel'
-              #layout: #(#LayoutFrame 3 0 -97 1 73 0 -77 1)
-              #translateLabel: true
-              #labelChannel: #filenameLabelHolder
-              #adjust: #left
-            )
-           #(#FilenameInputFieldSpec
-              #name: 'FilenameEntryField'
-              #layout: #(#LayoutFrame 70 0 -96 1 -10 1 -76 1)
-              #tabable: true
-              #model: #filenameHolder
-              #immediateAccept: false
-              #acceptOnPointerLeave: false
-              #postBuildCallback: #postBuildFileNameField:
-            )
-           #(#LabelSpec
-              #label: 'Filter:'
-              #name: 'FilterLabel'
-              #layout: #(#LayoutFrame 3 0 -70 1 67 0 -50 1)
-              #translateLabel: true
-              #adjust: #left
-            )
-           #(#InputFieldSpec
-              #name: 'FilterEntryField'
-              #layout: #(#LayoutFrame 70 0 -69 1 -10 1 -49 1)
-              #model: #filterHolder
-              #immediateAccept: false
-              #acceptOnReturn: true
-              #acceptOnTab: true
-              #acceptOnLostFocus: true
-              #acceptOnPointerLeave: false
-              #postBuildCallback: #postBuildFilterField:
+           #(#ViewSpec
+              #name: 'FilePart'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -40 1.0)
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#MenuPanelSpec
+                    #name: 'ToolBar1'
+                    #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 30 0)
+                    #tabable: true
+                    #menu: #toolBarMenu
+                    #textDefault: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'DirectoryTreeBrowser'
+                    #layout: #(#LayoutFrame 0 0.0 30 0 0 1.0 -67 1)
+                    #tabable: true
+                    #hasHorizontalScrollBar: false
+                    #hasVerticalScrollBar: false
+                    #majorKey: #DirectoryTreeBrowser
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                    #postBuildCallback: #postBuildTreeBrowser:
+                  )
+                 #(#LabelSpec
+                    #label: 'Filename:'
+                    #name: 'FilenameLabel'
+                    #layout: #(#LayoutFrame 3 0 -53 1 73 0 -33 1)
+                    #translateLabel: true
+                    #labelChannel: #filenameLabelHolder
+                    #adjust: #left
+                  )
+                 #(#FilenameInputFieldSpec
+                    #name: 'FilenameEntryField'
+                    #layout: #(#LayoutFrame 70 0 -52 1 -10 1 -32 1)
+                    #tabable: true
+                    #model: #filenameHolder
+                    #immediateAccept: false
+                    #acceptOnPointerLeave: false
+                    #postBuildCallback: #postBuildFileNameField:
+                  )
+                 #(#LabelSpec
+                    #label: 'Filter:'
+                    #name: 'FilterLabel'
+                    #layout: #(#LayoutFrame 3 0 -26 1 67 0 -6 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:
+                  )
+                 )
+               
+              )
             )
            #(#HorizontalPanelViewSpec
               #name: 'ButtonPanel'
               #layout: #(#LayoutFrame 0 0.0 -40 1 0 1 0 1)
+              #visibilityChannel: #buttonPanelVisibleHolder
               #horizontalLayout: #fitSpace
               #verticalLayout: #center
               #horizontalSpace: 3
@@ -772,30 +784,6 @@
 
 !FileDialog methodsFor:'accessing'!
 
-addButton:aButton
-    DialogBox defaultOKButtonAtLeft ifTrue:[
-        (self componentAt:#ButtonPanel) addSubView:aButton before:(self okButton)
-    ] ifFalse:[
-        (self componentAt:#ButtonPanel) addSubView:aButton after:(self okButton)
-    ].
-!
-
-appendWasPressed
-    "valid after the dialog has been closed: true if append was pressed"
-
-    ^ appendWasPressed
-!
-
-asLoadDialog
-
-    ^ asLoadDialog
-!
-
-asLoadDialog:aBoolean
-
-    asLoadDialog := aBoolean
-!
-
 currentSelectedFiles
 
     | selectedFiles|
@@ -816,18 +804,6 @@
     directory := something.
 !
 
-doubleClickAction
-    "return the value of the instance variable 'doubleClickAction' (automatically generated)"
-
-    ^ doubleClickAction
-!
-
-doubleClickAction:something
-    "set the value of the instance variable 'doubleClickAction' (automatically generated)"
-
-    doubleClickAction := something.
-!
-
 initialText
     "return the value of the instance variable 'initialText' (automatically generated)"
 
@@ -840,34 +816,6 @@
     initialText := something.
 !
 
-multipleSelect
-    "return the value of the instance variable 'pattern' (automatically generated)"
-
-    multipleSelect isNil ifTrue:[
-        multipleSelect := true.
-    ].
-    ^ multipleSelect
-!
-
-multipleSelect:aBoolean
-    "set the value of the instance variable 'multipleSelect' (automatically generated)"
-
-    multipleSelect := aBoolean
-!
-
-newDirectoryVisibilityHolder
-    "return the value of the instance variable 'newDirectoryVisibilityHolder' (automatically generated)"
-
-    newDirectoryVisibilityHolder isNil ifTrue:[
-        newDirectoryVisibilityHolder := true asValue.
-    ].
-    ^ newDirectoryVisibilityHolder
-!
-
-okButton
-    ^ (self componentAt:#okButton) 
-!
-
 pattern
     "return the value of the instance variable 'pattern' (automatically generated)"
 
@@ -913,12 +861,84 @@
     "set the value of the instance variable 'startFilename' (automatically generated)"
 
     startFilename := something.
+! !
+
+!FileDialog methodsFor:'accessing-behavior'!
+
+asLoadDialog
+
+    ^ asLoadDialog
+!
+
+asLoadDialog:aBoolean
+
+    asLoadDialog := aBoolean
+!
+
+doubleClickAction
+    "return the value of the instance variable 'doubleClickAction' (automatically generated)"
+
+    ^ doubleClickAction
+!
+
+doubleClickAction:something
+    "set the value of the instance variable 'doubleClickAction' (automatically generated)"
+
+    doubleClickAction := something.
+!
+
+multipleSelect
+    "return the value of the instance variable 'pattern' (automatically generated)"
+
+    multipleSelect isNil ifTrue:[
+        multipleSelect := true.
+    ].
+    ^ multipleSelect
+!
+
+multipleSelect:aBoolean
+    "set the value of the instance variable 'multipleSelect' (automatically generated)"
+
+    multipleSelect := aBoolean
+! !
+
+!FileDialog methodsFor:'accessing-components'!
+
+addButton:aButton
+    DialogBox defaultOKButtonAtLeft ifTrue:[
+        (self componentAt:#ButtonPanel) addSubView:aButton before:(self okButton)
+    ] ifFalse:[
+        (self componentAt:#ButtonPanel) addSubView:aButton after:(self okButton)
+    ].
+!
+
+okButton
+    ^ (self componentAt:#okButton) 
 !
 
 treeBrowser
     "return the value of the instance variable 'treeBrowser' (automatically generated)"
 
     ^ treeBrowser
+! !
+
+!FileDialog methodsFor:'accessing-look'!
+
+hideButtonPanel
+    self buttonPanelVisibleHolder value:false
+!
+
+newDirectoryVisibilityHolder
+    "return the value of the instance variable 'newDirectoryVisibilityHolder' (automatically generated)"
+
+    newDirectoryVisibilityHolder isNil ifTrue:[
+        newDirectoryVisibilityHolder := true asValue.
+    ].
+    ^ newDirectoryVisibilityHolder
+!
+
+showButtonPanel
+    self buttonPanelVisibleHolder value:true
 !
 
 viewFiles
@@ -942,6 +962,14 @@
     ^ appendButtonVisibleHolder
 !
 
+buttonPanelVisibleHolder
+    buttonPanelVisibleHolder isNil ifTrue:[
+        buttonPanelVisibleHolder := true asValue.
+        buttonPanelVisibleHolder onChangeSend:#buttonPanelVisibilityChanged to:self.
+    ].
+    ^ buttonPanelVisibleHolder.
+!
+
 cancelLabelHolder
     "automatically generated by UIPainter ..."
 
@@ -1047,6 +1075,20 @@
 
 !FileDialog methodsFor:'change & update'!
 
+buttonPanelVisibilityChanged
+    |filePart buttonPanel|
+
+    filePart := builder componentAt:#FilePart.
+    buttonPanel := builder componentAt:#ButtonPanel.
+
+    buttonPanelVisibleHolder value ifTrue:[
+        filePart layout bottomOffset:-40
+    ] ifFalse:[
+        filePart layout bottomOffset:0
+    ].
+    filePart containerChangedSize    "/ force resize
+!
+
 update:something with:aParameter from:changedObject
     "Invoked when an object that I depend upon sends a change notification."
 
@@ -1098,6 +1140,12 @@
 
 !FileDialog methodsFor:'event handling'!
 
+appendWasPressed
+    "valid after the dialog has been closed: true if append was pressed"
+
+    ^ appendWasPressed
+!
+
 processEvent:anEvent
     "filter keyboard events.
      Return true, if I have eaten the event"
@@ -1144,9 +1192,14 @@
     ^ super postBuildWith:aBuilder
 !
 
-postOpenWith:aBuilder    
+postOpen
 
 "/     self windowGroup addPreEventHook:self.
+
+    self window topView isModal ifFalse:[
+        self hideButtonPanel
+    ].
+
     treeBrowser currentFileNameHolder addDependent:self.
     treeBrowser doubleClickAction:(self doubleClickAction).
     treeBrowser enableBack addDependent:self.
@@ -1165,6 +1218,16 @@
     ].
     self filenameHolder value:(self startFilename asString).
     self window label:(resources string:((self initialText) ? 'File Dialog')).
+!
+
+postOpenAsSubcanvasWith:aBuilder    
+    self postOpen.
+    ^ super postOpenAsSubcanvasWith:aBuilder
+!
+
+postOpenWith:aBuilder    
+
+    self postOpen.
     ^ super postOpenWith:aBuilder
 ! !
 
@@ -1275,5 +1338,5 @@
 !FileDialog class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.27 2003-03-17 13:38:27 martin Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.28 2003-03-27 08:58:52 cg Exp $'
 ! !