A new version of ToolBuilder-Morphic was added to project The Inbox:
http://source.squeak.org/inbox/ToolBuilder-Morphic-cbc.271.mcz ==================== Summary ==================== Name: ToolBuilder-Morphic-cbc.271 Author: cbc Time: 11 January 2021, 11:45:17.6054 am UUID: e3ae199a-f7cd-504e-9905-2afcf36dbdb1 Ancestors: ToolBuilder-Morphic-mt.270 Better estimated size: - includes default cellInsert for listMorph - includes boundary line size Also tries to size for width of strings - at least, the first 15 samples. =============== Diff against ToolBuilder-Morphic-mt.270 =============== Item was changed: ----- Method: ListChooser>>buildWith: (in category 'building') ----- buildWith: builder | dialogSpec searchBarHeight listSpec fieldSpec | searchBarHeight := self searchBarHeight. dialogSpec := builder pluggableDialogSpec new model: self; title: #title; closeAction: #closed; extent: self initialExtent; autoCancel: true; "Behave like a pop-up menu. Historical reasons." children: OrderedCollection new; buttons: OrderedCollection new; yourself. listSpec := builder pluggableListSpec new. listSpec model: self; list: #items; getIndex: #selectedIndex; setIndex: #selectedIndex:; doubleClick: #accept; "keystrokePreview: #keyStrokeFromList:;" autoDeselect: false; filterableList: true; clearFilterAutomatically: false; name: #list; + frame: (LayoutFrame fractions: (0@0 corner: 1@1) offsets: (0@searchBarHeight corner: 0@0)); + hScrollBarPolicy: #whenNeeded. - frame: (LayoutFrame fractions: (0@0 corner: 1@1) offsets: (0@searchBarHeight corner: 0@0)). dialogSpec children add: listSpec. fieldSpec := builder pluggableInputFieldSpec new. fieldSpec model: self; name: #searchText ; getText: #searchText; editText: #searchText:; setText: #acceptText:; selection: #textSelection; menu: nil; indicateUnacceptedChanges: false; askBeforeDiscardingEdits: false; help: (self addAllowed ifTrue: ['Type new or filter existing...' translated] ifFalse: ['Type to filter existing...' translated]); frame: (LayoutFrame fractions: (0@0 corner: 1@0) offsets: (0@0 corner: 0@searchBarHeight)). dialogSpec children add: fieldSpec. "Buttons" dialogSpec buttons add: ( builder pluggableButtonSpec new model: self; label: #acceptLabel; action: #accept; enabled: #canAcceptOrAdd; color: #acceptColor). dialogSpec buttons add: ( builder pluggableButtonSpec new model: self; label: 'Cancel'; action: #cancel; color: #cancelColor). dialogMorph := builder build: dialogSpec. dialogMorph addKeyboardCaptureFilter: self ; positionOverWidgetNamed: #searchText. listMorph := builder widgetAt: #list. listMorph allowEmptyFilterResult: true. ^ dialogMorph! Item was changed: ----- Method: ListChooser>>initialExtent (in category 'building') ----- initialExtent + | listFont itemCount width listBoxBoundaryLineSize defaultCellWidthIndex | - - | listFont itemCount maxItemSize cellSize | listFont := Preferences standardListFont. itemCount := items size. + listBoxBoundaryLineSize := 2. + defaultCellWidthIndex := 6. "3 before, 3 after, no height insert - taken from LazyListMorph, the underlying list morph" + width := ((items take: 15) collect: [:item| listFont widthOfString: item]) max. + width := width + listBoxBoundaryLineSize + defaultCellWidthIndex. + ^ (width min: (self currentWorld extent x * 0.75) asInteger max: ((listFont widthOf: $m) * 12)) + @ ((itemCount min: 15 max: 5) * listFont height + self searchBarHeight + listBoxBoundaryLineSize) + ! - maxItemSize := items inject: 0 into: [:max :item | max max: item size]. - cellSize := (listFont widthOf: $m) @ listFont height. - - ^ ((maxItemSize + 1 "breathing space" min: 20 max: 10) - @ (itemCount + 1 "breathing space" min: 15 max: 5) - * cellSize) + (0@ self searchBarHeight)! |
Free forum by Nabble | Edit this page |