'From Cuis 1.0 of 2 October 2009 [latest update: #316] on 7 October 2009 at 11:08:11 am'!
!classDefinition: #ChangeSorter category: #'Tools-Changes'!
CodeHolder subclass: #ChangeSorter
	instanceVariableNames: 'parent myChangeSet currentClassName currentSelector priorChangeSetList changeSetCategory '
	classVariableNames: 'AllChangeSets ChangeSetCategories ChangeSetNamesInRelease PreviousSet RecentUpdateMarker '
	poolDictionaries: ''
	category: 'Tools-Changes'!
!classDefinition: #MessageSet category: #'Tools-Browser'!
Browser subclass: #MessageSet
	instanceVariableNames: 'messageList autoSelectString growable '
	classVariableNames: ''
	poolDictionaries: ''
	category: 'Tools-Browser'!

!LayoutFrame methodsFor: 'initialization' stamp: 'jmv 10/7/2009 10:38'!
fractions: fractions

	topFraction _ fractions top.
	leftFraction _ fractions left.
	bottomFraction _ fractions bottom.
	rightFraction _ fractions right.

	leftOffset _ topOffset _ 0.
	rightOffset _ bottomOffset _ 0! !


!Morph methodsFor: 'submorphs-add/remove' stamp: 'jmv 10/7/2009 10:40'!
delete
	"Remove the receiver as a submorph of its owner and make its 
	new owner be nil."

	| aWorld |
	aWorld := self world ifNil: [World].
	"Terminate genie recognition focus"
	"I encountered a case where the hand was nil, so I put in a little 
	protection - raa "
	" This happens when we are in an MVC project and open
	  a morphic window. - BG "
	aWorld ifNotNil: [
		self activeHand
			releaseKeyboardFocus: self;
			releaseMouseFocus: self].
	owner ifNotNil:[ self privateDelete].! !


!FillInTheBlankMorph methodsFor: 'initialization' stamp: 'jmv 9/10/2009 10:40'!
createAcceptButton
	"create the [accept] button"

	| result frame |
	result := (SimpleButtonMorph new)
				target: self;
				color: Color lightGreen.
	result
		label: 'Accept(s)' translated;
		actionSelector: #accept.
	frame := LayoutFrame fractions: (0.1@0.75 corner: 0.45@0.98).
	result layoutFrame: frame.
	self addMorph: result.
	^result! !

!FillInTheBlankMorph methodsFor: 'initialization' stamp: 'jmv 9/10/2009 10:41'!
createCancelButton
	"create the [cancel] button"

	| result frame |
	result := (SimpleButtonMorph new)
				target: self;
				color: Color lightRed.
	result
		label: 'Cancel(l)' translated;
		actionSelector: #cancel.
		frame := LayoutFrame fractions: (0.55@0.75 corner: 0.9@0.98).

	result layoutFrame: frame.
	self addMorph: result.
	^result! !


!MenuLineMorph methodsFor: 'drawing' stamp: 'jmv 9/10/2009 08:50'!
drawOn: aCanvas 
	| baseColor |
	baseColor := Preferences menuColorFromWorld
				ifTrue: [owner color twiceDarker]
				ifFalse: [owner color].
	aCanvas
		fillRectangle: (bounds topLeft corner: bounds rightCenter)
		color: baseColor twiceDarker.
			
	aCanvas
		fillRectangle: (bounds leftCenter corner: bounds bottomRight)
		color: baseColor twiceLighter! !


!MenuMorph methodsFor: 'initialization' stamp: 'jmv 9/10/2009 08:50'!
setDefaultParameters
	| colorFromMenu worldColor menuColor menuBorderColor |
	colorFromMenu := Preferences menuColorFromWorld
				and: [Display depth > 4]
				and: [(worldColor := self currentWorld color) isColor].
	""
	menuColor := colorFromMenu
				ifTrue: [worldColor luminance > 0.7
						ifTrue: [worldColor mixed: 0.85 with: Color black]
						ifFalse: [worldColor mixed: 0.4 with: Color white]]
				ifFalse: [Preferences menuColor].
	""
	menuBorderColor := #raised.
	""
	self
		setColor: menuColor
		borderWidth: Preferences menuBorderWidth
		borderColor: menuBorderColor! !

