[squeak-dev] The Inbox: Tools-ct.959.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Mar 16 20:03:19 UTC 2020


Christoph Thiede uploaded a new version of Tools to project The Inbox:
http://source.squeak.org/inbox/Tools-ct.959.mcz

==================== Summary ====================

Name: Tools-ct.959
Author: ct
Time: 16 March 2020, 9:03:12.729937 pm
UUID: cae0b2d6-e131-7a40-b6a9-62a90172de94
Ancestors: Tools-mt.955

Proposal: Allow simple change sorters to become become dual sorters, and dual change sorters to be split into two separate change sorters. This commit also refactors DualChangeSorter in general.

=============== Diff against Tools-mt.955 ===============

Item was added:
+ ----- Method: ChangeSorter>>addModelItemsToWindowMenu: (in category 'as yet unclassified') -----
+ addModelItemsToWindowMenu: aMenu
+ 	"Add model-related item to the window menu"
+ 
+ 	super addModelItemsToWindowMenu: aMenu. 
+ 	aMenu addLine.
+ 	aMenu add: 'Become dual sorter' translated target: self action: #becomeDualSorter.!

Item was added:
+ ----- Method: ChangeSorter>>becomeDualSorter (in category 'as yet unclassified') -----
+ becomeDualSorter
+ 	"Switch the contents of the receiver's view to represent a DualChangeSorter. Kind of mitosis: We're doing the anaphase right now."
+ 
+ 	| dualSorter |
+ 	dualSorter := DualChangeSorter withLeft: self right: nil.
+ 	dualSorter initializeSides.
+ 	self changed: #close.
+ 	ToolBuilder open: dualSorter.!

Item was added:
+ ----- Method: DualChangeSorter class>>new (in category 'instance creation') -----
+ new
+ 
+ 	^ super new
+ 		initializeSides;
+ 		yourself!

Item was added:
+ ----- Method: DualChangeSorter class>>withLeft:right: (in category 'instance creation') -----
+ withLeft: leftChangeSorter right: rightChangeSorter
+ 
+ 	^ self basicNew
+ 		leftChangeSorter: leftChangeSorter;
+ 		rightChangeSorter: rightChangeSorter;
+ 		yourself!

Item was added:
+ ----- Method: DualChangeSorter>>addModelItemsToWindowMenu: (in category 'user interface') -----
+ addModelItemsToWindowMenu: aMenu
+ 	"Add model-related item to the window menu"
+ 
+ 	super addModelItemsToWindowMenu: aMenu. 
+ 	aMenu addLine.
+ 	aMenu add: 'Split sides' translated target: self action: #splitSides.!

Item was changed:
  ----- Method: DualChangeSorter>>buildWith: (in category 'toolbuilder') -----
  buildWith: builder
- 	| windowSpec window |
- 	leftCngSorter := ChangeSorter new myChangeSet: ChangeSet current.
- 	leftCngSorter parent: self.
- 	rightCngSorter := ChangeSorter new myChangeSet: 
- 			ChangeSet secondaryChangeSet.
- 	rightCngSorter parent: self.
  
+ 	| windowSpec window |
  	windowSpec := builder pluggableWindowSpec new.
  	windowSpec model: self.
  	windowSpec label: 'Change Sorter'.
  	windowSpec children: OrderedCollection new.
  	windowSpec label: #labelString.
  	leftCngSorter buildWith: builder in: windowSpec rect: (0 at 0 extent: 0.5 at 1).
  	rightCngSorter buildWith: builder in: windowSpec rect: (0.5 at 0 extent: 0.5 at 1).
  	window := builder build: windowSpec.
  	leftCngSorter addDependent: window.		"so it will get changed: #relabel"
  	rightCngSorter addDependent: window.	"so it will get changed: #relabel"
  	^window!

Item was added:
+ ----- Method: DualChangeSorter>>initializeSides (in category 'initialization') -----
+ initializeSides
+ 
+ 	leftCngSorter ifNil: [
+ 		leftCngSorter := ChangeSorter new myChangeSet: ChangeSet current].
+ 	leftCngSorter parent: self.
+ 	rightCngSorter ifNil: [
+ 		rightCngSorter := ChangeSorter new myChangeSet: ChangeSet secondaryChangeSet].
+ 	rightCngSorter parent: self.!

Item was changed:
+ ----- Method: DualChangeSorter>>isLeftSide: (in category 'accessing') -----
- ----- Method: DualChangeSorter>>isLeftSide: (in category 'other') -----
  isLeftSide: theOne
  	"Which side am I?"
  	^ theOne == leftCngSorter!

Item was changed:
+ ----- Method: DualChangeSorter>>labelString (in category 'toolbuilder') -----
- ----- Method: DualChangeSorter>>labelString (in category 'other') -----
  labelString
  	"The window label"
  	^'Changes go to "', ChangeSet current name,  '"'.!

Item was added:
+ ----- Method: DualChangeSorter>>leftChangeSorter: (in category 'initialization') -----
+ leftChangeSorter: aChangeSorter
+ 
+ 	leftCngSorter := aChangeSorter!

Item was changed:
+ ----- Method: DualChangeSorter>>modelWakeUp (in category 'updating') -----
- ----- Method: DualChangeSorter>>modelWakeUp (in category 'other') -----
  modelWakeUp
  	"A window with me as model is being entered.  Make sure I am up-to-date with the changeSets."
  
  	"Dumb way"
  	leftCngSorter canDiscardEdits 
  		ifTrue: [leftCngSorter update]	"does both"
  		ifFalse: [rightCngSorter update].
  !

Item was changed:
+ ----- Method: DualChangeSorter>>okToChange (in category 'updating') -----
- ----- Method: DualChangeSorter>>okToChange (in category 'initialization') -----
  okToChange
  	^ leftCngSorter okToChange & rightCngSorter okToChange!

Item was changed:
+ ----- Method: DualChangeSorter>>other: (in category 'accessing') -----
- ----- Method: DualChangeSorter>>other: (in category 'other') -----
  other: theOne
  	"Return the other side's ChangeSorter"
  	^ theOne == leftCngSorter
  		ifTrue: [rightCngSorter]
  		ifFalse: [leftCngSorter]!

Item was added:
+ ----- Method: DualChangeSorter>>rightChangeSorter: (in category 'initialization') -----
+ rightChangeSorter: aChangeSorter
+ 
+ 	rightCngSorter := aChangeSorter!

Item was added:
+ ----- Method: DualChangeSorter>>splitSides (in category 'menu commands') -----
+ splitSides
+ 	"Split the receiver into two independent views. Kind of mitosis: We're doing cytokinesis right now."
+ 
+ 	{leftCngSorter. rightCngSorter} do: [:sorter |
+ 		ToolBuilder open: sorter].
+ 	self changed: #close.!



More information about the Squeak-dev mailing list