Improvements in text merge tool jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 04 Apr 2012 01:09:32 +0100
branchjv
changeset 12218 8b88c30fb1e7
parent 12217 2c68d7169f97
child 12219 4a14ddbded15
Improvements in text merge tool
Diff3.st
FileBrowserV3.st
Make.proto
Make.spec
Tools__TextDiff3Tool.st
Tools__TextMergeInfo.st
bc.mak
libtool.rc
--- a/Diff3.st	Tue Apr 03 18:37:50 2012 +0100
+++ b/Diff3.st	Wed Apr 04 01:09:32 2012 +0100
@@ -144,6 +144,19 @@
 
 file2: anObject
 	file2 := anObject
+!
+
+fileAt: side
+    "Given a side (#left, #original or #right), returns the
+    corresponding file"
+
+    side == #left       ifTrue:[ ^ file0 ].
+    side == #original   ifTrue:[ ^ file1 ].
+    side == #right      ifTrue:[ ^ file2 ].
+
+    self error:'Invalid parameter, must be one of #left, #original or #right'.
+
+    "Created: / 03-04-2012 / 23:30:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !Diff3 methodsFor:'merging'!
@@ -476,6 +489,31 @@
 	^ aCollection copyFrom: offset to: offset + length - 1.
 !
 
+extractFrom: aCollection offset: lineOffset
+    "Given a text and lineOffset withing a chunk, return the line"
+    ^ aCollection at: offset + lineOffset - 1
+
+    "Created: / 04-04-2012 / 00:46:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+extractFromDiff: diff
+
+    ^self extractFrom: (diff fileAt: side)
+
+    "Created: / 03-04-2012 / 23:33:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+extractResolution
+
+    side == #left     ifTrue:[ ^ #MergedUsingA ].
+    side == #original ifTrue:[ ^ #MergedUsingBase ].
+    side == #right    ifTrue:[ ^ #MergedUsingB ].
+
+    self error:'Should not be reached'
+
+    "Created: / 04-04-2012 / 00:26:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 printOn: aStream
         aStream nextPut: $(.
         super printOn: aStream.
@@ -705,5 +743,5 @@
 !Diff3 class methodsFor:'documentation'!
 
 version_SVN
-    ^ '$Id: Diff3.st 7948 2012-03-21 01:52:35Z vranyj1 $'
+    ^ '$Id: Diff3.st 7965 2012-04-04 00:09:32Z vranyj1 $'
 ! !
--- a/FileBrowserV3.st	Tue Apr 03 18:37:50 2012 +0100
+++ b/FileBrowserV3.st	Wed Apr 04 01:09:32 2012 +0100
@@ -12,7 +12,7 @@
 "{ Package: 'stx:libtool' }"
 
 FileBrowserV2 subclass:#FileBrowserV3
-	instanceVariableNames:''
+	instanceVariableNames:'bookmarkBarVisibleHolder bookmarkHolder'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-Tools-File'
@@ -34,6 +34,427 @@
 "
 ! !
 
+!FileBrowserV3 class methodsFor:'help specs'!
+
+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:FileBrowserV3    
+    "
+
+    <resource: #help>
+
+    ^ super helpSpec addPairsFrom:#(
+
+#editFile
+''
+
+#fileIn
+''
+
+)
+! !
+
+!FileBrowserV3 class methodsFor:'interface specs'!
+
+windowSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:FileBrowserV3 andSelector:#windowSpec
+     FileBrowserV3 new openInterface:#windowSpec
+     FileBrowserV3 open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: FileBrowser
+          name: FileBrowser
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 800 600)
+          menu: mainMenu
+          icon: defaultIcon
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (ViewSpec
+              name: 'ToolbarBox'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              level: 0
+              visibilityChannel: toolBarVisibleHolder
+              component: 
+             (SpecCollection
+                collection: (
+                 (ActionButtonSpec
+                    label: 'hideToolBarIcon'
+                    name: 'HideToolBarButton'
+                    layout: (LayoutFrame 0 0 0 0 13 0 40 0)
+                    activeHelpKey: hideToolBar
+                    hasCharacterOrientedLabel: false
+                    translateLabel: true
+                    model: hideToolbar
+                    postBuildCallback: hideToolBarButtonCreated:
+                  )
+                 (MenuPanelSpec
+                    name: 'ToolBar'
+                    layout: (LayoutFrame 13 0 0 0 0 1 40 0)
+                    level: 1
+                    menu: toolBarMainMenu
+                    textDefault: true
+                  )
+                 )
+               
+              )
+            )
+           (ViewSpec
+              name: 'BookmarkBar'
+              layout: (LayoutFrame 0 0 40 0 0 1 66 0)
+              visibilityChannel: bookmarkBarVisibleHolder
+              component: 
+             (SpecCollection
+                collection: (
+                 (ActionButtonSpec
+                    label: 'hideToolBarIcon'
+                    name: 'Button1'
+                    layout: (LayoutFrame 0 0 0 0 13 0 0 1)
+                    activeHelpKey: hideToolBar
+                    hasCharacterOrientedLabel: false
+                    translateLabel: true
+                    model: hideBookmarkBar
+                  )
+                 (SubCanvasSpec
+                    name: 'Bookmarks'
+                    layout: (LayoutFrame 13 0 0 0 0 1 0 1)
+                    level: 1
+                    hasHorizontalScrollBar: false
+                    hasVerticalScrollBar: false
+                    miniScrollerHorizontal: false
+                    majorKey: BookmarkBar
+                    subAspectHolders: 
+                   (Array
+                      
+                     (SubChannelInfoSpec
+                        subAspect: bookmarkHolder
+                        aspect: bookmarkHolder
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: bookmarksHolder
+                        aspect: bookmarkListHolder
+                      )
+                    )
+                    createNewApplication: true
+                    createNewBuilder: true
+                  )
+                 )
+               
+              )
+            )
+           (ViewSpec
+              name: 'FilenameEntryFieldBox'
+              layout: (LayoutFrame 0 0 67 0 0 1 92 0)
+              level: 0
+              visibilityChannel: filenameEntryFieldVisibleHolder
+              component: 
+             (SpecCollection
+                collection: (
+                 (ActionButtonSpec
+                    label: 'hideFilenameEntryFieldIcon'
+                    name: 'HideFilenameEntryFieldButton'
+                    layout: (LayoutFrame 0 0 0 0 13 0 0 1)
+                    activeHelpKey: hideFilenameEntryField
+                    hasCharacterOrientedLabel: false
+                    translateLabel: true
+                    model: hideFilenameEntryField
+                    postBuildCallback: hideFilenameEntryFieldButtonCreated:
+                  )
+                 (HorizontalPanelViewSpec
+                    name: 'HorizontalPanel1'
+                    layout: (LayoutFrame 13 0.0 0 0.0 0 1.0 0 1.0)
+                    level: 1
+                    horizontalLayout: leftFit
+                    verticalLayout: fit
+                    horizontalSpace: 3
+                    verticalSpace: 3
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (ComboListSpec
+                          name: 'ComboList1'
+                          visibilityChannel: driveSelectorVisible
+                          model: selectedDeviceDrive
+                          comboList: listOfDeviceDrives
+                          useIndex: false
+                          hidePullDownMenuButton: false
+                          extent: (Point 53 23)
+                        )
+                       (VariableHorizontalPanelSpec
+                          name: 'VariableHorizontalPanel1'
+                          level: 0
+                          showHandle: true
+                          component: 
+                         (SpecCollection
+                            collection: (
+                             (NonScrollableArbitraryComponentSpec
+                                name: 'NonScrollableArbitraryComponent1'
+                                component: FilenameEditFieldV2
+                                postBuildCallback: postBuildEditField:
+                              )
+                             (ViewSpec
+                                name: 'FilterBox'
+                                component: 
+                               (SpecCollection
+                                  collection: (
+                                   (LabelSpec
+                                      label: 'Filter:'
+                                      name: 'Filter'
+                                      layout: (LayoutFrame 0 0 0 0 40 0 0 1)
+                                      translateLabel: true
+                                      adjust: left
+                                      postBuildCallback: postBuildPathViewBox:
+                                    )
+                                   (ComboBoxSpec
+                                      name: 'FilterSelectionBox'
+                                      layout: (LayoutFrame 40 0 0 0 0 1 0 1)
+                                      model: filterModel
+                                      immediateAccept: true
+                                      acceptOnPointerLeave: false
+                                      comboList: filterListModel
+                                    )
+                                   )
+                                 
+                                )
+                                postBuildCallback: postBuildPathViewBox:
+                              )
+                             )
+                           
+                          )
+                          handles: (Any 0.774936 1.0)
+                          postBuildCallback: postBuildPathViewBox:
+                          useDefaultExtent: true
+                        )
+                       )
+                     
+                    )
+                    postBuildCallback: postBuildPathViewBox:
+                  )
+                 )
+               
+              )
+            )
+           (#'FileBrowserV2UISpecifications::PanelSpec'
+              name: 'BrowserBox'
+              layout: (LayoutFrame 0 0.0 92 0.0 0 1.0 -26 1.0)
+              level: 0
+              showHandle: true
+              snapMode: both
+              whichView: last
+              orientation: vertical
+              visibility: viewNoteBookApplicationHolder
+              component: 
+             (SpecCollection
+                collection: (
+                 (#'FileBrowserV2UISpecifications::PanelSpec'
+                    name: 'HorizontalPanel'
+                    level: 0
+                    snapMode: both
+                    whichView: first
+                    orientation: horizontal
+                    visibility: showDirectoryTree
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (SubCanvasSpec
+                          name: 'DirectoryTreeBrowser'
+                          hasHorizontalScrollBar: false
+                          hasVerticalScrollBar: false
+                          majorKey: DirectoryTreeBrowser
+                          createNewApplication: true
+                          createNewBuilder: true
+                          postBuildCallback: postBuildDirectoryTree:
+                        )
+                       (SubCanvasSpec
+                          name: 'DirectoryContentsBrowser'
+                          hasHorizontalScrollBar: false
+                          hasVerticalScrollBar: false
+                          majorKey: DirectoryContentsBrowser
+                          createNewApplication: true
+                          createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                    handles: (Any 0.225 1.0)
+                  )
+                 (SubCanvasSpec
+                    name: 'FileApplicationNoteBook'
+                    tabable: false
+                    hasHorizontalScrollBar: false
+                    hasVerticalScrollBar: false
+                    majorKey: FileApplicationNoteBook
+                    createNewApplication: true
+                    createNewBuilder: true
+                  )
+                 )
+               
+              )
+              handles: (Any 0.5 1.0)
+            )
+           (ViewSpec
+              name: 'InfoBox'
+              layout: (LayoutFrame 0 0 -26 1 0 1 0 1)
+              level: 0
+              visibilityChannel: infoBarVisibleHolder
+              component: 
+             (SpecCollection
+                collection: (
+                 (LabelSpec
+                    label: 'NotifyLabel'
+                    name: 'NotifyLabel'
+                    layout: (LayoutFrame 0 0 1 0.0 -220 1 1 1.0)
+                    level: -1
+                    translateLabel: true
+                    labelChannel: notifyChannel
+                    adjust: left
+                  )
+                 (LabelSpec
+                    label: 'encoding'
+                    name: 'EncodingLabel'
+                    layout: (LayoutFrame -318 1 2 0.0 -235 1 0 1.0)
+                    activeHelpKey: encodingLabel
+                    level: 0
+                    labelChannel: fileEncodingHolder
+                    adjust: right
+                    menu: encodingMenu
+                  )
+                 (LabelSpec
+                    name: 'FileEncodingLockedLabel'
+                    layout: (LayoutFrame -235 1 2 0.0 -220 1 20 0.0)
+                    activeHelpKey: encodingLockedLabel
+                    level: 0
+                    labelChannel: fileEncodingLockImageHolder
+                    adjust: right
+                    menu: encodingMenu
+                  )
+                 (LabelSpec
+                    label: 'Shown Files'
+                    name: 'ShownFilesLabel'
+                    layout: (LayoutFrame -220 1 1 0.0 -65 1 1 1.0)
+                    activeHelpKey: numberOfFiles
+                    level: -1
+                    translateLabel: true
+                    labelChannel: shownFiles
+                    adjust: right
+                  )
+                 (ViewSpec
+                    name: 'ProgressIndicatorBox'
+                    layout: (LayoutFrame -220 1 1 0.0 -65 1 1 1.0)
+                    level: -1
+                    visibilityChannel: activityVisibilityChannel
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (ProgressIndicatorSpec
+                          name: 'ProgressIndicator1'
+                          layout: (LayoutFrame 5 0.0 -7 0.5 -5 1.0 7 0.5)
+                          backgroundColor: (Color 0.0 66.6666666666667 66.6666666666667)
+                          isActivityIndicator: true
+                        )
+                       )
+                     
+                    )
+                  )
+                 (LabelSpec
+                    name: 'BusyLabel'
+                    layout: (LayoutFrame -220 1 1 0.0 -65 1 1 1.0)
+                    activeHelpKey: modeLabel
+                    level: -1
+                    visibilityChannel: busyLabelVisibleHolder
+                    translateLabel: true
+                    labelChannel: busyLabelHolder
+                    adjust: right
+                  )
+                 (LabelSpec
+                    label: 'M'
+                    name: 'ModeLabel'
+                    layout: (LayoutFrame -65 1 1 0.0 -55 1 1 1.0)
+                    activeHelpKey: modeLabel
+                    level: -1
+                    translateLabel: true
+                    labelChannel: modeLabelHolder
+                    adjust: right
+                    postBuildCallback: postBuildEditModeInfoLabel:
+                  )
+                 (LabelSpec
+                    label: 'L'
+                    name: 'LineLabel'
+                    layout: (LayoutFrame -55 1 1 0.0 -20 1 1 1.0)
+                    activeHelpKey: lineLabel
+                    level: -1
+                    translateLabel: true
+                    labelChannel: cursorLineLabelHolder
+                    adjust: right
+                  )
+                 (LabelSpec
+                    label: 'C'
+                    name: 'ColLabel'
+                    layout: (LayoutFrame -20 1 1 0.0 0 1 1 1.0)
+                    activeHelpKey: columnLabel
+                    level: -1
+                    translateLabel: true
+                    labelChannel: cursorColLabelHolder
+                    adjust: right
+                  )
+                 )
+               
+              )
+            )
+           (LabelSpec
+              label: 'Preview'
+              name: 'PreviewLabel'
+              layout: (LayoutFrame 0 0.5 93 0 100 0.5 115 0)
+              level: 0
+              borderWidth: 1
+              visibilityChannel: previewVisibleHolder
+              backgroundColor: (Color 86.9993133440147 86.9993133440147 86.9993133440147)
+              translateLabel: true
+            )
+           (ArbitraryComponentSpec
+              name: 'Preview'
+              layout: (LayoutFrame 0 0.5 116 0 -147 1 -266 1)
+              level: 1
+              visibilityChannel: previewVisibleHolder
+              hasBorder: false
+              component: ImageView
+            )
+           (ActionButtonSpec
+              label: 'closePreviewButtonImage'
+              name: 'ClosePreviewButton'
+              layout: (LayoutFrame -169 1 94 0 -147 1 116 0)
+              visibilityChannel: previewVisibleHolder
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+            )
+           )
+         
+        )
+      )
+! !
+
 !FileBrowserV3 class methodsFor:'menu specs'!
 
 toolBarMainMenu
