--- a/VersionDiffBrowser.st Wed Oct 07 14:11:11 2009 +0200
+++ b/VersionDiffBrowser.st Wed Oct 07 14:15:03 2009 +0200
@@ -25,8 +25,7 @@
!
HierarchicalItem subclass:#ClassChangeSet
- instanceVariableNames:'classBeingCompared labelA labelB diffSet onlyInA onlyInB
- changedMethods versionA versionB'
+ instanceVariableNames:'classBeingCompared labelA labelB diffSet versionA versionB'
classVariableNames:''
poolDictionaries:''
privateIn:VersionDiffBrowser
@@ -564,23 +563,21 @@
<return: VersionDiffBrowser>
"
- |theBrowser|
+ |classChangeSet|
- theBrowser := self new.
- theBrowser allButOpen.
- theBrowser setupForClass:classA labelA:aLabelA andClass:classB labelB:aLabelB.
-
+ classChangeSet := ClassChangeSet newForClass:classA labelA:aLabelA andClass:classB labelB:aLabelB.
+ classChangeSet removeAllVersionMethods.
sameAction notNil ifTrue:[
"/ check if same ...
- (theBrowser classChangeSet methodsOnlyInA isEmpty
- and:[theBrowser classChangeSet methodsOnlyInB isEmpty
- and:[theBrowser classChangeSet diffSet isEmpty]]) ifTrue:[
+ (classChangeSet methodsOnlyInA isEmpty
+ and:[classChangeSet methodsOnlyInB isEmpty
+ and:[classChangeSet diffSet isEmpty]]) ifTrue:[
sameAction value.
^ self "/ do not open
]
].
- theBrowser openWindow.
- ^ theBrowser.
+
+ ^ self openOnClassChangeSet:classChangeSet title:ignoredTitle
!
openOnClass:aClass labelA:aLabelA sourceA:aSourceA labelB:aLabelB sourceB:aSourceB
@@ -612,14 +609,13 @@
<return: VersionDiffBrowser>
"
- |theBrowser diffs hasChangedMethods classChangeSet versionMethodChanges|
+
+ |diffs hasChangedMethods classChangeSet versionMethodChanges|
- theBrowser := self new.
- theBrowser allButOpen.
- theBrowser setupForClass:aClass labelA:aLabelA sourceA:aSourceA labelB:aLabelB sourceB:aSourceB.
+ classChangeSet := ClassChangeSet newForClass:aClass labelA:aLabelA sourceA:aSourceA labelB:aLabelB sourceB:aSourceB.
+ classChangeSet removeAllVersionMethods.
sameAction notNil ifTrue:[
"/ check if same ...
- classChangeSet := theBrowser classChangeSet.
(classChangeSet methodsOnlyInA isEmpty
and:[classChangeSet methodsOnlyInB isEmpty]) ifTrue:[
diffs := classChangeSet diffSet.
@@ -630,7 +626,7 @@
|eachChange|
eachChange := eachDifference first.
(eachChange isMethodChange
- and:[ ((eachChange selector == #version) or:[eachChange selector startsWith:'version_'])
+ and:[ (AbstractSourceCodeManager isVersionMethodSelector:eachChange selector)
and:[ eachChange changeClass isMeta ]]).
].
diffs changed size == versionMethodChanges size ifTrue: [
@@ -655,8 +651,8 @@
].
]
].
- theBrowser openWindow.
- ^ theBrowser.
+
+ ^ self openOnClassChangeSet:classChangeSet title:ignoredTitle
"Modified: / 13-10-2006 / 01:01:05 / cg"
!
@@ -682,6 +678,23 @@
"
!
+openOnClassChangeSet:classChangeSet title:ignoredTitle
+ "
+ create an VersionDiffBrowser instance and set the class change set of the
+ browser. The class diff set is generated from two classes.
+
+ <return: VersionDiffBrowser>
+ "
+
+ |theBrowser|
+
+ theBrowser := self new.
+ theBrowser allButOpen.
+ theBrowser classChangeSet:classChangeSet.
+ theBrowser openWindow.
+ ^ theBrowser.
+!
+
openOnDiffSet:diffSet labelA:aLabelA labelB:aLabelB title:ignoredTitle
|theBrowser|
@@ -1807,42 +1820,11 @@
<return: ClassChangeSet>
"
- |theChangeSetA theChangeSetB theClassChangeSet versionCompared diffSet|
+ |theClassChangeSet|
theClassChangeSet := self new.
- theClassChangeSet classBeingCompared:aClass.
- versionCompared := aVersionA.
- aVersionA isNil ifTrue:[
- theClassChangeSet labelA:(versionCompared := aClass revision).
- theClassChangeSet versionA:versionCompared.
- ] ifFalse:[
- aVersionA == #newest ifTrue:[
- theClassChangeSet labelA:(VersionDiffBrowser resources string:'newest').
- ] ifFalse:[
- theClassChangeSet labelA:versionCompared.
- theClassChangeSet versionA:versionCompared.
- ]
- ].
- theClassChangeSet labelB:(VersionDiffBrowser resources string:'current').
- theChangeSetA := self changeSetForClass: aClass andRevision: versionCompared.
- theChangeSetB := self changeSetForClass: aClass.
- theChangeSetA isNil
- ifTrue: [theChangeSetA := ChangeSet new].
- theChangeSetB isNil
- ifTrue: [theChangeSetB := ChangeSet new].
- "/ if we are comparing a private class, prune out other changes
- aClass isPrivate ifTrue:[
- theChangeSetA removeAllSuchThat:[:aChange |
- aChange className ~= aClass name
- ].
- theChangeSetB removeAllSuchThat:[:aChange |
- aChange className ~= aClass name
- ].
- ].
- self activityNotification:'generating diff-set...'.
- diffSet := theClassChangeSet diffSet:(theChangeSetA diffSetsAgainst:theChangeSetB).
- self activityNotification:nil.
- ^ diffSet
+ theClassChangeSet setupForClass:aClass againstVersion:aVersionA.
+ ^ theClassChangeSet diffSet
!
newForClass:classA labelA:aLabelA andClass:classB labelB:aLabelB
@@ -2069,12 +2051,65 @@
versionB := something.
! !
+!VersionDiffBrowser::ClassChangeSet methodsFor:'misc'!
+
+removeAllVersionMethods
+ diffSet removeAllVersionMethods.
+! !
+
+!VersionDiffBrowser::ClassChangeSet methodsFor:'setup'!
+
+setupForClass:aClass againstVersion:aVersionA
+ "return a ClassChangeSet for the class aClass against some verison in the repository.
+ A new instance of ClassChangeSet is generated containing
+ the correspondenting changes.
+
+ <return: ClassChangeSet>
+ "
+
+ |theChangeSetA theChangeSetB versionCompared|
+
+ self classBeingCompared:aClass.
+ versionCompared := aVersionA.
+ aVersionA isNil ifTrue:[
+ self labelA:(versionCompared := aClass revision).
+ self versionA:versionCompared.
+ ] ifFalse:[
+ aVersionA == #newest ifTrue:[
+ self labelA:(VersionDiffBrowser resources string:'newest').
+ ] ifFalse:[
+ self labelA:versionCompared.
+ self versionA:versionCompared.
+ ]
+ ].
+ self labelB:(VersionDiffBrowser resources string:'current').
+ theChangeSetA := self class changeSetForClass: aClass andRevision: versionCompared.
+ theChangeSetB := self class changeSetForClass: aClass.
+ theChangeSetA isNil
+ ifTrue: [theChangeSetA := ChangeSet new].
+ theChangeSetB isNil
+ ifTrue: [theChangeSetB := ChangeSet new].
+ "/ if we are comparing a private class, prune out other changes
+ aClass isPrivate ifTrue:[
+ theChangeSetA removeAllSuchThat:[:aChange |
+ aChange className ~= aClass name
+ ].
+ theChangeSetB removeAllSuchThat:[:aChange |
+ aChange className ~= aClass name
+ ].
+ ].
+ self activityNotification:'generating diff-set...'.
+ self diffSet:(theChangeSetA diffSetsAgainst:theChangeSetB).
+ self activityNotification:nil.
+ ^ diffSet
+! !
+
!VersionDiffBrowser class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.84 2009-09-29 16:24:24 fm Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.85 2009-10-07 12:15:03 fm Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.84 2009-09-29 16:24:24 fm Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.85 2009-10-07 12:15:03 fm Exp $'
! !