--- a/Tools__ChangeSetBrowser2.st Thu May 17 16:29:24 2012 +0100
+++ b/Tools__ChangeSetBrowser2.st Fri May 18 00:13:53 2012 +0100
@@ -34,7 +34,8 @@
languageHolder codeAspectHolder showRemovedAspect showSameAspect
sourceView changeSourceHolder imageSourceHolder targetPackage
targetNamespace allowRemoveHolder allowAcceptHolder infoPanel
- updateChangeFileHolder showFilterHolder showColumnSpecHolder'
+ updateChangeFileHolder showFilterHolder showColumnSpecHolder
+ isWorkingHolder isWorkingNotHolder hasSelectionHolder'
classVariableNames:'ShowRemoved LastSelectionConditionString'
poolDictionaries:''
category:'Interface-Browsers-ChangeSet'
@@ -80,11 +81,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: / 17-05-2012 / 23:36:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
on: aChangeSet label: aString
@@ -106,6 +114,16 @@
^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'!
@@ -235,7 +253,7 @@
the UIHelpTool may not be able to read the specification."
"
- UIHelpTool openOnClass:NewChangesBrowser
+ UIHelpTool openOnClass:Tools::ChangeSetBrowser2
"
<resource: #help>
@@ -323,6 +341,9 @@
#testFindNextSnapshot
'Searches forward for the next snapshot entry.'
+#testFindPreviousSnapshot
+''
+
)
! !
@@ -1197,7 +1218,7 @@
isVisible: allowAcceptHolder
)
(MenuItem
- label: 'Delete'
+ label: 'Delete (selected)'
itemValue: changeMenuDeleteSelection:
nameKey: Delete
translateLabel: true
@@ -1205,6 +1226,13 @@
shortcutKey: Delete
)
(MenuItem
+ label: 'Delete (unselected)'
+ itemValue: changeMenuDeleteSelectionInverted:
+ nameKey: Delete
+ translateLabel: true
+ isVisible: allowRemoveHolder
+ )
+ (MenuItem
label: 'Undelete'
itemValue: changeMenuUndeleteSelection:
nameKey: Undelete
@@ -1255,10 +1283,15 @@
translateLabel: true
)
(MenuItem
+ label: 'Invert Selection'
+ itemValue: changeMenuSelectInversion:
+ translateLabel: true
+ )
+ (MenuItem
label: '-'
)
(MenuItem
- label: 'Select using block'
+ label: 'Select Using Block...'
itemValue: changeMenuSelectUsingBlock:
translateLabel: true
)
@@ -1302,302 +1335,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:
- translateLabel: true
- isVisible: allowAcceptHolder
- shortcutKey: Accept
- auxValue: 100
- )
- (MenuItem
- label: 'Apply All'
- itemValue: changeMenuApply:
- translateLabel: true
- isVisible: allowAcceptHolder
- )
- (MenuItem
- label: '-'
- isVisible: allowAcceptHolder
- )
- (MenuItem
- label: 'Delete'
- itemValue: changeMenuDeleteSelection:
- nameKey: Delete
- translateLabel: true
- isVisible: allowRemoveHolder
- shortcutKey: Delete
- )
- (MenuItem
- label: 'Undelete'
- itemValue: changeMenuUndeleteSelection:
- nameKey: Undelete
- translateLabel: true
- isVisible: allowRemoveHolder
- )
- (MenuItem
- label: '-'
- isVisible: allowRemoveHolder
- )
- (MenuItem
- label: 'Select...'
- translateLabel: true
- submenu:
- (Menu
- (
- (MenuItem
- label: 'Select Same'
- itemValue: changeMenuSelectSame:
- translateLabel: true
- )
- (MenuItem
- label: 'Select Additions (new Classes/Methods)'
- itemValue: changeMenuSelectAdditions:
- translateLabel: true
- )
- (MenuItem
- label: 'Select Removals'
- itemValue: changeMenuSelectRemovals:
- translateLabel: true
- )
- (MenuItem
- label: 'Select Differences'
- itemValue: changeMenuSelectDifferences:
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Select All'
- itemValue: changeMenuSelectAll:
- translateLabel: true
- )
- (MenuItem
- label: 'Select None'
- itemValue: changeMenuSelectNone:
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Select using Block'
- itemValue: changeMenuSelectUsingBlock:
- translateLabel: true
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Show Deleted'
- translateLabel: true
- isVisible: allowRemoveHolder
- indication: showRemovedAspect
- )
- (MenuItem
- label: 'Show Same'
- translateLabel: true
- indication: showSameAspect
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Inspect Change'
- itemValue: changeMenuInspect:
- translateLabel: true
- )
- (MenuItem
- enabled: hasSingleChangeSelectedAndCanBrowse:
- label: 'Browse Method(s)'
- itemValue: changeMenuBrowse:
- translateLabel: true
- )
- (MenuItem
- enabled: hasSingleChangeSelectedAndCanBrowse:
- label: 'Browse Class(s)'
- itemValue: changeMenuBrowseClass:
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- enabled: hasSingleChangeSelectedAndCanBrowse:
- label: 'Compare Class Against...'
- itemValue: changeMenuCompareClass:
- translateLabel: true
- )
- )
- 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:
- translateLabel: true
- isVisible: allowAcceptHolder
- shortcutKey: Accept
- auxValue: 100
- )
- (MenuItem
- label: 'Apply to End'
- itemValue: changeMenuApplyToEnd:
- translateLabel: true
- isVisible: allowAcceptHolder
- )
- (MenuItem
- label: '-'
- isVisible: allowAcceptHolder
- )
- (MenuItem
- label: 'Delete'
- itemValue: changeMenuDeleteSelection:
- nameKey: Delete
- translateLabel: true
- isVisible: allowRemoveHolder
- shortcutKey: Delete
- )
- (MenuItem
- label: 'Undelete'
- itemValue: changeMenuUndeleteSelection:
- nameKey: Undelete
- translateLabel: true
- isVisible: allowRemoveHolder
- )
- (MenuItem
- label: '-'
- isVisible: allowRemoveHolder
- )
- (MenuItem
- label: 'Select...'
- translateLabel: true
- submenu:
- (Menu
- (
- (MenuItem
- label: 'Select Same'
- itemValue: changeMenuSelectSame:
- translateLabel: true
- )
- (MenuItem
- label: 'Select Additions (new Classes/Methods)'
- itemValue: changeMenuSelectAdditions:
- translateLabel: true
- )
- (MenuItem
- label: 'Select Removals'
- itemValue: changeMenuSelectRemovals:
- translateLabel: true
- )
- (MenuItem
- label: 'Select Differences'
- itemValue: changeMenuSelectDifferences:
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Select All'
- itemValue: changeMenuSelectAll:
- translateLabel: true
- )
- (MenuItem
- label: 'Select None'
- itemValue: changeMenuSelectNone:
- translateLabel: true
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Select using Block'
- itemValue: changeMenuSelectUsingBlock:
- translateLabel: true
- )
- )
- nil
- nil
- )
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Show Deleted'
- translateLabel: true
- isVisible: allowRemoveHolder
- indication: showRemovedAspect
- )
- (MenuItem
- label: 'Show Same'
- translateLabel: true
- indication: showSameAspect
- )
- (MenuItem
- label: '-'
- )
- (MenuItem
- label: 'Inspect Change'
- itemValue: changeMenuInspect:
- translateLabel: true
- )
- (MenuItem
- enabled: hasSingleChangeSelectedAndCanBrowse:
- label: 'Browse Method(s)'
- itemValue: changeMenuBrowse:
- translateLabel: true
- )
- )
- nil
- nil
- )
+ ^self changeMenu
+
+ "Modified: / 17-05-2012 / 22:51:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
mainMenu
@@ -1625,6 +1375,7 @@
(Menu
(
(MenuItem
+ enabled: isWorkingNotHolder
label: 'Open...'
itemValue: doOpen
translateLabel: true
@@ -1632,17 +1383,20 @@
shortcutKey: Ctrlo
)
(MenuItem
+ enabled: isWorkingNotHolder
label: 'Open Current'
itemValue: doOpenCurrent
translateLabel: true
isVisible: allowOpenHolder
)
(MenuItem
+ enabled: isWorkingNotHolder
label: 'Save'
itemValue: doSave
translateLabel: true
)
(MenuItem
+ enabled: isWorkingNotHolder
label: 'Save As...'
itemValue: doSaveAs
translateLabel: true
@@ -1661,18 +1415,21 @@
)
)
(MenuItem
+ enabled: isWorkingNotHolder
label: 'Changes'
translateLabel: true
isVisible: isTwoColumnHolderNot
submenuChannel: list1MenuHolder
)
(MenuItem
+ enabled: isWorkingNotHolder
label: 'Left'
translateLabel: true
isVisible: isTwoColumnHolder
submenuChannel: list1MenuHolder
)
(MenuItem
+ enabled: isWorkingNotHolder
label: 'Right'
translateLabel: true
isVisible: isTwoColumnHolder
@@ -1770,9 +1527,10 @@
"Do not manually edit this!! If it is corrupted,
the MenuEditor may not be able to read the specification."
+
"
- MenuEditor new openOnClass:NewChangesBrowser andSelector:#toolbarMenu
- (Menu new fromLiteralArrayEncoding:(NewChangesBrowser toolbarMenu)) startUp
+ MenuEditor new openOnClass:Tools::ChangeSetBrowser2 andSelector:#toolbarMenu
+ (Menu new fromLiteralArrayEncoding:(Tools::ChangeSetBrowser2 toolbarMenu)) startUp
"
<resource: #menu>
@@ -1782,7 +1540,7 @@
(
(MenuItem
activeHelpKey: fileLoad
- enabled: valueOfNotReading
+ enabled: isWorkingNotHolder
label: 'Load'
itemValue: doLoad
translateLabel: true
@@ -1791,7 +1549,7 @@
)
(MenuItem
activeHelpKey: fileSave
- enabled: valueOfNotSaving
+ enabled: isWorkingNotHolder
label: 'Save'
itemValue: doSave
translateLabel: true
@@ -1803,7 +1561,7 @@
)
(MenuItem
activeHelpKey: applyLine
- enabled: valueOfHavingChangeSelection
+ enabled: hasSelectionHolder
label: 'Apply'
itemValue: doApply
translateLabel: true
@@ -1812,7 +1570,7 @@
)
(MenuItem
activeHelpKey: applyToEnd
- enabled: valueOfHavingSelection
+ enabled: hasSelectionHolder
label: 'Apply To End'
itemValue: doApplyToEnd
translateLabel: true
@@ -1821,7 +1579,7 @@
)
(MenuItem
activeHelpKey: applyFromLastSnapshot
- enabled: valueOfNotReading
+ enabled: hasSelectionHolder
label: 'Apply From Last Snapshot'
itemValue: doApplyFromLastSnapshot
translateLabel: true
@@ -1833,7 +1591,7 @@
)
(MenuItem
activeHelpKey: deleteLine
- enabled: valueOfHavingSelection
+ enabled: hasSelectionHolder
label: 'Delete'
itemValue: doDelete
translateLabel: true
@@ -1842,7 +1600,7 @@
)
(MenuItem
activeHelpKey: deleteToEnd
- enabled: valueOfHavingSelection
+ enabled: hasSelectionHolder
label: 'Delete To End'
itemValue: doDeleteToEnd
translateLabel: true
@@ -1851,7 +1609,7 @@
)
(MenuItem
activeHelpKey: deleteCompress
- enabled: valueOfNotReading
+ enabled: isWorkingNotHolder
label: 'Compress'
itemValue: doCompress
translateLabel: true
@@ -1863,7 +1621,7 @@
)
(MenuItem
activeHelpKey: testFindPreviousSnapshot
- enabled: valueOfHavingSelection
+ enabled: hasSelectionHolder
label: 'Find Previous Snapshot'
itemValue: doFindSnapshot:
translateLabel: true
@@ -1873,7 +1631,7 @@
)
(MenuItem
activeHelpKey: testFindNextSnapshot
- enabled: valueOfHavingSelection
+ enabled: hasSelectionHolder
label: 'Find Next Snapshot'
itemValue: doFindSnapshot:
translateLabel: true
@@ -1886,7 +1644,7 @@
nil
)
- "Modified: / 26-03-2012 / 12:56:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 17-05-2012 / 20:45:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!ChangeSetBrowser2 class methodsFor:'plugIn spec'!
@@ -2477,6 +2235,44 @@
"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'!
changesetChanged
@@ -2633,6 +2429,7 @@
] ifFalse:[
self showColumnSpecHolder remove: #timestamp ifAbsent:[].
].
+ self allowRemove: true.
self doOpen: cs.
].
@@ -2671,13 +2468,24 @@
!
doSaveAs: newFile
+ | changesetToSave |
+
+ changesetToSave := ChangeSet new.
+ self list1Holder value do:[:e|
+ e removed ~~ true ifTrue:[changesetToSave add:e].
+ ].
"/ [
- self changeset saveToFile: newFile format: #classSource.
+ (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]
- "Modified: / 20-03-2012 / 13:52:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 17-05-2012 / 23:56:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
doScrollToBottom
@@ -2976,7 +2784,8 @@
changeMenuDeleteSelection: changeList
changeList selection do:[:change|self changeMenuDeleteChange:change change].
- list2 notNil ifTrue:[
+ changeList updateList.
+ (list2 notNil and:[changeList ~~ list2]) ifTrue:[
"/ to get the =-icons
list2 updateList
].
@@ -2984,6 +2793,24 @@
"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|
@@ -3036,6 +2863,21 @@
"Created: / 04-08-2011 / 17:29:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+changeMenuSelectInversion: changeList
+
+ | oldSel newSel |
+ oldSel := changeList selection.
+ newSel := oldSel species 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]
@@ -3250,7 +3092,14 @@
showProgress: label while: block
- self infoPanel progress: 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>"
!
@@ -3626,7 +3475,7 @@
!ChangeSetBrowser2 class methodsFor:'documentation'!
version
- ^ '$Id: Tools__ChangeSetBrowser2.st 7963 2012-04-03 12:32:03Z vranyj1 $'
+ ^ '$Id: Tools__ChangeSetBrowser2.st 7999 2012-05-17 23:13:53Z vranyj1 $'
!
version_CVS
@@ -3634,5 +3483,5 @@
!
version_SVN
- ^ '$Id: Tools__ChangeSetBrowser2.st 7963 2012-04-03 12:32:03Z vranyj1 $'
+ ^ '$Id: Tools__ChangeSetBrowser2.st 7999 2012-05-17 23:13:53Z vranyj1 $'
! !