The Trunk: Tools-cmm.570.mcz

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

The Trunk: Tools-cmm.570.mcz

commits-2
Chris Muller uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-cmm.570.mcz

==================== Summary ====================

Name: Tools-cmm.570
Author: cmm
Time: 1 April 2015, 11:09:22.929 am
UUID: 7827a351-1a4d-4e83-bbef-7e900993ee62
Ancestors: Tools-mt.569

- SimpleHierarchicalListMorph's now honor preferences:
        mouseOverForKeyboardFocus
        Vertical Smart Splitters
        Filterable Lists Clear Automatically
- After filtering Tree, refit the column-widths to the filtered results.

=============== Diff against Tools-mt.569 ===============

Item was added:
+ ----- Method: IndentingListItemMorph>>charactersOccluded (in category 'private') -----
+ charactersOccluded
+ "Answer the number of characters occluded in my #visibleList by my right edge."
+ | listIndex leftEdgeOfRightmostColumn eachString indexOfLastVisible iconWidth totalWidth |
+ listIndex := 0.
+ leftEdgeOfRightmostColumn := container columns
+ ifNil: [ 0 ]
+ ifNotNil:
+ [ : cols | (1 to: cols size - 1)
+ inject: 0
+ into:
+ [ : sum : each | sum + (self widthOfColumn: each) ] ].
+ eachString := container columns
+ ifNil: [ self complexContents asString ]
+ ifNotNil:
+ [ : cols | self contentsAtColumn: container columns size ].
+ iconWidth := self icon
+ ifNil: [ 0 ]
+ ifNotNil:
+ [ : icon | icon width + 2 ].
+ totalWidth := self toggleBounds right.
+ indexOfLastVisible := ((1 to: eachString size)
+ detect:
+ [ : stringIndex | (totalWidth:=totalWidth+(self fontToUse widthOf: (eachString at: stringIndex))) >
+ (container width -
+ (container scrollBar
+ ifNil: [ 0 ]
+ ifNotNil: [ container scrollBar width ]) - iconWidth - leftEdgeOfRightmostColumn) ]
+ ifNone: [ eachString size + 1 ]) - 1.
+ ^ eachString size - indexOfLastVisible!

Item was changed:
  ----- Method: IndentingListItemMorph>>drawOn: (in category 'drawing') -----
  drawOn: aCanvas
 
  | tRect sRect columnScanner columnLeft |
  self backgroundColor ifNotNil: [:c |
  aCanvas fillRectangle: self innerBounds color: c].
 
  tRect := self toggleRectangle.
  self drawToggleOn: aCanvas in: tRect.
 
  sRect := bounds withLeft: tRect right + 4.
  sRect := sRect top: sRect top + sRect bottom - self fontToUse height // 2.
 
  (container columns isNil or: [(contents asString indexOf: Character tab) = 0]) ifTrue: [
  icon ifNotNil: [
  aCanvas
  translucentImage: icon
  at: sRect left @ (self top + (self height - icon height // 2)).
  sRect := sRect left: sRect left + icon width + 2.
  ].
 
  aCanvas drawString: contents asString in: sRect font: self fontToUse color: color.
 
  ] ifFalse: [
  columnLeft := sRect left.
  columnScanner := ReadStream on: contents asString.
  container columns withIndexDo: [ :widthSpec :column | | columnRect columnData columnWidth |
  "Draw icon."
  column = self class iconColumnIndex ifTrue: [
  icon ifNotNil: [
  aCanvas
  translucentImage: icon
  at: columnLeft @ (self top + (self height - icon height // 2)).
  columnLeft := columnLeft + icon width + 2]].
 
+ columnWidth := self widthOfColumn: column.
- columnWidth := widthSpec isNumber
- ifTrue: [widthSpec]
- ifFalse: [widthSpec isBlock
- ifTrue: [widthSpec cull: container cull: self]
- ifFalse: [widthSpec ifNil: [self width] ifNotNil: [50 "Fall back"]]].
  columnRect := columnLeft @ sRect top extent: columnWidth @ sRect height.
  columnData := columnScanner upTo: Character tab.
 
  "Draw string."
  columnData ifNotEmpty: [
  aCanvas drawString: columnData in: columnRect font: self fontToUse color: color].
 
  "Compute next column offset."
  columnLeft := columnRect right + 5.
  column = 1 ifTrue: [columnLeft := columnLeft - tRect right + self left].
 
  ].
  ]!

Item was added:
+ ----- Method: IndentingListItemMorph>>widthOfColumn: (in category 'accessing - columns') -----
+ widthOfColumn: columnIndex
+ | widthOrSpec |
+ container columns ifNil: [ ^ self width ].
+ widthOrSpec := container columns at: columnIndex.
+ ^ widthOrSpec isNumber
+ ifTrue: [ widthOrSpec ]
+ ifFalse:
+ [ widthOrSpec isBlock
+ ifTrue:
+ [ widthOrSpec
+ cull: container
+ cull: self ]
+ ifFalse:
+ [ widthOrSpec
+ ifNil: [ self width ]
+ ifNotNil: [ "Fall back"
+ 50 ] ] ]!

Item was changed:
  ----- Method: ObjectExplorer>>buildWith: (in category 'toolbuilder') -----
  buildWith: builder
 
  | windowSpec treeSpec textSpec |
  windowSpec := builder pluggableWindowSpec new.
  windowSpec
  model: self;
  children: OrderedCollection new;
  label: #label.
 
  treeSpec := builder pluggableTreeSpec new.
  treeSpec
  model: self;
  nodeClass: self class nodeClass;
  roots: #getList;
  keyPress: #explorerKey:from:event:;
  getSelected: #currentSelection;
  setSelected: #currentSelection:;
  setSelectedParent: #currentParent:;
  menu: #genericMenu:;
  autoDeselect: false;
  columns: (ObjectExplorerWrapper showContentsInColumns
  ifTrue: [{
+ [:listMorph | (listMorph filteredItems collect: [:item |
- [:listMorph | (listMorph scroller submorphs collect: [:item |
  item preferredWidthOfColumn: 1]) max].
+ nil "take all the space"}]);
- nil "take all the space"}]
- ifFalse: []);
  frame: (0@0 corner: 1@0.85).
  windowSpec children add: treeSpec.
 
  textSpec := builder pluggableTextSpec new.
  textSpec
  model: self;
  menu: #codePaneMenu:shifted:;
  help: 'Evaluate expressions for the current tree selection...' translated;
  frame: (0@0.85 corner: 1@1).
  windowSpec children add: textSpec.
 
  ^ builder build: windowSpec!