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 |
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:[ |