@@ -45,8 +466,8 @@
 
 
     "
-     MenuEditor new openOnClass:FileBrowserV2 andSelector:#toolBarMainMenu
-     (Menu new fromLiteralArrayEncoding:(FileBrowserV2 toolBarMainMenu)) startUp
+     MenuEditor new openOnClass:FileBrowserV3 andSelector:#toolBarMainMenu
+     (Menu new fromLiteralArrayEncoding:(FileBrowserV3 toolBarMainMenu)) startUp
     "
 
     <resource: #menu>
@@ -118,14 +539,6 @@
             labelImage: (ResourceRetriever ToolbarIconLibrary stxHomeIcon)
           )
          (MenuItem
-            activeHelpKey: fileGotoBookmark
-            label: 'Bookmarks'
-            translateLabel: true
-            isButton: true
-            submenuChannel: gotoBookmarksMenu
-            labelImage: (ResourceRetriever ToolbarIconLibrary directoryBookmarksIcon)
-          )
-         (MenuItem
             activeHelpKey: fileHistory
             enabled: enableFileHistory
             label: 'File History'
@@ -149,50 +562,12 @@
             label: '-'
           )
          (MenuItem
-            activeHelpKey: cutFile
-            enabled: hasSelection
-            label: 'Cut'
-            itemValue: cutFiles
-            translateLabel: true
-            isButton: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary cutFileIcon)
-          )
-         (MenuItem
-            activeHelpKey: copyFile
-            enabled: hasSelection
-            label: 'Copy'
-            itemValue: copyFiles
-            translateLabel: true
-            isButton: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary copyFileIcon)
-          )
-         (MenuItem
-            activeHelpKey: pasteFile
-            enabled: canPaste
-            label: 'Paste'
-            itemValue: pasteFiles
-            translateLabel: true
-            isButton: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary pasteFileIcon)
-          )
-         (MenuItem
-            activeHelpKey: deleteFile
-            enabled: hasSelection
-            label: 'Delete'
-            itemValue: deleteFiles
-            translateLabel: true
-            isButton: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary deleteFileIcon)
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
             activeHelpKey: editFile
             label: 'Edit File'
             itemValue: doShowFileContents
             translateLabel: true
             isButton: true
