FileDialog.st
branchjv
changeset 12818 204da2f7db8e
parent 12431 9f0c59c742d5
child 12819 0ce340e972c4
--- a/FileDialog.st	Fri May 31 00:47:36 2013 +0100
+++ b/FileDialog.st	Mon Jun 03 18:43:00 2013 +0100
@@ -19,7 +19,7 @@
 		appendButtonVisibleHolder appendWasPressed
 		buttonPanelVisibleHolder appendLabelHolder browseVisibleHolder
 		selectedDeviceDrive listOfDeviceDrives rootDirectoryHolder
-		initialRoot'
+		initialRoot verticalView'
 	classVariableNames:'LastExtent'
 	poolDictionaries:''
 	category:'Interface-Tools-File'
@@ -80,6 +80,24 @@
     fd multipleSelect:true.
     fd open
                                                                 [exEnd]
+
+    Adding custom components:
+                                                                [exBegin]
+    DialogBox aboutToOpenBoxNotificationSignal handle:[:ex |
+        | fmtBox |
+
+        fmtBox := ComboListView new.
+        fmtBox list: #('Comma Separated Values (.csv)'
+                        'Microsoft Excel (.xls)'
+                        'Microsoft Excel XML (.xlsx)') .
+        fmtBox model:'Select...' asValue.
+        ex application addComponent: fmtBox.
+        ex proceed.
+    ] do:[
+        Dialog requestFileName: 'Save file as...'
+    ]
+                                                                [exEnd]
+
 "
 !
 
@@ -745,133 +763,149 @@
           label: 'FileDialog'
           name: 'FileDialog'
           min: (Point 10 10)
