[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