+            isVisible: false
             labelImage: (ResourceRetriever ToolbarIconLibrary editFileIcon)
           )
          (MenuItem
@@ -201,6 +576,15 @@
             itemValue: fileFileIn
             translateLabel: true
             isButton: true
+            isVisible: false
+            labelImage: (ResourceRetriever ToolbarIconLibrary fileInIcon)
+          )
+         (MenuItem
+            activeHelpKey: fileIn
+            label: 'File In'
+            itemValue: fileFileIn
+            translateLabel: true
+            isButton: true
             labelImage: (ResourceRetriever ToolbarIconLibrary fileInIcon)
           )
          (MenuItem
@@ -266,12 +650,109 @@
         nil
         nil
       )
+! !
 
-    "Created: / 03-04-2012 / 10:48:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!FileBrowserV3 methodsFor:'aspects'!
+
+bookmarkBarVisibleHolder
+    "return/create the 'bookmarkBarVisibleHolder' value holder (automatically generated)"
+
+    bookmarkBarVisibleHolder isNil ifTrue:[
+        bookmarkBarVisibleHolder := true asValue.
+        bookmarkBarVisibleHolder addDependent:self.
+    ].
+    ^ bookmarkBarVisibleHolder
+
+    "Modified: / 10-06-2011 / 23:56:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+bookmarkBarVisibleHolder:something
+    "set the 'bookmarkBarVisibleHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    bookmarkBarVisibleHolder notNil ifTrue:[
+        oldValue := bookmarkBarVisibleHolder value.
+        bookmarkBarVisibleHolder removeDependent:self.
+    ].
+    bookmarkBarVisibleHolder := something.
+    bookmarkBarVisibleHolder notNil ifTrue:[
+        bookmarkBarVisibleHolder addDependent:self.
+    ].
+    newValue := bookmarkBarVisibleHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:bookmarkBarVisibleHolder.
+    ].
+!
+
+bookmarkHolder
+    "return/create the 'bookmarkHolder' value holder (automatically generated)"
+
+    bookmarkHolder isNil ifTrue:[
+        bookmarkHolder := ValueHolder new.
+    ].
+    ^ bookmarkHolder
+!
+
+bookmarkListHolder
+
+    ^BookmarkList forWebBrowser
+
+    "Created: / 08-06-2011 / 12:16:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!FileBrowserV3 methodsFor:'change & update'!
+
+updateToolVisibility
+    |builder toolBar bookmarkBar infoBar filenameEntryField vPanel topOffset bottomOffset
+     toolBarVisible bookmarkBarVisible filenameEntryFieldVisible infoBarVisible d|
+
+    builder := self builder.
+
+    topOffset := 0.
+    bottomOffset := 0.
+
+    toolBarVisible := self toolBarVisibleHolder value.
+    toolBarVisible ifTrue:[
+        toolBar := builder componentAt:#ToolbarBox.
+        topOffset := topOffset + toolBar height.
+    ].
+
+    bookmarkBarVisible := self bookmarkBarVisibleHolder value.
+    bookmarkBarVisible ifTrue:[
+        bookmarkBar := builder componentAt:#Bookmarks.
+        topOffset := topOffset + (bookmarkBar height max: 25)
+    ].
+
+    filenameEntryFieldVisible := self filenameEntryFieldVisibleHolder value.
+    filenameEntryFieldVisible ifTrue:[
+        filenameEntryField := builder componentAt:#FilenameEntryFieldBox.
+        d := filenameEntryField layout bottomOffset - filenameEntryField layout topOffset.
+        filenameEntryField layout topOffset:topOffset bottomOffset:topOffset + d.
+        topOffset := topOffset + filenameEntryField height.
+        filenameEntryField container notNil ifTrue:[
+            filenameEntryField containerChangedSize.
+        ].
+    ].
+
+    infoBarVisible := self infoBarVisibleHolder value.
+    infoBarVisible ifTrue:[
+        infoBar := builder componentAt:#InfoBox.
+        bottomOffset := bottomOffset - infoBar height.
+    ].
+
+    vPanel := builder componentAt:#BrowserBox.
+    vPanel layout topOffset:topOffset+1.
+    vPanel layout bottomOffset:bottomOffset-1.
+    vPanel container notNil ifTrue:[
+        vPanel containerChangedSize.
+    ].
+
+    "Modified: / 03-04-2012 / 22:23:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !FileBrowserV3 class methodsFor:'documentation'!
 
 version_SVN
