# HG changeset patch # User Claus Gittinger # Date 1049819746 -7200 # Node ID 406ea13c6b0afa5c738f0929825ce9f1cf349f05 # Parent 9224c562e352d2b56ffcfdf5a09bfbce956cb31c initial selection; initial expand; multiple select; cleanup diff -r 9224c562e352 -r 406ea13c6b0a 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 $' ! !