Text/ChangeSet diff improved jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Mon, 19 Mar 2012 15:32:45 +0000
branchjv
changeset 12198 414e7b69ecda
parent 12197 1b0092bafad9
child 12199 de37e205701f
Text/ChangeSet diff improved
ColorInspectorView.st
FileBrowserV3.st
Make.proto
Make.spec
SettingsDialog.st
Tools__ChangeSetDiffList.st
Tools__ChangeSetDiffTool.st
Tools__CodeView2.st
Tools__DiffCodeView2.st
Tools__TextDiff3Tool.st
Tools__TextDiffTool.st
Tools__TextMergeInfo.st
abbrev.stc
bc.mak
libInit.cc
libtool.rc
--- a/ColorInspectorView.st	Mon Mar 19 10:03:58 2012 +0000
+++ b/ColorInspectorView.st	Mon Mar 19 15:32:45 2012 +0000
@@ -130,5 +130,5 @@
 !
 
 version_SVN
-    ^ '$Id: ColorInspectorView.st 7896 2012-02-15 21:30:13Z vranyj1 $'
+    ^ '$Id: ColorInspectorView.st 7944 2012-03-19 15:32:45Z vranyj1 $'
 ! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FileBrowserV3.st	Mon Mar 19 15:32:45 2012 +0000
@@ -0,0 +1,41 @@
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+"{ Package: 'stx:libtool' }"
+
+FileBrowserV2 subclass:#FileBrowserV3
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Tools-File'
+!
+
+!FileBrowserV3 class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+! !
+
+!FileBrowserV3 class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: FileBrowserV3.st 7944 2012-03-19 15:32:45Z vranyj1 $'
+! !
--- a/Make.proto	Mon Mar 19 10:03:58 2012 +0000
+++ b/Make.proto	Mon Mar 19 15:32:45 2012 +0000
@@ -1,7 +1,7 @@
 # $Header$
 #
 # DO NOT EDIT
-# automagically generated from the projectDefinition: stx_libtool at 2012-03-17 20:04:25.839.
+# automagically generated from the projectDefinition: stx_libtool at 2012-03-19 15:32:38.865.
 #
 # Warning: once you modify this file, do not rerun
 # stmkmp or projectDefinition-build again - otherwise, your changes are lost.
@@ -221,6 +221,7 @@
 $(OUTDIR)Tools__TagList.$(O) Tools__TagList.$(H): Tools__TagList.st $(INCLUDE_TOP)/stx/libbasic2/List.$(H) $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__TagsBrowser.$(O) Tools__TagsBrowser.$(H): Tools__TagsBrowser.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/SelectionInListModelView.$(H) $(INCLUDE_TOP)/stx/libwidg2/ListModelView.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(STCHDR)
 $(OUTDIR)Tools__TextDiffTool.$(O) Tools__TextDiffTool.$(H): Tools__TextDiffTool.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__TextMergeInfo.$(O) Tools__TextMergeInfo.$(H): Tools__TextMergeInfo.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__WebBrowserPage.$(O) Tools__WebBrowserPage.$(H): Tools__WebBrowserPage.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)VersionDiffBrowser.$(O) VersionDiffBrowser.$(H): VersionDiffBrowser.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)ViewWithAcceptAndCancelBar.$(O) ViewWithAcceptAndCancelBar.$(H): ViewWithAcceptAndCancelBar.st $(INCLUDE_TOP)/stx/libview/SimpleView.$(H) $(INCLUDE_TOP)/stx/libview/DisplaySurface.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsMedium.$(H) $(INCLUDE_TOP)/stx/libview/DeviceGraphicsContext.$(H) $(INCLUDE_TOP)/stx/libview/GraphicsContext.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg/Button.$(H) $(INCLUDE_TOP)/stx/libwidg/Label.$(H) $(INCLUDE_TOP)/stx/libview/View.$(H) $(STCHDR)
