--- a/Tools__ChangeSetDiffTool.st Fri Mar 09 23:06:58 2012 +0000
+++ b/Tools__ChangeSetDiffTool.st Fri Mar 16 17:08:17 2012 +0000
@@ -31,14 +31,16 @@
instanceVariableNames:'listHolder singleSelectionHolder diffsetHolder titleHolder
firstColSelectionHolder navigatorPanelSpecHolder diffMenuHolder
diffsetHolderPrivate selectionHolder versionATextHolder
- versionBTextHolder'
+ versionBTextHolder versionBaseTextHolder textDiffToolHolder
+ textDiffToolWindowSpecHolder'
classVariableNames:''
poolDictionaries:''
category:'Interface-Diff'
!
SimpleDialog subclass:#OpenDialog
- instanceVariableNames:'doAcceptEnabled changesetSpecAHolder changesetSpecBHolder'
+ instanceVariableNames:'doAcceptEnabled changesetSpecAHolder changesetSpecBHolder
+ changesetSpecBaseHolder'
classVariableNames:'LastDirectory'
poolDictionaries:''
privateIn:ChangeSetDiffTool
@@ -73,6 +75,65 @@
OTHER DEALINGS IN THE SOFTWARE.
"
+!
+
+documentation
+"
+ Tool for viewing/merging differences between two change sets
+
+ [author:]
+ Jan Vrany <jan.vrany@fit.cvut.cz>
+
+ [instance variables:]
+
+ [class variables:]
+
+ [see also:]
+
+"
+!
+
+examples
+"
+ Starting the application:
+ [exBegin]
+ Tools::ChangeSetDiffTool open
+
+ [exEnd]
+
+ Show differences between CVS HEAD and SVN jv-branch
+ NewSystemBrowser:
+ [exBegin]
+ | cvsCs svnCs |
+
+ cvsCs := ChangeSet fromFile:'/home/jv/Private/Projects/SmalltalkX/sources/branches/exept@HEAD/stx/libtool/Tools__NewSystemBrowser.st'.
+ svnCs := ChangeSet fromFile:'/home/jv/Private/Projects/SmalltalkX/sources/branches/jv2/build/stx/libtool/Tools__NewSystemBrowser.st'.
+
+ Tools::ChangeSetDiffTool new
+ open;
+ fileMenuOpenOnDiffBetween: cvsCs and: svnCs.
+
+ [exEnd]
+
+ Show differences between CVS HEAD and SVN jv-branch and
+ base version of NewSystemBrowser:
+
+ [exBegin]
+ | cvsBaseCs cvsCs svnCs |
+
+ cvsBaseCs := ChangeSet fromFile:'/home/jv/Private/Projects/SmalltalkX/sources/branches/exept@2012-01-01/stx/libtool/Tools__NewSystemBrowser.st'.
+ cvsCs := ChangeSet fromFile:'/home/jv/Private/Projects/SmalltalkX/sources/branches/exept@HEAD/stx/libtool/Tools__NewSystemBrowser.st'.
+ svnCs := ChangeSet fromFile:'/home/jv/Private/Projects/SmalltalkX/sources/branches/jv2/build/stx/libtool/Tools__NewSystemBrowser.st'.
+
+ Tools::ChangeSetDiffTool new
+ open;
+ fileMenuOpenOnDiffBetween: cvsCs and: svnCs base: cvsBaseCs
+
+ [exEnd]
+
+
+
+"
! !
!ChangeSetDiffTool class methodsFor:'accessing - defaults'!
@@ -351,7 +412,7 @@
label: 'Diff Browser'
name: 'Diff Browser'
min: (Point 10 10)
- bounds: (Rectangle 0 0 665 397)
+ bounds: (Rectangle 0 0 1024 768)
menu: mainMenu
)
component:
@@ -380,29 +441,9 @@
name: 'TextDiff'
majorKey: #'Tools::TextDiffTool'
minorKey: windowSpecForEmbedding
- subAspectHolders:
- (Array
-
- (SubChannelInfoSpec
- subAspect: labelAHolder
- aspect: versionALabelHolder
- )
- (SubChannelInfoSpec
- subAspect: labelBHolder
- aspect: versionBLabelHolder
- )
-
- (SubChannelInfoSpec
- subAspect: textAHolder
- aspect: versionATextHolder
- )
- (SubChannelInfoSpec
- subAspect: textBHolder
- aspect: versionBTextHolder
- )
- )
- createNewApplication: true
- createNewBuilder: true
+ specHolder: textDiffToolWindowSpecHolder
+ clientHolder: textDiffToolHolder
+ createNewBuilder: false
)
)
@@ -788,6 +829,42 @@
"Modified: / 20-11-2009 / 19:54:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!ChangeSetDiffTool methodsFor:'accessing - subapps'!
+
+textDiff2Tool
+
+ ^TextDiff2Tool new
+ labelAHolder: self versionALabelHolder;
+ textAHolder: self versionATextHolder;
+
+ labelBHolder: self versionBLabelHolder;
+ textBHolder: self versionBTextHolder;
+
+ yourself
+
+ "Created: / 16-03-2012 / 13:58:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+textDiff3Tool
+
+ ^TextDiff3Tool new
+ labelCHolder: self versionBaseLabelHolder;
+ textCHolder: self versionBaseTextHolder;
+
+ labelBHolder: self versionBLabelHolder;
+ textBHolder: self versionBTextHolder;
+
+
+ labelAHolder: self versionALabelHolder;
+ textAHolder: self versionATextHolder;
+
+
+
+ yourself
+
+ "Created: / 16-03-2012 / 15:16:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!ChangeSetDiffTool methodsFor:'aspects'!
diffListEntryLabelGeneratorAspect
@@ -926,6 +1003,40 @@
"Modified: / 10-11-2009 / 11:09:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+textDiffToolHolder
+ "return/create the 'textDiffToolHolder' value holder (automatically generated)"
+
+ textDiffToolHolder isNil ifTrue:[
+ textDiffToolHolder := ValueHolder with: self textDiff2Tool.
+ ].
+ ^ textDiffToolHolder
+
+ "Modified: / 16-03-2012 / 13:57:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+textDiffToolHolder:something
+ "set the 'textDiffToolHolder' value holder (automatically generated)"
+
+ textDiffToolHolder := something.
+!
+
+textDiffToolWindowSpecHolder
+ "return/create the 'textDiffToolWindowSpecHolder' value holder (automatically generated)"
+
+ textDiffToolWindowSpecHolder isNil ifTrue:[
+ textDiffToolWindowSpecHolder := #windowSpecForEmbedding asValue.
+ ].
+ ^ textDiffToolWindowSpecHolder
+
+ "Modified: / 16-03-2012 / 13:57:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+textDiffToolWindowSpecHolder:something
+ "set the 'textDiffToolWindowSpecHolder' value holder (automatically generated)"
+
+ textDiffToolWindowSpecHolder := something.
+!
+
titleHolder
"return/create the 'titleHolder' value holder (automatically generated)"
@@ -973,6 +1084,25 @@
"Created: / 06-07-2011 / 12:05:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 18-11-2011 / 14:57:59 / cg"
+!
+
+versionBaseLabelHolder
+
+ ^(AspectAdaptor forAspect: #versionBaseLabel)
+ subjectChannel: self diffsetHolder
+
+ "Created: / 16-03-2012 / 15:18:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+versionBaseTextHolder
+
+ versionBaseTextHolder isNil ifTrue:[
+ versionBaseTextHolder := ValueHolder new
+ ].
+ ^versionBaseTextHolder
+
+ "Modified: / 18-11-2011 / 14:57:59 / cg"
+ "Created: / 16-03-2012 / 15:19:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!ChangeSetDiffTool methodsFor:'change & update'!
@@ -990,9 +1120,11 @@
self versionALabelHolder value: ds versionALabel.
self versionBLabelHolder value: ds versionBLabel.
+ self versionBaseLabelHolder value: ds versionBaseLabel.
"Created: / 05-12-2009 / 11:03:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 29-06-2011 / 08:24:18 / Jan Vrany <enter your email here>"
+ "Modified: / 16-03-2012 / 15:42:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
selectionChanged
@@ -1005,12 +1137,14 @@
self versionATextHolder setValue: diffItem versionAText.
self versionBTextHolder setValue: diffItem versionBText.
+ self versionBaseTextHolder setValue: diffItem versionBaseText.
self versionATextHolder changed: #value.
self versionBTextHolder changed: #value.
+ self versionBaseTextHolder changed: #value
"Created: / 22-10-2008 / 11:29:24 / Jan Vrany <vranyj1@fel.cvut.cz>"
- "Modified: / 06-07-2011 / 12:47:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 16-03-2012 / 15:19:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
update: aspect with: param from: sender
@@ -1089,23 +1223,41 @@
fileMenuOpen
- | dlg a b |
+ | dlg a b base|
dlg := OpenDialog new.
dlg open ifFalse:[^self].
a := dlg changeSetA.
b := dlg changeSetB.
- ^self fileMenuOpenOnDiffBetween: a and: b
+ base := dlg changeSetBase.
+ ^self fileMenuOpenOnDiffBetween: a and: b base: base.
- "Modified: / 06-07-2011 / 11:36:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 16-03-2012 / 13:51:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
fileMenuOpenOnDiffBetween: a and: b
- self diffset: (ChangeSetDiff versionA: a versionB: b).
+ ^self fileMenuOpenOnDiffBetween: a and: b base: nil.
- "Created: / 21-03-2011 / 23:23:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 29-06-2011 / 08:10:17 / Jan Vrany <enter your email here>"
"Modified: / 06-07-2011 / 12:56:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Created: / 16-03-2012 / 14:07:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileMenuOpenOnDiffBetween: a and: b base: base
+
+ self diffset: (ChangeSetDiff versionA: a versionB: b versionBase: base).
+ base notNil ifTrue:[
+ textDiffToolHolder value isDiff3 ifFalse:[
+ textDiffToolHolder value: self textDiff3Tool.
+ ].
+ ] ifFalse:[
+ textDiffToolHolder value isDiff2 ifFalse:[
+ textDiffToolHolder value: self textDiff2Tool.
+ ].
+ ]
+
+ "Modified: / 29-06-2011 / 08:10:17 / Jan Vrany <enter your email here>"
+ "Created: / 16-03-2012 / 13:49:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
fileMenuSaveAsPatch
@@ -1484,6 +1636,16 @@
^specB ifNil:[nil] ifNotNil:[specB changeSet]
"Created: / 06-07-2011 / 11:36:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeSetBase
+
+ | specBase |
+
+ specBase := self changesetSpecBaseHolder value.
+ ^specBase ifNil:[nil] ifNotNil:[specBase changeSet]
+
+ "Created: / 16-03-2012 / 13:48:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!ChangeSetDiffTool::OpenDialog methodsFor:'aspects'!
@@ -1518,6 +1680,25 @@
changesetSpecBHolder := something.
!
+changesetSpecBaseHolder
+ "return/create the 'changesetSpecBHolder' value holder (automatically generated)"
+
+ changesetSpecBaseHolder isNil ifTrue:[
+ changesetSpecBaseHolder := ValueHolder new.
+ ].
+ ^ changesetSpecBaseHolder
+
+ "Created: / 16-03-2012 / 13:48:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changesetSpecBaseHolder:something
+ "set the 'changesetSpecBHolder' value holder (automatically generated)"
+
+ changesetSpecBaseHolder := something.
+
+ "Created: / 16-03-2012 / 13:49:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
doAcceptEnabled
<resource: #uiAspect>
@@ -1545,5 +1726,5 @@
!
version_SVN
- ^ '$Id: Tools__ChangeSetDiffTool.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+ ^ '$Id: Tools__ChangeSetDiffTool.st 7925 2012-03-16 17:08:17Z vranyj1 $'
! !