[squeak-dev] The Trunk: ToolBuilder-Morphic-mt.97.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Mar 9 15:05:57 UTC 2015
Marcel Taeumel uploaded a new version of ToolBuilder-Morphic to project The Trunk:
http://source.squeak.org/trunk/ToolBuilder-Morphic-mt.97.mcz
==================== Summary ====================
Name: ToolBuilder-Morphic-mt.97
Author: mt
Time: 9 March 2015, 8:05:51.922 am
UUID: 9b1ed5c3-36b8-a94a-ac38-8e3166b88aa4
Ancestors: ToolBuilder-Morphic-mt.96
Tree filter added to pluggable tree morphs.
=============== Diff against ToolBuilder-Morphic-mt.96 ===============
Item was changed:
SimpleHierarchicalListMorph subclass: #PluggableTreeMorph
+ instanceVariableNames: 'rootWrappers selectedWrapper getRootsSelector getChildrenSelector hasChildrenSelector getLabelSelector getIconSelector getSelectedPathSelector setSelectedParentSelector getHelpSelector dropItemSelector wantsDropSelector dragItemSelector nodeClass lastKeystrokeTime lastKeystrokes'
+ classVariableNames: 'MaximumSearchDepth'
- instanceVariableNames: 'rootWrappers selectedWrapper getRootsSelector getChildrenSelector hasChildrenSelector getLabelSelector getIconSelector getSelectedPathSelector setSelectedParentSelector getHelpSelector dropItemSelector wantsDropSelector dragItemSelector nodeClass'
- classVariableNames: ''
poolDictionaries: ''
category: 'ToolBuilder-Morphic'!
!PluggableTreeMorph commentStamp: 'ar 2/12/2005 04:38' prior: 0!
A pluggable tree morph.!
Item was added:
+ ----- Method: PluggableTreeMorph class>>maximumSearchDepth (in category 'preferences') -----
+ maximumSearchDepth
+
+ <preference: 'Maximum tree search depth'
+ category: 'scrolling'
+ description: 'When list filtering is active, this will determine the maximum depth where items should be searched for in a tree.'
+ type: #Number>
+ ^ MaximumSearchDepth ifNil: [ 3 ]!
Item was added:
+ ----- Method: PluggableTreeMorph class>>maximumSearchDepth: (in category 'preferences') -----
+ maximumSearchDepth: anInteger
+ MaximumSearchDepth := anInteger.!
Item was added:
+ ----- Method: PluggableTreeMorph>>basicKeyPressed: (in category 'event handling') -----
+ basicKeyPressed: aChar
+
+ self updateLastKeystrokes: aChar.
+
+ model okToChange ifFalse: [^ false].
+
+ PluggableListMorph filterableLists
+ ifTrue: [self filterTree]
+ ifFalse: [self selectNextMorphByFilter].
+
+ ^ true!
Item was added:
+ ----- Method: PluggableTreeMorph>>filterTree (in category 'filtering') -----
+ filterTree
+
+ self hasFilter ifFalse: [
+ self removeFilter.
+ ^ self].
+
+ self indicateFiltered.
+
+ "Clean up the tree."
+ self roots do: [:root |
+ root applyFilter: lastKeystrokes].
+
+ self adjustSubmorphPositions.!
Item was added:
+ ----- Method: PluggableTreeMorph>>hasFilter (in category 'filtering') -----
+ hasFilter
+ ^ lastKeystrokes isEmptyOrNil not!
Item was added:
+ ----- Method: PluggableTreeMorph>>indicateFiltered (in category 'filtering') -----
+ indicateFiltered
+ "self color: (Color gray: 0.95)."!
Item was added:
+ ----- Method: PluggableTreeMorph>>indicateUnfiltered (in category 'filtering') -----
+ indicateUnfiltered
+ self color: Color white.
+ scroller submorphsDo: [:m |
+ m visible: true; backgroundColor: nil].
+ self adjustSubmorphPositions.!
Item was added:
+ ----- Method: PluggableTreeMorph>>initialize (in category 'initialization') -----
+ initialize
+
+ super initialize.
+
+ "Filter"
+ lastKeystrokeTime := 0.
+ lastKeystrokes := ''!
Item was added:
+ ----- Method: PluggableTreeMorph>>keyStroke: (in category 'event handling') -----
+ keyStroke: event
+
+ ^ (super keyStroke: event)
+ ifTrue: [true]
+ ifFalse: [self basicKeyPressed: event keyCharacter].!
Item was added:
+ ----- Method: PluggableTreeMorph>>removeFilter (in category 'filtering') -----
+ removeFilter
+ lastKeystrokes := String empty.
+ self indicateUnfiltered.!
Item was added:
+ ----- Method: PluggableTreeMorph>>selectNextMorphByFilter (in category 'filtering') -----
+ selectNextMorphByFilter!
Item was added:
+ ----- Method: PluggableTreeMorph>>specialKeyPressed: (in category 'event handling') -----
+ specialKeyPressed: asciiValue
+
+ (super specialKeyPressed: asciiValue)
+ ifTrue: [^ true].
+
+ (#(8 13) includes: asciiValue) ifTrue: [
+ "backspace key"
+ self removeFilter.
+ ^ true].
+
+ ^ false!
Item was added:
+ ----- Method: PluggableTreeMorph>>updateLastKeystrokes: (in category 'event handling') -----
+ updateLastKeystrokes: aChar
+
+ | milliseconds slowKeyStroke |
+ milliseconds := Time millisecondClockValue.
+ slowKeyStroke := (Time milliseconds: milliseconds since: lastKeystrokeTime)
+ > (PluggableListMorph filterableLists ifTrue: [ 500 ] ifFalse: [ 300 ]).
+ lastKeystrokeTime := milliseconds.
+
+ slowKeyStroke
+ ifTrue: [lastKeystrokes := aChar asLowercase asString]
+ ifFalse: [lastKeystrokes := lastKeystrokes , aChar asLowercase asString.].!
Item was added:
+ ----- Method: PluggableTreeMorph>>vUnadjustedScrollRange (in category 'scrolling') -----
+ vUnadjustedScrollRange
+
+ | range |
+ range := 0.
+ scroller submorphsDo: [:m | m visible ifTrue: [range := range + m height]].
+ ^ range!
More information about the Squeak-dev
mailing list
|