The Trunk: ToolBuilder-Morphic-mt.97.mcz

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

The Trunk: ToolBuilder-Morphic-mt.97.mcz

commits-2
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!