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