@@ -260,7 +261,7 @@
 $(OUTDIR)Tools__StringSearchToolForTextView.$(O) Tools__StringSearchToolForTextView.$(H): Tools__StringSearchToolForTextView.st $(INCLUDE_TOP)/stx/libtool/Tools__StringSearchTool.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__TestRunnerEmbedded.$(O) Tools__TestRunnerEmbedded.$(H): Tools__TestRunnerEmbedded.st $(INCLUDE_TOP)/stx/libtool/Tools__AbstractTestRunner.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__TextDiff2Tool.$(O) Tools__TextDiff2Tool.$(H): Tools__TextDiff2Tool.st $(INCLUDE_TOP)/stx/libtool/Tools__TextDiffTool.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Tools__TextDiff3Tool.$(O) Tools__TextDiff3Tool.$(H): Tools__TextDiff3Tool.st $(INCLUDE_TOP)/stx/libtool/Tools__TextDiffTool.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__TextDiff3Tool.$(O) Tools__TextDiff3Tool.$(H): Tools__TextDiff3Tool.st $(INCLUDE_TOP)/stx/libtool/Tools__TextDiffTool.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__CodeViewService.$(H) $(STCHDR)
 $(OUTDIR)Tools__VisualProfilerCanvas.$(O) Tools__VisualProfilerCanvas.$(H): Tools__VisualProfilerCanvas.st $(INCLUDE_TOP)/stx/libtool/Tools__NavigatorModel.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)WorkspaceApplication.$(O) WorkspaceApplication.$(H): WorkspaceApplication.st $(INCLUDE_TOP)/stx/libtool/MultiViewToolApplication.$(H) $(INCLUDE_TOP)/stx/libview2/ToolApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)BookmarkAddMenuBuilder.$(O) BookmarkAddMenuBuilder.$(H): BookmarkAddMenuBuilder.st $(INCLUDE_TOP)/stx/libtool/BookmarkMenuBuilder.$(H) $(INCLUDE_TOP)/stx/libtool/BookmarkVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -271,6 +272,7 @@
 $(OUTDIR)DirectoryDifferenceViewApplication.$(O) DirectoryDifferenceViewApplication.$(H): DirectoryDifferenceViewApplication.st $(INCLUDE_TOP)/stx/libtool/AbstractFileFinderApplicationComponent.$(H) $(INCLUDE_TOP)/stx/libtool/AbstractFileApplicationNoteBookComponent.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)DirectoryTreeBrowser.$(O) DirectoryTreeBrowser.$(H): DirectoryTreeBrowser.st $(INCLUDE_TOP)/stx/libtool/AbstractDirectoryBrowser.$(H) $(INCLUDE_TOP)/stx/libtool/AbstractFileBrowser.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalFileList.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalList.$(H) $(INCLUDE_TOP)/stx/libbasic2/List.$(H) $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(STCHDR)
 $(OUTDIR)FileBasedSourceCodeManagementSettingsAppl.$(O) FileBasedSourceCodeManagementSettingsAppl.$(H): FileBasedSourceCodeManagementSettingsAppl.st $(INCLUDE_TOP)/stx/libtool/AbstractSourceCodeManagementSettingsAppl.$(H) $(INCLUDE_TOP)/stx/libtool/AbstractSettingsApplication.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)FileBrowserV3.$(O) FileBrowserV3.$(H): FileBrowserV3.st $(INCLUDE_TOP)/stx/libtool/FileBrowserV2.$(H) $(INCLUDE_TOP)/stx/libtool/AbstractFileBrowser.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)FindFileApplication.$(O) FindFileApplication.$(H): FindFileApplication.st $(INCLUDE_TOP)/stx/libtool/AbstractFileFinderApplicationComponent.$(H) $(INCLUDE_TOP)/stx/libtool/AbstractFileApplicationNoteBookComponent.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)MercurialSourceCodeManagementSettingsAppl.$(O) MercurialSourceCodeManagementSettingsAppl.$(H): MercurialSourceCodeManagementSettingsAppl.st $(INCLUDE_TOP)/stx/libtool/AbstractSourceCodeManagementSettingsAppl.$(H) $(INCLUDE_TOP)/stx/libtool/AbstractSettingsApplication.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)PerforceSourceCodeManagementSettingsAppl.$(O) PerforceSourceCodeManagementSettingsAppl.$(H): PerforceSourceCodeManagementSettingsAppl.st $(INCLUDE_TOP)/stx/libtool/AbstractSourceCodeManagementSettingsAppl.$(H) $(INCLUDE_TOP)/stx/libtool/AbstractSettingsApplication.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec	Mon Mar 19 10:03:58 2012 +0000
+++ b/Make.spec	Mon Mar 19 15:32:45 2012 +0000
@@ -1,7 +1,7 @@
 # $Header$
 #
 # DO NOT EDIT
-# automagically generated from the projectDefinition: stx_libtool at 2012-03-17 20:04:21.548.
+# automagically generated from the projectDefinition: stx_libtool at 2012-03-19 15:32:36.747.
 #
 # Warning: once you modify this file, do not rerun
 # stmkmp or projectDefinition-build again - otherwise, your changes are lost.
@@ -219,6 +219,8 @@
 	Diff3Hunk \
 	Diff3InclusiveVisitor \
 	Diff3ExclusiveVisitor \
+	Tools::TextMergeInfo \
+	FileBrowserV3 \
 
 
 
@@ -393,6 +395,8 @@
     $(OUTDIR)Diff3Hunk.$(O) \
     $(OUTDIR)Diff3InclusiveVisitor.$(O) \
     $(OUTDIR)Diff3ExclusiveVisitor.$(O) \
+    $(OUTDIR)Tools__TextMergeInfo.$(O) \
+    $(OUTDIR)FileBrowserV3.$(O) \
     $(OUTDIR)extensions.$(O) \
 
 
--- a/SettingsDialog.st	Mon Mar 19 10:03:58 2012 +0000
+++ b/SettingsDialog.st	Mon Mar 19 15:32:45 2012 +0000
@@ -1705,6 +1705,7 @@
 reloadSettingsFile: filename 
 
     filename asFilename fileIn.
+    UserPreferences current at: #settingsFilename put: filename asFilename pathName
 
     "Created: / 17-02-2012 / 10:27:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
@@ -1734,7 +1735,7 @@
 !SettingsDialog class methodsFor:'documentation'!
 
 version
-    ^ '$Id: SettingsDialog.st 7911 2012-02-22 09:55:48Z vranyj1 $'
+    ^ '$Id: SettingsDialog.st 7944 2012-03-19 15:32:45Z vranyj1 $'
 !
 
 version_CVS
@@ -1742,8 +1743,7 @@
 !
 
 version_SVN
-    ^ '$Id: SettingsDialog.st 7911 2012-02-22 09:55:48Z vranyj1 $'
+    ^ '$Id: SettingsDialog.st 7944 2012-03-19 15:32:45Z vranyj1 $'
 ! !
 
 SettingsDialog initialize!
-
--- a/Tools__ChangeSetDiffList.st	Mon Mar 19 10:03:58 2012 +0000
+++ b/Tools__ChangeSetDiffList.st	Mon Mar 19 15:32:45 2012 +0000
@@ -341,9 +341,15 @@
 
 displayOn: aGC x: x y: y opaque: opaque
 