!MenuMorph methodsFor: 'initialization' stamp: 'jmv 9/10/2009 08:54'!
setTitleParametersFor: aMenuTitle 
	| menuTitleColor menuTitleBorderColor |
	""
	menuTitleColor := Preferences menuColorFromWorld
				ifTrue: [self color darker]
				ifFalse: [Preferences menuTitleColor].
	""
	menuTitleBorderColor := #inset.
	""
	aMenuTitle
		setColor: menuTitleColor
		borderWidth: Preferences menuTitleBorderWidth
		borderColor: menuTitleBorderColor! !


!PluggableListMorph methodsFor: 'accessing' stamp: 'jmv 9/10/2009 08:34'!
rowAtLocation: aPoint
	"Return the row at the given point or 0 if outside"
	| pointInListMorphCoords |
	pointInListMorphCoords := (scroller transformFrom: self) transform: aPoint.
	^self listMorph rowAtLocation: pointInListMorphCoords.! !

!PluggableListMorph methodsFor: 'as yet unclassified' stamp: 'jmv 9/10/2009 08:38'!
listMorph
	listMorph ifNil: [
		"crate this lazily"
		listMorph := LazyListMorph new.
		listMorph listSource: self.
		listMorph width: scroller width.
		listMorph color: self textColor.
		scroller removeAllMorphs.
		scroller addMorph: listMorph ].
	^listMorph! !


!Preferences class methodsFor: 'menu parameters' stamp: 'jmv 9/10/2009 08:53'!
restoreDefaultMenuParameters
	"Restore the four color choices of the original implementors of  
	MorphicMenus"
	" 
	Preferences restoreDefaultMenuParameters
	"
	Parameters
		at: #menuColor
		put: (Color
				r: 0.97
				g: 0.97
				b: 0.97).
	Parameters at: #menuBorderWidth put: 2.
	Parameters at: #menuTitleColor put: (Color
			r: 0.4
			g: 0.8
			b: 0.9) twiceDarker.
	Parameters at: #menuTitleBorderWidth put: 1! !


!ChangeSorter class methodsFor: 'class initialization' stamp: 'jmv 9/10/2009 10:05'!
initialize
	"Initialize the class variables"

	AllChangeSets == nil ifTrue:
		[AllChangeSets _ OrderedCollection new].
	self gatherChangeSets.

	"ChangeSorter initialize"

	FileList registerFileReader: self.
! !


!MessageSet methodsFor: 'message list' stamp: 'jmv 6/3/2009 12:56'!
growable
	"Answer whether the receiver is capable of growing/shrinking dynamically"

	^ true! !

VersionsBrowser class removeSelector: #windowColo!
VersionsBrowser removeSelector: #versionFrom:!
Utilities class removeSelector: #fileOutChangeSetsNamed:!
TimeProfileBrowser removeSelector: #tally:!
RecentMessageSet removeSelector: #maybeSetSelection!
PackagePaneBrowser removeSelector: #changeCategoryForClass:srcSystemCategory:atListMorph:internal:copy:!
PackagePaneBrowser removeSelector: #dstCategoryDstListMorph:internal:!
MethodHolder removeSelector: #changeMethodSelectorTo:!
MethodHolder removeSelector: #methodClass:methodSelector:!
MethodHolder removeSelector: #versions!
MessageSet removeSelector: #growable:!
!classDefinition: #MessageSet category: #'Tools-Browser'!
Browser subclass: #MessageSet
	instanceVariableNames: 'messageList autoSelectString'
	classVariableNames: ''
	poolDictionaries: ''
	category: 'Tools-Browser'!
