VersionDiffBrowser.st
branchjv
changeset 12125 0c49a3b13e43
parent 12123 4bde08cebd48
child 12128 a7ff7d66ee85
equal deleted inserted replaced
12124:86df5844137f 12125:0c49a3b13e43
    17 		versionBIfSingleClassDiff changedLabelHolder diffTextLabelA
    17 		versionBIfSingleClassDiff changedLabelHolder diffTextLabelA
    18 		diffTextLabelB methodText methodsChanged methodsChangedSelection
    18 		diffTextLabelB methodText methodsChanged methodsChangedSelection
    19 		methodsOnlyInA methodsOnlyInASelection methodsOnlyInB
    19 		methodsOnlyInA methodsOnlyInASelection methodsOnlyInB
    20 		methodsOnlyInBSelection onlyInALabelHolder onlyInBLabelHolder
    20 		methodsOnlyInBSelection onlyInALabelHolder onlyInBLabelHolder
    21 		classHolder versionAHolder versionBHolder infoHolder
    21 		classHolder versionAHolder versionBHolder infoHolder
    22 		includeExtensionsHolder canIncludeExtensionsHolder'
    22 		includeExtensionsHolder canIncludeExtensionsHolder
       
    23 		ignoreExtensions'
    23 	classVariableNames:''
    24 	classVariableNames:''
    24 	poolDictionaries:''
    25 	poolDictionaries:''
    25 	category:'Interface-Browsers'
    26 	category:'Interface-Browsers'
    26 !
    27 !
    27 
    28 
   287      by the MenuEditor of ST/X."
   288      by the MenuEditor of ST/X."
   288 
   289 
   289     "Do not manually edit this!! If it is corrupted,
   290     "Do not manually edit this!! If it is corrupted,
   290      the MenuEditor may not be able to read the specification."
   291      the MenuEditor may not be able to read the specification."
   291 
   292 
       
   293 
   292     "
   294     "
   293      MenuEditor new openOnClass:VersionDiffBrowser andSelector:#mainMenu
   295      MenuEditor new openOnClass:VersionDiffBrowser andSelector:#mainMenu
   294      (Menu new fromLiteralArrayEncoding:(VersionDiffBrowser mainMenu)) startUp
   296      (Menu new fromLiteralArrayEncoding:(VersionDiffBrowser mainMenu)) startUp
   295     "
   297     "
   296 
   298 
   328             translateLabel: true
   330             translateLabel: true
   329             submenu: 
   331             submenu: 
   330            (Menu
   332            (Menu
   331               (
   333               (
   332                (MenuItem
   334                (MenuItem
       
   335                   enabled: canIncludeExtensionsHolder
   333                   label: 'Include Extensions'
   336                   label: 'Include Extensions'
       
   337                   itemValue: includeExtensions:
   334                   translateLabel: true
   338                   translateLabel: true
   335                   indication: includeExtensionsHolder
   339                   indication: includeExtensionsHolder
   336                   enabled: canIncludeExtensionsHolder
       
   337                 )
   340                 )
   338                )
   341                )
   339               nil
   342               nil
   340               nil
   343               nil
   341             )
   344             )
   714     theBrowser openWindow.
   717     theBrowser openWindow.
   715     ^ theBrowser.
   718     ^ theBrowser.
   716 !
   719 !
   717 
   720 
   718 openOnDiffSet:diffSet labelA:aLabelA labelB:aLabelB title:ignoredTitle
   721 openOnDiffSet:diffSet labelA:aLabelA labelB:aLabelB title:ignoredTitle
       
   722     ^ self
       
   723         openOnDiffSet:diffSet labelA:aLabelA labelB:aLabelB title:ignoredTitle 
       
   724         ignoreExtensions:false
       
   725 
       
   726     "Modified: / 12-09-2011 / 11:52:44 / cg"
       
   727 !
       
   728 
       
   729 openOnDiffSet:diffSet labelA:aLabelA labelB:aLabelB title:ignoredTitle ignoreExtensions:aBoolean
   719     |theBrowser|
   730     |theBrowser|
   720 
   731 
   721     theBrowser := self new.
   732     theBrowser := self new.
       
   733     theBrowser ignoreExtensions:aBoolean.
   722     theBrowser allButOpen.
   734     theBrowser allButOpen.
   723     theBrowser setupForDiffSet:diffSet labelA:aLabelA labelB:aLabelB.
   735     theBrowser setupForDiffSet:diffSet labelA:aLabelA labelB:aLabelB.
   724     theBrowser window label:ignoredTitle.
   736     theBrowser window label:ignoredTitle.
   725     theBrowser openWindow.
   737     theBrowser openWindow.
   726     ^ theBrowser.
   738     ^ theBrowser.
       
   739 
       
   740     "Created: / 12-09-2011 / 11:50:18 / cg"
   727 !
   741 !
   728 
   742 
   729 openOnDiffsBetweenFile:file1 and:file2
   743 openOnDiffsBetweenFile:file1 and:file2
   730     |set1 set2 diffset theBrowser|
   744     |set1 set2 diffset theBrowser|
   731 
   745 
   803 
   817 
   804     classChangeSet := aClassChangeSet.
   818     classChangeSet := aClassChangeSet.
   805     self updateLabels.
   819     self updateLabels.
   806     self updateLists.
   820     self updateLists.
   807     self resetSelectionHolders.
   821     self resetSelectionHolders.
       
   822 !
       
   823 
       
   824 ignoreExtensions
       
   825     "if true, extension methods are suppressed.
       
   826      Ignoring is useful when comparing for baseClass checkin,
       
   827      as opposed to extension-checking, where extensions should not be ignored.
       
   828      the default is false"
       
   829 
       
   830     ^ ignoreExtensions ? false.
       
   831 
       
   832     "Created: / 12-09-2011 / 11:54:11 / cg"
       
   833 !
       
   834 
       
   835 ignoreExtensions:aBoolean
       
   836     "if true, extension methods are suppressed.
       
   837      Ignoring is useful when comparing for baseClass checkin,
       
   838      as opposed to extension-checking, where extensions should not be ignored.
       
   839      the default is false"
       
   840 
       
   841     ignoreExtensions := aBoolean.
       
   842 
       
   843     "Modified (comment): / 12-09-2011 / 11:53:04 / cg"
   808 !
   844 !
   809 
   845 
   810 selectedChangeInA
   846 selectedChangeInA
   811     "
   847     "
   812     gets the selected method change for the 'method only in version A'.
   848     gets the selected method change for the 'method only in version A'.
  1128     ^ diffTextView
  1164     ^ diffTextView
  1129 
  1165 
  1130     "Modified: / 06-10-2006 / 14:30:42 / cg"
  1166     "Modified: / 06-10-2006 / 14:30:42 / cg"
  1131 !
  1167 !
  1132 
  1168 
       
  1169 includeExtensions
       
  1170     ^ self ignoreExtensions not
       
  1171 
       
  1172     "Created: / 13-09-2011 / 11:48:51 / cg"
       
  1173 !
       
  1174 
       
  1175 includeExtensions:aBoolean
       
  1176     self ignoreExtensions:aBoolean not
       
  1177 
       
  1178     "Created: / 13-09-2011 / 11:48:41 / cg"
       
  1179 !
       
  1180 
  1133 includeExtensionsHolder
  1181 includeExtensionsHolder
  1134     "only compare base-methods or include extensions ?"
  1182     "only compare base-methods or include extensions ?"
  1135 
  1183 
  1136     includeExtensionsHolder isNil ifTrue:[
  1184     includeExtensionsHolder isNil ifTrue:[
  1137         includeExtensionsHolder := false asValue.
  1185         includeExtensionsHolder := false asValue.
  1320 !VersionDiffBrowser methodsFor:'change & update'!
  1368 !VersionDiffBrowser methodsFor:'change & update'!
  1321 
  1369 
  1322 update:something with:parameter from:changedObject
  1370 update:something with:parameter from:changedObject
  1323     (changedObject == classHolder 
  1371     (changedObject == classHolder 
  1324     or:[changedObject == versionAHolder
  1372     or:[changedObject == versionAHolder
  1325     or:[changedObject == versionBHolder]]) ifTrue:[
  1373     or:[changedObject == versionBHolder
       
  1374     or:[changedObject == includeExtensionsHolder]]]) ifTrue:[ 
  1326         self setupForClass:(classHolder value) versionA:(versionAHolder value) versionB:(versionBHolder value)
  1375         self setupForClass:(classHolder value) versionA:(versionAHolder value) versionB:(versionBHolder value)
  1327 .        ^ self
  1376 .        ^ self
  1328     ].
  1377     ].
  1329     super update:something with:parameter from:changedObject
  1378     super update:something with:parameter from:changedObject
       
  1379 
       
  1380     "Modified: / 13-09-2011 / 11:50:35 / cg"
  1330 ! !
  1381 ! !
  1331 
  1382 
  1332 !VersionDiffBrowser methodsFor:'initialization & release'!
  1383 !VersionDiffBrowser methodsFor:'initialization & release'!
  1333 
  1384 
  1334 postBuildWith:aBuilder
  1385 postBuildWith:aBuilder
  1587         ^ aChange printStringWithoutClassName
  1638         ^ aChange printStringWithoutClassName
  1588     ].
  1639     ].
  1589     aChange isDoIt ifTrue:[
  1640     aChange isDoIt ifTrue:[
  1590         ^ aChange source , ' (doIt)'
  1641         ^ aChange source , ' (doIt)'
  1591     ].
  1642     ].
  1592 
  1643     aChange isNameSpaceCreationChange ifTrue:[
       
  1644         ^ aChange source
       
  1645     ].
       
  1646 
       
  1647     changeClassName := aChange className.
       
  1648     changeClassName isNil ifTrue:[
       
  1649         ^ aChange source
       
  1650     ].
  1593     useChangesString := false.
  1651     useChangesString := false.
  1594     changeClassName := aChange className.
  1652 
  1595     (changeClassName = singleComparedClassesName) ifTrue:[
  1653     (changeClassName = singleComparedClassesName) ifTrue:[
  1596         changeClassName := ''.
  1654         changeClassName := ''.
  1597         useChangesString := true.
  1655         useChangesString := true.
  1598     ] ifFalse:[
  1656     ] ifFalse:[
  1599         (changeClassName = singleComparedMetaclassesName) ifTrue:[
  1657         (changeClassName = singleComparedMetaclassesName) ifTrue:[
  1621     aChange isMethodCategoryChange ifTrue:[
  1679     aChange isMethodCategoryChange ifTrue:[
  1622         ^ changeClassName,selectorString, ' (category)'
  1680         ^ changeClassName,selectorString, ' (category)'
  1623     ].
  1681     ].
  1624     ^ changeClassName,selectorString
  1682     ^ changeClassName,selectorString
  1625 
  1683 
  1626     "Modified: / 22-10-2010 / 12:36:34 / cg"
  1684     "Modified: / 24-11-2011 / 12:11:02 / cg"
  1627 !
  1685 !
  1628 
  1686 
  1629 resetSelectionHolders
  1687 resetSelectionHolders
  1630     "
  1688     "
  1631     reset all selection holders when a new change set is given.
  1689     reset all selection holders when a new change set is given.
  1702 !
  1760 !
  1703 
  1761 
  1704 updateLists
  1762 updateLists
  1705     |classChangeSet listOnlyInA listOnlyInB listChanged 
  1763     |classChangeSet listOnlyInA listOnlyInB listChanged 
  1706      printStringGenerator sortBlockForChangeLists filteredList
  1764      printStringGenerator sortBlockForChangeLists filteredList
  1707      isExtensionChange numIgnoredExtensions|
  1765      isIgnoredChange numIgnoredExtensions|
  1708 
  1766 
  1709     classChangeSet := self classChangeSet.
  1767     classChangeSet := self classChangeSet.
  1710 
  1768 
  1711     printStringGenerator := [:aChange | self printStringForChange:aChange].
  1769     printStringGenerator := [:aChange | self printStringForChange:aChange].
  1712     sortBlockForChangeLists := [:a :b | (printStringGenerator value:a) < (printStringGenerator value:b)].
  1770     sortBlockForChangeLists := [:a :b | (printStringGenerator value:a) < (printStringGenerator value:b)].
  1713 
  1771 
  1714     numIgnoredExtensions := 0.
  1772     numIgnoredExtensions := 0.
  1715 
  1773 
  1716     isExtensionChange := 
  1774     isIgnoredChange := 
  1717         [:change |
  1775         [:change |
  1718             |packageOfMethodInChange packageOfMethodInImage changeMethod ignored|
  1776             |packageOfMethodInChange packageOfMethodInImage changeMethod ignored|
  1719 
  1777 
  1720             ignored := false.
  1778             ignored := false.
  1721             change isMethodCodeChange ifTrue:[
  1779             change isMethodCodeChange ifTrue:[
  1727                 ].
  1785                 ].
  1728 
  1786 
  1729                 changeMethod := change changeMethod.
  1787                 changeMethod := change changeMethod.
  1730                 changeMethod notNil ifTrue:[
  1788                 changeMethod notNil ifTrue:[
  1731                     packageOfMethodInImage := changeMethod package.
  1789                     packageOfMethodInImage := changeMethod package.
  1732                     (packageOfMethodInImage notNil
  1790                     (true "packageOfMethodInImage notNil"
  1733                       and:[ packageOfMethodInImage ~= PackageId noProjectID
  1791                       and:[ packageOfMethodInImage ~= PackageId noProjectID
  1734                       and:[ packageOfMethodInImage ~= changeMethod mclass package ]]) ifTrue:[
  1792                       and:[ packageOfMethodInImage ~= changeMethod mclass package ]]) ifTrue:[
  1735                         ignored := true
  1793                         ignored := true
  1736                     ].
  1794                     ].
  1737                 ].
  1795                 ].
  1743     listOnlyInA := self methodsOnlyInA. 
  1801     listOnlyInA := self methodsOnlyInA. 
  1744     listOnlyInA removeAll.
  1802     listOnlyInA removeAll.
  1745     classChangeSet notNil ifTrue:[
  1803     classChangeSet notNil ifTrue:[
  1746         "/ classChangeSet methodsOnlyInA sort:sortBlockForChangeLists.
  1804         "/ classChangeSet methodsOnlyInA sort:sortBlockForChangeLists.
  1747         filteredList := classChangeSet methodsOnlyInA.
  1805         filteredList := classChangeSet methodsOnlyInA.
  1748         includeExtensionsHolder value ifFalse:[
  1806         self includeExtensions ifFalse:[
  1749             filteredList := filteredList reject:isExtensionChange.
  1807             filteredList := filteredList reject:isIgnoredChange.
  1750         ].
  1808         ].
  1751         listOnlyInA addAll: (filteredList collect:printStringGenerator).
  1809         listOnlyInA addAll: (filteredList collect:printStringGenerator).
  1752     ].
  1810     ].
  1753 
  1811 
  1754     listOnlyInB := self methodsOnlyInB. 
  1812     listOnlyInB := self methodsOnlyInB. 
  1755     listOnlyInB removeAll.
  1813     listOnlyInB removeAll.
  1756     classChangeSet notNil ifTrue:[
  1814     classChangeSet notNil ifTrue:[
  1757         "/ classChangeSet methodsOnlyInB sort:sortBlockForChangeLists.
  1815         "/ classChangeSet methodsOnlyInB sort:sortBlockForChangeLists.
  1758         filteredList := classChangeSet methodsOnlyInB.
  1816         filteredList := classChangeSet methodsOnlyInB.
  1759         includeExtensionsHolder value ifFalse:[
  1817         self includeExtensions ifFalse:[
  1760             filteredList := filteredList reject:isExtensionChange.
  1818             filteredList := filteredList reject:isIgnoredChange.
  1761         ].
  1819         ].
  1762         listOnlyInB addAll: (filteredList collect:printStringGenerator).
  1820         listOnlyInB addAll: (filteredList collect:printStringGenerator).
  1763     ].
  1821     ].
  1764 
  1822 
  1765     listChanged := self methodsChanged. 
  1823     listChanged := self methodsChanged. 
  1766     listChanged removeAll.
  1824     listChanged removeAll.
  1767     classChangeSet notNil ifTrue:[
  1825     classChangeSet notNil ifTrue:[
  1768         "/ classChangeSet methodsChanged sort:[:a :b | sortBlockForChangeLists value:a first value:b first].
  1826         "/ classChangeSet methodsChanged sort:[:a :b | sortBlockForChangeLists value:a first value:b first].
  1769         filteredList := classChangeSet methodsChanged.
  1827         filteredList := classChangeSet methodsChanged.
  1770         includeExtensionsHolder value ifFalse:[
  1828         self includeExtensions ifFalse:[
  1771             filteredList := filteredList reject:[:entry | isExtensionChange value:entry first].
  1829             filteredList := filteredList reject:[:entry | isIgnoredChange value:entry first].
  1772         ].
  1830         ].
  1773         listChanged addAll: (filteredList collect:[:entry| printStringGenerator value:(entry first)]).
  1831         listChanged addAll: (filteredList collect:[:entry| printStringGenerator value:(entry first)]).
  1774     ].
  1832     ].
  1775 
  1833 
  1776     self boxAVisible value:(listOnlyInA notEmpty).
  1834     self boxAVisible value:(listOnlyInA notEmpty).
  1783     numIgnoredExtensions ~~ 0 ifTrue:[
  1841     numIgnoredExtensions ~~ 0 ifTrue:[
  1784         infoHolder value:('%1 extension methods ignored.' bindWith:numIgnoredExtensions)
  1842         infoHolder value:('%1 extension methods ignored.' bindWith:numIgnoredExtensions)
  1785     ] ifFalse:[
  1843     ] ifFalse:[
  1786         infoHolder value:nil
  1844         infoHolder value:nil
  1787     ].
  1845     ].
       
  1846 
       
  1847     "Modified: / 13-09-2011 / 12:08:06 / cg"
  1788 ! !
  1848 ! !
  1789 
  1849 
  1790 !VersionDiffBrowser methodsFor:'setup'!
  1850 !VersionDiffBrowser methodsFor:'setup'!
  1791 
  1851 
  1792 setupForClass:aClass againstVersion:aVersionA
  1852 setupForClass:aClass againstVersion:aVersionA
  1879      The version from the class source stream is checked out from the repositiory
  1939      The version from the class source stream is checked out from the repositiory
  1880      into a source stream. Then the change set is generated from the source stream."
  1940      into a source stream. Then the change set is generated from the source stream."
  1881 
  1941 
  1882     |theSourceCodeManager theSourceStream theChangeSet|
  1942     |theSourceCodeManager theSourceStream theChangeSet|
  1883 
  1943 
  1884     theSourceCodeManager := SourceCodeManagerUtilities sourceCodeManagerFor:aClass.
  1944     theSourceCodeManager := SourceCodeManagerUtilities default sourceCodeManagerFor:aClass.
  1885     [
  1945     [
  1886         theSourceStream := theSourceCodeManager getSourceStreamFor:aClass revision:aVersion.
  1946         theSourceStream := theSourceCodeManager getSourceStreamFor:aClass revision:aVersion.
  1887         theSourceStream notNil
  1947         theSourceStream notNil
  1888             ifTrue:[theChangeSet := ChangeSet fromStream:theSourceStream]
  1948             ifTrue:[theChangeSet := ChangeSet fromStream:theSourceStream]
  1889     ] ensure:[
  1949     ] ensure:[
  2228 ! !
  2288 ! !
  2229 
  2289 
  2230 !VersionDiffBrowser class methodsFor:'documentation'!
  2290 !VersionDiffBrowser class methodsFor:'documentation'!
  2231 
  2291 
  2232 version
  2292 version
  2233     ^ '$Id: VersionDiffBrowser.st 7810 2011-08-12 14:54:02Z vranyj1 $'
  2293     ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.101 2011/11/24 12:04:35 cg Exp $'
  2234 !
  2294 !
  2235 
  2295 
  2236 version_CVS
  2296 version_CVS
  2237     ^ '§Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.96 2010/10/27 09:37:20 cg Exp §'
  2297     ^ '§Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.101 2011/11/24 12:04:35 cg Exp §'
  2238 ! !
  2298 ! !