-    | icon  |
-    (icon := self icon) ifNotNil:[icon displayOn: aGC x: x y: y - icon height opaque: opaque].
-    self label displayOn: aGC x: x + 16 y:y opaque: opaque
+    | icon oldPaint  |
+    ((application topApplication askFor:#isMerge) and:[model isMerged not]) ifTrue:[
+        oldPaint := aGC paint.
+        aGC paint: TextDiff3Tool colorConflict.
+        '!!' displayOn: aGC x: x  y:y opaque: opaque.
+        aGC paint: oldPaint.
+    ].
+    (icon := self icon) ifNotNil:[icon displayOn: aGC x: x + 10 y: y - icon height opaque: opaque].
+    self label displayOn: aGC x: x + 10 + 16 y:y opaque: opaque
 
     "Created: / 24-11-2009 / 18:21:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
@@ -355,5 +361,5 @@
 !
 
 version_SVN
-    ^ '$Id: Tools__ChangeSetDiffList.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+    ^ '$Id: Tools__ChangeSetDiffList.st 7944 2012-03-19 15:32:45Z vranyj1 $'
 ! !
--- a/Tools__ChangeSetDiffTool.st	Mon Mar 19 10:03:58 2012 +0000
+++ b/Tools__ChangeSetDiffTool.st	Mon Mar 19 15:32:45 2012 +0000
@@ -32,7 +32,7 @@
 		firstColSelectionHolder navigatorPanelSpecHolder diffMenuHolder
 		diffsetHolderPrivate selectionHolder versionATextHolder
 		versionBTextHolder versionBaseTextHolder textDiffToolHolder
-		textDiffToolWindowSpecHolder'
+		textDiffToolWindowSpecHolder mergeHolder mergeDataHolder'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-Diff'
@@ -761,6 +761,20 @@
 
 !ChangeSetDiffTool methodsFor:'accessing'!
 
+beDiff3Tool
+
+    self mergeHolder value: false
+
+    "Created: / 17-03-2012 / 12:23:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+beMergeTool
+
+    self mergeHolder value: true
+
+    "Created: / 17-03-2012 / 12:23:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 beSingleColumn
 
     self navigatorPanelSpecHolder value: #oneColumnNavigatorSpec
@@ -882,7 +896,8 @@
         labelAHolder: self versionALabelHolder;
          textAHolder: self versionATextHolder;
 
-
+        mergeHolder: self mergeHolder;
+        mergeDataHolder: self mergeDataHolder;
 
         yourself
 
@@ -984,6 +999,38 @@
     "Modified: / 18-11-2011 / 14:57:47 / cg"
 !
 
+mergeDataHolder
+    "return/create the 'mergeDataHolder' value holder (automatically generated)"
+
+    mergeDataHolder isNil ifTrue:[
+        mergeDataHolder := ValueHolder new.
+    ].
+    ^ mergeDataHolder
+!
+
+mergeDataHolder:something
+    "set the 'mergeDataHolder' value holder (automatically generated)"
+
+    mergeDataHolder := something.
+!
+
+mergeHolder
+    "return/create the 'mergeHolder' value holder (automatically generated)"
+
+    mergeHolder isNil ifTrue:[
+        mergeHolder := ValueHolder with: false.
+    ].
+    ^ mergeHolder
+
+    "Modified: / 19-03-2012 / 14:09:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mergeHolder:something
+    "set the 'mergeHolder' value holder (automatically generated)"
+
+    mergeHolder := something.
+!
+
 nameAspect
 
     ^(AspectAdaptor forAspect: #name)
@@ -1153,22 +1200,34 @@
 
 selectionChanged
 
-    | diffItem |
+    | diffItem mergeData |
 
     diffItem := self theSingleSelectedObject.
     self singleSelectionHolder value: diffItem.
     diffItem isNil ifTrue:[^self].
 
+    self isMerge ifTrue:[
+        self mergeDataHolder setValue: (mergeData := diffItem mergeInfo).
+    ].
     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
+    self versionBaseTextHolder changed: #value.
+    self isMerge ifTrue:[
+        self mergeDataHolder changed: #value.
+        "Maybe, there was no merge data beforehand. In that case,
+         update"
+        mergeData isNil ifTrue:[
+            diffItem mergeInfo: (self mergeDataHolder value).
+        ]
+    ]
 
     "Created: / 22-10-2008 / 11:29:24 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 16-03-2012 / 15:19:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-03-2012 / 14:59:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 update: aspect with: param from: sender
@@ -1402,6 +1461,15 @@
     "Created: / 05-12-2009 / 11:04:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!ChangeSetDiffTool methodsFor:'testing'!
+
+isMerge
+
+    ^self mergeHolder value
+
+    "Created: / 19-03-2012 / 11:53:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !ChangeSetDiffTool::OpenDialog class methodsFor:'image specs'!
 
 versionA24x24
@@ -1781,5 +1849,5 @@
 !
 
 version_SVN
-    ^ '$Id: Tools__ChangeSetDiffTool.st 7938 2012-03-17 10:21:50Z vranyj1 $'
+    ^ '$Id: Tools__ChangeSetDiffTool.st 7944 2012-03-19 15:32:45Z vranyj1 $'
 ! !
--- a/Tools__CodeView2.st	Mon Mar 19 10:03:58 2012 +0000
+++ b/Tools__CodeView2.st	Mon Mar 19 15:32:45 2012 +0000
@@ -687,6 +687,17 @@
 
     "Created: / 06-04-2010 / 14:13:14 / Jakub <zelenja7@fel.cvut.cz>"
     "Modified: / 23-06-2010 / 17:01:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+unsynchronizeWith: aCodeView
+
+    self assert: aCodeView ~= self.
+    (synchronizedCodeViews includes: aCodeView) ifFalse:[^self].    
+    synchronizedCodeViews := synchronizedCodeViews copyWithout: aCodeView.
+
+    "Created: / 06-04-2010 / 14:13:14 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 23-06-2010 / 17:01:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 19-03-2012 / 14:25:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !CodeView2 methodsFor:'accessing - code component'!
@@ -2548,6 +2559,16 @@
     "Created: / 07-10-2011 / 18:42:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!CodeView2::TextView methodsFor:'accessing-look'!
+
+lineSpacing
+
+    ^lineSpacing
+
+    "Modified: / 22-05-1996 / 12:22:29 / cg"
+    "Created: / 19-03-2012 / 13:22:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !CodeView2::TextView methodsFor:'accessing-state'!
 
 beUnmodified
@@ -3297,7 +3318,7 @@
 !CodeView2 class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Tools__CodeView2.st 7940 2012-03-17 20:05:16Z vranyj1 $'
+    ^ '$Id: Tools__CodeView2.st 7944 2012-03-19 15:32:45Z vranyj1 $'
 !
 
 version_CVS
@@ -3305,7 +3326,7 @@
 !
 
 version_SVN
-    ^ '$Id: Tools__CodeView2.st 7940 2012-03-17 20:05:16Z vranyj1 $'
+    ^ '$Id: Tools__CodeView2.st 7944 2012-03-19 15:32:45Z vranyj1 $'
 ! !
 
 CodeView2 initialize!
--- a/Tools__DiffCodeView2.st	Mon Mar 19 10:03:58 2012 +0000
+++ b/Tools__DiffCodeView2.st	Mon Mar 19 15:32:45 2012 +0000
@@ -89,6 +89,24 @@
     textViews do:[:each|each languageHolder: aValueModel].
 
     "Created: / 19-07-2011 / 12:55:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+synchronizeWith: aCodeView
+
+    textViews do:[:each|each synchronizeWith: aCodeView].
+
+    "Created: / 19-03-2012 / 14:26:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+textViews
+    ^ textViews
+!
+
+unsynchronizeWith: aCodeView
+
+    textViews do:[:each|each unsynchronizeWith: aCodeView].
+
+    "Created: / 19-03-2012 / 14:26:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !DiffCodeView2 methodsFor:'initialization'!
@@ -117,5 +135,5 @@
 !
 
 version_SVN
-    ^ '$Id: Tools__DiffCodeView2.st 7925 2012-03-16 17:08:17Z vranyj1 $'
+    ^ '$Id: Tools__DiffCodeView2.st 7944 2012-03-19 15:32:45Z vranyj1 $'
 ! !
--- a/Tools__TextDiff3Tool.st	Mon Mar 19 10:03:58 2012 +0000
+++ b/Tools__TextDiff3Tool.st	Mon Mar 19 15:32:45 2012 +0000
@@ -14,12 +14,20 @@
 "{ NameSpace: Tools }"
 
 TextDiffTool subclass:#TextDiff3Tool
-	instanceVariableNames:'labelMergedHolder textMergedHolder mergeHolder'
+	instanceVariableNames:'labelMergedHolder textMergedHolder mergeHolder mergeDataHolder
+		mergeView'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-Diff'
 !
 
+CodeViewService subclass:#MergeService
+	instanceVariableNames:'dataHolder data'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:TextDiff3Tool
+!
+
 !TextDiff3Tool class methodsFor:'documentation'!
 
 copyright
@@ -68,6 +76,43 @@
 "
 ! !
 
+!TextDiff3Tool class methodsFor:'defaults - colors'!
+
+colorA
+
+    ^(Color red:54.1176470588235 green:75.2941176470588 blue:28.6274509803922) lighter
+
+    "Created: / 19-03-2012 / 13:11:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+colorB
+
+    ^(Color red:96.078431372549 green:73.7254901960784 blue:0.0) lighter
+
+    "Created: / 19-03-2012 / 13:11:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+colorBase
+
+    ^(Color red:5.88235294117647 green:58.8235294117647 blue:80.3921568627451) lighter
+
+    "Created: / 19-03-2012 / 13:12:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+colorConflict
+
+    ^Color red
+
+    "Created: / 19-03-2012 / 13:12:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+colorMerged
+
+    ^(Color red:83.921568627451 green:17.2549019607843 blue:85.0980392156863) lighter
+
+    "Created: / 19-03-2012 / 13:11:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !TextDiff3Tool class methodsFor:'interface specs'!
 
 diff3Spec
@@ -193,6 +238,7 @@
                           hasVerticalScrollBar: true
                           hasKeyboardFocusInitially: false
                           viewClassName: 'Tools::CodeView2'
+                          postBuildCallback: postBuildMergeView:
                         )
                        )
                      
