--- a/Tools__ChangeSetBrowser2.st Wed Feb 05 20:13:29 2014 +0100
+++ b/Tools__ChangeSetBrowser2.st Wed Feb 05 20:21:37 2014 +0100
@@ -1,6 +1,6 @@
"
COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
- All Rights Reserved
+ All Rights Reserved
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
@@ -32,9 +32,12 @@
navigatorChangesetHolder navigatorSpecHolder list1 list1Holder
selection1Holder list2 list2Holder selection2Holder classHolder
languageHolder codeAspectHolder showRemovedAspect showSameAspect
- sourceView changeSourceHolder imageSourceHolder targetPackage
- targetNamespace updateChangefileHolder allowRemoveHolder
- allowAcceptHolder showConflictsOnlyAspect'
+ showTimestampHolder sourceView changeSourceHolder
+ imageSourceHolder targetPackage allowRemoveHolder
+ allowAcceptHolder infoPanel updateChangeFileHolder
+ showFilterHolder showingRegularChangesetHolder isWorkingHolder
+ isWorkingNotHolder hasSelectionHolder showConflictsOnlyAspect
+ targetNameSpaceName'
classVariableNames:'ShowRemoved LastSelectionConditionString RecentTargetPackages'
poolDictionaries:''
category:'Interface-Browsers-ChangeSet'
@@ -53,7 +56,7 @@
copyright
"
COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
- All Rights Reserved
+ All Rights Reserved
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
@@ -80,11 +83,18 @@
!ChangeSetBrowser2 class methodsFor:'instance creation'!
-on: aChangeSet
-
- ^self on: aChangeSet label: aChangeSet name
-
- "Modified: / 26-10-2010 / 22:51:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+on: aStringOrChangeSet
+ "Opens a browser on given changeset. If the argument is
+ string, then loads the changeset from given file - for
+ compatibility with other tools"
+
+ ^aStringOrChangeSet isString ifTrue:[
+ self onFile: aStringOrChangeSet
+ ] ifFalse:[
+ self on: aStringOrChangeSet label: aStringOrChangeSet name
+ ]
+
+ "Modified: / 21-05-2012 / 13:55:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
on: aChangeSet label: aString
@@ -100,12 +110,22 @@
browser := self new.
browser
- changeset: aChangeSet;
- title: label.
+ changeset: aChangeSet;
+ title: label.
aBlock value: browser.
^browser
"Created: / 26-10-2010 / 22:50:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+onFile: aString
+ | browser |
+
+ browser := self new.
+ browser enqueueDelayedAction:[browser doOpenFile: aString].
+ ^browser
+
+ "Created: / 17-05-2012 / 23:36:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!ChangeSetBrowser2 class methodsFor:'accessing'!
@@ -143,9 +163,474 @@
#fileSave
'Save the changeset in a file'
+#applyAll
+'Apply all changes.'
+
+#applyForClassToEnd
+'Apply changes which affect this class to the end.'
+
+#applyFromLastSnapshot
+'Apply changes from the last snapshot to the end.'
+
+#applyLine
+'Apply the selected change.'
+
+#applyToEnd
+'Apply all changes from the selected one to the end.'
+
+#deleteAll
+'Deletes all changes.'
+
+#deleteCompress
+'Deletes all obsolete changes.'
+
+#deleteCompressForClass
+'Deletes obsolete changes for this class, leaving the last one.'
+
+#deleteForClassToEnd
+'Deletes changes for this class from the selection to the end.'
+
+#deleteLine
+'Deletes the selected change.'
+
+#deleteToEnd
+'Deletes changes from the selected one to the end.'
+
+#fileLoad
+'Opens a dialog for selecting and loading another changes file.'
+
+#fileReload
+'Reloads the changes file (undo your modifications).'
+
+#fileSave
+'Saves the list of changes into the current changes file.'
+
+#filterField
+'Matching patterns filtering the changes (separate patterns by blanks).'
+
+#settingsAutoUpdate
+'Toggle automatic update.'
+
+#settingsColumns
+'Configure which columns are shown in the list.'
+
+#settingsColumnsCategory
+'Toggle display of the changes category in the list.'
+
+#settingsColumnsDeltaInfo
+'Toggle display of the delta-info in the list.'
+
+#settingsColumnsPosition
+'Togle display of the changes file-position in the list.'
+
+#settingsColumnsTimeStamp
+'Toggle display of the changes time stamp in the list.'
+
+#settingsColumnsType
+'Toggle display of the change-type in the list.'
+
+#settingsPrivateAsSeparate
+'Toggle if changes for private private are included when applying, deleting, or compressing for a class.'
+
+#testCompareWithCurrentVersion
+'Opens a info dialog showing the difference between the changes code and the method current code.'
+
+#testFindPreviousSnapshot
+'Searches backward for the previous snapshot entry.'
+
+#testFindNextSnapshot
+'Searches forward for the next snapshot entry.'
+
)
"Created: / 27-12-2011 / 10:37:47 / cg"
+ "Modified: / 29-03-2012 / 12:13:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+helpSpec
+ "This resource specification was automatically generated
+ by the UIHelpTool of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the UIHelpTool may not be able to read the specification."
+
+ "
+ UIHelpTool openOnClass:Tools::ChangeSetBrowser2
+ "
+
+ <resource: #help>
+
+ ^ super helpSpec addPairsFrom:#(
+
+#applyAll
+'Apply all changes.'
+
+#applyForClassToEnd
+'Apply changes to the end which affect this class.'
+
+#applyFromLastSnapshot
+'Apply changes from the last snapshot to the end.'
+
+#applyLine
+'Apply the selected change.'
+
+#applyToEnd
+'Apply all changes from the selected one to the end.'
+
+#deleteAll
+'Deletes all changes.'
+
+#deleteCompress
+'Deletes all obsolete changes.'
+
+#deleteCompressForClass
+'Deletes obsolete changes for this class, leaving the last one.'
+
+#deleteForClassToEnd
+'Deletes changes for this class from the selection to the end.'
+
+#deleteLine
+'Deletes the selected change.'
+
+#deleteToEnd
+'Deletes changes from the selected one to the end.'
+
+#fileLoad
+'Open a changeset file (.chg or .st)'
+
+#fileOpenSelection
+''
+
+#fileReload
+'Reloads the changes file (undo your modifications).'
+
+#fileSave
+'Saves changes to current change file.'
+
+#fileSaveAs
+'Save changes to a file'
+
+#filterField
+'Matching patterns filtering the changes (separate patterns by blanks).'
+
+#settingsAutoUpdate
+'Toggle automatic update.'
+
+#settingsColumns
+'Configure which columns are shown in the list.'
+
+#settingsColumnsCategory
+'Toggle display of the changes category in the list.'
+
+#settingsColumnsClassName
+'Toggle display of the className in the list.'
+
+#settingsColumnsDeltaInfo
+'Toggle display of the delta-info in the list.'
+
+#settingsColumnsPosition
+'Togle display of the changes file-position in the list.'
+
+#settingsColumnsTimeStamp
+'Toggle display of the changes time stamp in the list.'
+
+#settingsColumnsType
+'Toggle display of the change-type in the list.'
+
+#settingsPrivateAsSeparate
+'Toggle if changes for private private are included when applying, deleting, or compressing for a class.'
+
+#testCompareWithCurrentVersion
+'Opens a info dialog showing the difference between the changes code and the method current code.'
+
+#testFindLastSnapshot
+'Searches backward for the previous snapshot entry.'
+
+#testFindNextSnapshot
+'Searches forward for the next snapshot entry.'
+
+#testFindPreviousSnapshot
+'Searches backward for the previous snapshot entry.'
+
+#fileOpenCurrent
+'Open current system changeset'
+
+#fileOpenSelection
+'Opens a new browser on currently selected changes'
+
+)
+
+ "Modified: / 01-08-2012 / 18:40:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetBrowser2 class methodsFor:'image specs'!
+
+applyFromLastSnapshotIcon
+ ^ self applyFromLastSnapshotIcon2
+!
+
+applyFromLastSnapshotIcon1
+ "This resource specification was automatically generated
+ by the ImageEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the ImageEditor may not be able to read the specification."
+
+ "
+ self applyFromLastSnapshotIcon inspect
+ ImageEditor openOnClass:self andSelector:#applyFromLastSnapshotIcon
+ Icon flushCachedIcons
+ "
+
+ <resource: #image>
+
+ ^Icon
+ constantNamed:#'NewChangesBrowser class applyFromLastSnapshotIcon'
+ ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H@@@@@@@@@H"H"H @@@@@@@@@@@@@B@@@@@@
+@@;.;.; H@@@@@@@C.;.;.@@@@@@@@@@@@@@8@@N@@@@C?????C @@@N@@@O????<@@@8@@@@@@@@@C0@@@@8@@O????<O@@C @@@@?????0@@@@C @@@@@@
+@O@@@N@@@@DQDQDP<@C @@@@@_??DQ@@@@@@@@@A????D@@@@@@@@@DQDQDP@@@@C @@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 0 255 0 0 0 255 0 255 255 255 255 0 255 0 255 127 0 0 0 127 0 0 0 127 0 127 127 127 127 0 127 0 127 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@C?0@B@P@B@P@O?P@O?P@O?0@??@@??@@??LC?<\C?<\C?<8O?08O?10O?10??C ??[@??_@?<^@?<_@?<_@') ; yourself); yourself]
+!
+
+applyFromLastSnapshotIcon2
+ "This resource specification was automatically generated
+ by the ImageEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the ImageEditor may not be able to read the specification."
+
+ "
+ self applyFromLastSnapshotIcon1 inspect
+ ImageEditor openOnClass:self andSelector:#applyFromLastSnapshotIcon1
+ Icon flushCachedIcons
+ "
+
+ <resource: #image>
+
+ ^Icon
+ constantNamed:#'NewChangesBrowser class applyFromLastSnapshotIcon1'
+ ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@BH@@@@@@QDQ<@@BH @@@@@AH"H@@@H"@@@@@@D"H H H"@@@@@@@RH"@"H"@@@@@@@AH"H@H"H@@@@@@@<@@@@BH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@;.;.; @@@@@@@@C.;.;.@@@@@@@@@@@@@@8@@N@@@@C?????C @@@N@@@O????<@@@8@@@@@@@@@C0@@@@8@@O????<O@@C @@@@?????0@@@@C @@@@@@
+@O@@@N@@@@DQDQDP<@C @@@@@_??DQ@@@@@@@@@A????D@@@@@@@@@DQDQDP@@@@C @@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 0 255 0 0 0 255 0 255 255 255 255 0 255 0 255 127 0 0 0 127 0 0 0 127 0 127 127 127 127 0 127 0 127 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A@C<C@C<C@C<&@C<<@C<\@C<H@@@@?<@@?<@@?<LC?<\C?<\C?<8O?08O?10O?10??C ??[@??_@?<^@?<_@?<_@') ; yourself); yourself]
+!
+
+applyIcon
+ ^ self applyIcon2
+!
+
+applyIcon1
+ "This resource specification was automatically generated
+ by the ImageEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the ImageEditor may not be able to read the specification."
+
+ "
+ self applyIcon inspect
+ ImageEditor openOnClass:self andSelector:#applyIcon
+ Icon flushCachedIcons
+ "
+
+ <resource: #image>
+
+ ^Icon
+ constantNamed:#'NewChangesBrowser class applyIcon'
+ ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+UUUUUUUPUUUUUU?PUUUUUU?[UUUUUW=PP@@@@C<QQUUU=_4PQUUU?_4VQ**U_?TPQUUUW?TPQUUUW=TXQ***U=TPQ**UUUTPQ*****TPQ***%UTPQ****)TP
+QUUUUUTPQUUUUUTUP@@@@@@PUUUUUUUPUUUUUUUPUUUUUUUPUUUUUUUP') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 255 0 0]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@8@@@8@@A0_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]
+!
+
+applyIcon2
+ "This resource specification was automatically generated
+ by the ImageEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the ImageEditor may not be able to read the specification."
+
+ "
+ self applyIcon2 inspect
+ ImageEditor openOnClass:self andSelector:#applyIcon2
+ Icon flushCachedIcons
+ "
+
+ <resource: #image>
+
+ ^Icon
+ constantNamed:#'NewChangesBrowser class applyIcon2'
+ ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[4]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+DQDQDQDQDQDQP3PQDQDQDQDQDQECMADQDQDQDQDQECMADQDQDQEDPQDTL4DP@@@@@DL4@DL4@Q@QDQDQP3MAP3PADADQDQDTL3P3PPDPD"H"HQECL3MA@Q@Q
+DQDQDQP3MADADADQDQDQDTL4DPDPD"H"H"HQEDDQ@Q@RH"H!!DQDQDQDADAH"H"H"H"H"DPDPD"H"H"H!!DQDQ@Q@RH"H"H"H"HQDADADQDQDQDQDQDPDPDQDQ
+DQDQDQDQ@Q@@@@@@@@@@@@@ADQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDb') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 255 0 0 85 85 85]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@<@@@<@@A8@C!!8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]
+!
+
+applyToEndIcon
+ "This resource specification was automatically generated
+ by the ImageEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the ImageEditor may not be able to read the specification."
+
+ "
+ self applyToEndIcon inspect
+ ImageEditor openOnClass:self andSelector:#applyToEndIcon
+ Icon flushCachedIcons
+ "
+
+ <resource: #image>
+
+ ^Icon
+ constantNamed:#'NewChangesBrowser class applyToEndIcon'
+ ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[4]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@DP@@@@@@@@@@@@DQ@@@@@@@@@@@@@QD@@@"H"H"@@Q@QD@@@BH"H"H@ADQD@@@@@@@@@ @@QDP@@BH"H"HB@@@DP@@@H"H"H @@@@@@@@@@@@@B@@@@@@
+@@L3L3L0H@@@@@@@@3L3L3@@@@@@@@@@@@@@L@@B@@@@@3L3L3@0@@@B@@@CL3L3L@@@H@@@@@@@@@@0@@@@H@@ADQDQDC@@@ @@@@DQDQDP@@@@@ @@@@@@
+@A@@@B@@@@DQDQDPD@@ @@@@@SL3DQ@@@@@@@@@AL3L3D@@@@@@@@@DQDQDP@@@@@ @@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170 255 0 0]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A@@@CC?0CC?0&C?0<O?0\O?0HO?0@??@@??@@??LC?<\C?<\C?<8O?08O?10O?10??C ??[@??_@?<^@?<_@?<_@') ; yourself); yourself]
+!
+
+compressIcon
+ "This resource specification was automatically generated
+ by the ImageEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the ImageEditor may not be able to read the specification."
+
+ "
+ ImageEditor openOnClass:self andSelector:#compressIcon
+ "
+
+ <resource: #image>
+
+ ^Icon
+ constantNamed:#'NewChangesBrowser compressIcon'
+ ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@????<@@@:***(@@@8@@@8@@@8@@@8@@@@@@@8@@@@@@@8A@@@@@@8@@:**0@8HC**+@@8@@@@@@@8H@@@@@@8@@@@@@@8@@@@@@@8@@@@@@@8@@C????8@@C****(@@@@@@@@H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 124 124 124 170 170 170 255 255 255]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@??0A??8A??8A??8A8A8G>A8@@A8G?98O?18_?!!8??A8@@A8G>A8@0A8C??8C??8C??8C??0@0@@D2@@G>@@D2@@') ; yourself); yourself]
+!
+
+deleteIcon
+ "This resource specification was automatically generated
+ by the ImageEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the ImageEditor may not be able to read the specification."
+
+ "
+ ImageEditor openOnClass:self andSelector:#deleteIcon
+ "
+
+ <resource: #image>
+
+ ^Icon
+ constantNamed:#'NewChangesBrowser deleteIcon'
+ ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@AUUUU@@OA??UU@@@AUUUU@@@AUUUU@B@A???U@H@A??5U@@@A???0@@@AUUUB@B@@@@@@@@@@@@@A@BK@@@@A_:@@@@@AO2G@@@@AL2@@@@@AL2C@@@@AL2@@@@@AL2@@@@@AL2H@@@@AL2@@@@@A\:@@@@@H_8 @@@@@@@H') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'_?<@_?<@_?<P_?<P_?<X_?<X_?<H_? H_?O<_?XL@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@G0') ; yourself); yourself]
+!
+
+deleteToEndIcon
+ "This resource specification was automatically generated
+ by the ImageEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the ImageEditor may not be able to read the specification."
+
+ "
+ ImageEditor openOnClass:self andSelector:#deleteToEndIcon
+ "
+
+ <resource: #image>
+
+ ^Icon
+ constantNamed:#'NewChangesBrowser deleteToEndIcon'
+ ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@B** @@O@B** @@@@@@@ @@@@??< @B@@??<@@H@@@@L@@@@EUUL@@@@G?U@B@B@G?=@@@@@EUU@A@BK@@@@A_:@@@@@AO2G@@@@AL2@@@@@AL2C@@@@AL2@@@@@AL2@@@@@AL2H@@@@AL2@@@@@A\:@@@@@H_8 @@@@@@@H') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C?0@C?0@C?0PO?0PO?0XO?0X??@H??@H??O<?<XL?<_<?<_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@G0') ; yourself); yourself]
+!
+
+findLastSnapshotIcon
+ "This resource specification was automatically generated
+ by the ImageEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the ImageEditor may not be able to read the specification."
+
+ "
+ ImageEditor openOnClass:self andSelector:#findLastSnapshotIcon
+ "
+
+ <resource: #image>
+
+ ^Icon
+ constantNamed:#'NewChangesBrowser findLastSnapshotIcon'
+ ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@EUUUW@A@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@A@F***(@M@F***(@H@F***(@@@F***(@@@F***(@I@L@@@@@@@@@@@@@A@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??B@@@B@C@B@G B@O0@@_8@@G @@G @@G @') ; yourself); yourself]
+!
+
+findNextSnapshotIcon
+ "This resource specification was automatically generated
+ by the ImageEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the ImageEditor may not be able to read the specification."
+
+ "
+ ImageEditor openOnClass:self andSelector:#findNextSnapshotIcon
+ "
+
+ <resource: #image>
+
+ ^Icon
+ constantNamed:#'NewChangesBrowser findNextSnapshotIcon'
+ ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@DA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D@B@@@@@@@@@@@@@@@E@@@@@@@@@EUUUW@N@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@V***(@H@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@L@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@G @@G @@G @@_8@@O0@@G @@C@@@@@@C??@C??@C??@C??@C??@C??BC??BC??BC??BC??@C??@C??@C??@C??@') ; yourself); yourself]
+!
+
+findPreviousForClassIcon
+ "This resource specification was automatically generated
+ by the ImageEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the ImageEditor may not be able to read the specification."
+
+ "
+ self findPreviousForClassIcon inspect
+ ImageEditor openOnClass:self andSelector:#findPreviousForClassIcon
+ Icon flushCachedIcons
+ "
+
+ <resource: #image>
+
+ ^Icon
+ constantNamed:#'NewChangesBrowser class findPreviousForClassIcon'
+ ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@EUUUW@A@G???<@@@G???<@@@G???<@@@G???<@@@G???<@@@G???<@@@G???<@A@G???<@M@G???<@H@G???<@@@G???<@@@G???<@I@L@@@@@@@@@@@@@A
+@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??B@@@B@C@B@G B@O0@@_8@@G @@G @@G @') ; yourself); yourself]
+!
+
+findPreviousSnapshotIcon
+ "This resource specification was automatically generated
+ by the ImageEditor of ST/X."
+
+ "Do not manually edit this!! If it is corrupted,
+ the ImageEditor may not be able to read the specification."
+
+ "
+ self findPreviousSnapshotIcon inspect
+ ImageEditor openOnClass:self andSelector:#findPreviousSnapshotIcon
+ Icon flushCachedIcons
+ "
+
+ <resource: #image>
+
+ ^Icon
+ constantNamed:#'NewChangesBrowser class findPreviousSnapshotIcon'
+ ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@EUUUW@A@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@A@F***(@M@F***(@H@F***(@@@F***(@@@F***(@I@L@@@@@@@@@@@@@A
+@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??B@@@B@C@B@G B@O0@@_8@@G @@G @@G @') ; yourself); yourself]
! !
!ChangeSetBrowser2 class methodsFor:'interface opening'!
@@ -166,48 +651,59 @@
browser := self on: aChangeSet.
browser allowAccept: false.
browser allowRemove: true.
+ browser showRemovedAspect: true asValue.
+ browser beHierarchical.
browserView := ApplicationSubView new
- client:browser
- spec:#windowSpecForEmbedding.
+ client:browser
+ spec:#windowSpecForEmbedding.
dialog := (Dialog new)
- addComponent:browserView withHeight: 300;
- addAbortAndOkButtons;
- yourself.
+ addComponent:browserView withHeight: 300;
+ addAbortAndOkButtons;
+ yourself.
dialog label: aString.
dialog buttonPanel
- layout:(LayoutFrame fractions:(0.0 @ 1.0 corner:1.0 @ 1.0)
- offsets:(0 @ -30 corner:0 @ 0)).
+ layout:(LayoutFrame fractions:(0.0 @ 1.0 corner:1.0 @ 1.0)
+ offsets:(0 @ -30 corner:0 @ 0)).
browserView layout:(LayoutFrame fractions:(0.0 @ 0.0 corner:1.0 @ 1.0)
- offsets:(0 @ 0 corner:0 @ -30)).
+ offsets:(0 @ 0 corner:0 @ -30)).
dialog
- okAction:
- [^browser list1Holder value condenseChangesForRemoved];
- abortAction:
- [^#()].
+ okAction:
+ [^browser list1Holder value condenseChangesForRemoved];
+ abortAction:
+ [^#()].
dialog openWithExtent: 800@700.
^#()
"
- Tools::ChangeSetBrowser2
- confirmChanges:
- (ChangeSet current copyFrom: ((ChangeSet current size - 10) max: 1) to: ChangeSet current size)
- label: 'Last 10 changes...'
+ Tools::ChangeSetBrowser2
+ confirmChanges:
+ (ChangeSet current copyFrom: ((ChangeSet current size - 10) max: 1) to: ChangeSet current size)
+ label: 'Last 10 changes...'
"
"Created: / 08-11-2010 / 17:59:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 07-09-2011 / 20:19:44 / cg"
- "Modified: / 24-01-2012 / 20:00:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 27-07-2012 / 17:12:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
open
"Open browser and load current changefile"
- |app|
-
- (app := super open application)
- enqueueMessage:#loadCurrentChangeFile
- for:app
- arguments:#().
+ | browser |
+
+ browser := self new.
+ browser open.
+ "JV: I would like to open current changefile only if the tool is opened from
+ launcher toolbar button"
+
+ (thisContext sender sender receiver isKindOf: AbstractLauncherApplication) ifTrue:[
+ browser builder window sensor
+ pushUserEvent: #doOpenCurrent for: browser.
+ ] ifFalse:[
+ browser builder window sensor
+ pushUserEvent: #doOpenNew for: browser.
+
+ ]
"Created: / 25-01-2012 / 17:16:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 27-07-2012 / 21:24:19 / cg"
@@ -279,27 +775,32 @@
subAspectHolders:
(Array
- (SubChannelInfoSpec
+ (SubChannelInfoSpec
subAspect: allowAcceptHolder
aspect: allowAcceptHolder
- )
+ )
(SubChannelInfoSpec
subAspect: allowRemoveHolder
aspect: allowRemoveHolder
)
+
(SubChannelInfoSpec
subAspect: inGeneratorHolder
aspect: list1Holder
)
-
(SubChannelInfoSpec
subAspect: menuHolder
aspect: list1MenuHolder
)
+
(SubChannelInfoSpec
subAspect: selectionHolder
aspect: selection1Holder
)
+ (SubChannelInfoSpec
+ subAspect: showFilterHolder
+ aspect: showFilterHolder
+ )
(SubChannelInfoSpec
subAspect: showRemovedHolder
@@ -313,7 +814,6 @@
subAspect: showConflictsOnlyHolder
aspect: showConflictsOnlyAspect
)
-
)
createNewApplication: true
createNewBuilder: true
@@ -323,8 +823,6 @@
)
)
-
- "Modified: / 24-01-2012 / 19:57:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
oneColumnNavigatorSpec
@@ -341,17 +839,17 @@
<resource: #canvas>
- ^
+ ^
#(FullSpec
name: oneColumnNavigatorSpec
- window:
+ window:
(WindowSpec
label: 'One Column Navigator'
name: 'One Column Navigator'
min: (Point 10 10)
bounds: (Rectangle 0 0 300 300)
)
- component:
+ component:
(SpecCollection
collection: (
(SubCanvasSpec
@@ -360,43 +858,53 @@
hasHorizontalScrollBar: false
hasVerticalScrollBar: false
majorKey: #'Tools::ChangeList'
- subAspectHolders:
+ subAspectHolders:
(Array
-
+
(SubChannelInfoSpec
subAspect: allowAcceptHolder
aspect: allowAcceptHolder
- )
+ )
(SubChannelInfoSpec
subAspect: allowRemoveHolder
aspect: allowRemoveHolder
)
-
+
(SubChannelInfoSpec
subAspect: inGeneratorHolder
aspect: list1Holder
- )
+ )
(SubChannelInfoSpec
subAspect: menuHolder
aspect: list1MenuHolder
)
-
+
(SubChannelInfoSpec
subAspect: selectionHolder
aspect: selection1Holder
- )
+ )
+ (SubChannelInfoSpec
+ subAspect: showFilterHolder
+ aspect: showFilterHolder
+ )
+
(SubChannelInfoSpec
subAspect: showRemovedHolder
aspect: showRemovedAspect
)
-
(SubChannelInfoSpec
subAspect: showSameHolder
aspect: showSameAspect
)
+
+ (SubChannelInfoSpec
+ subAspect: showTimestampHolder
+ aspect: showTimestampHolder
+ )
(SubChannelInfoSpec
subAspect: showConflictsOnlyHolder
aspect: showConflictsOnlyAspect
+
)
)
createNewApplication: true
@@ -404,9 +912,11 @@
postBuildCallback: list1View:
)
)
-
+
)
)
+
+ "Modified: / 16-04-2013 / 16:10:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
twoColumnNavigatorSpec
@@ -453,37 +963,47 @@
(SubChannelInfoSpec
subAspect: allowAcceptHolder
aspect: allowAcceptHolder
- )
+ )
(SubChannelInfoSpec
subAspect: allowRemoveHolder
aspect: allowRemoveHolder
- )
+ )
+
(SubChannelInfoSpec
subAspect: inGeneratorHolder
aspect: list1Holder
)
-
(SubChannelInfoSpec
subAspect: menuHolder
aspect: list1MenuHolder
)
+
(SubChannelInfoSpec
subAspect: outGeneratorHolder
aspect: list2Holder
)
-
(SubChannelInfoSpec
subAspect: selectionHolder
aspect: selection1Holder
)
+
+ (SubChannelInfoSpec
+ subAspect: showFilterHolder
+ aspect: showFilterHolder
+ )
(SubChannelInfoSpec
subAspect: showRemovedHolder
aspect: showRemovedAspect
)
- (SubChannelInfoSpec
+
+ (SubChannelInfoSpec
subAspect: showSameHolder
aspect: showSameAspect
)
+ (SubChannelInfoSpec
+ subAspect: showTimestampHolder
+ aspect: showTimestampHolder
+ )
(SubChannelInfoSpec
subAspect: showConflictsOnlyHolder
aspect: showConflictsOnlyAspect
@@ -504,53 +1024,63 @@
(SubChannelInfoSpec
subAspect: allowAcceptHolder
aspect: allowAcceptHolder
- )
+ )
(SubChannelInfoSpec
subAspect: allowRemoveHolder
aspect: allowRemoveHolder
- )
+ )
+
(SubChannelInfoSpec
subAspect: inGeneratorHolder
aspect: list2Holder
)
-
(SubChannelInfoSpec
subAspect: menuHolder
aspect: list2MenuHolder
)
+
(SubChannelInfoSpec
subAspect: selectionHolder
aspect: selection2Holder
)
+ (SubChannelInfoSpec
+ subAspect: showFilterHolder
+ aspect: showFilterHolder
+ )
(SubChannelInfoSpec
subAspect: showRemovedHolder
aspect: showRemovedAspect
)
- (SubChannelInfoSpec
+ (SubChannelInfoSpec
subAspect: showSameHolder
aspect: showSameAspect
)
- (SubChannelInfoSpec
- subAspect: showConflictsOnlyHolder
- aspect: showConflictsOnlyAspect
- )
+
+ (SubChannelInfoSpec
+ subAspect: showTimestampHolder
+ aspect: showTimestampHolder
+ )
+ (SubChannelInfoSpec
+ subAspect: showConflictsOnlyHolder
+ aspect: showConflictsOnlyAspect
+ )
+
)
createNewApplication: true
createNewBuilder: true
postBuildCallback: list2View:
)
- )
-
)
handles: (Any 0.5 1.0)
)
)
)
- )
-
- "Modified: / 24-01-2012 / 19:57:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ )
+ )
+
+ "Modified: / 01-05-2013 / 11:22:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
windowSpec
@@ -561,42 +1091,52 @@
the UIPainter may not be able to read the specification."
"
- UIPainter new openOnClass:Tools::ChangeSetBrowser andSelector:#windowSpec
- Tools::ChangeSetBrowser new openInterface:#windowSpec
- Tools::ChangeSetBrowser open
+ UIPainter new openOnClass:Tools::ChangeSetBrowser2 andSelector:#windowSpec
+ Tools::ChangeSetBrowser2 new openInterface:#windowSpec
+ Tools::ChangeSetBrowser2 open
"
<resource: #canvas>
^
#(FullSpec
- name: windowSpec
- window:
+ name: windowSpec
+ window:
(WindowSpec
- label: 'ChangeSet browser'
- name: 'ChangeSet browser'
- labelChannel: titleHolder
- min: (Point 10 10)
- bounds: (Rectangle 0 0 653 488)
- menu: mainMenu
- )
- component:
+ label: 'ChangeSet browser'
+ name: 'ChangeSet browser'
+ labelChannel: titleHolder
+ min: (Point 10 10)
+ bounds: (Rectangle 0 0 800 600)
+ menu: mainMenu
+ )
+ component:
(SpecCollection
- collection: (
- (MenuPanelSpec
- name: 'ToolBar'
- layout: (LayoutFrame 0 0 0 0 0 1 30 0)
- menu: toolbarMenu
- textDefault: true
- )
- (UISubSpecification
- name: 'Contents'
- layout: (LayoutFrame 0 0 30 0 0 1 0 1)
- minorKey: windowSpecWithoutToolbar
- )
- )
-
- )
+ collection: (
+ (MenuPanelSpec
+ name: 'ToolBar'
+ layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+ menu: toolbarMenu
+ textDefault: true
+ )
+ (SubCanvasSpec
+ name: 'InfoPanel'
+ layout: (LayoutFrame 0 0 30 0 0 1 70 0)
+ level: 0
+ initiallyInvisible: true
+ hasHorizontalScrollBar: false
+ hasVerticalScrollBar: false
+ clientKey: infoPanel
+ createNewBuilder: false
+ )
+ (UISubSpecification
+ name: 'Contents'
+ layout: (LayoutFrame 0 0 30 0 0 1 0 1)
+ minorKey: windowSpecWithoutToolbar
+ )
+ )
+
+ )
)
!
@@ -621,85 +1161,86 @@
^
#(FullSpec
- name: windowSpecWithoutToolbar
- window:
+ name: windowSpecWithoutToolbar
+ window:
(WindowSpec
- label: 'ChangeSet browser'
- name: 'ChangeSet browser'
- min: (Point 10 10)
- bounds: (Rectangle 0 0 653 488)
- menu: mainMenu
- )
- component:
+ label: 'ChangeSet browser'
+ name: 'ChangeSet browser'
+ min: (Point 10 10)
+ bounds: (Rectangle 0 0 653 488)
+ menu: mainMenu
+ )
+ component:
(SpecCollection
- collection: (
- (VariableVerticalPanelSpec
- name: 'VerticalPanel'
- layout: (LayoutFrame 0 0 0 0 0 1 0 1)
- component:
- (SpecCollection
- collection: (
- (SubCanvasSpec
- name: 'NavigatorPanel'
- hasHorizontalScrollBar: false
- hasVerticalScrollBar: false
- specHolder: navigatorSpecHolder
- createNewBuilder: false
- )
- (SubCanvasSpec
- name: 'TextDiffTool'
- hasHorizontalScrollBar: false
- hasVerticalScrollBar: false
- majorKey: #'Tools::TextDiffTool'
- minorKey: windowSpecForEmbedding
- subAspectHolders:
- (Array
-
- (SubChannelInfoSpec
- subAspect: classHolder
- aspect: classHolder
- )
- (SubChannelInfoSpec
- subAspect: languageHolder
- aspect: languageHolder
- )
- (SubChannelInfoSpec
- subAspect: codeAspectHolder
- aspect: codeAspectHolder
- )
-
- (SubChannelInfoSpec
- subAspect: labelAHolder
- aspect: labelAHolder
- )
- (SubChannelInfoSpec
- subAspect: labelBHolder
- aspect: labelBHolder
- )
-
- (SubChannelInfoSpec
- subAspect: textAHolder
- aspect: changeSourceHolder
- )
- (SubChannelInfoSpec
- subAspect: textBHolder
- aspect: imageSourceHolder
- )
- )
- createNewApplication: true
- createNewBuilder: true
- )
- )
-
- )
- handles: (Any 0.5 1.0)
- )
- )
-
- )
+ collection: (
+ (VariableVerticalPanelSpec
+ name: 'VerticalPanel'
+ layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+ component:
+ (SpecCollection
+ collection: (
+ (SubCanvasSpec
+ name: 'NavigatorPanel'
+ hasHorizontalScrollBar: false
+ hasVerticalScrollBar: false
+ specHolder: navigatorSpecHolder
+ createNewBuilder: false
+ )
+ (SubCanvasSpec
+ name: 'TextDiffTool'
+ hasHorizontalScrollBar: false
+ hasVerticalScrollBar: false
+ majorKey: #'Tools::TextDiff2Tool'
+ minorKey: windowSpecForEmbedding
+ subAspectHolders:
+ (Array
+
+ (SubChannelInfoSpec
+ subAspect: classHolder
+ aspect: classHolder
+ )
+ (SubChannelInfoSpec
+ subAspect: languageHolder
+ aspect: languageHolder
+ )
+ (SubChannelInfoSpec
+ subAspect: codeAspectHolder
+ aspect: codeAspectHolder
+ )
+
+ (SubChannelInfoSpec
+ subAspect: labelAHolder
+ aspect: labelAHolder
+ )
+ (SubChannelInfoSpec
+ subAspect: labelBHolder
+ aspect: labelBHolder
+ )
+
+ (SubChannelInfoSpec
+ subAspect: textAHolder
+ aspect: changeSourceHolder
+ )
+ (SubChannelInfoSpec
+ subAspect: textBHolder
+ aspect: imageSourceHolder
+ )
+ )
+ createNewApplication: true
+ createNewBuilder: true
+ )
+ )
+
+ )
+ handles: (Any 0.5 1.0)
+ )
+ )
+
+ )
)
"Modified: / 03-12-2011 / 10:36:40 / cg"
+ "Modified: / 16-03-2012 / 13:09:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!ChangeSetBrowser2 class methodsFor:'menu specs'!
@@ -740,13 +1281,19 @@
isVisible: allowAcceptHolder
)
(MenuItem
- label: 'Delete'
+ label: 'Delete (selected)'
itemValue: changeMenuDeleteSelection:
nameKey: Delete
isVisible: allowRemoveHolder
shortcutKey: Delete
)
(MenuItem
+ label: 'Delete (unselected)'
+ itemValue: changeMenuDeleteSelectionInverted:
+ nameKey: Delete
+ isVisible: allowRemoveHolder
+ )
+ (MenuItem
label: 'Undelete'
itemValue: changeMenuUndeleteSelection:
nameKey: Undelete
@@ -790,10 +1337,29 @@
itemValue: changeMenuSelectNone:
)
(MenuItem
+ label: 'Invert Selection'
+ itemValue: changeMenuSelectInversion:
+ )
+ (MenuItem
label: '-'
)
(MenuItem
- label: 'Select using block'
+ label: 'Select version_XXX methods'
+ itemValue: changeMenuSelectVersionMethods:
+ )
+ (MenuItem
+ label: 'Select copyright methods'
+ itemValue: changeMenuSelectCopyrightMethods:
+ )
+ (MenuItem
+ label: 'Select class initialize doIts'
+ itemValue: changeMenuSelectClassInitializeDoIts:
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Select Using Block...'
itemValue: changeMenuSelectUsingBlock:
)
)
@@ -838,280 +1404,19 @@
!
changeMenu1
- "This resource specification was automatically generated
- by the MenuEditor of ST/X."
-
- "Do not manually edit this!! If it is corrupted,
- the MenuEditor may not be able to read the specification."
-
-
- "
- MenuEditor new openOnClass:Tools::ChangeSetBrowser2 andSelector:#changeMenu1
- (Menu new fromLiteralArrayEncoding:(Tools::ChangeSetBrowser2 changeMenu1)) startUp
- "
-
<resource: #menu>
- ^
- #(Menu
- (
- (MenuItem
- enabled: hasChangeSelectedAndNotRemoved:
- label: 'Apply'
- itemValue: changeMenuApplySelection:
- isVisible: allowAcceptHolder
- shortcutKey: Accept
- auxValue: 100
- )
- (MenuItem
- label: 'Apply All'
- itemValue: changeMenuApply:
- isVisible: allowAcceptHolder
- )
- (MenuItem
- label: '-'
- isVisible: allowAcceptHolder
- )
- (MenuItem
- label: 'Delete'
- itemValue: changeMenuDeleteSelection:
- nameKey: Delete
- isVisible: allowRemoveHolder
- shortcutKey: Delete
- )
- (MenuItem
- label: 'Undelete'
- itemValue: changeMenuUndeleteSelection:
- nameKey: Undelete
- isVisible: allowRemoveHolder
- )
- (MenuItem
- label: '-'
- isVisible: allowRemoveHolder
- )
- (MenuItem
- label: 'Select...'
- submenu:
- (Menu
- (
- (MenuItem
- label: 'Select Same'
- itemValue: changeMenuSelectSame:
- )
- (MenuItem
- label: 'Select Additions (new Classes/Methods)'
- itemValue: changeMenuSelectAdditions:
- )
- (MenuItem
- label: 'Select Removals'
- itemValue: changeMenuSelectRemovals:
- )
- (MenuItem
- label: 'Select Differences'
- itemValue: changeMenuSelectDifferences:
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Select All'
- itemValue: changeMenuSelectAll:
- )
- (MenuItem
- label: 'Select None'
- itemValue: changeMenuSelectNone:
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Select using Block'
- itemValue: changeMenuSelectUsingBlock:
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- enabled: notShowConflictsOnlyAspect
- label: 'Show Deleted'
- isVisible: allowRemoveHolder
- indication: showRemovedAspect
- )
- (MenuItem
- enabled: notShowConflictsOnlyAspect
- label: 'Show Same'
- indication: showSameAspect
- )
- (MenuItem
- label: 'Show Conflicts Only'
- indication: showConflictsOnlyAspect
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Inspect Change'
- itemValue: changeMenuInspect:
- )
- (MenuItem
- enabled: hasSingleChangeSelectedAndCanBrowse:
- label: 'Browse Method(s)'
- itemValue: changeMenuBrowse:
- )
- (MenuItem
- enabled: hasSingleChangeSelectedAndCanBrowse:
- label: 'Browse Class(s)'
- itemValue: changeMenuBrowseClass:
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- enabled: hasSingleChangeSelectedAndCanBrowse:
- label: 'Compare Class Against...'
- itemValue: changeMenuCompareClass:
- )
- )
- nil
- nil
- )
+ ^self changeMenu
+
+ "Modified: / 17-05-2012 / 22:51:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
changeMenu2
- "This resource specification was automatically generated
- by the MenuEditor of ST/X."
-
- "Do not manually edit this!! If it is corrupted,
- the MenuEditor may not be able to read the specification."
-
-
- "
- MenuEditor new openOnClass:Tools::ChangeSetBrowser2 andSelector:#changeMenu2
- (Menu new fromLiteralArrayEncoding:(Tools::ChangeSetBrowser2 changeMenu2)) startUp
- "
-
<resource: #menu>
- ^
- #(Menu
- (
- (MenuItem
- enabled: hasChangeSelectedAndNotRemoved:
- label: 'Apply'
- itemValue: changeMenuApplySelection:
- isVisible: allowAcceptHolder
- shortcutKey: Accept
- auxValue: 100
- )
- (MenuItem
- label: 'Apply to End'
- itemValue: changeMenuApplyToEnd:
- isVisible: allowAcceptHolder
- )
- (MenuItem
- label: '-'
- isVisible: allowAcceptHolder
- )
- (MenuItem
- label: 'Delete'
- itemValue: changeMenuDeleteSelection:
- nameKey: Delete
- isVisible: allowRemoveHolder
- shortcutKey: Delete
- )
- (MenuItem
- label: 'Undelete'
- itemValue: changeMenuUndeleteSelection:
- nameKey: Undelete
- isVisible: allowRemoveHolder
- )
- (MenuItem
- label: '-'
- isVisible: allowRemoveHolder
- )
- (MenuItem
- label: 'Select...'
- submenu:
- (Menu
- (
- (MenuItem
- label: 'Select Same'
- itemValue: changeMenuSelectSame:
- )
- (MenuItem
- label: 'Select Additions (new Classes/Methods)'
- itemValue: changeMenuSelectAdditions:
- )
- (MenuItem
- label: 'Select Removals'
- itemValue: changeMenuSelectRemovals:
- )
- (MenuItem
- label: 'Select Differences'
- itemValue: changeMenuSelectDifferences:
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Select All'
- itemValue: changeMenuSelectAll:
- )
- (MenuItem
- label: 'Select None'
- itemValue: changeMenuSelectNone:
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Select using Block'
- itemValue: changeMenuSelectUsingBlock:
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- enabled: notShowConflictsOnlyAspect
- label: 'Show Deleted'
- isVisible: allowRemoveHolder
- indication: showRemovedAspect
- )
- (MenuItem
- enabled: notShowConflictsOnlyAspect
- label: 'Show Same'
- indication: showSameAspect
- )
- (MenuItem
- label: 'Show Conflicts Only'
- indication: showConflictsOnlyAspect
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Inspect Change'
- itemValue: changeMenuInspect:
- )
- (MenuItem
- enabled: hasSingleChangeSelectedAndCanBrowse:
- label: 'Browse Method(s)'
- itemValue: changeMenuBrowse:
- )
- )
- nil
- nil
- )
+ ^self changeMenu
+
+ "Modified: / 17-05-2012 / 22:51:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
mainMenu
@@ -1129,30 +1434,83 @@
<resource: #menu>
- ^
+ ^
#(Menu
(
(MenuItem
label: 'File'
- submenu:
+ submenu:
(Menu
(
(MenuItem
+ label: 'New'
+ submenu:
+ (Menu
+ (
+ (MenuItem
+ activeHelpKey: fileNew
+ label: 'New Changeset'
+ itemValue: doOpenNew
+ )
+ (MenuItem
+ label: 'New Window'
+ itemValue: doOpenNewWindow
+ )
+ )
+ nil
+ nil
+ )
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ activeHelpKey: fileOpenSelection
+ enabled: isWorkingNotHolder
+ label: 'Spawn Browser on Selection'
+ itemValue: doOpenOnSelection
+ isVisible: allowOpenHolder
+ )
+ (MenuItem
+ activeHelpKey: fileOpenSelection
+ enabled: isWorkingNotHolder
+ label: 'Spawn on Selection'
+ itemValue: doOpenOnSelection
+ isVisible: allowOpenHolder
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ activeHelpKey: fileLoad
+ enabled: isWorkingNotHolder
label: 'Open...'
itemValue: doOpen
isVisible: allowOpenHolder
shortcutKey: Ctrlo
)
(MenuItem
- label: 'Open on Current Changes File'
- itemValue: doOpenCurrentChangeFile
+ activeHelpKey: fileOpenCurrent
+ enabled: isWorkingNotHolder
+ label: 'Open Current'
+ itemValue: doOpenCurrent
isVisible: allowOpenHolder
)
(MenuItem
+ activeHelpKey: fileOpenCurrent
+ enabled: isWorkingNotHolder
+ label: 'Open Cypress Package'
+ itemValue: doOpenCypress
+ isVisible: allowOpenHolderAndCypressPresent
+ )
+ (MenuItem
+ activeHelpKey: fileSaveAs
+ enabled: isWorkingNotHolder
label: 'Save'
itemValue: doSave
)
(MenuItem
+ enabled: isWorkingNotHolder
label: 'Save As...'
itemValue: doSaveAs
)
@@ -1169,22 +1527,26 @@
)
)
(MenuItem
- label: 'Change'
- submenu:
- (Menu
- (
- (MenuItem
- label: 'Apply'
- itemValue: doApplySelectedChanges
- )
- )
- nil
- nil
- )
+ enabled: isWorkingNotHolder
+ label: 'Changes'
+ isVisible: isTwoColumnHolderNot
+ submenuChannel: list1MenuHolder
+ )
+ (MenuItem
+ enabled: isWorkingNotHolder
+ label: 'Left'
+ isVisible: isTwoColumnHolder
+ submenuChannel: list1MenuHolder
+ )
+ (MenuItem
+ enabled: isWorkingNotHolder
+ label: 'Right'
+ isVisible: isTwoColumnHolder
+ submenuChannel: list2MenuHolder
)
(MenuItem
label: 'View'
- submenu:
+ submenu:
(Menu
(
(MenuItem
@@ -1223,6 +1585,17 @@
label: '-'
)
(MenuItem
+ label: 'Show Filter'
+ indication: showFilterHolder
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ label: 'Show Timestamp'
+ indication: showTimestampHolder
+ )
+ (MenuItem
label: 'Update'
itemValue: menuUpdate
)
@@ -1233,7 +1606,7 @@
)
(MenuItem
label: 'Loading'
- submenu:
+ submenu:
(Menu
(
(MenuItem
@@ -1283,6 +1656,8 @@
nil
nil
)
+
+ "Modified: / 27-07-2012 / 21:17:20 / cg"
!
toolbarMenu
@@ -1300,29 +1675,117 @@
<resource: #menu>
- ^
+ ^
#(Menu
- (
- (MenuItem
- activeHelpKey: fileLoad
- label: 'Open'
- itemValue: doOpen
- translateLabel: true
- isButton: true
- isVisible: allowOpenHolder
- labelImage: (ResourceRetriever ToolbarIconLibrary loadFromFileIcon)
- )
- (MenuItem
- activeHelpKey: fileSave
- label: 'Save'
- itemValue: doSave
- translateLabel: true
- isButton: true
- labelImage: (ResourceRetriever ToolbarIconLibrary saveToFileAsIcon)
- )
- )
- nil
- nil
+ (
+ (MenuItem
+ activeHelpKey: fileLoad
+ enabled: isWorkingNotHolder
+ label: 'Load'
+ itemValue: doOpen
+ translateLabel: true
+ isButton: true
+ labelImage: (ResourceRetriever XPToolbarIconLibrary loadFromFileIcon)
+ )
+ (MenuItem
+ activeHelpKey: fileSave
+ enabled: isWorkingNotHolder
+ label: 'Save'
+ itemValue: doSave
+ translateLabel: true
+ isButton: true
+ labelImage: (ResourceRetriever XPToolbarIconLibrary saveToFileIcon)
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ activeHelpKey: applyLine
+ enabled: hasSelectionHolder
+ label: 'Apply'
+ itemValue: doApply
+ translateLabel: true
+ isButton: true
+ labelImage: (ResourceRetriever nil applyIcon)
+ )
+ (MenuItem
+ activeHelpKey: applyToEnd
+ enabled: hasSelectionHolder
+ label: 'Apply To End'
+ itemValue: doApplyToEnd
+ translateLabel: true
+ isButton: true
+ labelImage: (ResourceRetriever nil applyToEndIcon)
+ )
+ (MenuItem
+ activeHelpKey: applyFromLastSnapshot
+ enabled: hasSelectionHolder
+ label: 'Apply From Last Snapshot'
+ itemValue: doApplyFromLastSnapshot
+ translateLabel: true
+ isButton: true
+ labelImage: (ResourceRetriever nil applyFromLastSnapshotIcon)
+ )
+ (MenuItem
+ label: '-'
+ )
+ (MenuItem
+ activeHelpKey: deleteLine
+ enabled: hasSelectionHolder
+ label: 'Delete'
+ itemValue: doDelete
+ translateLabel: true
+ isButton: true
+ labelImage: (ResourceRetriever nil deleteIcon)
+ )
+ (MenuItem
+ activeHelpKey: deleteToEnd
+ enabled: hasSelectionHolder
+ label: 'Delete To End'
+ itemValue: doDeleteToEnd
+ translateLabel: true
+ isButton: true
+ labelImage: (ResourceRetriever nil deleteToEndIcon)
+ )
+ (MenuItem
+ activeHelpKey: deleteCompress
+ enabled: isWorkingNotHolder
+ label: 'Compress'
+ itemValue: doCompress
+ translateLabel: true
+ isButton: true
+ isVisible: showingRegularChangesetHolder
+ labelImage: (ResourceRetriever nil compressIcon)
+ )
+ (MenuItem
+ label: '-'
+ isVisible: showingRegularChangesetHolder
+ )
+ (MenuItem
+ activeHelpKey: testFindPreviousSnapshot
+ enabled: hasSelectionHolder
+ label: 'Find Previous Snapshot'
+ itemValue: doFindSnapshot:
+ translateLabel: true
+ isButton: true
+ isVisible: showingRegularChangesetHolder
+ labelImage: (ResourceRetriever nil findPreviousSnapshotIcon)
+ argument: 'previous'
+ )
+ (MenuItem
+ activeHelpKey: testFindNextSnapshot
+ enabled: hasSelectionHolder
+ label: 'Find Next Snapshot'
+ itemValue: doFindSnapshot:
+ translateLabel: true
+ isButton: true
+ isVisible: showingRegularChangesetHolder
+ labelImage: (ResourceRetriever nil findNextSnapshotIcon)
+ argument: 'next'
+ )
+ )
+ nil
+ nil
)
! !
@@ -1340,7 +1803,7 @@
(if this app is embedded in a subCanvas)."
^ #(
- #changesetHolder
+ #changesetHolder
).
! !
@@ -1399,6 +1862,12 @@
self changesetHolder value: aChangeSet
!
+codeAspect
+ ^self codeAspectHolder value
+
+ "Created: / 04-04-2013 / 18:28:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
readOnly: aBoolean
self allowAcceptHolder value:false.
@@ -1416,8 +1885,14 @@
^ sel select:[:each | each notNil].
!
+showFilter: aBoolean
+ self showFilterHolder value: aBoolean
+
+ "Created: / 11-02-2012 / 22:47:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
targetNamespace:something
- targetNamespace := something.
+ targetNameSpaceName := something.
!
targetPackage:something
@@ -1425,13 +1900,22 @@
!
theSingleSelectedChange
- | sel |
-
- sel := self selectedChanges.
- sel size == 1 ifTrue:[ ^ sel first ].
- ^ nil
-
- "Modified: / 04-08-2011 / 18:55:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ | change sel |
+ change := nil.
+ sel := selection2Holder value.
+ sel isNil ifTrue:[
+ sel := selection1Holder value.
+ ].
+ sel isNil ifTrue:[
+ ^nil
+ ].
+ sel do:
+ [:each|
+ change notNil ifTrue:[nil].
+ change isNil ifTrue:[change := each]].
+ ^change
+
+ "Modified: / 26-07-2012 / 19:33:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
title: aString
@@ -1453,11 +1937,11 @@
list1MenuHolder
^ [
- |menu|
-
- menu := builder menuFor:#changeMenu1.
- menu allItemsDo:[:item | item argument:list1 ].
- menu
+ |menu|
+
+ menu := builder menuFor:#changeMenu1.
+ menu allItemsDo:[:item | item argument:list1 ].
+ menu
]
"Created: / 04-08-2011 / 18:11:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -1466,11 +1950,11 @@
list2MenuHolder
^ [
- |menu|
-
- menu := builder menuFor:#changeMenu2.
- menu allItemsDo:[:item | item argument:list2 ].
- menu
+ |menu|
+
+ menu := builder menuFor:#changeMenu2.
+ menu allItemsDo:[:item | item argument:list2 ].
+ menu
]
"Created: / 04-08-2011 / 18:13:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -1485,7 +1969,7 @@
(entry := self theSingleSelectedChange) isNil ifTrue:[^self].
chg := entry change.
chg isMethodCodeChange ifTrue:
- [chg source: source asString]
+ [chg source: source asString]
"Modified: / 29-11-2010 / 22:40:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 18-11-2011 / 14:56:53 / cg"
@@ -1504,7 +1988,7 @@
"return/create the 'selectionHolder' value holder (automatically generated)"
allowAcceptHolder isNil ifTrue:[
- allowAcceptHolder := ValueHolder with: true.
+ allowAcceptHolder := ValueHolder with: true.
].
^ allowAcceptHolder
@@ -1516,44 +2000,55 @@
"return/create the 'allowOpenHolder' value holder (automatically generated)"
allowOpenHolder isNil ifTrue:[
- allowOpenHolder := ValueHolder with: true.
+ allowOpenHolder := ValueHolder with: true.
].
^ allowOpenHolder
"Modified: / 17-03-2011 / 22:32:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+allowOpenHolderAndCypressPresent
+
+ ^BlockValue
+ with: [:value|
+ value and: [ ConfigurableFeatures includesFeature:#Cypress ]
+ ]
+ argument: self allowOpenHolder.
+
+ "Modified (format): / 07-09-2012 / 20:09:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
allowRemoveHolder
"return/create the 'allowRemoveHolder' value holder (automatically generated)"
-
+
allowRemoveHolder isNil ifTrue:[
- allowRemoveHolder := ValueHolder with:false.
- allowRemoveHolder addDependent:self.
+ allowRemoveHolder := ValueHolder with:false.
+ allowRemoveHolder addDependent:self.
].
^ allowRemoveHolder
"Modified: / 24-01-2012 / 19:59:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-allowRemoveHolder:something
+allowRemoveHolder:something
"set the 'showRemovedHolder' value holder (automatically generated)"
-
+
|oldValue newValue|
allowRemoveHolder notNil ifTrue:[
- oldValue := allowRemoveHolder value.
- allowRemoveHolder removeDependent:self.
+ oldValue := allowRemoveHolder value.
+ allowRemoveHolder removeDependent:self.
].
allowRemoveHolder := something.
allowRemoveHolder notNil ifTrue:[
- allowRemoveHolder addDependent:self.
+ allowRemoveHolder addDependent:self.
].
newValue := allowRemoveHolder value.
oldValue ~~ newValue ifTrue:[
- self
- update:#value
- with:newValue
- from:allowRemoveHolder.
+ self
+ update:#value
+ with:newValue
+ from:allowRemoveHolder.
].
"Modified (format): / 24-01-2012 / 19:48:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -1562,7 +2057,7 @@
changeSourceHolder
<resource: #uiAspect>
changeSourceHolder isNil ifTrue: [
- changeSourceHolder := nil asValue.
+ changeSourceHolder := nil asValue.
].
^ changeSourceHolder.
@@ -1573,8 +2068,8 @@
"return/create the 'changesetHolder' value holder (automatically generated)"
changesetHolder isNil ifTrue:[
- changesetHolder := ValueHolder new.
- changesetHolder addDependent:self.
+ changesetHolder := ValueHolder new.
+ changesetHolder addDependent:self.
].
^ changesetHolder
!
@@ -1585,16 +2080,16 @@
|oldValue newValue|
changesetHolder notNil ifTrue:[
- oldValue := changesetHolder value.
- changesetHolder removeDependent:self.
+ oldValue := changesetHolder value.
+ changesetHolder removeDependent:self.
].
changesetHolder := something.
changesetHolder notNil ifTrue:[
- changesetHolder addDependent:self.
+ changesetHolder addDependent:self.
].
newValue := changesetHolder value.
oldValue ~~ newValue ifTrue:[
- self update:#value with:newValue from:changesetHolder.
+ self update:#value with:newValue from:changesetHolder.
].
!
@@ -1602,7 +2097,7 @@
"return/create the 'classHolder' value holder (automatically generated)"
classHolder isNil ifTrue:[
- classHolder := ValueHolder with:nil.
+ classHolder := ValueHolder with:nil.
].
^ classHolder
@@ -1613,23 +2108,59 @@
"return/create the 'codeAspectHolder' value holder (automatically generated)"
codeAspectHolder isNil ifTrue:[
- codeAspectHolder := SyntaxHighlighter codeAspectMethod asValue.
+ codeAspectHolder := ValueHolder with: nil.
].
^ codeAspectHolder
"Modified: / 27-07-2012 / 22:04:12 / cg"
+ "Modified: / 04-04-2013 / 18:28:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
imageSourceHolder
<resource: #uiAspect>
imageSourceHolder isNil ifTrue: [
- imageSourceHolder := nil asValue.
+ imageSourceHolder := nil asValue.
].
^ imageSourceHolder.
"Created: / 19-07-2011 / 11:54:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+infoPanel
+ infoPanel isNil ifTrue:[
+ infoPanel := InlineMessageDialog new
+ ].
+ ^ infoPanel
+
+ "Created: / 09-02-2012 / 19:23:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isTwoColumnHolder
+ | holder |
+
+ holder := builder bindings at: #isTwoColumnHolder ifAbsentPut:[
+ BlockValue
+ with:[:v| v value == #twoColumnNavigatorSpec]
+ argument: self navigatorSpecHolder.
+ ].
+ ^holder
+
+ "Created: / 30-03-2012 / 12:07:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isTwoColumnHolderNot
+ | holder |
+
+ holder := builder bindings at: #isTwoColumnHolderNot ifAbsentPut:[
+ BlockValue
+ with:[:v| v value ~~ #twoColumnNavigatorSpec]
+ argument: self navigatorSpecHolder.
+ ].
+ ^holder
+
+ "Created: / 30-03-2012 / 12:08:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
labelAHolder
^'Change' asValue
@@ -1646,7 +2177,7 @@
languageHolder
languageHolder isNil ifTrue:[
- languageHolder := ValueHolder with:nil.
+ languageHolder := ValueHolder with:nil.
].
^ languageHolder
@@ -1658,7 +2189,7 @@
"return/create the 'list1Holder' value holder (automatically generated)"
list1Holder isNil ifTrue:[
- list1Holder := ValueHolder new.
+ list1Holder := ValueHolder new.
].
^ list1Holder
!
@@ -1673,7 +2204,7 @@
"return/create the 'list2Holder' value holder (automatically generated)"
list2Holder isNil ifTrue:[
- list2Holder := ValueHolder new.
+ list2Holder := ValueHolder new.
].
^ list2Holder
!
@@ -1688,7 +2219,7 @@
"return/create the 'navigatorChangesetHolder' value holder (automatically generated)"
navigatorChangesetHolder isNil ifTrue:[
- navigatorChangesetHolder := ValueHolder new.
+ navigatorChangesetHolder := ValueHolder new.
].
^ navigatorChangesetHolder
!
@@ -1700,13 +2231,13 @@
navigatorSpecHolder := ValueHolder with:
"/#hierarchicalNavigatorSpec
"/#twoColumnNavigatorSpec
- #oneColumnNavigatorSpec
+ #oneColumnNavigatorSpec.
+ navigatorSpecHolder addDependent: self.
].
^ navigatorSpecHolder.
-
- "Modified: / 24-01-2012 / 17:13:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 04-02-2012 / 21:25:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
notShowConflictsOnlyAspect
@@ -1717,8 +2248,8 @@
"return/create the 'selection1Holder' value holder (automatically generated)"
selection1Holder isNil ifTrue:[
- selection1Holder := ValueHolder new.
- selection1Holder addDependent:self.
+ selection1Holder := ValueHolder new.
+ selection1Holder addDependent:self.
].
^ selection1Holder
!
@@ -1729,16 +2260,16 @@
|oldValue newValue|
selection1Holder notNil ifTrue:[
- oldValue := selection1Holder value.
- selection1Holder removeDependent:self.
+ oldValue := selection1Holder value.
+ selection1Holder removeDependent:self.
].
selection1Holder := something.
selection1Holder notNil ifTrue:[
- selection1Holder addDependent:self.
+ selection1Holder addDependent:self.
].
newValue := selection1Holder value.
oldValue ~~ newValue ifTrue:[
- self update:#value with:newValue from:selection1Holder.
+ self update:#value with:newValue from:selection1Holder.
].
!
@@ -1746,8 +2277,8 @@
"return/create the 'selection2Holder' value holder (automatically generated)"
selection2Holder isNil ifTrue:[
- selection2Holder := ValueHolder new.
- selection2Holder addDependent:self.
+ selection2Holder := ValueHolder new.
+ selection2Holder addDependent:self.
].
^ selection2Holder
!
@@ -1758,16 +2289,16 @@
|oldValue newValue|
selection2Holder notNil ifTrue:[
- oldValue := selection2Holder value.
- selection2Holder removeDependent:self.
+ oldValue := selection2Holder value.
+ selection2Holder removeDependent:self.
].
selection2Holder := something.
selection2Holder notNil ifTrue:[
- selection2Holder addDependent:self.
+ selection2Holder addDependent:self.
].
newValue := selection2Holder value.
oldValue ~~ newValue ifTrue:[
- self update:#value with:newValue from:selection2Holder.
+ self update:#value with:newValue from:selection2Holder.
].
!
@@ -1784,12 +2315,29 @@
showConflictsOnlyAspect := aValueHolder.
!
+showFilterHolder
+ "return/create the 'showFilterHolder' value holder (automatically generated)"
+
+ showFilterHolder isNil ifTrue:[
+ showFilterHolder := false asValue.
+ ].
+ ^ showFilterHolder
+
+ "Modified: / 11-02-2012 / 22:46:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showFilterHolder:something
+ "set the 'showFilterHolder' value holder (automatically generated)"
+
+ showFilterHolder := something.
+!
+
showRemovedAspect
"return/create the 'showDeletedAspect' value holder (automatically generated)"
showRemovedAspect isNil ifTrue:[
- showRemovedAspect := (AspectAdaptor forAspect:#showRemoved)
- subject: self class.
+ showRemovedAspect := (AspectAdaptor forAspect:#showRemoved)
+ subject: self class.
].
^ showRemovedAspect
!
@@ -1802,7 +2350,7 @@
"return/create the 'showSameAspect' value holder (automatically generated)"
showSameAspect isNil ifTrue:[
- showSameAspect := ValueHolder with: true.
+ showSameAspect := ValueHolder with: true.
].
^ showSameAspect
@@ -1815,23 +2363,110 @@
showSameAspect := something.
!
+showTimestampHolder
+ "return/create the 'showTimestampHolder' value holder (automatically generated)"
+
+ showTimestampHolder isNil ifTrue:[
+ showTimestampHolder := ValueHolder with: false.
+ ].
+ ^ showTimestampHolder
+
+ "Modified: / 26-07-2012 / 18:47:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showTimestampHolder:something
+ "set the 'showTimestampHolder' value holder (automatically generated)"
+
+ showTimestampHolder := something.
+!
+
+showingRegularChangesetHolder
+ "return/create the 'showingRegularChangesetHolder' value holder (automatically generated)"
+
+ showingRegularChangesetHolder isNil ifTrue:[
+ showingRegularChangesetHolder := ValueHolder with: false.
+ showingRegularChangesetHolder addDependent:self.
+ ].
+ ^ showingRegularChangesetHolder
+
+ "Modified: / 26-07-2012 / 19:45:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showingRegularChangesetHolder:something
+ "set the 'showingRegularChangesetHolder' value holder (automatically generated)"
+
+ |oldValue newValue|
+
+ showingRegularChangesetHolder notNil ifTrue:[
+ oldValue := showingRegularChangesetHolder value.
+ showingRegularChangesetHolder removeDependent:self.
+ ].
+ showingRegularChangesetHolder := something.
+ showingRegularChangesetHolder notNil ifTrue:[
+ showingRegularChangesetHolder addDependent:self.
+ ].
+ newValue := showingRegularChangesetHolder value.
+ oldValue ~~ newValue ifTrue:[
+ self update:#value with:newValue from:showingRegularChangesetHolder.
+ ].
+!
+
titleHolder
"return/create the 'titleHolder' value holder (automatically generated)"
titleHolder isNil
- ifTrue:[ titleHolder := ValueHolder with:self defaultTitle. ].
+ ifTrue:[ titleHolder := ValueHolder with:self defaultTitle. ].
^ titleHolder
"Modified: / 26-10-2010 / 22:54:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
-updateChangefileHolder
- updateChangefileHolder isNil ifTrue:[
- updateChangefileHolder := false asValue.
+updateChangeFileHolder
+ updateChangeFileHolder isNil ifTrue:[
+ updateChangeFileHolder := false asValue.
].
- ^ updateChangefileHolder
+ ^ updateChangeFileHolder
"Created: / 07-09-2011 / 15:54:03 / cg"
+ "Created: / 11-02-2012 / 22:40:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetBrowser2 methodsFor:'aspects-queries'!
+
+hasSelectionHolder
+
+ hasSelectionHolder isNil ifTrue:[
+ hasSelectionHolder :=
+ BlockValue
+ with:[:sel1 :sel2|
+ sel1 value notEmptyOrNil or:[sel2 value notEmptyOrNil]
+ ]
+ argument: self selection1Holder
+ argument: self selection2Holder
+ ].
+ ^hasSelectionHolder
+
+ "Created: / 17-05-2012 / 20:45:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isWorkingHolder
+
+ isWorkingHolder isNil ifTrue:[
+ isWorkingHolder := ValueHolder with: false.
+ ].
+ ^isWorkingHolder
+
+ "Created: / 17-05-2012 / 20:45:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isWorkingNotHolder
+
+ isWorkingNotHolder isNil ifTrue:[
+ isWorkingNotHolder := BlockValue forLogicalNot: self isWorkingHolder
+ ].
+ ^isWorkingNotHolder
+
+ "Created: / 17-05-2012 / 20:45:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!ChangeSetBrowser2 methodsFor:'change & update'!
@@ -1858,9 +2493,19 @@
ifTrue:[SyntaxHighlighter codeAspectClassDefinition]
ifFalse:[SyntaxHighlighter codeAspectExpression])]).
self classHolder value: change changeClass.
- changeSourceHolder setValue: change changeSource"; changed: #value".
srcImage := change imageSource.
srcChange := change changeSource.
+ "/ Hack to make sure code is displayed in similar way
+ "/ (i.e., with no namespace pragma)
+ (change isClassDefinitionChange and:[change isPrivateClassDefinitionChange]) ifTrue:[
+ srcChange := change definitionStringInNamespace: nil.
+ ].
+ srcImage notNil ifTrue:[
+ srcImage := srcImage trimSeparators.
+ ].
+ srcChange := srcChange trimSeparators.
+
+ changeSourceHolder setValue: srcChange"; changed: #value".
srcImage = srcChange ifTrue:[
imageSourceHolder setValue: nil"; changed: #value".
] ifFalse:[
@@ -1896,13 +2541,40 @@
"Created: / 24-10-2009 / 19:49:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 27-07-2012 / 23:42:46 / cg"
+ "Modified: / 19-11-2013 / 12:16:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showingRegularChangesetChanged
+
+ self showTimestampHolder value: showingRegularChangesetHolder value.
+
+ "Created: / 26-07-2012 / 19:40:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
update: aspect with: param from: sender
- sender == changesetHolder ifTrue: [ ^ self changesetChanged ].
- sender == selection1Holder ifTrue: [ ^ self selectionChanged ].
- sender == selection2Holder ifTrue: [ ^ self selectionChanged ].
+ sender == changesetHolder ifTrue: [
+ self changesetChanged .
+ ^self
+ ].
+ sender == navigatorSpecHolder ifTrue: [
+ self changesetChanged .
+ ^self
+ ].
+ sender == selection1Holder ifTrue: [
+ self selectionChanged.
+ ^self
+ ].
+ sender == selection2Holder ifTrue: [
+ self selectionChanged.
+ ^self
+ ].
+
+ sender == showingRegularChangesetHolder ifTrue:[
+ self showingRegularChangesetChanged.
+ ^self.
+ ].
+ super update: aspect with: param from: sender
"Created: / 24-10-2009 / 19:29:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
@@ -1927,24 +2599,118 @@
!ChangeSetBrowser2 methodsFor:'menu actions'!
+doApply
+ "Applies currently selected change"
+
+ self changeMenuApplySelection: self list.
+
+ "Modified: / 30-03-2012 / 12:18:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doApplyFromLastSnapshot
+
+ self doFindSnapshot: #last.
+ self doApplyToEnd.
+
+ "Modified: / 30-03-2012 / 12:19:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
doApplySelectedChanges
self selectedChanges do:[:chgListEntry |
self changeMenuApplyChange: chgListEntry change.
].
!
+doApplyToEnd
+
+ self changeMenuApplyToEnd: self list.
+
+ "Modified: / 30-03-2012 / 12:35:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doCompress
+ self breakPoint: #jv.
+ Dialog warn: 'Sorry, not yet implemented'
+
+ "Modified: / 30-03-2012 / 12:20:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doDelete
+ self changeMenuDeleteSelection: self list.
+
+ "Modified: / 30-03-2012 / 12:21:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doDeleteToEnd
+ "automatically generated by UIEditor ..."
+
+ "*** the code below performs no action"
+ "*** (except for some feedback on the Transcript)"
+ "*** Please change as required and accept in the browser."
+ "*** (and replace this comment by something more useful ;-)"
+
+ "action to be added ..."
+
+ Transcript showCR:self class name, ': action for #doDeleteToEnd ...'.
+!
+
+doFindSnapshot:previousOrNext
+ self doFindSnapshot: previousOrNext in: self list.
+
+ "Modified: / 27-07-2012 / 15:40:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doFindSnapshot:previousOrNext in: changeList
+ | snapshot selection searchBlock notFoundMessage |
+
+
+ selection := self theSingleSelectedChange.
+ searchBlock := [:listEntry|
+ listEntry == selection ifTrue:[
+ snapshot notNil ifTrue:[
+ changeList selection: (OrderedCollection with: snapshot).
+ ] ifFalse:[
+ self infoPanel showMessage: notFoundMessage closeAfter: 5"sec".
+ ].
+ ^self.
+ ] ifFalse:[
+ (listEntry change isOtherChange and:[listEntry change type == #snapshot]) ifTrue:[
+ snapshot := listEntry
+ ].
+ ].
+ ].
+ previousOrNext = 'previous' ifTrue:[
+ selection isNil ifTrue:[
+ selection := changeList list last.
+ changeList selection: (Array with: selection).
+ ].
+ notFoundMessage := resources string:'No snapshot prior selected change found.'.
+ changeList list do: searchBlock.
+ ] ifFalse:[
+ selection isNil ifTrue:[
+ selection := changeList list first.
+ changeList selection: (Array with: selection).
+ ].
+ notFoundMessage := resources string:'No snapshot after selected change found.'.
+ changeList list reverseDo: searchBlock.
+ ]
+
+ "Created: / 27-07-2012 / 15:38:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
doOpen
- | file changeset |
-
- file := Dialog requestFileName:'Select Changeset to Load' pattern:'*.chg;*.st'.
+ | file |
+ [
+ file := Dialog requestFileName:'Select Changeset to Load' pattern:'*.chg;*.st'.
+ ] on: Dialog aboutToOpenBoxNotificationSignal do:[:ex|
+ | dialog |
+
+ dialog := ex parameter.
+
+ ex pass.
+ ].
file isNil ifTrue:[^self].
-
- [changeset := ChangeSet fromFile: file]
- on: Error
- do: [:ex|Dialog error: 'Error when loading changeset: ',ex description. ^self].
- changesetFile := file.
- self title: file asFilename baseName asString.
- self loadChangeSet: changeset
+ self doOpenFile: file
"Modified: / 08-04-2011 / 10:11:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 27-07-2012 / 21:21:40 / cg"
@@ -1959,45 +2725,183 @@
"Modified: / 27-07-2012 / 21:21:24 / cg"
!
+doOpenCurrent
+
+ self doOpenFile: ObjectMemory nameForChanges.
+ self showFilter: true.
+
+ "Created: / 05-12-2009 / 13:44:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
doOpenCurrentChangeFile
self withWaitCursorDo:[
- self class openOn: (ChangeSet fromFile: ObjectMemory nameForChanges)
+ self class openOn: (ChangeSet fromFile: ObjectMemory nameForChanges)
].
"Created: / 05-12-2009 / 13:44:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Created: / 27-07-2012 / 21:16:42 / cg"
!
+doOpenCypress
+
+ | file |
+ [
+ file := Dialog requestDirectoryName:(resources string: 'Select Cypress Package')."/ pattern:'*.package'.
+ ] on: Dialog aboutToOpenBoxNotificationSignal do:[:ex|
+ | dialog |
+
+ dialog := ex parameter.
+
+ ex pass.
+ ].
+
+ file isNil ifTrue:[^self].
+ self doOpenCypress: file
+
+ "Modified: / 03-09-2012 / 11:53:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doOpenCypress: aStringOrFilename
+ "Opens a Cypress package in given directory"
+
+ | dir changeset |
+
+ dir := aStringOrFilename asFilename.
+ dir exists ifFalse:[
+ Dialog warn: (resources string:'Selected directory does not exists').
+ ^self.
+ ].
+ dir isDirectory ifFalse:[
+ Dialog warn: (resources string:'Selected file is not a directory').
+ ^self.
+ ].
+ (dir / 'properties.json') isReadable ifFalse:[
+ Dialog warn: (resources string:'No properties.json found. Perhaps not a Cypress package directory?').
+ ^self.
+ ].
+
+ self showProgress: (resources string: 'Reading Cypress Package...') while: [
+ changeset := ((Smalltalk at:#CypressPackageReader) readPackageFrom: dir) asChangeSet.
+ self doOpen: changeset.
+ ].
+
+ "Created: / 03-09-2012 / 11:44:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doOpenFile: aStringOrFilename
+ | cs fn |
+
+ self showProgress: 'Reading ' , (fn := aStringOrFilename asFilename) baseName while:[
+ [
+ cs := ChangeSet fromFile: aStringOrFilename.
+ ] on: ChangeSet::InvalidChangeChunkError do:[:ex|
+ ex proceed.
+ ].
+ ((fn suffix = 'chg') or:[fn pathName = ObjectMemory nameForChanges]) ifTrue:[
+ self list scrollToBottom: true.
+ self showingRegularChangesetHolder value: true.
+ ] ifFalse:[
+ self showingRegularChangesetHolder value: false.
+ ].
+ self allowRemove: false."/true.
+ self doOpen: cs.
+ ].
+
+ "Created: / 09-02-2012 / 19:11:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 05-12-2012 / 11:38:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doOpenNew
+ self doOpen: ChangeSet new.
+ self showFilterHolder value: false.
+ self infoPanel
+ reset;
+ beInformation;
+ message: (resources string:'Open file or drag''n''drop changes from other changeset/diff browser');
+ addButtonWithLabel: (resources string:'Open File') action:[self doOpen];
+ addButtonOK;
+ show.
+
+ "Modified: / 01-08-2012 / 18:36:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doOpenNewWindow
+ | new |
+
+ new := self class new.
+ new open.
+
+ "Created: / 01-08-2012 / 18:22:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doOpenOnSelection
+
+ | selection |
+
+ selection := ChangeSet new.
+ self selectionDo: [:each|selection add: each].
+ self class openOn: selection label: (self titleHolder value , ' ' , (resources string:'(Selected changes)'))
+
+ "Modified: / 25-07-2012 / 15:31:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
doSave
changesetFile
- ifNil:[self doSaveAs]
- ifNotNil:[self doSaveAs: changesetFile]
+ ifNil:[self doSaveAs]
+ ifNotNil:[self doSaveAs: changesetFile]
"Modified: / 24-10-2009 / 22:55:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
doSaveAs
| file |
-
- file := Dialog requestFileName:'Select File for Save' default: (changesetFile ? 'somechanges.chg') pattern:('*.chg').
+ Dialog aboutToOpenBoxNotificationSignal handle:[:ex|
+"/ OOPS, not supported!!!!!!!!
+
+"/ | box |
+"/ box := ex parameter.
+"/ box verticalPanel
+"/ add:(CheckBox label:'x'
+"/ model:true asValue).
+ ex pass.
+ ] do:[
+ file := Dialog requestFileName:'Select File for Save' default: (changesetFile ? 'somechanges.chg') pattern:('*.chg').
+ ].
file isNil ifTrue:[^self].
self doSaveAs: file.
"Modified: / 27-12-2011 / 10:39:52 / cg"
- "Modified (format): / 27-07-2012 / 21:22:09 / cg"
+ "Modified: / 20-03-2012 / 13:52:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
doSaveAs: newFile
- [
- | s |
- s := newFile asFilename writeStream.
- [self changeset fileOutOn: s] ensure:[s close].
- changesetFile := newFile.
- ] on: Error do:
- [:ex|Dialog warn: 'Erorr saving changes: ' , ex description]
-
- "Modified (format): / 27-07-2012 / 21:22:14 / cg"
+ | changesetToSave |
+
+ changesetToSave := ChangeSet new.
+ self list1Holder value do:[:e|
+ e removed ~~ true ifTrue:[changesetToSave add:e].
+ ].
+
+"/ [
+ (newFile asFilename suffix = 'st') ifTrue:[
+ changesetToSave saveToFile: newFile format: #classSource.
+ ] ifFalse:[
+ changesetToSave saveToFile: newFile
+ ].
+ changesetFile := newFile.
+"/ ] on: Error do:
+"/ [:ex|Dialog warn: 'Erorr saving changes: ' , ex description]
+
+!
+
+doScrollToBottom
+
+ | changeList |
+ changeList := self list.
+ changeList selection: { changeList list last }
+
+ "Created: / 30-03-2012 / 16:56:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
loadChangeSet: aChangeSet
@@ -2009,7 +2913,7 @@
loadCurrentChangeFile
self withWaitCursorDo:[
- self loadChangeSet: (ChangeSet fromFile: ObjectMemory nameForChanges)
+ self loadChangeSet: (ChangeSet fromFile: ObjectMemory nameForChanges)
].
"Created: / 05-12-2009 / 13:44:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -2027,19 +2931,19 @@
| nsName |
- nsName := Dialog
- requestNameSpace:'Namepace to load code into:'
- initialAnswer:targetNamespace.
+ nsName := Dialog
+ requestNameSpace:'Namepace to load code into:'
+ initialAnswer:targetNameSpaceName.
nsName isEmptyOrNil ifTrue:[^self].
- targetNamespace := nsName.
+ targetNameSpaceName := nsName.
"/ self targetNamespaceNameHolder value:('Target-Namespace: ',targetNamespace).
list1 list do:[:each |
- each change nameSpaceOverride:nsName
+ each change nameSpaceOverride:nsName
].
list2 list do:[:each |
- each change nameSpaceOverride:nsName
+ each change nameSpaceOverride:nsName
].
self changeset do:[:chg | chg nameSpaceOverride:nsName].
@@ -2051,14 +2955,14 @@
| package |
- package := Dialog
- requestProject:'Default Smalltalk/X package to load code into:'
- initialAnswer:targetPackage
- suggestions:(RecentTargetPackages ? #()).
+ package := Dialog
+ requestProject:'Default Smalltalk/X package to load code into:'
+ initialAnswer:targetPackage
+ suggestions:(RecentTargetPackages ? #()).
package isNil ifTrue:[^self].
RecentTargetPackages isNil ifTrue:[
- RecentTargetPackages := OrderedCollection new.
+ RecentTargetPackages := OrderedCollection new.
].
RecentTargetPackages remove:package ifAbsent:[].
RecentTargetPackages addFirst:package.
@@ -2078,8 +2982,8 @@
self changesDo:[:chg|chg removed ifFalse:[changesToApply add: chg]].
self changeMenuApplyChanges: changesToApply.
list2 notNil ifTrue:[
- "/ to get the =-icons
- list2 updateList
+ "/ to get the =-icons
+ list2 updateList
].
"Created: / 04-08-2011 / 17:26:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -2088,28 +2992,46 @@
changeMenuApplySelection: changeList
- changeList selection do:[:change|self changeMenuApplyChange:change change].
- list2 notNil ifTrue:[
- "/ to get the =-icons
- list2 updateList
+ changeList selection do:[:change|
+ | changeIdx |
+
+ self changeMenuApplyChange:change change.
+
+ "Advance to next change"
+ changeIdx := changeList list identityIndexOf: change.
+ changeIdx < changeList list size ifTrue:[
+ changeList selection: { changeList list at: changeIdx + 1 }
+ ].
].
"Created: / 04-08-2011 / 17:27:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified (format): / 28-12-2011 / 15:48:53 / cg"
+ "Modified (comment): / 30-03-2012 / 13:18:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
changeMenuApplyToEnd: changeList
- |lastIdx|
-
- lastIdx := changeList selectionIndices max.
- changeList list from:lastIdx do:[:change | self changeMenuApplyChange:change change].
+ | start stop list |
+
+ list := changeList list.
+ start := changeList selectionIndices max.
+ stop := list size.
+
+ start to: stop do:[:idx|
+ | chg |
+
+ chg := list at: idx.
+ changeList selection: { chg }.
+ self changeMenuApplyChange:chg change.
+ ].
+
list2 notNil ifTrue:[
- "/ to get the =-icons
- list2 updateList
+ "/ to get the =-icons
+ list2 updateList
].
"Created: / 04-08-2011 / 17:27:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Created: / 27-12-2011 / 10:53:00 / cg"
+ "Modified: / 30-03-2012 / 12:34:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
changeMenuBrowse: changeList
@@ -2121,7 +3043,7 @@
(changes conform:[:c | c isClassDefinitionChange]) ifTrue:[
classes := (changes collect:[:c | c changeClass]).
UserPreferences systemBrowserClass
- browseClasses:classes title:'selected monticello classes'.
+ browseClasses:classes label:'selected monticello classes'.
] ifFalse:[
methods := OrderedCollection new.
changes do:[:each |
@@ -2144,6 +3066,7 @@
"Created: / 04-08-2011 / 17:27:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 23-07-2012 / 13:13:37 / cg"
+ "Modified: / 13-11-2013 / 11:49:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
changeMenuBrowseClass: changeList
@@ -2179,7 +3102,7 @@
!
changeMenuCompareClass: changeList
- |changes classNames classNameToClassMapping lastNameSpace
+ |changes classNames classNameToClassMapping lastNameSpace
addClassName addThemChanges existingClasses
allChanges changeSet1 changeSet2 diffSet|
@@ -2190,73 +3113,73 @@
allChanges := ChangeSet new.
existingClasses := Set new.
- addClassName :=
- [:nmArg |
- |nm ns existingClass goodAnswer cls|
-
- nm := nmArg.
- existingClass := Smalltalk classNamed:nm.
-
- existingClass notNil ifTrue:[
- goodAnswer := nm
- ] ifFalse:[
- ns := NameSpace allNameSpaces
- detect:[:ns | (ns classNamed:nm) notNil ]
- ifNone:nil.
- ns notNil ifTrue:[
- goodAnswer := (ns classNamed:nm) name.
- ] ifFalse:[
- goodAnswer := nm.
- (lastNameSpace notNil
- and:[ lastNameSpace isNameSpace
- and:[(cls := lastNameSpace classNamed:nm) notNil ]]
- ) ifTrue:[
- goodAnswer := cls name.
- ] ifFalse:[
- (lastNameSpace notNil
- and:[ lastNameSpace isBehavior
- and:[(cls := lastNameSpace privateClassesAt:nm asSymbol) notNil ]]
- ) ifTrue:[
- goodAnswer := cls name.
- ]
- ].
- ].
- ].
- nm := Dialog
- request:('Class to compare for "%1"?' bindWith:nmArg)
- initialAnswer:goodAnswer.
- nm isNil ifTrue:[^ self].
- nm notEmpty ifTrue:[
- existingClass := Smalltalk at:nm asSymbol.
- ].
- existingClass notNil ifTrue:[
- classNameToClassMapping at:nmArg put:existingClass.
- existingClasses add:existingClass.
- ].
- classNames add:nmArg
- ].
+ addClassName :=
+ [:nmArg |
+ |nm ns existingClass goodAnswer cls|
+
+ nm := nmArg.
+ existingClass := Smalltalk classNamed:nm.
+
+ existingClass notNil ifTrue:[
+ goodAnswer := nm
+ ] ifFalse:[
+ ns := NameSpace allNameSpaces
+ detect:[:ns | (ns classNamed:nm) notNil ]
+ ifNone:nil.
+ ns notNil ifTrue:[
+ goodAnswer := (ns classNamed:nm) name.
+ ] ifFalse:[
+ goodAnswer := nm.
+ (lastNameSpace notNil
+ and:[ lastNameSpace isNameSpace
+ and:[(cls := lastNameSpace classNamed:nm) notNil ]]
+ ) ifTrue:[
+ goodAnswer := cls name.
+ ] ifFalse:[
+ (lastNameSpace notNil
+ and:[ lastNameSpace isBehavior
+ and:[(cls := lastNameSpace privateClassesAt:nm asSymbol) notNil ]]
+ ) ifTrue:[
+ goodAnswer := cls name.
+ ]
+ ].
+ ].
+ ].
+ nm := Dialog
+ request:('Class to compare for "%1"?' bindWith:nmArg)
+ initialAnswer:goodAnswer.
+ nm isNil ifTrue:[^ self].
+ nm notEmpty ifTrue:[
+ existingClass := Smalltalk at:nm asSymbol.
+ ].
+ existingClass notNil ifTrue:[
+ classNameToClassMapping at:nmArg put:existingClass.
+ existingClasses add:existingClass.
+ ].
+ classNames add:nmArg
+ ].
addThemChanges := [:changes |
- "/ collect classes and mappings
- changes do:[:c |
- c isClassDefinitionChange ifTrue:[
- addClassName value:(c className).
- allChanges add:c.
- ]].
-
- changes do:[:c |
- c isMethodChange ifTrue:[
- (classNames includes:(c className)) ifFalse:[
- addClassName value:(c className).
- ].
- allChanges add:c.
- ]].
-
- changes do:[:c |
- c isCompositeChange ifTrue:[
- addThemChanges value:(c changes)
- ].
- ].
+ "/ collect classes and mappings
+ changes do:[:c |
+ c isClassDefinitionChange ifTrue:[
+ addClassName value:(c className).
+ allChanges add:c.
+ ]].
+
+ changes do:[:c |
+ c isMethodChange ifTrue:[
+ (classNames includes:(c className)) ifFalse:[
+ addClassName value:(c className).
+ ].
+ allChanges add:c.
+ ]].
+
+ changes do:[:c |
+ c isCompositeChange ifTrue:[
+ addThemChanges value:(c changes)
+ ].
+ ].
].
changes do:addThemChanges.
@@ -2265,16 +3188,16 @@
changeSet1 := allChanges.
changeSet2 := ChangeSet new.
existingClasses do:[:cls |
- changeSet2 addAll:(ChangeSet forExistingClass:cls).
+ changeSet2 addAll:(ChangeSet forExistingClass:cls).
].
diffSet := changeSet1 diffSetsAgainst:changeSet2.
(UserPreferences versionDiffViewerClass)
- openOnDiffSet:diffSet
- labelA:'Monticello'
- labelB:'Current (In Image)'
- title:'Diffs'
- ignoreExtensions:false.
+ openOnDiffSet:diffSet
+ labelA:'Monticello'
+ labelB:'Current (In Image)'
+ title:'Diffs'
+ ignoreExtensions:false.
"Created: / 04-08-2011 / 17:27:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Created: / 01-12-2011 / 18:36:44 / cg"
@@ -2282,20 +3205,55 @@
changeMenuDeleteSelection: changeList
- self selectionDo:[:chg|chg removed: true]
-
- "Modified: / 29-10-2010 / 13:53:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ changeList selection do:[:change|self changeMenuDeleteChange:change change].
+ changeList updateList.
+ (list2 notNil and:[changeList ~~ list2]) ifTrue:[
+ "/ to get the =-icons
+ list2 updateList
+ ].
+
"Created: / 04-08-2011 / 17:28:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+changeMenuDeleteSelectionInverted: changeList
+ | sel |
+
+ sel := changeList selection ? #().
+ changeList list do:[:change|
+ (sel includes: change) ifFalse:[
+ self changeMenuDeleteChange:change change
+ ].
+ ].
+ changeList updateList.
+ (list2 notNil and:[changeList ~~ list2]) ifTrue:[
+ "/ to get the =-icons
+ list2 updateList
+ ].
+
+ "Created: / 17-05-2012 / 22:55:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeMenuDeleteToEnd: changeList
+ |lastIdx|
+
+ lastIdx := changeList selectionIndices max.
+ changeList list from:lastIdx do:[:change | self changeMenuDeleteChange:change change].
+ list2 notNil ifTrue:[
+ "/ to get the =-icons
+ list2 updateList
+ ].
+
+ "Created: / 27-12-2011 / 10:53:00 / cg"
+ "Created: / 30-03-2012 / 12:22:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
changeMenuInspect: changeList
- | changes |
- changes := OrderedCollection new: 1.
- self selectionDo:[:chg|changes add: chg].
- changes size = 1
- ifTrue:[changes anyOne inspect]
- ifFalse:[changes inspect].
+ changeList selection size == 1 ifTrue:[
+ changeList selection anyOne change inspect
+ ] ifFalse:[
+ (changeList selection collect:[:each|each change]) inspect
+ ]
"Created: / 04-08-2011 / 17:28:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
@@ -2320,6 +3278,33 @@
"Created: / 04-08-2011 / 17:29:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+changeMenuSelectClassInitializeDoIts: changeList
+
+ self changeMenuSelectIn: changeList suchThat:[:changeEntry|
+ | change |
+
+ change := changeEntry change.
+ change isDoIt
+ and:[change source endsWith: ' initialize']
+ ]
+
+ "Created: / 13-11-2013 / 18:40:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeMenuSelectCopyrightMethods: changeList
+
+ self changeMenuSelectIn: changeList suchThat:[:changeEntry|
+ | change |
+
+ change := changeEntry change.
+ change isMethodCodeChange
+ and:[change selector == #copyright
+ and:[change isForMeta]]
+ ]
+
+ "Created: / 12-11-2013 / 17:22:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
changeMenuSelectDifferences: changeList
self changeMenuSelectIn: changeList suchThat:[:change|change delta = #~]
@@ -2327,6 +3312,21 @@
"Created: / 04-08-2011 / 17:29:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+changeMenuSelectInversion: changeList
+
+ | oldSel newSel |
+ oldSel := changeList selection.
+ newSel := OrderedCollection new.
+ changeList list do:[:change|
+ (oldSel includes: change) ifFalse:[
+ newSel add: change.
+ ]
+ ].
+ changeList selection: newSel.
+
+ "Created: / 17-05-2012 / 23:03:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
changeMenuSelectNone: changeList
self changeMenuSelectIn: changeList suchThat:[:change|false]
@@ -2390,10 +3390,24 @@
^ self
].
- self changeMenuSelectIn: changeList suchThat: conditionBlock
-
- "Modified: / 29-10-2010 / 13:05:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ self changeMenuSelectIn: changeList suchThat: [:change|conditionBlock value: change change].
+
"Created: / 04-08-2011 / 17:42:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-01-2013 / 17:13:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeMenuSelectVersionMethods: changeList
+
+ self changeMenuSelectIn: changeList suchThat:[:changeEntry|
+ | change |
+
+ change := changeEntry change.
+ change isMethodCodeChange
+ and:[((AbstractSourceCodeManager isVersionMethodSelector: change selector) or:[AbstractSourceCodeManager isExtensionsVersionMethodSelector:change selector])
+ and:[change isForMeta]]
+ ]
+
+ "Created: / 12-11-2013 / 17:22:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
changeMenuUndeleteSelection: changeList
@@ -2407,9 +3421,9 @@
selectedChangesIn: changeList
|changes|
- changes := (changeList == list1
- ifTrue:[ selection1Holder ]
- ifFalse:[ selection2Holder ]) value.
+ changes := (changeList == list1
+ ifTrue:[ selection1Holder ]
+ ifFalse:[ selection2Holder ]) value.
^ changes collect:[:eachListEntry | eachListEntry change].
"Created: / 23-07-2012 / 13:13:11 / cg"
@@ -2423,32 +3437,51 @@
"/ [(Smalltalk at: aChange superClassName asSymbol)
"/ ifNil:[^self error: 'Nil superclass']].
- self withWaitCursorDo:[
- (MCStXNamespaceQuery , Class nameSpaceQuerySignal)
- answer:(NameSpace name:(targetNamespace ? 'Smalltalk'))
- do: [
- (MCStXPackageQuery , Class packageQuerySignal)
- answer: self targetPackage
- do: [
- MCInteractiveLoadingQuery answer: true do:[
- self updateChangefileHolder value ifTrue:[
- aChange apply
- ] ifFalse:[
- Class withoutUpdatingChangesDo:[
- ParseError handle:[:ex |
- Dialog information:(ex description).
- ] do:[
- aChange apply
- ]
- ]
- ].
- ]
- ].
- ].
+ | nsQueries packageQueries hasMC apply targetNameSpace |
+
+ aChange removed ifTrue:[ ^ self ].
+
+
+ nsQueries := Class nameSpaceQuerySignal.
+ packageQueries := Class packageQuerySignal.
+ hasMC := ConfigurableFeatures includesFeature:#MonticelloSupport.
+ hasMC ifTrue:[
+ nsQueries := nsQueries , MCStXNamespaceQuery.
+ packageQueries := packageQueries , MCStXPackageQuery.
+ ].
+ apply := [
+ targetNameSpaceName notNil ifTrue:[
+ aChange applyWithNameSpaceOverride: targetNameSpaceName
+ ] ifFalse:[
+ aChange apply
+ ].
].
- "Modified: / 29-10-2010 / 14:57:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ targetNameSpaceName notNil ifTrue:[
+ targetNameSpace := NameSpace name: targetNameSpaceName.
+ apply := [
+ nsQueries answer: targetNameSpace do:apply.
+ ]
+ ].
+
+ hasMC ifTrue:[
+ apply := [
+ MCInteractiveLoadingQuery answer: true do: apply
+ ].
+ ].
+
+ self withWaitCursorDo:[
+ updateChangeFileHolder value ifTrue:[
+ packageQueries answer: self targetPackage do: apply
+ ] ifFalse:[
+ Class updateChangeFileQuerySignal answer: false do:[
+ packageQueries answer: self targetPackage do: apply
+ ]
+ ].
+ ].
+
"Modified: / 07-09-2011 / 22:24:57 / cg"
+ "Modified: / 04-02-2014 / 18:27:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
changeMenuApplyChanges: changesToApply
@@ -2470,6 +3503,13 @@
"Created: / 04-08-2011 / 17:26:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+changeMenuDeleteChange: change
+
+ change removed: true
+
+ "Created: / 30-03-2012 / 12:22:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
changeMenuSelectIn: changeList suchThat:conditionBlock
| sel |
@@ -2478,6 +3518,7 @@
changeList selectionHolder value: sel.
"Created: / 04-08-2011 / 17:29:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 21-01-2013 / 17:12:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!ChangeSetBrowser2 methodsFor:'private'!
@@ -2491,18 +3532,18 @@
getNavigatorChangeSet
| changeset |
- changeset := changesetHolder value deepCopy.
+ changeset := changesetHolder value. "/deepCopy.
(changeset isKindOf: ChangeSet) ifFalse:
- [changeset := ChangeSet withAll: changeset].
-
- (self navigatorSpecHolder value ~= #oneColumnNavigatorSpec)
- ifTrue:[^changeset groupByClass].
-
- "Default"
- ^changeset
+ [changeset := ChangeSet withAll: changeset].
+
+ ^ (self navigatorSpecHolder value ~~ #oneColumnNavigatorSpec) ifTrue:[
+ changeset groupByClass
+ ] ifFalse:[
+ changeset flatten
+ ]
"Created: / 24-10-2009 / 19:31:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 20-07-2010 / 09:46:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 27-07-2012 / 17:02:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
iconSelectorForChange:aChange
@@ -2520,13 +3561,21 @@
^ nil.
!
+list
+ "Returns list to operate on"
+
+ ^self isTwoColumn ifTrue:[list2] ifFalse:[list1]
+
+ "Created: / 30-03-2012 / 12:02:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
redrawChangeListViews
list1 notNil ifTrue:[
- list1 builder window allSubViewsDo: [:v|v redraw]
+ list1 builder window allSubViewsDo: [:v|v redraw]
].
list2 notNil ifTrue:[
- list2 builder window allSubViewsDo: [:v|v redraw]
+ list2 builder window allSubViewsDo: [:v|v redraw]
].
"Created: / 16-03-2011 / 22:41:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -2542,14 +3591,28 @@
"/ (self navigatorChangesetHolder value ? #()) do: aBlock
"/ ] ifFalse:[
selection2Holder value isEmptyOrNil not
- ifTrue:[selection2Holder value do: applyBlock]
- ifFalse:[selection1Holder value do: applyBlock].
+ ifTrue:[selection2Holder value do: [:e|e notNil ifTrue:[applyBlock value:e]]]
+ ifFalse:[selection1Holder value do: [:e|e notNil ifTrue:[applyBlock value:e]]].
"/ ].
self redrawChangeListViews
"Created: / 29-10-2010 / 13:47:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 08-04-2011 / 10:15:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 20-03-2012 / 17:16:40 / cg"
+ "Modified: / 18-05-2012 / 09:05:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showProgress: label while: block
+
+ self infoPanel progress: label while: [
+ [
+ self isWorkingHolder value: true.
+ block value
+ ] ensure:[
+ self isWorkingHolder value: false.
+ ]
+ ]
+
+ "Created: / 10-02-2012 / 10:35:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
showSource: aBoolean
@@ -2619,6 +3682,32 @@
"Created: / 04-08-2011 / 18:25:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!ChangeSetBrowser2 methodsFor:'testing'!
+
+isHierarchical
+
+ ^self navigatorSpecHolder == #hierarchicalNavigatorSpec
+
+ "Modified: / 14-10-2010 / 15:52:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Created: / 30-03-2012 / 11:59:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isOneColumn
+
+ ^self navigatorSpecHolder value == #oneColumnNavigatorSpec
+
+ "Modified: / 14-10-2010 / 15:52:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Created: / 30-03-2012 / 11:59:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isTwoColumn
+
+ ^self navigatorSpecHolder == #twoColumnNavigatorSpec
+
+ "Modified: / 14-10-2010 / 15:51:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Created: / 30-03-2012 / 11:59:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!ChangeSetBrowser2::ChangeEditor class methodsFor:'documentation'!
documentation
@@ -2628,7 +3717,7 @@
allowed to edit the change (i.e., modify the source code)
[author:]
- Jan Vrany <jan.vrany@fit.cvut.cz>
+ Jan Vrany <jan.vrany@fit.cvut.cz>
[instance variables:]
@@ -2642,16 +3731,16 @@
examples
"
Starting the application:
- [exBegin]
+ [exBegin]
Tools::ChangeEditor open
- [exEnd]
+ [exEnd]
more examples to be added:
- [exBegin]
- ... add code fragment for
+ [exBegin]
+ ... add code fragment for
... executable example here ...
- [exEnd]
+ [exEnd]
"
! !
@@ -2672,68 +3761,70 @@
<resource: #canvas>
- ^
+ ^
#(FullSpec
- name: windowSpec
- window:
+ name: windowSpec
+ window:
(WindowSpec
- label: 'Change Editor'
- name: 'Change Editor'
- min: (Point 10 10)
- bounds: (Rectangle 0 0 579 341)
- )
- component:
+ label: 'Change Editor'
+ name: 'Change Editor'
+ min: (Point 10 10)
+ bounds: (Rectangle 0 0 579 341)
+ )
+ component:
(SpecCollection
- collection: (
- (SubCanvasSpec
- name: 'TextDiffTool'
- layout: (LayoutFrame 0 0 0 0 0 1 0 1)
- hasHorizontalScrollBar: false
- hasVerticalScrollBar: false
- majorKey: #'Tools::TextDiffTool'
- minorKey: windowSpecForEmbedding
- subAspectHolders:
- (Array
-
- (SubChannelInfoSpec
- subAspect: classHolder
- aspect: classAspect
- )
- (SubChannelInfoSpec
- subAspect: codeAspectHolder
- aspect: codeAspect
- )
-
- (SubChannelInfoSpec
- subAspect: labelAHolder
- aspect: labelAHolder
- )
- (SubChannelInfoSpec
- subAspect: labelBHolder
- aspect: labelBHolder
- )
-
- (SubChannelInfoSpec
- subAspect: showDiffHolder
- aspect: showdiffHolder
- )
- (SubChannelInfoSpec
- subAspect: textAHolder
- aspect: sourceChangeHolder
- )
-
- (SubChannelInfoSpec
- subAspect: textBHolder
- aspect: sourceImageHolder
- )
- )
- createNewApplication: true
- createNewBuilder: true
- )
- )
-
- )
+ collection: (
+ (SubCanvasSpec
+ name: 'TextDiffTool'
+ layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+ hasHorizontalScrollBar: false
+ hasVerticalScrollBar: false
+ majorKey: #'Tools::TextDiff2Tool'
+ minorKey: windowSpecForEmbedding
+ subAspectHolders:
+ (Array
+
+ (SubChannelInfoSpec
+ subAspect: classHolder
+ aspect: classAspect
+ )
+ (SubChannelInfoSpec
+ subAspect: codeAspectHolder
+ aspect: codeAspect
+ )
+
+ (SubChannelInfoSpec
+ subAspect: labelAHolder
+ aspect: labelAHolder
+ )
+ (SubChannelInfoSpec
+ subAspect: labelBHolder
+ aspect: labelBHolder
+ )
+
+ (SubChannelInfoSpec
+ subAspect: showDiffHolder
+ aspect: showdiffHolder
+ )
+ (SubChannelInfoSpec
+ subAspect: textAHolder
+ aspect: sourceChangeHolder
+ )
+
+ (SubChannelInfoSpec
+ subAspect: textBHolder
+ aspect: sourceImageHolder
+ )
+ )
+ createNewApplication: true
+ createNewBuilder: true
+ )
+ )
+
+ )
)
+
+ "Modified: / 16-03-2012 / 13:08:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!ChangeSetBrowser2::ChangeEditor methodsFor:'accessing'!
@@ -2760,8 +3851,8 @@
"return/create the 'changeHolder' value holder (automatically generated)"
changeHolder isNil ifTrue:[
- changeHolder := ValueHolder new.
- changeHolder addDependent:self.
+ changeHolder := ValueHolder new.
+ changeHolder addDependent:self.
].
^ changeHolder
!
@@ -2772,23 +3863,23 @@
|oldValue newValue|
changeHolder notNil ifTrue:[
- oldValue := changeHolder value.
- changeHolder removeDependent:self.
+ oldValue := changeHolder value.
+ changeHolder removeDependent:self.
].
changeHolder := something.
changeHolder notNil ifTrue:[
- changeHolder addDependent:self.
+ changeHolder addDependent:self.
].
newValue := changeHolder value.
oldValue ~~ newValue ifTrue:[
- self update:#value with:newValue from:changeHolder.
+ self update:#value with:newValue from:changeHolder.
].
!
classAspect
- ^(AspectAdaptor forAspect: #changeClass)
- subjectChannel: self changeHolder
+ ^(AspectAdaptor forAspect: #changeClass)
+ subjectChannel: self changeHolder
"Created: / 29-11-2011 / 11:21:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
@@ -2796,11 +3887,11 @@
codeAspect
^BlockValue
- with: [:change|
- change isMethodCodeChange
- ifTrue:[ SyntaxHighlighter codeAspectMethod ]
- ifFalse:[ SyntaxHighlighter codeAspectExpression ]
- ] argument: self changeHolder
+ with: [:change|
+ change isMethodCodeChange
+ ifTrue:[ SyntaxHighlighter codeAspectMethod ]
+ ifFalse:[ SyntaxHighlighter codeAspectExpression ]
+ ] argument: self changeHolder
"Created: / 29-11-2011 / 11:21:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 27-07-2012 / 22:03:31 / cg"
@@ -2824,8 +3915,8 @@
"return/create the 'readonlyHolder' value holder (automatically generated)"
readonlyHolder isNil ifTrue:[
- readonlyHolder := ValueHolder new.
- readonlyHolder addDependent:self.
+ readonlyHolder := ValueHolder new.
+ readonlyHolder addDependent:self.
].
^ readonlyHolder
!
@@ -2836,16 +3927,16 @@
|oldValue newValue|
readonlyHolder notNil ifTrue:[
- oldValue := readonlyHolder value.
- readonlyHolder removeDependent:self.
+ oldValue := readonlyHolder value.
+ readonlyHolder removeDependent:self.
].
readonlyHolder := something.
readonlyHolder notNil ifTrue:[
- readonlyHolder addDependent:self.
+ readonlyHolder addDependent:self.
].
newValue := readonlyHolder value.
oldValue ~~ newValue ifTrue:[
- self update:#value with:newValue from:readonlyHolder.
+ self update:#value with:newValue from:readonlyHolder.
].
!
@@ -2853,7 +3944,7 @@
"return/create the 'showdiffHolder' value holder (automatically generated)"
showdiffHolder isNil ifTrue:[
- showdiffHolder := ValueHolder new.
+ showdiffHolder := ValueHolder new.
].
^ showdiffHolder
!
@@ -2885,8 +3976,8 @@
changedObject == changeHolder ifTrue:[
- self changeChanged.
- ^ self.
+ self changeChanged.
+ ^ self.
].
super update:something with:aParameter from:changedObject
@@ -2896,14 +3987,19 @@
!ChangeSetBrowser2 class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetBrowser2.st,v 1.53 2013-06-25 17:12:44 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetBrowser2.st,v 1.54 2014-02-05 19:21:37 vrany Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetBrowser2.st,v 1.53 2013-06-25 17:12:44 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetBrowser2.st,v 1.54 2014-02-05 19:21:37 vrany Exp $'
+!
+
+version_HG
+
+ ^ '$Changeset: <not expanded> $'
!
version_SVN
- ^ '$Id: Tools__ChangeSetBrowser2.st,v 1.53 2013-06-25 17:12:44 cg Exp $'
+ ^ '$Id: Tools__ChangeSetBrowser2.st,v 1.54 2014-02-05 19:21:37 vrany Exp $'
! !