-    ^ '$Id: FileBrowserV3.st 7963 2012-04-03 12:32:03Z vranyj1 $'
+    ^ '$Id: FileBrowserV3.st 7965 2012-04-04 00:09:32Z vranyj1 $'
 ! !
--- a/Make.proto	Tue Apr 03 18:37:50 2012 +0100
+++ b/Make.proto	Wed Apr 04 01:09:32 2012 +0100
@@ -1,7 +1,7 @@
 # $Header$
 #
 # DO NOT EDIT
-# automagically generated from the projectDefinition: stx_libtool at 2012-04-03 18:38:32.455.
+# automagically generated from the projectDefinition: stx_libtool at 2012-04-04 01:09:23.804.
 #
 # Warning: once you modify this file, do not rerun
 # stmkmp or projectDefinition-build again - otherwise, your changes are lost.
@@ -243,7 +243,7 @@
 $(OUTDIR)NewLauncher.$(O) NewLauncher.$(H): NewLauncher.st $(INCLUDE_TOP)/stx/libtool/AbstractLauncherApplication.$(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)OrderedCollectionInspectorView.$(O) OrderedCollectionInspectorView.$(H): OrderedCollectionInspectorView.st $(INCLUDE_TOP)/stx/libtool/InspectorView.$(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) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SetInspectorView.$(O) SetInspectorView.$(H): SetInspectorView.st $(INCLUDE_TOP)/stx/libtool/InspectorView.$(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) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)SettingsDialog.$(O) SettingsDialog.$(H): SettingsDialog.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libtool/AbstractSettingsApplication.$(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) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItemWithLabelAndIcon.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)SettingsDialog.$(O) SettingsDialog.$(H): SettingsDialog.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libtool/AbstractSettingsApplication.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItemWithLabelAndIcon.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(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)SmalltalkCodeGeneratorTool.$(O) SmalltalkCodeGeneratorTool.$(H): SmalltalkCodeGeneratorTool.st $(INCLUDE_TOP)/stx/libtool/CodeGeneratorTool.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__BackgroundSourceProcessingService.$(O) Tools__BackgroundSourceProcessingService.$(H): Tools__BackgroundSourceProcessingService.st $(INCLUDE_TOP)/stx/libtool/Tools__CodeViewService.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__BreakpointService.$(O) Tools__BreakpointService.$(H): Tools__BreakpointService.st $(INCLUDE_TOP)/stx/libtool/Tools__CodeViewService.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec	Tue Apr 03 18:37:50 2012 +0100
