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