@@ -207,8 +253,6 @@
          
         )
       )
-
-    "Modified: / 17-03-2012 / 12:37:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !TextDiff3Tool class methodsFor:'interface specs - labels'!
@@ -329,8 +373,12 @@
         #textAHolder
         #textBHolder
         #textCHolder
+
+        #mergeHolder
+        #mergeDataHolder
       ).
 
+    "Modified: / 19-03-2012 / 11:54:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !TextDiff3Tool methodsFor:'accessing'!
@@ -380,6 +428,35 @@
 
 !TextDiff3Tool methodsFor:'aspects'!
 
+mergeDataHolder
+    "return/create the 'mergeDataHolder' value holder (automatically generated)"
+
+    mergeDataHolder isNil ifTrue:[
+        mergeDataHolder := ValueHolder new.
+        mergeDataHolder addDependent:self.
+    ].
+    ^ mergeDataHolder
+!
+
+mergeDataHolder:something
+    "set the 'mergeDataHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    mergeDataHolder notNil ifTrue:[
+        oldValue := mergeDataHolder value.
+        mergeDataHolder removeDependent:self.
+    ].
+    mergeDataHolder := something.
+    mergeDataHolder notNil ifTrue:[
+        mergeDataHolder addDependent:self.
+    ].
+    newValue := mergeDataHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:mergeDataHolder.
+    ].
+!
+
 mergeHolder
     "return/create the 'mergeHolder' value holder (automatically generated)"
 