+++ b/Make.spec	Wed Apr 04 01:09:32 2012 +0100
@@ -1,7 +1,7 @@
 # $Header$
 #
 # DO NOT EDIT
-# automagically generated from the projectDefinition: stx_libtool at 2012-04-03 18:38:30.253.
+# automagically generated from the projectDefinition: stx_libtool at 2012-04-04 01:09:22.570.
 #
 # Warning: once you modify this file, do not rerun
 # stmkmp or projectDefinition-build again - otherwise, your changes are lost.
--- a/Tools__TextDiff3Tool.st	Tue Apr 03 18:37:50 2012 +0100
+++ b/Tools__TextDiff3Tool.st	Wed Apr 04 01:09:32 2012 +0100
@@ -15,14 +15,14 @@
 
 TextDiffTool subclass:#TextDiff3Tool
 	instanceVariableNames:'labelMergedHolder textMergedHolder mergeHolder mergeDataHolder
-		mergeView'
+		mergeView mergeService'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-Diff'
 !
 
 CodeViewService subclass:#MergeService
-	instanceVariableNames:'dataHolder data'
+	instanceVariableNames:'dataHolder data sectionInterval'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:TextDiff3Tool
@@ -416,21 +416,39 @@
 
 doMergeUsingA
 
-    self mergeData mergeUsingA: self textA
+    | interval |
+    interval := mergeService sectionInterval.
+    interval notNil ifTrue:[
+        self mergeData mergeUsingA: self textA interval: interval
+    ] ifFalse:[
+        self mergeData mergeUsingA: self textA
+    ]
 
     "Created: / 17-03-2012 / 12:55:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 doMergeUsingB
 
