The Inbox: ToolBuilder-Morphic-cbc.271.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: ToolBuilder-Morphic-cbc.271.mcz

commits-2
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)!