@@ -454,23 +531,60 @@
 
     changedObject == mergeHolder ifTrue:[
         self updateViews.
+        self updateMergeData.
+        self updateCodeViewSynchronization.
          ^ self.
     ].
     super update:something with:aParameter from:changedObject
 
-    "Modified (format): / 16-03-2012 / 13:24:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-03-2012 / 14:29:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 updateAfterAorBorCChanged
 
     (textAChanged & textBChanged & textCChanged) ifTrue:[
         textAChanged := textBChanged := textCChanged := false.
-        self updateViews
+        self updateViews.
+        self isMerge ifTrue:[
+            self updateMergeData.
+        ].
     ].
 
     "Created: / 16-03-2012 / 15:26:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+updateCodeViewSynchronization
+
+    diffView isNil ifTrue:[ ^ self ].
+    mergeView isNil ifTrue:[ ^ self ].
+    self isMerge ifTrue:[
+        diffView synchronizeWith: mergeView. 
+        diffView textViews do:[:e|
+            mergeView synchronizeWith: e.
+        ]
+    ] ifFalse:[
+        diffView unsynchronizeWith: mergeView.
+        diffView textViews do:[:e|
+            mergeView unsynchronizeWith: e.
+        ]
+
+    ]
+
+    "Created: / 19-03-2012 / 14:24:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateMergeData
+    | data |
+
+    (data := self mergeDataHolder value) isNil ifTrue:[
+        data := TextMergeInfo new.
+        data text1: self textC text2: self textA text3: self textB.
+        self mergeDataHolder value: data.
+    ].
+
+    "Created: / 19-03-2012 / 11:52:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 updateViews
 
     self mergeHolder value ifTrue:[
@@ -483,7 +597,7 @@
         diffView
             text1: self textCHolder value
             text2: self textAHolder value
-            text3: self textBHolder value
+            text3: self textBHolder value.
     ]
 
     "Created: / 16-03-2012 / 13:24:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -507,10 +621,23 @@
                 text2: self textAHolder value
                 text3: self textBHolder value
 
-        ]
+        ].
+        self updateCodeViewSynchronization.
     ].
 
     "Created: / 16-03-2012 / 13:31:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+postBuildMergeView:aCodeView2
+
+    mergeView := aCodeView2.
+    mergeView registerService: 
+                (MergeService new
+                    dataHolder: self mergeDataHolder;
+                    yourself).
+    self updateCodeViewSynchronization.
+
+    "Created: / 19-03-2012 / 11:47:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !TextDiff3Tool methodsFor:'testing'!
@@ -519,10 +646,172 @@
     ^true
 
     "Created: / 16-03-2012 / 15:21:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isMerge
+
+    ^self mergeHolder value
+
+    "Created: / 19-03-2012 / 11:53:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff3Tool::MergeService class methodsFor:'accessing'!
+
+label
+    "Answers short label - for UI"
+
+    ^'Merge Support Service'
+
+    "Created: / 19-03-2012 / 11:48:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff3Tool::MergeService class methodsFor:'testing'!
+
+isAvailable
+
+    ^false "/Should be installed explicitly"
+
+    "Created: / 19-03-2012 / 11:45:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff3Tool::MergeService methodsFor:'accessing'!
+
+infoAtLine: lineNr
+
+    ^(lineNr between: 1 and: data listInfos size) ifTrue:[
+        data listInfos at: lineNr
+    ] ifFalse:[
+        nil
+    ]
+
+    "Created: / 19-03-2012 / 13:15:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff3Tool::MergeService methodsFor:'aspects'!
+
+dataHolder
+    "return/create the 'dataHolder' value holder (automatically generated)"
+
+    dataHolder isNil ifTrue:[
+        dataHolder := ValueHolder new.
+        dataHolder addDependent:self.
+    ].
+    ^ dataHolder
+!
+
+dataHolder:something
+    "set the 'dataHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    dataHolder notNil ifTrue:[
+        oldValue := dataHolder value.
+        dataHolder removeDependent:self.
+    ].
+    dataHolder := something.
+    dataHolder notNil ifTrue:[
+        dataHolder addDependent:self.
+    ].
+    newValue := dataHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:dataHolder.
+    ].
+! !
+
+!TextDiff3Tool::MergeService methodsFor:'change & update'!
+
+dataChanged
+    "Merge data has changes, update text view"
+    | changed |
+
+    textView isNil ifTrue:[ 
+        ^ self  "/not yet registered
+    ]. 
+    data isNil ifTrue:[
+        textView list: #().
+        ^self.
+    ].
+
+    "/Collect conflicted lines"
+    changed := data listInfos 
+                select:[:info|info isConflict]
+                thenCollect:[:info|info line].
+
+    textView changedLines: changed.
+    textView diffMode: true.
+    textView list: data list.
+
+    "Created: / 19-03-2012 / 12:41:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+dataHolderChanged
+
+    data notNil ifTrue:[
+        data removeDependent: self.
+    ].
+    data := dataHolder value.
+    data notNil ifTrue:[
+        data addDependent: self.
+    ].
+    self dataChanged
+
+    "Created: / 19-03-2012 / 11:56:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+update:something with:aParameter from:changedObject
+    "Invoked when an object that I depend upon sends a change notification."
+
+    "stub code automatically generated - please change as required"
+
+    changedObject == dataHolder ifTrue:[
+         self dataHolderChanged.
+         ^ self.
+    ].
+    changedObject == data ifTrue:[
+         self dataChanged.
+         ^ self.
+    ].
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 19-03-2012 / 12:41:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff3Tool::MergeService methodsFor:'drawing'!
+
+drawLine:lineNo in:view atX:x y:y width:w height:h from:startCol to:endColOrNil with:fg and:bg 
+    "Called by both gutterView and textView (well, not yet) to
+     allow services to draw custom things on text view.
+     Ask JV what the args means if unsure (I'm lazy to document
+     them, now it is just an experiment...)"
+
+    | info |
+
+    view == gutterView ifFalse:[ ^ self ].
+    info := self infoAtLine: lineNo.
+    info isNil ifTrue:[ ^self ].
+
+    view fillRectangleX:x y:y - h 
+            width:6 height:h + textView lineSpacing + 3"Magic constant to make it look nicer"
+            color: info color.
+
+    "Created: / 19-03-2012 / 13:15:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff3Tool::MergeService methodsFor:'registering'!
+
+registerIn: aCodeView
+
+    "Installs myself in aCodeView"
+
+    super registerIn: aCodeView.
+    self dataChanged.
+
+    "Modified: / 17-06-2011 / 13:07:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 19-03-2012 / 12:52:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !TextDiff3Tool class methodsFor:'documentation'!
 
 version_SVN