-    self mergeData mergeUsingB: self textB
+    | interval |
+    interval := mergeService sectionInterval.
+    interval notNil ifTrue:[
+        self mergeData mergeUsingB: self textB interval: interval
+    ] ifFalse:[
+        self mergeData mergeUsingB: self textA
+    ]
 
     "Created: / 17-03-2012 / 12:55:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 doMergeUsingBase
 
-    self mergeData mergeUsingBase: self textC
+    | interval |
+    interval := mergeService sectionInterval.
+    interval notNil ifTrue:[
+        self mergeData mergeUsingBase: self textC interval: interval
+    ] ifFalse:[
+        self mergeData mergeUsingBase: self textC
+    ]
 
     "Created: / 17-03-2012 / 12:55:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
@@ -641,7 +659,7 @@
 
     mergeView := aCodeView2.
     mergeView registerService: 
-                (MergeService new
+                ((mergeService := MergeService new)
                     dataHolder: self mergeDataHolder;
                     yourself).
     self updateCodeViewSynchronization.
@@ -694,6 +712,10 @@
     ]
 
     "Created: / 19-03-2012 / 13:15:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+sectionInterval
+    ^ sectionInterval
 ! !
 
 !TextDiff3Tool::MergeService methodsFor:'aspects'!
@@ -764,6 +786,7 @@
     data notNil ifTrue:[
         data addDependent: self.
     ].
+    sectionInterval := nil.
     self dataChanged
 
     "Created: / 19-03-2012 / 11:56:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -785,6 +808,32 @@
     super update:something with:aParameter from:changedObject
 
     "Modified: / 19-03-2012 / 12:41:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateSelection: lineNr
+    "For given number, update sectionInterval"
+
+    | conflict |
+    lineNr notNil ifTrue:[
+        conflict := (self infoAtLine: lineNr) conflict.
+    ].
+    lineNr isNil"conflict isNil" ifTrue:[
+        sectionInterval := nil
+    ] ifFalse:[
+        | start stop i |
+        i := lineNr - 1.
+        [ i > 0 and:[ (self infoAtLine: i) conflict == conflict ]] 
+            whileTrue:[ i := i - 1 ].
+        start := i + 1.
+        i := lineNr + 1.
+        [ i < (data listInfos size)  and:[ (self infoAtLine: i) conflict == conflict ]] 
+            whileTrue:[ i := i + 1 ].
+        stop := i - 1.
+        sectionInterval := start to: stop.
+    ].
+    gutterView invalidate.
+
+    "Created: / 03-04-2012 / 19:29:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !TextDiff3Tool::MergeService methodsFor:'drawing'!
@@ -795,21 +844,52 @@
      Ask JV what the args means if unsure (I'm lazy to document
      them, now it is just an experiment...)"
 
-    | info |
+    | info color |
 
     view == gutterView ifFalse:[ ^ self ].
     info := self infoAtLine: lineNo.
-    info isNil ifTrue:[ ^self ].
+    info notNil ifTrue:[ 
+        color := info color.
+        color notNil ifTrue:[
+            view fillRectangleX: x y:y - h 
+                    width: 8 
+                    height:h + textView lineSpacing + 5"Magic constant to make it look nicer"
+                    color: color.
+        ].
+    ].
 
-    view fillRectangleX:x y:y - h 
-            width:6 height:h + textView lineSpacing + 5"Magic constant to make it look nicer"
-            color: info color.
+    (sectionInterval notNil and:[sectionInterval includes: lineNo]) ifTrue:[
+            "Drawing outside annotation area is not nice, but..."
+            view fillRectangleX:view width - 7 y:y - h 
+                width:4 
+                height:h + textView lineSpacing + 5"Magic constant to make it look nicer"
+                color: Color gray.
+    ]
 
     "Created: / 19-03-2012 / 13:15:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !TextDiff3Tool::MergeService methodsFor:'event handling'!
 
