diff -r 69b74f5776fb -r 05cf7ae53ada VersionDiffBrowser.st --- 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 @@ " - |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 @@ " - |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. + + + " + + |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 @@ " - |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. + + + " + + |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 $' ! !