-    ^ '$Id: Tools__TextDiff3Tool.st 7939 2012-03-17 13:13:35Z vranyj1 $'
+    ^ '$Id: Tools__TextDiff3Tool.st 7944 2012-03-19 15:32:45Z vranyj1 $'
 ! !
--- a/Tools__TextDiffTool.st	Mon Mar 19 10:03:58 2012 +0000
+++ b/Tools__TextDiffTool.st	Mon Mar 19 15:32:45 2012 +0000
@@ -396,6 +396,13 @@
     "Created: / 16-03-2012 / 13:05:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+textA
+
+    ^self textAHolder value
+
+    "Created: / 19-03-2012 / 12:24:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 textA: aString
 
     ^self textAHolder value: aString
@@ -403,6 +410,13 @@
     "Created: / 30-08-2011 / 09:43:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+textB
+
+    ^self textBHolder value
+
+    "Created: / 19-03-2012 / 12:24:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 textB: aString
 
     ^self textBHolder value: aString
@@ -410,6 +424,13 @@
     "Created: / 30-08-2011 / 09:43:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+textC
+
+    ^self textCHolder value
+
+    "Created: / 19-03-2012 / 12:24:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 textC: aString
 
     ^self textCHolder value: aString
@@ -772,10 +793,16 @@
     ^false
 
     "Created: / 16-03-2012 / 15:21:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isMerge
+    ^false
+
+    "Created: / 19-03-2012 / 11:53:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !TextDiffTool class methodsFor:'documentation'!
 
 version_SVN
-    ^ '$Id: Tools__TextDiffTool.st 7939 2012-03-17 13:13:35Z vranyj1 $'
+    ^ '$Id: Tools__TextDiffTool.st 7944 2012-03-19 15:32:45Z vranyj1 $'
 ! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__TextMergeInfo.st	Mon Mar 19 15:32:45 2012 +0000
@@ -0,0 +1,204 @@
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+"{ Package: 'stx:libtool' }"
+
+"{ NameSpace: Tools }"
+
+Object subclass:#TextMergeInfo
+	instanceVariableNames:'list listInfos'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Diff'
+!
+
+Object subclass:#LineInfo
+	instanceVariableNames:'line resolution conflict'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:TextMergeInfo
+!
+
+!TextMergeInfo class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2006 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+! !
+
+!TextMergeInfo methodsFor:'accessing'!
+
+list
+    ^ list
+!
+
+listInfos
+    ^ listInfos
+!
+
+text
+    ^list asString
+
+    "Created: / 19-03-2012 / 14:58:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextMergeInfo methodsFor:'initialization'!
+
+text1: text1 text2: text2 text3: text3
+
+    | t1c t2c  t3c merges lnr |
+
+    list := StringCollection new.
+    listInfos := OrderedCollection new.
+
+    text1 isNil ifTrue:[ ^self ].
+    text2 isNil ifTrue:[ ^self ].
+    text2 isNil ifTrue:[ ^self ].
+
+
+    t1c := text1 asStringCollection.
+    t2c := text2 asStringCollection.
+    t3c := text3 asStringCollection.
+
+
+    merges := Diff3 new
+                    file0: t1c; "/Base version
+                    file1: t2c; "/A
+                    file2: t3c; "/B
+                    merge.
+    lnr := 1.
+    merges do:[:merge|
+        merge key == #ok ifTrue:[
+            merge value do:[:line|
+                list add: line.
+                listInfos add: (LineInfo line: lnr resolution: #Merged ).
+                lnr := lnr + 1.
+            ].
+        ].
+        merge key == #conflict ifTrue:[
+            merge value length timesRepeat:[
+                list add:nil. "/no resolution now"
+                listInfos add: (LineInfo line: lnr resolution: #Conflict conflict: merge value).
+                lnr := lnr + 1.
+            ].
+        ].
+    ].
+
+    self changed: #value
+
+    "Created: / 19-03-2012 / 12:10:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextMergeInfo methodsFor:'testing'!
+
+isMerged
+
+    ^listInfos allSatisfy:[:info|info isMerged].
+
+    "Created: / 19-03-2012 / 15:09:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextMergeInfo::LineInfo class methodsFor:'accessing'!
+
+line:lineArg resolution:resolutionArg
+    ^self new line:lineArg resolution:resolutionArg conflict:nil
+
+    "Created: / 19-03-2012 / 15:04:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+line:lineArg resolution:resolutionArg conflict:conflictArg 
+
+    ^self new line:lineArg resolution:resolutionArg conflict:conflictArg
+
+    "Modified: / 19-03-2012 / 15:07:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextMergeInfo::LineInfo methodsFor:'accessing'!
+
+color
+
+    self isMerged ifTrue:[ ^ Tools::TextDiff3Tool colorMerged ].
+    self isConflict ifTrue:[ ^ Tools::TextDiff3Tool colorConflict ].
+
+    "Created: / 19-03-2012 / 15:05:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+conflict
+    ^ conflict
+!
+
+line
+    ^ line
+!
+
+line:lineArg resolution:resolutionArg
+    self line:lineArg resolution:resolutionArg conflict:nil
+
+    "Created: / 19-03-2012 / 15:04:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+line:lineArg resolution:resolutionArg conflict:conflictArg 
+    line := lineArg.
+    resolution := resolutionArg.
+    conflict := conflictArg.
+!
+
+resolution
+    ^ resolution
+! !
+
+!TextMergeInfo::LineInfo methodsFor:'printing & storing'!
+
+printOn:aStream
+    "append a printed representation if the receiver to the argument, aStream"
+
+    self class nameWithoutPrefix printOn:aStream.
+    aStream space.
+    aStream nextPutAll:'line: '.
+    line printOn:aStream.
+    aStream space.
+    aStream nextPutAll:'resolution: '.
+    resolution printOn:aStream.
+
+    "Modified: / 19-03-2012 / 12:30:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 19-03-2012 / 15:05:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextMergeInfo::LineInfo methodsFor:'testing'!
+
+isConflict
+
+    ^resolution == #Conflict
+
+    "Created: / 19-03-2012 / 15:06:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isMerged
+
+    ^resolution == #Merged
+
+    "Created: / 19-03-2012 / 15:06:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextMergeInfo class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: Tools__TextMergeInfo.st 7944 2012-03-19 15:32:45Z vranyj1 $'
+! !
--- a/abbrev.stc	Mon Mar 19 10:03:58 2012 +0000
+++ b/abbrev.stc	Mon Mar 19 15:32:45 2012 +0000
@@ -214,3 +214,5 @@
 Diff3Hunk Diff3Hunk stx:libtool 'Collections-Sequenceable-Diff3' 0
 Diff3InclusiveVisitor Diff3InclusiveVisitor stx:libtool 'Collections-Sequenceable-Diff3' 0
 Diff3ExclusiveVisitor Diff3ExclusiveVisitor stx:libtool 'Collections-Sequenceable-Diff3' 0