-          bounds: (Rectangle 0 0 407 400)
+          bounds: (Rectangle 0 0 400 400)
           menu: mainMenu
           performer: treeBrowser
         )
         component: 
        (SpecCollection
           collection: (
-           (ViewSpec
-              name: 'FilePart'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 -32 1.0)
+           (VerticalPanelViewSpec
+              name: 'VerticalPanel'
+              layout: (LayoutFrame 0 0 0 0 0 1 -32 1)
+              horizontalLayout: fit
+              verticalLayout: topSpaceFit
+              horizontalSpace: 0
+              verticalSpace: 3
+              elementsChangeSize: true
               component: 
              (SpecCollection
                 collection: (
-                 (MenuPanelSpec
-                    name: 'ToolBar1'
-                    layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 40 0)
-                    tabable: true
-                    menu: toolBarMenu
-                    textDefault: true
-                  )
-                 (VariableHorizontalPanelSpec
-                    name: 'DeviceAndFilterPanel'
-                    layout: (LayoutFrame 0 0 40 0 0 1 70 0)
-                    level: 1
-                    showHandle: true
+                 (ViewSpec
+                    name: 'FilePart'
                     component: 
                    (SpecCollection
                       collection: (
-                       (ViewSpec
-                          name: 'Box1'
+                       (MenuPanelSpec
+                          name: 'ToolBar1'
+                          layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 40 0)
+                          tabable: true
+                          menu: toolBarMenu
+                          textDefault: true
+                        )
+                       (VariableHorizontalPanelSpec
+                          name: 'DeviceAndFilterPanel'
+                          layout: (LayoutFrame 0 0 40 0 0 1 70 0)
+                          level: 1
+                          showHandle: true
                           component: 
                          (SpecCollection
                             collection: (
-                             (ComboListSpec
-                                name: 'ComboList1'
-                                layout: (LayoutFrame 1 0 1 0.0 -1 1 -1 1)
-                                visibilityChannel: driveSelectorVisible
-                                model: selectedDeviceDrive
-                                comboList: listOfDeviceDrives
-                                useIndex: false
-                                hidePullDownMenuButton: false
+                             (ViewSpec
+                                name: 'Box1'
+                                component: 
+                               (SpecCollection
+                                  collection: (
+                                   (ComboListSpec
+                                      name: 'ComboList1'
+                                      layout: (LayoutFrame 1 0 1 0.0 -1 1 -1 1)
+                                      visibilityChannel: driveSelectorVisible
+                                      model: selectedDeviceDrive
+                                      comboList: listOfDeviceDrives
+                                      useIndex: false
+                                      hidePullDownMenuButton: false
+                                    )
+                                   )
+                                 
+                                )
+                              )
+                             (ViewSpec
+                                name: 'Box2'
+                                component: 
+                               (SpecCollection
+                                  collection: (
+                                   (LabelSpec
+                                      label: 'Filter:'
+                                      name: 'FilterLabel'
+                                      layout: (LayoutFrame 1 0 2 0 59 0 -2 1)
+                                      translateLabel: true
+                                      adjust: right
+                                    )
+                                   (InputFieldSpec
+                                      name: 'FilterEntryField'
+                                      layout: (LayoutFrame 60 0 -27 1 -2 1 -2 1)
+                                      model: filterHolder
+                                      immediateAccept: true
+                                      acceptOnReturn: true
+                                      acceptOnTab: true
+                                      acceptOnLostFocus: true
+                                      acceptOnPointerLeave: false
+                                      postBuildCallback: postBuildFilterField:
+                                    )
+                                   )
+                                 
+                                )
                               )
                              )
                            
                           )
+                          handles: (Any 0.2972972972973 1.0)
                         )
-                       (ViewSpec
-                          name: 'Box2'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (LabelSpec
-                                label: 'Filter:'
-                                name: 'FilterLabel'
-                                layout: (LayoutFrame 1 0 2 0 59 0 -2 1)
-                                translateLabel: true
-                                adjust: right
-                              )
-                             (InputFieldSpec
-                                name: 'FilterEntryField'
-                                layout: (LayoutFrame 60 0 -27 1 -2 1 -2 1)
-                                model: filterHolder
-                                immediateAccept: true
-                                acceptOnReturn: true
-                                acceptOnTab: true
-                                acceptOnLostFocus: true
-                                acceptOnPointerLeave: false
-                                postBuildCallback: postBuildFilterField:
-                              )
-                             )
-                           
+                       (SubCanvasSpec
+                          name: 'DirectoryTreeBrowser'
+                          layout: (LayoutFrame 0 0.0 70 0 0 1.0 -30 1)
+                          tabable: true
+                          hasHorizontalScrollBar: false
+                          hasVerticalScrollBar: false
+                          majorKey: DirectoryTreeBrowser
+                          subAspectHolders: 
+                         (Array
+                            
+                           (SubChannelInfoSpec
+                              subAspect: filterModel
+                              aspect: filterHolder
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: rootHolder
+                              aspect: rootDirectoryHolder
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: showHiddenFiles
+                              aspect: showHiddenFiles
+                            )
                           )
+                          createNewApplication: true
+                          createNewBuilder: true
+                          postBuildCallback: postBuildTreeBrowser:
+                        )
+                       (LabelSpec
+                          label: 'Filename:'
+                          name: 'FilenameLabel'
+                          layout: (LayoutFrame 3 0 -25 1 73 0 -1 1)
+                          translateLabel: true
+                          labelChannel: filenameLabelHolder
+                          adjust: left
+                        )
+                       (FilenameInputFieldSpec
+                          name: 'FilenameEntryField'
+                          layout: (LayoutFrame 70 0 -25 1 -4 1 -1 1)
+                          tabable: true
+                          model: filenameHolder
+                          immediateAccept: false
+                          acceptOnPointerLeave: false
+                          hasKeyboardFocusInitially: true
+                          postBuildCallback: postBuildFileNameField:
                         )
                        )
                      
                     )
-                    handles: (Any 0.2972972972973 1.0)
-                  )
-                 (SubCanvasSpec
-                    name: 'DirectoryTreeBrowser'
-                    layout: (LayoutFrame 0 0.0 70 0 0 1.0 -30 1)
-                    tabable: true
-                    hasHorizontalScrollBar: false
-                    hasVerticalScrollBar: false
-                    majorKey: DirectoryTreeBrowser
-                    subAspectHolders: 
-                   (Array
-                      
-                     (SubChannelInfoSpec
-                        subAspect: filterModel
-                        aspect: filterHolder
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: rootHolder
-                        aspect: rootDirectoryHolder
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: showHiddenFiles
-                        aspect: showHiddenFiles
-                      )
-                    )
-                    createNewApplication: true
-                    createNewBuilder: true
-                    postBuildCallback: postBuildTreeBrowser:
-                  )
-                 (LabelSpec
-                    label: 'Filename:'
-                    name: 'FilenameLabel'
-                    layout: (LayoutFrame 3 0 -25 1 73 0 -1 1)
-                    translateLabel: true
-                    labelChannel: filenameLabelHolder
-                    adjust: left
-                  )
-                 (FilenameInputFieldSpec
-                    name: 'FilenameEntryField'
-                    layout: (LayoutFrame 70 0 -25 1 -4 1 -1 1)
-                    tabable: true
-                    model: filenameHolder
-                    immediateAccept: false
-                    acceptOnPointerLeave: false
-                    hasKeyboardFocusInitially: true
-                    postBuildCallback: postBuildFileNameField:
+                    extent: (Point 400 362)
                   )
                  )
                
               )
+              postBuildCallback: postBuildVerticalView:
             )
            (HorizontalPanelViewSpec
               name: 'ButtonPanel'
@@ -892,7 +926,7 @@
                     labelChannel: cancelLabelHolder
                     tabable: true
                     model: doCancel
-                    extent: (Point 131 22)
+                    extent: (Point 129 22)
                   )
                  (ActionButtonSpec
                     label: 'Append'
@@ -902,7 +936,7 @@
                     labelChannel: appendLabelHolder
                     tabable: true
                     model: appendPressed
-                    extent: (Point 132 22)
+                    extent: (Point 129 22)
                   )
                  (ActionButtonSpec
                     label: 'OK'
@@ -912,7 +946,7 @@
                     tabable: true
                     model: okPressed
                     isDefault: true
-                    extent: (Point 132 22)
+                    extent: (Point 130 22)
                   )
                  )
                
@@ -1701,6 +1735,14 @@
     "Modified: / 14-02-2011 / 17:54:35 / cg"
 ! !
 
+!FileDialog methodsFor:'construction-adding'!
+
+addComponent: aView
+    verticalView addComponent: aView
+
+    "Created: / 03-06-2013 / 17:47:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !FileDialog methodsFor:'event handling'!
 
 appendWasPressed
@@ -1799,6 +1841,12 @@
     "Modified: / 24-08-2010 / 16:07:16 / sr"
 !
 
+postBuildVerticalView:aView
+    verticalView := aView.
+
+    "Created: / 03-06-2013 / 17:41:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 postBuildWith:aBuilder    
     treeBrowser multipleSelect:multipleSelect.
     appendWasPressed := false.
@@ -1821,17 +1869,18 @@
     treeBrowser currentFileNameHolder value:(Array with:self startFilename).
 !
 
-postOpenWith:aBuilder
-    |lastExtent|
-
-    super postOpenWith:aBuilder.
-    treeBrowser currentFileNameHolder value:(OrderedCollection with:self startFilename).
+preOpenWith:aBuilder
+    | h |
 
-    lastExtent := self class lastExtent.
-    lastExtent notNil ifTrue:[
-        self window topView extent:lastExtent.
+    "Increase height of the window so height of the file part
+     remain the same"
+    h := 0.
+    verticalView subViews from:2 do:[:view|
+        h := h + view preferredHeight.
     ].
-    self window label:self initialText.
+    aBuilder window height: aBuilder window height + h.
+
+    "Created: / 03-06-2013 / 18:19:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 rememberExtent
@@ -1996,11 +2045,11 @@
 !FileDialog class methodsFor:'documentation'!
 
 version
-    ^ '$Id: FileDialog.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.117 2013-06-03 18:41:12 +0100 vrany Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.116 2011/04/04 08:09:15 stefan Exp §'
+    ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.117 2013-06-03 18:41:12 +0100 vrany Exp $'
 !
 
 version_HG