diff -r e016b4cd8e65 -r 29b44f456526 FilenameWidgetWithHistory.st --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/FilenameWidgetWithHistory.st Fri Oct 19 16:18:53 2007 +0200 @@ -0,0 +1,106 @@ +"{ Package: 'stx:libwidg2' }" + +SimpleView subclass:#FilenameWidgetWithHistory + instanceVariableNames:'fileNameEntryField browseButton history' + classVariableNames:'' + poolDictionaries:'' + category:'Views-Interactors' +! + +!FilenameWidgetWithHistory class methodsFor:'documentation'! + +examples +" + [exBegin] + |top b| + + top := StandardSystemView new. + top extent:(300 @ 200). + + b := FilenameWidgetWithHistory in:top. + b origin:(0.0 @ 0.0) corner:(1.0 @ 0.0). + b bottomInset:(b preferredExtent y negated). + + top open. + [exEnd] +" +! ! + +!FilenameWidgetWithHistory methodsFor:'accessing'! + +historyList + ^ #('a' 'b' 'c') +! + +model + ^ fileNameEntryField model +! + +model:aFilenameHolder + fileNameEntryField model:aFilenameHolder. +! ! + +!FilenameWidgetWithHistory methodsFor:'initialization'! + +initialize + super initialize. + + fileNameEntryField := FilenameComboBoxView in:self. + fileNameEntryField layout:(LayoutFrame + leftFraction:0 offset:0 + rightFraction:1 offset:-22 + topFraction:0 offset:0 + bottomFraction:1 offset:0). + fileNameEntryField listHolder:(self historyList). + + browseButton := Button in:self. + browseButton label:'...'. + browseButton action:[self browseForDestinationDirectory]. + browseButton layout:(LayoutFrame + leftFraction:1 offset:-22 + rightFraction:1 offset:-2 + topFraction:0 offset:0 + bottomFraction:1 offset:0). +! ! + +!FilenameWidgetWithHistory methodsFor:'queries'! + +preferredExtent + preferredExtent notNil ifTrue:[ + ^ preferredExtent + ]. + + preferredExtent := (fileNameEntryField preferredExtent x + browseButton preferredExtent x) + @ + (fileNameEntryField preferredExtent y "max: browseButton preferredExtent y"). + ^ preferredExtent +! ! + +!FilenameWidgetWithHistory methodsFor:'user actions'! + +browseForDestinationDirectory + |dir| + + Dialog aboutToOpenBoxNotificationSignal handle:[:ex | + |dialog| + + dialog := ex parameter. + dialog perform:#browseVisibleHolder with:true ifNotUnderstood:[]. + ex proceed. + ] do:[ + dir := Dialog + requestDirectoryName:'Destination Directory' + default:(self model value ? '.' asFilename pathName). + ]. + dir isEmptyOrNil ifTrue:[ ^ self ]. + + self model value:dir. + + "Modified: / 02-10-2006 / 14:45:54 / cg" +! ! + +!FilenameWidgetWithHistory class methodsFor:'documentation'! + +version + ^ '$Header: /cvs/stx/stx/libwidg2/FilenameWidgetWithHistory.st,v 1.1 2007-10-19 14:18:53 cg Exp $' +! !