+Tools::TextMergeInfo Tools__TextMergeInfo stx:libtool 'Interface-Diff' 0
+FileBrowserV3 FileBrowserV3 stx:libtool 'Interface-Tools-File' 3
--- a/bc.mak	Mon Mar 19 10:03:58 2012 +0000
+++ b/bc.mak	Mon Mar 19 15:32:45 2012 +0000
@@ -1,7 +1,7 @@
 # $Header$
 #
 # DO NOT EDIT
-# automagically generated from the projectDefinition: stx_libtool at 2012-03-17 20:04:28.228.
+# automagically generated from the projectDefinition: stx_libtool at 2012-03-19 15:32:39.991.
 #
 # Warning: once you modify this file, do not rerun
 # stmkmp or projectDefinition-build again - otherwise, your changes are lost.
@@ -163,6 +163,7 @@
 $(OUTDIR)Tools__TagList.$(O) Tools__TagList.$(H): Tools__TagList.st $(INCLUDE_TOP)\stx\libbasic2\List.$(H) $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__TagsBrowser.$(O) Tools__TagsBrowser.$(H): Tools__TagsBrowser.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\SelectionInListModelView.$(H) $(INCLUDE_TOP)\stx\libwidg2\ListModelView.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(STCHDR)
 $(OUTDIR)Tools__TextDiffTool.$(O) Tools__TextDiffTool.$(H): Tools__TextDiffTool.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__TextMergeInfo.$(O) Tools__TextMergeInfo.$(H): Tools__TextMergeInfo.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__WebBrowserPage.$(O) Tools__WebBrowserPage.$(H): Tools__WebBrowserPage.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)VersionDiffBrowser.$(O) VersionDiffBrowser.$(H): VersionDiffBrowser.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)ViewWithAcceptAndCancelBar.$(O) ViewWithAcceptAndCancelBar.$(H): ViewWithAcceptAndCancelBar.st $(INCLUDE_TOP)\stx\libview\SimpleView.$(H) $(INCLUDE_TOP)\stx\libview\DisplaySurface.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsMedium.$(H) $(INCLUDE_TOP)\stx\libview\DeviceGraphicsContext.$(H) $(INCLUDE_TOP)\stx\libview\GraphicsContext.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg\Button.$(H) $(INCLUDE_TOP)\stx\libwidg\Label.$(H) $(INCLUDE_TOP)\stx\libview\View.$(H) $(STCHDR)