+buttonPress: button x:x y:y in: view
+
+    "Handles an event in given view (a subview of codeView).
+     If the method returns true, it has eaten the event and it will not be processed
+     by the view."
+
+    |lineNr|
+
+    view == gutterView ifFalse:[ ^ false ].
+    button == 1 ifFalse:[ ^ false ].
+
+    self updateSelection: (textView yVisibleToLineNr:y).
+
+
+    ^false
+
+    "Created: / 03-04-2012 / 19:23:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 linesModifiedFrom: start to: end
 
     start to: end do:[:i|
@@ -837,5 +917,5 @@
 !TextDiff3Tool class methodsFor:'documentation'!
 
 version_SVN
-    ^ '$Id: Tools__TextDiff3Tool.st 7950 2012-03-21 12:48:24Z vranyj1 $'
+    ^ '$Id: Tools__TextDiff3Tool.st 7965 2012-04-04 00:09:32Z vranyj1 $'
 ! !
--- a/Tools__TextMergeInfo.st	Tue Apr 03 18:37:50 2012 +0100
+++ b/Tools__TextMergeInfo.st	Wed Apr 04 01:09:32 2012 +0100
@@ -43,6 +43,22 @@
 "
 ! !
 
+!TextMergeInfo methodsFor:'* uncategorized *'!
+
+conflictLineText
+
+    ^ '<conflict>' asText allBold colorizeAllWith: Color red.
+
+    "Created: / 03-04-2012 / 23:26:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+noSourceLineText
+
+    ^'<no source line>' asText colorizeAllWith: Color red.
+
+    "Created: / 03-04-2012 / 23:26:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !TextMergeInfo methodsFor:'accessing'!
 
 list
@@ -54,7 +70,13 @@
 !
 
 text
-    ^(list reject:[:l|l isNil]) asString
+    ^String  streamContents:[:s|
+        1 to: list size do:[:i|
+            (listInfos at: i) offset ~~ -1 ifTrue:[
+                s nextPutLine: (list at: i)
+            ]
+        ].
+    ].
 
     "Created: / 19-03-2012 / 14:58:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
@@ -63,7 +85,7 @@
 
 text1: text1 text2: text2 text3: text3
 
-    | t1c t2c  t3c merges lnr |
+    | t1c t2c  t3c diff3 diffs merges resolution lnr |
 
     list := StringCollection new.
     listInfos := OrderedCollection new.
@@ -73,24 +95,40 @@
     t3c := (text3 ? #()) asStringCollection.
 
 
-    merges := Diff3 new
+    diff3 := Diff3 new
                     file0: t1c; "/Base version
                     file1: t2c; "/A
-                    file2: t3c; "/B
-                    merge.
+                    file2: t3c. "/B\
+    diffs := diff3 diffIndices.
+    merges := diff3 mergeIndices.
+
     lnr := 1.
-    merges do:[:merge|
-        merge key == #ok ifTrue:[
-            merge value do:[:line|
-                list add: line.
-                listInfos add: (LineInfo line: lnr resolution: #Merged ).
+    diffs with: merges do:[:diff :merge|
+        | lines |
+        diff isChunk ifTrue:[
+            lines := merge extractFromDiff: diff3.
+            1 to: diff length do:[:i|
+                list add: (lines at: i).
+                listInfos add: (LineInfo line: lnr resolution: #NoConflict conflict: diff offset: i ).
                 lnr := lnr + 1.
             ].
         ].
-        merge key == #conflict ifTrue:[
-            1 to: merge value length do:[:i|
-                list add:nil. "/no resolution now"
-                listInfos add: (LineInfo line: lnr resolution: #Conflict conflict: merge value offset: i).
+        diff isConflict ifTrue:[
+            1 to: diff length do:[:i|
+                merge isConflict ifTrue:[
+                    list add: self conflictLineText.
+                    listInfos add: (LineInfo line: lnr resolution: #Conflict conflict: diff offset: i).
+                ] ifFalse:[
+                    lines := merge extractFromDiff: diff3.
+                    resolution := merge extractResolution.
+                    i <= lines size ifTrue:[
+                        list add: (lines at: i).
+                        listInfos add: (LineInfo line: lnr resolution: resolution conflict: diff offset: i).
+                    ] ifFalse:[
+                        list add: self noSourceLineText.
+                        listInfos add: (LineInfo line: lnr resolution: resolution conflict: diff offset: -1).
+                    ].
+                ].
                 lnr := lnr + 1.
             ].
         ].
@@ -110,11 +148,39 @@
         (1 to: list size) collect:[:lineNr|
             (LineInfo line: lineNr resolution: #MergedUsingA )
         ].
-    self changed:#resulution
+    self changed:#resolution
 
     "Created: / 21-03-2012 / 12:03:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+mergeUsingA: textA interval: interval
+    "Given textA and section interval, merges the section
+     using textA."
+
+    | listA offset |
+    listA := textA asStringCollection.
+    offset := 0.
+    interval do:[:lineNr|
+        | info chunk line |
+        info := listInfos at: lineNr.
+        chunk := info conflict left.
+        offset < chunk length ifTrue:[
+            line := listA at: chunk offset + offset.            
+            info offset: offset + 1.
+        ] ifFalse:[
+            line := self noSourceLineText.
+            info offset: -1
+        ].
+        list at: lineNr put: line.
+        info resolution: #MergedUsingA.
+        offset := offset + 1.
+    ].
+
+    self changed:#resolution
+
+    "Created: / 04-04-2012 / 00:51:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 mergeUsingB: textB
 
     list := (textB ? #())  asStringCollection.
@@ -127,6 +193,34 @@
     "Created: / 21-03-2012 / 12:04:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+mergeUsingB: textA interval: interval
+    "Given textA and section interval, merges the section
+     using textA."
+
+    | listA offset |
+    listA := textA asStringCollection.
+    offset := 0.
+    interval do:[:lineNr|
+        | info chunk line |
+        info := listInfos at: lineNr.
+        chunk := info conflict right.
+        offset < chunk length ifTrue:[
+            line := listA at: chunk offset + offset.            
+            info offset: offset + 1.
+        ] ifFalse:[
+            line := self noSourceLineText.
+            info offset: -1
+        ].
+        list at: lineNr put: line.
+        info resolution: #MergedUsingB.
+        offset := offset + 1.
+    ].
+
+    self changed:#resolution
+
+    "Created: / 04-04-2012 / 01:01:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 mergeUsingBase: textBase
 
     list := (textBase ? #()) asStringCollection.
@@ -137,6 +231,34 @@
     self changed:#resulution
 
     "Created: / 21-03-2012 / 12:07:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mergeUsingBase: textA interval: interval
+    "Given textA and section interval, merges the section
+     using textA."
+
+    | listA offset |
+    listA := textA asStringCollection.
+    offset := 0.
+    interval do:[:lineNr|
+        | info chunk line |
+        info := listInfos at: lineNr.
+        chunk := info conflict original.
+        offset < chunk length ifTrue:[
+            line := listA at: chunk offset + offset.            
+            info offset: offset + 1.
+        ] ifFalse:[
+            line := self noSourceLineText.
+            info offset: -1
+        ].
+        list at: lineNr put: line.
+        info resolution: #MergedUsingBase.
+        offset := offset + 1.
+    ].
+
+    self changed:#resolution
+
+    "Created: / 04-04-2012 / 01:01:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !TextMergeInfo methodsFor:'testing'!
@@ -175,14 +297,28 @@
 
 color
 
+    | color |
+
     self isMerged ifTrue:[ 
-        self isMergedUsingA ifTrue:[ ^Tools::TextDiff3Tool colorA].
-        self isMergedUsingB ifTrue:[ ^Tools::TextDiff3Tool colorB].
-        self isMergedUsingBase ifTrue:[ ^Tools::TextDiff3Tool colorBase].
-        ^ Tools::TextDiff3Tool colorMerged 
+        self isMergedUsingA ifTrue:[ 
+            color := Tools::TextDiff3Tool colorA
+        ] ifFalse:[self isMergedUsingB ifTrue:[ 
+                color := Tools::TextDiff3Tool colorB
+        ] ifFalse:[self isMergedUsingBase ifTrue:[ 
+            color := Tools::TextDiff3Tool colorBase
+        ] ifFalse:[
+            color :=  Tools::TextDiff3Tool colorMerged
+        ]]].
+        offset == -1 ifTrue:[
+            color := color lighter.
+        ].
+    ] ifFalse:[
+        self isConflict ifTrue:[ 
+            color :=  Tools::TextDiff3Tool colorConflict 
+        ].
     ].
-    self isConflict ifTrue:[ ^ Tools::TextDiff3Tool colorConflict ].
-    ^nil
+
+    ^color
 
     "Created: / 19-03-2012 / 15:05:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -214,6 +350,10 @@
     ^ offset
 !
 
+offset:something
+    offset := something.
+!
+
 resolution
     ^ resolution
 !
@@ -282,5 +422,5 @@
 !TextMergeInfo class methodsFor:'documentation'!
 
 version_SVN
-    ^ '$Id: Tools__TextMergeInfo.st 7951 2012-03-21 14:05:42Z vranyj1 $'
+    ^ '$Id: Tools__TextMergeInfo.st 7965 2012-04-04 00:09:32Z vranyj1 $'
 ! !
--- a/bc.mak	Tue Apr 03 18:37:50 2012 +0100
+++ b/bc.mak	Wed Apr 04 01:09:32 2012 +0100
@@ -1,7 +1,7 @@
 # $Header$
 #
 # DO NOT EDIT
-# automagically generated from the projectDefinition: stx_libtool at 2012-04-03 18:38:33.700.
+# automagically generated from the projectDefinition: stx_libtool at 2012-04-04 01:09:24.569.
 #
 # Warning: once you modify this file, do not rerun
 # stmkmp or projectDefinition-build again - otherwise, your changes are lost.
@@ -185,7 +185,7 @@
 $(OUTDIR)NewLauncher.$(O) NewLauncher.$(H): NewLauncher.st $(INCLUDE_TOP)\stx\libtool\AbstractLauncherApplication.$(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)OrderedCollectionInspectorView.$(O) OrderedCollectionInspectorView.$(H): OrderedCollectionInspectorView.st $(INCLUDE_TOP)\stx\libtool\InspectorView.$(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) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SetInspectorView.$(O) SetInspectorView.$(H): SetInspectorView.st $(INCLUDE_TOP)\stx\libtool\InspectorView.$(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) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)SettingsDialog.$(O) SettingsDialog.$(H): SettingsDialog.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libtool\AbstractSettingsApplication.$(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) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItemWithLabelAndIcon.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)SettingsDialog.$(O) SettingsDialog.$(H): SettingsDialog.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libtool\AbstractSettingsApplication.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItemWithLabelAndIcon.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(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)SmalltalkCodeGeneratorTool.$(O) SmalltalkCodeGeneratorTool.$(H): SmalltalkCodeGeneratorTool.st $(INCLUDE_TOP)\stx\libtool\CodeGeneratorTool.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__BackgroundSourceProcessingService.$(O) Tools__BackgroundSourceProcessingService.$(H): Tools__BackgroundSourceProcessingService.st $(INCLUDE_TOP)\stx\libtool\Tools__CodeViewService.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__BreakpointService.$(O) Tools__BreakpointService.$(H): Tools__BreakpointService.st $(INCLUDE_TOP)\stx\libtool\Tools__CodeViewService.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/libtool.rc	Tue Apr 03 18:37:50 2012 +0100
+++ b/libtool.rc	Wed Apr 04 01:09:32 2012 +0100
@@ -3,7 +3,7 @@
 // automagically generated from the projectDefinition: stx_libtool.
 //
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION     6,2,7959,7959
+  FILEVERSION     6,2,7964,7964
   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.7959.7959\0"
+      VALUE "FileVersion", "6.2.7964.7964\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", "Tue, 03 Apr 2012 17:38:47 GMT\0"
+      VALUE "ProductDate", "Wed, 04 Apr 2012 00:09:46 GMT\0"
     END
 
   END