During my analysis of update: methods (I started to extract conditional leaves
: simple refactoring no change) and I found the following
We are lucky because this is SimpleHierarchicalListMorph and I prefer not to
think about ComplexHierarchicalList…
update: aSymbol
aSymbol == getSelectionSelector
ifTrue:
[self selection: self getCurrentSelectionItem.
^self].
aSymbol == getListSelector
ifTrue:
[self list: self getList.
^self].
((aSymbol isKindOf: Array)
and: [aSymbol size > 1 and: [aSymbol first == getListSelector
and: [
aSymbol second == #openPath]]]) "allow
directed path opening where multiple trees exist"
ifTrue:
[^(scroller submorphs at: 1 ifAbsent: [^self])
openPath: (aSymbol allButFirst: 2)].
((aSymbol isKindOf: Array)
and: [aSymbol size > 1 and: [aSymbol first == getListSelector
and: [
aSymbol second == #openItemPath]]])
"allow directed path opening where multiple trees exist"
ifTrue:
[^(scroller submorphs at: 1 ifAbsent: [^self])
openItemPath: (aSymbol allButFirst: 2)].
((aSymbol isKindOf: Array)
and: [aSymbol notEmpty and: [aSymbol first == #openPath]])
ifTrue:
[^(scroller submorphs at: 1 ifAbsent: [^self])
openPath: aSymbol allButFirst].
((aSymbol isKindOf: Array)
and: [aSymbol size = 2 and: [aSymbol first = getListSelector
and: [
aSymbol second == #expandRoots]]])
ifTrue:
[^self expandRoots].
((aSymbol isKindOf: Array)
and: [aSymbol notEmpty and: [aSymbol first = getListSelector
and: [
aSymbol second == #expandAll]]])
ifTrue:
[^self expandAll]