@@ -202,7 +203,7 @@
 $(OUTDIR)Tools__StringSearchToolForTextView.$(O) Tools__StringSearchToolForTextView.$(H): Tools__StringSearchToolForTextView.st $(INCLUDE_TOP)\stx\libtool\Tools__StringSearchTool.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__TestRunnerEmbedded.$(O) Tools__TestRunnerEmbedded.$(H): Tools__TestRunnerEmbedded.st $(INCLUDE_TOP)\stx\libtool\Tools__AbstractTestRunner.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__TextDiff2Tool.$(O) Tools__TextDiff2Tool.$(H): Tools__TextDiff2Tool.st $(INCLUDE_TOP)\stx\libtool\Tools__TextDiffTool.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Tools__TextDiff3Tool.$(O) Tools__TextDiff3Tool.$(H): Tools__TextDiff3Tool.st $(INCLUDE_TOP)\stx\libtool\Tools__TextDiffTool.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__TextDiff3Tool.$(O) Tools__TextDiff3Tool.$(H): Tools__TextDiff3Tool.st $(INCLUDE_TOP)\stx\libtool\Tools__TextDiffTool.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__CodeViewService.$(H) $(STCHDR)
 $(OUTDIR)Tools__VisualProfilerCanvas.$(O) Tools__VisualProfilerCanvas.$(H): Tools__VisualProfilerCanvas.st $(INCLUDE_TOP)\stx\libtool\Tools__NavigatorModel.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
 $(OUTDIR)WorkspaceApplication.$(O) WorkspaceApplication.$(H): WorkspaceApplication.st $(INCLUDE_TOP)\stx\libtool\MultiViewToolApplication.$(H) $(INCLUDE_TOP)\stx\libview2\ToolApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)BookmarkAddMenuBuilder.$(O) BookmarkAddMenuBuilder.$(H): BookmarkAddMenuBuilder.st $(INCLUDE_TOP)\stx\libtool\BookmarkMenuBuilder.$(H) $(INCLUDE_TOP)\stx\libtool\BookmarkVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -213,6 +214,7 @@
 $(OUTDIR)DirectoryDifferenceViewApplication.$(O) DirectoryDifferenceViewApplication.$(H): DirectoryDifferenceViewApplication.st $(INCLUDE_TOP)\stx\libtool\AbstractFileFinderApplicationComponent.$(H) $(INCLUDE_TOP)\stx\libtool\AbstractFileApplicationNoteBookComponent.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)DirectoryTreeBrowser.$(O) DirectoryTreeBrowser.$(H): DirectoryTreeBrowser.st $(INCLUDE_TOP)\stx\libtool\AbstractDirectoryBrowser.$(H) $(INCLUDE_TOP)\stx\libtool\AbstractFileBrowser.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalFileList.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalList.$(H) $(INCLUDE_TOP)\stx\libbasic2\List.$(H) $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(STCHDR)
 $(OUTDIR)FileBasedSourceCodeManagementSettingsAppl.$(O) FileBasedSourceCodeManagementSettingsAppl.$(H): FileBasedSourceCodeManagementSettingsAppl.st $(INCLUDE_TOP)\stx\libtool\AbstractSourceCodeManagementSettingsAppl.$(H) $(INCLUDE_TOP)\stx\libtool\AbstractSettingsApplication.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)FileBrowserV3.$(O) FileBrowserV3.$(H): FileBrowserV3.st $(INCLUDE_TOP)\stx\libtool\FileBrowserV2.$(H) $(INCLUDE_TOP)\stx\libtool\AbstractFileBrowser.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)FindFileApplication.$(O) FindFileApplication.$(H): FindFileApplication.st $(INCLUDE_TOP)\stx\libtool\AbstractFileFinderApplicationComponent.$(H) $(INCLUDE_TOP)\stx\libtool\AbstractFileApplicationNoteBookComponent.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)MercurialSourceCodeManagementSettingsAppl.$(O) MercurialSourceCodeManagementSettingsAppl.$(H): MercurialSourceCodeManagementSettingsAppl.st $(INCLUDE_TOP)\stx\libtool\AbstractSourceCodeManagementSettingsAppl.$(H) $(INCLUDE_TOP)\stx\libtool\AbstractSettingsApplication.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)PerforceSourceCodeManagementSettingsAppl.$(O) PerforceSourceCodeManagementSettingsAppl.$(H): PerforceSourceCodeManagementSettingsAppl.st $(INCLUDE_TOP)\stx\libtool\AbstractSourceCodeManagementSettingsAppl.$(H) $(INCLUDE_TOP)\stx\libtool\AbstractSettingsApplication.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/libInit.cc	Mon Mar 19 10:03:58 2012 +0000
+++ b/libInit.cc	Mon Mar 19 15:32:45 2012 +0000
@@ -114,6 +114,7 @@
 _Tools__TagList_Init(pass,__pRT__,snd);
 _Tools__TagsBrowser_Init(pass,__pRT__,snd);
 _Tools__TextDiffTool_Init(pass,__pRT__,snd);
+_Tools__TextMergeInfo_Init(pass,__pRT__,snd);
 _Tools__WebBrowserPage_Init(pass,__pRT__,snd);
 _VersionDiffBrowser_Init(pass,__pRT__,snd);
 _ViewWithAcceptAndCancelBar_Init(pass,__pRT__,snd);
@@ -164,6 +165,7 @@
 _DirectoryDifferenceViewApplication_Init(pass,__pRT__,snd);
 _DirectoryTreeBrowser_Init(pass,__pRT__,snd);
 _FileBasedSourceCodeManagementSettingsAppl_Init(pass,__pRT__,snd);
+_FileBrowserV3_Init(pass,__pRT__,snd);
 _FindFileApplication_Init(pass,__pRT__,snd);
 _MercurialSourceCodeManagementSettingsAppl_Init(pass,__pRT__,snd);
 _PerforceSourceCodeManagementSettingsAppl_Init(pass,__pRT__,snd);
--- a/libtool.rc	Mon Mar 19 10:03:58 2012 +0000
+++ b/libtool.rc	Mon Mar 19 15:32:45 2012 +0000
@@ -3,7 +3,7 @@
 // automagically generated from the projectDefinition: stx_libtool.
 //
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION     6,2,7925,7925
+  FILEVERSION     6,2,7943,7943
   PRODUCTVERSION  6,2,1,1
 #if (__BORLANDC__)
   FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
@@ -20,12 +20,12 @@
     BEGIN
       VALUE "CompanyName", "eXept Software AG\0"
       VALUE "FileDescription", "Smalltalk/X Tools (LIB)\0"
-      VALUE "FileVersion", "6.2.7925.7925\0"
+      VALUE "FileVersion", "6.2.7943.7943\0"
       VALUE "InternalName", "stx:libtool\0"
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\0"
       VALUE "ProductName", "Smalltalk/X\0"
       VALUE "ProductVersion", "6.2.1.1\0"
-      VALUE "ProductDate", "Sat, 17 Mar 2012 20:05:27 GMT\0"
+      VALUE "ProductDate", "Mon, 19 Mar 2012 15:33:03 GMT\0"
     END
 
   END