[Pkg] The Trunk: ToolBuilder-Morphic-cmm.109.mcz
commits at source.squeak.org
commits at source.squeak.org
Wed Apr 1 16:12:43 UTC 2015
Chris Muller uploaded a new version of ToolBuilder-Morphic to project The Trunk:
http://source.squeak.org/trunk/ToolBuilder-Morphic-cmm.109.mcz
==================== Summary ====================
Name: ToolBuilder-Morphic-cmm.109
Author: cmm
Time: 1 April 2015, 11:12:32.023 am
UUID: 109fa949-8213-4e07-855c-90ad83b6ab07
Ancestors: ToolBuilder-Morphic-mt.111
- PluggableTreeMorph support for Vertical Smart Splitters.
- Let single-level filtering also be a navigation gesture.
- After filtering a Tree, refit the column-widths to the filtered results.
- SimpleHierarchicalListMorph support mouseOverForKeyboardFocus.
- Fix selection rendering in PluggableTreeMorph (FileList and SqueakMap).
=============== Diff against ToolBuilder-Morphic-mt.111 ===============
Item was added:
+ ----- Method: PluggableTreeMorph>>bottomVisibleRowIndex (in category 'geometry') -----
+ bottomVisibleRowIndex
+ | itemAtBottom |
+ itemAtBottom := self itemFromPoint: self bottomLeft + (3 @ -3).
+ ^ itemAtBottom
+ ifNil: [ scroller submorphs size ]
+ ifNotNil:
+ [ : item | scroller submorphs indexOf: item ]!
Item was added:
+ ----- Method: PluggableTreeMorph>>charactersOccluded (in category 'geometry') -----
+ charactersOccluded
+ ^ self visibleItems
+ inject: 0
+ into:
+ [ : sum : each | sum + each charactersOccluded ]!
Item was changed:
----- Method: PluggableTreeMorph>>filterTree (in category 'filtering') -----
filterTree
+ self hasFilter ifFalse:
+ [ self removeFilter.
+ ^ self ].
-
- self hasFilter ifFalse: [
- self removeFilter.
- ^ self].
-
self indicateFiltered.
-
"Clean up the tree."
(self selectedMorph
+ ifNil: [ self roots ]
+ ifNotNil:
+ [ : m | {m} ]) do:
+ [ : item | | filteredItems |
+ item applyFilter: lastKeystrokes.
+ item visible ifFalse:
+ [ "Do not hide the item where the filter is based on."
+ item show.
+ item isExpanded ifFalse: [ item toggleExpandedState ] ].
+ filteredItems := self filteredItems.
+ "If configured as a navigation tool, advance the selection."
+ (PluggableTreeMorph maximumSearchDepth = 1 and: [ PluggableTreeMorph filterByLabelsOnly not ]) ifTrue:
+ [ (filteredItems notEmpty and: [ selectedMorph ~= filteredItems last ]) ifTrue:
+ [ self setSelectedMorph: (filteredItems after: selectedMorph).
+ selectedMorph isExpanded ifFalse: [ selectedMorph toggleExpandedState ] ] ] ].
+ self adjustSubmorphPositions!
- ifNil: [self roots]
- ifNotNil: [:m | {m}]) do: [:item |
- item applyFilter: lastKeystrokes.
- item visible ifFalse: [
- "Do not hide the item where the filter is based on."
- item show.
- item isExpanded ifTrue: [item toggleExpandedState]]].
-
- self adjustSubmorphPositions.!
Item was added:
+ ----- Method: PluggableTreeMorph>>filteredItems (in category 'filtering') -----
+ filteredItems
+ "Answer the items which visible because they matched the current filters."
+ ^ self items select: [ : each | each visible ]!
Item was added:
+ ----- Method: PluggableTreeMorph>>items (in category 'accessing') -----
+ items
+ ^ scroller submorphs!
Item was added:
+ ----- Method: PluggableTreeMorph>>keyboardFocusChange: (in category 'event handling') -----
+ keyboardFocusChange: aBoolean
+ aBoolean ifFalse:
+ [ PluggableListMorph clearFilterAutomatically ifTrue:
+ [ self hasFilter ifTrue: [ self removeFilter ] ] ]!
Item was changed:
----- Method: PluggableTreeMorph>>selectPath:in: (in category 'selection') -----
selectPath: path in: listItem
path isEmpty ifTrue: [^self setSelectedMorph: nil].
listItem withSiblingsDo: [:each |
(each complexContents item = path first) ifTrue: [
each isExpanded ifFalse: [
each toggleExpandedState.
self adjustSubmorphPositions.
].
each changed.
path size = 1 ifTrue: [
^self setSelectedMorph: each
].
each firstChild ifNil: [^self setSelectedMorph: nil].
^self selectPath: path allButFirst in: each firstChild
].
].
^self setSelectedMorph: nil
!
Item was changed:
----- Method: PluggableTreeMorph>>setSelectedMorph: (in category 'selection') -----
setSelectedMorph: aMorph
selectedWrapper := aMorph complexContents.
+ self selection: selectedWrapper.
-
"Let the model now about the selected object, not wrapper."
setSelectionSelector ifNotNil: [:symbol |
model
perform: symbol
+ with: (selectedWrapper ifNotNil: [ selectedWrapper item ])].
- with: (selectedWrapper ifNotNil: [:w | w item])].
"The model may not have access to the parent object in terms of this tree structure."
setSelectedParentSelector ifNotNil: [:symbol |
model
perform: symbol
+ with: (selectedWrapper ifNotNil: [selectedWrapper parent ifNotNil: [: parentWrapper | parentWrapper item]])].!
- with: (selectedWrapper ifNotNil: [:w | w parent ifNotNil: [:pw | pw item]])].!
Item was added:
+ ----- Method: PluggableTreeMorph>>topVisibleRowIndex (in category 'geometry') -----
+ topVisibleRowIndex
+ ^ scroller submorphs indexOf: (self itemFromPoint: self topLeft+(3 at 3))!
Item was added:
+ ----- Method: PluggableTreeMorph>>visibleItems (in category 'geometry') -----
+ visibleItems
+ ^ self items
+ copyFrom: self topVisibleRowIndex
+ to: self bottomVisibleRowIndex!
More information about the Packages
mailing list