HierarchyBrowser class removeSelector: #newFor:labeled:!
Debugger removeSelector: #buildMessageBrowser!
Debugger removeSelector: #notifierButtonHeight!
Debugger removeSelector: #toggleSyntaxMorph!
ClassListBrowser removeSelector: #defaultTitle:!
ChangeSorter class removeSelector: #belongsInAdditions:!
ChangeSorter class removeSelector: #belongsInRecentUpdates:!
ChangeSorter class removeSelector: #changeSet:containsClass:!
ChangeSorter class removeSelector: #changeSetNamesInReleaseImage!
ChangeSorter class removeSelector: #changeSetNamesInThreeOh!
ChangeSorter class removeSelector: #deleteChangeSetsNumberedLowerThan:!
ChangeSorter class removeSelector: #fileOutChangeSetsNamed:!
ChangeSorter initialize!
ChangeSorter class removeSelector: #recentUpdateMarker!
ChangeSorter class removeSelector: #recentUpdateMarker:!
ChangeSorter removeSelector: #classMenu:!
ChangeSorter removeSelector: #classMenu:shifted:!
ChangeSorter removeSelector: #editPreamble!
ChangeSorter removeSelector: #fileOutAllChangeSets!
ChangeSorter removeSelector: #setRecentUpdatesMarker!
ChangeSorter removeSelector: #showChangeSetCategory:!
!classDefinition: #ChangeSorter category: #'Tools-Changes'!
CodeHolder subclass: #ChangeSorter
	instanceVariableNames: 'parent myChangeSet currentClassName currentSelector priorChangeSetList changeSetCategory'
	classVariableNames: 'AllChangeSets ChangeSetCategories PreviousSet'
	poolDictionaries: ''
	category: 'Tools-Changes'!
ChangeList class removeSelector: #browseRecent:!
ChangeList removeSelector: #listHasSingleEntry!
ChangeList removeSelector: #listSelections!
Browser class removeSelector: #fullOnClass:!
Browser class removeSelector: #newOnCategory:!
Browser removeSelector: #acceptMethod:dstMessageCategory:srcMessageCategory:dstClass:dstClassOrMeta:srcClassOrMeta:internal:copySemantic:!
Browser removeSelector: #acceptMethod:messageCategory:class:atListMorph:internal:copy:!
Browser removeSelector: #browserWindowActivated!
Browser removeSelector: #buildClassBrowser!
Browser removeSelector: #buildMessageBrowser!
Browser removeSelector: #buildMessageBrowserEditString:!
Browser removeSelector: #changeCategoryForClass:srcSystemCategory:atListMorph:internal:copy:!
Browser removeSelector: #changeMessageCategoryForMethod:dstMessageCategory:srcMessageCategory:insideClassOrMeta:internal:copySemantic:!
Browser removeSelector: #codeTextMorph!
Browser removeSelector: #defineMessage:notifying:!
Browser removeSelector: #dstCategoryDstListMorph:!
Browser removeSelector: #dstClassDstListMorph:!
Browser removeSelector: #dstMessageCategoryDstListMorph:!
Browser removeSelector: #message:compileInClass:fromClass:dstMessageCategory:srcMessageCategory:internal:copySemantic:!
Browser removeSelector: #overwriteDialogHierarchyChange:higher:sourceClassName:destinationClassName:methodSelector:!
Browser removeSelector: #toggleClassListIndex:!
Browser removeSelector: #toggleMessageCategoryListIndex:!
Browser removeSelector: #toggleMessageListIndex:!
Browser removeSelector: #toggleSystemCategoryListIndex:!
CodeHolder removeSelector: #codePaneProvenanceString!
CodeHolder removeSelector: #decompiledSourceIntoContents!
CodeHolder removeSelector: #listPaneWithSelector:!
CodeHolder removeSelector: #newSearchPane!
CodeHolder removeSelector: #searchPane!
CodeHolder removeSelector: #showingDiffsString!
CodeHolder removeSelector: #textPaneWithSelector:!
CodeHolder removeSelector: #toggleDiff!
StringHolder removeSelector: #buildMessageBrowser!
Preferences class removeSelector: #menuAppearance3d!
Preferences class removeSelector: #menuBorderColor!
Preferences class removeSelector: #menuLineColor!
Preferences class removeSelector: #menuTitleBorderColor!
PluggableListMorph removeSelector: #listMorphClass!
Morph removeSelector: #disableSubmorphFocusForHand:!
EventHandler removeSelector: #messageList!
ChangeSetCategory removeSelector: #fileOutAllChangeSets!
ChangeSet removeSelector: #editPreamble!
"Postscript:
Leave the line above, and replace the rest of this comment by a useful one.
Executable statements should follow this comment, and should
be separated by periods, with no exclamation points (!!).
Be sure to put any further comments in double-quotes, like this one."
Preferences restoreDefaultMenuParameters.
Preferences juans!

