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! |
Free forum by Nabble | Edit this page |