Merged 235b77901045 and 8332590c5a41 (branch default) jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 30 Jan 2013 11:15:09 +0000
branchjv
changeset 12401 4714b9640528
parent 12330 235b77901045 (diff)
parent 12340 8332590c5a41 (current diff)
child 12402 e578629550e3
Merged 235b77901045 and 8332590c5a41 (branch default)
AbstractFileBrowser.st
AbstractFileFinderApplicationComponent.st
AbstractLauncherApplication.st
AbstractSettingsApplication.st
AbstractSourceCodeManagementSettingsAppl.st
BookmarkBar.st
BookmarkList.st
BrowserView.st
CVSSourceCodeManagementSettingsAppl.st
ChangesBrowser.st
CodeGeneratorTool.st
ContextInspectorView.st
DataBaseSourceCodeManagementSettingsAppl.st
DebugView.st
DictionaryInspectorView.st
Diff.st
Diff3TextView.st
DiffListUtility.st
DirectoryContentsBrowser.st
DirectoryDifferenceViewApplication.st
DirectoryTreeBrowser.st
EditFieldWithCompletion.st
FileApplicationNoteBook.st
FileBasedSourceCodeManagementSettingsAppl.st
FileBrowser.st
FileBrowserV2.st
FileOperation.st
FilenameEditFieldV2.st
FindFileApplication.st
GitSourceCodeManagementSettingsAppl.st
ImageInspectorView.st
InspectorView.st
Make.proto
Make.spec
MemoryMonitor.st
MemoryUsageView.st
MercurialSourceCodeManagementSettingsAppl.st
MultiViewToolApplication.st
NewLauncher.st
OrderedCollectionInspectorView.st
PerforceSourceCodeManagementSettingsAppl.st
PerforceSourceCodeManagerUtilities.st
ProcessMonitorV2.st
SetInspectorView.st
SettingsDialog.st
SmalltalkCodeGeneratorTool.st
StoreSourceCodeManagementSettingsAppl.st
SyntaxElement.st
SyntaxHighlighter2.st
SystemBrowser.st
Tools__AbstractTestRunner.st
Tools__BackgroundSourceProcessingService.st
Tools__BreakpointBrowser.st
Tools__BreakpointService.st
Tools__BrowserListWithFilter.st
Tools__ChangeList.st
Tools__ChangeSetBrowser2.st
Tools__CheckinInfoDialog.st
Tools__CodeCompletionMenu.st
Tools__CodeHighlightingService.st
Tools__CodeNavigationService.st
Tools__CodeView2.st
Tools__CodeView2SettingsAppl.st
Tools__DiffCodeView2.st
Tools__HierarchicalChangesetDialog.st
Tools__HierarchicalLintRuleList.st
Tools__InlineMessageDialog.st
Tools__Inspector2.st
Tools__Inspector2Tab.st
Tools__LintHighlighter.st
Tools__LintRuleDetail.st
Tools__LintRuleList.st
Tools__LintRuleSelectionDialog.st
Tools__LintService.st
Tools__MethodRewriter.st
Tools__NavigationHistory.st
Tools__NavigationHistoryTests.st
Tools__NewSystemBrowser.st
Tools__NewSystemBrowserCodeView.st
Tools__Profiler.st
Tools__ProfilerInfoItem.st
Tools__ProjectCheckerBrowser.st
Tools__StringSearchTool.st
Tools__Tag.st
Tools__TagList.st
Tools__TagsBrowser.st
Tools__TestRunner2.st
Tools__TestRunnerEmbedded.st
Tools__TextDiffTool.st
Tools__ToDoListBrowser.st
Tools__VariableList.st
Tools__VisualProfilerCanvas.st
Tools__WebBrowserPage.st
VersionDiffBrowser.st
ViewWithAcceptAndCancelBar.st
Win32FileDialog.st
WorkspaceApplication.st
XTermView.st
abbrev.stc
bc.mak
extensions.st
libInit.cc
libtool.rc
resources/de.rs
resources/ja.rs
resources/resources.rs
stx_libtool.st
vcmake.bat
--- a/AboutBox.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/AboutBox.st	Wed Jan 30 11:15:09 2013 +0000
@@ -238,9 +238,13 @@
 !AboutBox class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AboutBox.st,v 1.38 2011-03-24 14:34:18 stefan Exp $'
+    ^ '$Id: AboutBox.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/AboutBox.st,v 1.38 2011-03-24 14:34:18 stefan Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/AboutBox.st,v 1.38 2011/03/24 14:34:18 stefan Exp §'
+!
+
+version_SVN
+    ^ '$Id: AboutBox.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/AbstractDirectoryBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/AbstractDirectoryBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -211,9 +211,13 @@
 !AbstractDirectoryBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractDirectoryBrowser.st,v 1.25 2010-02-02 14:34:58 cg Exp $'
+    ^ '$Id: AbstractDirectoryBrowser.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractDirectoryBrowser.st,v 1.25 2010-02-02 14:34:58 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/AbstractDirectoryBrowser.st,v 1.25 2010/02/02 14:34:58 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: AbstractDirectoryBrowser.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/AbstractFileApplicationNoteBookComponent.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/AbstractFileApplicationNoteBookComponent.st	Wed Jan 30 11:15:09 2013 +0000
@@ -335,9 +335,13 @@
 !AbstractFileApplicationNoteBookComponent class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractFileApplicationNoteBookComponent.st,v 1.23 2012-01-27 14:01:09 cg Exp $'
+    ^ '$Id: AbstractFileApplicationNoteBookComponent.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractFileApplicationNoteBookComponent.st,v 1.23 2012-01-27 14:01:09 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/AbstractFileApplicationNoteBookComponent.st,v 1.23 2012/01/27 14:01:09 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: AbstractFileApplicationNoteBookComponent.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/AbstractFileBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/AbstractFileBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -98,6 +98,7 @@
 "
 ! !
 
+
 !AbstractFileBrowser class methodsFor:'accessing'!
 
 currentSelection
@@ -146,6 +147,7 @@
     RootHolder := aRoot
 ! !
 
+
 !AbstractFileBrowser class methodsFor:'accessing-bookmarks'!
 
 addBookmark:aDirectoryPath
@@ -297,6 +299,7 @@
     self saveBookmarksIn:(self defaultBookMarksFileDirectory construct:self defaultBookMarksFilename)
 ! !
 
+
 !AbstractFileBrowser class methodsFor:'accessing-classes'!
 
 directoryHistoryClass
@@ -305,6 +308,7 @@
     "Modified: / 21-11-2012 / 08:46:34 / cg"
 ! !
 
+
 !AbstractFileBrowser class methodsFor:'defaults'!
 
 commandHistory
@@ -554,6 +558,7 @@
     "Modified: / 11-05-2012 / 09:22:04 / cg"
 ! !
 
+
 !AbstractFileBrowser class methodsFor:'help specs'!
 
 basicFlyByHelpSpec
@@ -708,6 +713,7 @@
     "Modified: / 03-11-2007 / 12:05:01 / cg"
 ! !
 
+
 !AbstractFileBrowser class methodsFor:'image specs'!
 
 clearHistoryIcon
@@ -919,6 +925,7 @@
     ^ ToolbarIconLibrary shell20x20Icon
 ! !
 
+
 !AbstractFileBrowser class methodsFor:'interface specs'!
 
 encodingDialogSpec
@@ -1268,6 +1275,7 @@
     "Modified: / 28-02-2012 / 11:12:38 / cg"
 ! !
 
+
 !AbstractFileBrowser class methodsFor:'menu specs'!
 
 baseBookmarksMenuSpec
@@ -1947,6 +1955,55 @@
       )
 !
 
+scmMenuSlice
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+
+    "
+     MenuEditor new openOnClass:AbstractFileBrowser andSelector:#scmMenuSlice
+     (Menu new fromLiteralArrayEncoding:(AbstractFileBrowser scmMenuSlice)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'CVS'
+            isVisible: cvsMenusAreShown
+            submenuChannel: cvsMenu
+          )
+         (MenuItem
+            label: 'SVN'
+            isVisible: svnMenusAreShown
+            submenuChannel: svnMenu
+          )
+         (MenuItem
+            label: 'Mercurial'
+            isVisible: mercurialMenusAreShown
+            submenuChannel: mercurialMenu
+          )
+         (MenuItem
+            label: 'HG'
+            isVisible: hgMenusAreShown
+            submenuChannel: hgMenu
+          )
+         (MenuItem
+            label: 'Perforce'
+            isVisible: perforceMenusAreShown
+            submenuChannel: perforceMenu
+          )
+         )
+        nil
+        nil
+      )
+!
+
 showMenuSpec
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
@@ -2538,6 +2595,7 @@
       )
 ! !
 
+
 !AbstractFileBrowser class methodsFor:'menu specs-scm'!
 
 cvsMenu
@@ -2715,18 +2773,21 @@
     "Created: / 15-01-2012 / 13:12:30 / cg"
 ! !
 
+
 !AbstractFileBrowser class methodsFor:'misc'!
 
 newLock
     ^ CodeExecutionLock new
 ! !
 
+
 !AbstractFileBrowser class methodsFor:'resources'!
 
 classResources
     ^ FileBrowser classResources
 ! !
 
+
 !AbstractFileBrowser class methodsFor:'utilities'!
 
 contentsOfBytesAsHexDump:data numberOfAddressDigits:addrDigits addressStart:virtualStart
@@ -2896,6 +2957,7 @@
     "Modified: / 13-02-2012 / 15:01:19 / cg"
 ! !
 
+
 !AbstractFileBrowser methodsFor:'actions'!
 
 askForCommandFor:fileName thenDo:aBlock
@@ -3247,6 +3309,7 @@
     ]
 ! !
 
+
 !AbstractFileBrowser methodsFor:'actions bookmarks'!
 
 addBookmark
@@ -3292,6 +3355,7 @@
      self class saveBookmarks
 ! !
 
+
 !AbstractFileBrowser methodsFor:'actions history'!
 
 addToCommandHistory:aCommandString for:aFilename
@@ -3344,6 +3408,7 @@
     ].
 ! !
 
+
 !AbstractFileBrowser methodsFor:'applications'!
 
 applicationNamed:anApplicationName ifPresentDo:aBlock
@@ -3360,6 +3425,7 @@
     ^ self applications at:#DirectoryContentsBrowser ifAbsent:nil.
 ! !
 
+
 !AbstractFileBrowser methodsFor:'aspects'!
 
 applications
@@ -3403,6 +3469,14 @@
     ^ directories first.
 !
 
+currentDirectoryDisplayed
+    "Return a directory as Filename that is currently displayed in the browser"
+
+    ^self subclassResponsibility
+
+    "Created: / 14-01-2013 / 11:57:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 currentFileNameHolder
     "return a ValueHolder with an OrderedCollection containing all selected files.
      If no file but a directory is selected it contains the directories 
@@ -3669,6 +3743,12 @@
         ]
 !
 
+makeCommandHolder
+    ^ self aspectFor:#makeCommandHolder ifAbsent:[ nil asValue ].
+
+    "Created: / 13-04-2012 / 17:01:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 notify:aString
     "aString is shown in the lower pane"
 
@@ -3702,6 +3782,7 @@
     self aspectFor:#rootHolder put:aHolder
 ! !
 
+
 !AbstractFileBrowser methodsFor:'aspects handling'!
 
 aspectFor:something ifAbsent:aBlock
@@ -3811,6 +3892,7 @@
     "Modified: / 14-10-2010 / 19:16:38 / cg"
 ! !
 
+
 !AbstractFileBrowser methodsFor:'aspects-filter'!
 
 filter:aString
@@ -3869,6 +3951,11 @@
                             yesOrNo := false.
                             pattern := pattern copyFrom:2.
                         ].
+                        "JV@2012-03-05: Add implict star at the beggining and at the end of pattern,
+                         that's how most of the other applications behave - do what most users expect"
+                        pattern first == $* ifFalse:[pattern := '*' , pattern].
+                        pattern last  == $* ifFalse:[pattern := pattern , '*'].
+
                         yesOrNo ifTrue:[
                             [:name :baseName | pattern match:baseName ignoreCase:ignoreCase]
                         ] ifFalse:[
@@ -3888,6 +3975,8 @@
     ].
     ^ [:name :baseName | 
                 name isHidden not and:[filterBlock value:name value:baseName]].
+
+    "Modified: / 05-02-2012 / 01:42:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 shownFiles
@@ -3895,6 +3984,7 @@
     ^ self aspectFor:#shownFiles ifAbsent:['-/-' asValue]
 ! !
 
+
 !AbstractFileBrowser methodsFor:'aspects-history'!
 
 dirHistory
@@ -3925,6 +4015,7 @@
     ^ self aspectFor:#fileHistory ifAbsent:[OrderedSet new]
 ! !
 
+
 !AbstractFileBrowser methodsFor:'aspects-visibility'!
 
 activityVisibilityChannel
@@ -3944,6 +4035,12 @@
     "Modified: / 19-01-2012 / 10:43:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+hgMenusAreShown
+     ^ (ConfigurableFeatures includesFeature: #HGSupportEnabled)
+
+    "Created: / 14-01-2013 / 11:53:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 mercurialMenusAreShown
     ^ ConfigurableFeatures hasMercurialSupportEnabled
 
@@ -4148,6 +4245,7 @@
     ^ self directoryContentsBrowser viewType
 ! !
 
+
 !AbstractFileBrowser methodsFor:'background processing'!
 
 executeCommand:cmd
@@ -4230,6 +4328,7 @@
     process resume.
 ! !
 
+
 !AbstractFileBrowser methodsFor:'change & update'!
 
 currentFileNameHolderChanged
@@ -4322,20 +4421,42 @@
     can := false.
     dir := self currentDirectory.
     dir notNil ifTrue:[    
+        "/ Check for make
         can := (dir asFilename construct:'Makefile') exists.
         OperatingSystem isMSWINDOWSlike ifTrue:[
             can ifFalse:[
                 can := (self currentDirectory asFilename construct:'nt.mak') exists.
             ]
         ].
+        can ifTrue:[ 
+            self makeCommandHolder value: 'make'. 
+            self canMake value: true. 
+            ^ self 
+        ].
+
+        "/Check for Apache ant
+        (OperatingSystem canExecuteCommand: 'ant') ifTrue:[
+            can := (dir asFilename construct:'build.xml') exists.
+            can ifTrue:[ 
+                self makeCommandHolder value: 'ant'. 
+                self canMake value: true. 
+                ^ self 
+            ].
+        ].
+
+        "/Add more here...
+
     ].
     self canMake value:can.
+
+    "Modified: / 13-04-2012 / 17:05:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 updateListAfterDelete:colOfFiles
     self updateCurrentDirectory
 ! !
 
+
 !AbstractFileBrowser methodsFor:'clipboard'!
 
 canPaste
@@ -4387,6 +4508,7 @@
     self canPaste value:true.
 ! !
 
+
 !AbstractFileBrowser methodsFor:'drag & drop'!
 
 canDropFiles:dropedObjects for:filename 
@@ -4518,6 +4640,7 @@
     "Created: / 13-10-2006 / 18:26:41 / cg"
 ! !
 
+
 !AbstractFileBrowser methodsFor:'file operations'!
 
 copyFile:aSourceFile to:aDestFile
@@ -5031,6 +5154,7 @@
     "Modified: / 04-12-2006 / 13:15:24 / cg"
 ! !
 
+
 !AbstractFileBrowser methodsFor:'menu accessing'!
 
 bookmarksMenu
@@ -5265,6 +5389,7 @@
     "Modified: / 09-09-2012 / 13:07:45 / cg"
 ! !
 
+
 !AbstractFileBrowser methodsFor:'menu actions'!
 
 doCompareTwoFiles
@@ -5355,6 +5480,7 @@
     "Created: / 29-12-2010 / 11:03:00 / cg"
 ! !
 
+
 !AbstractFileBrowser methodsFor:'menu actions-file'!
 
 copyFiles
@@ -5401,6 +5527,7 @@
     ].
 ! !
 
+
 !AbstractFileBrowser methodsFor:'menu actions-help'!
 
 openAboutThisApplication
@@ -5413,6 +5540,7 @@
     HTMLDocumentView openFullOnDocumentationFile:relativeDocPath
 ! !
 
+
 !AbstractFileBrowser methodsFor:'menu actions-scm-cvs'!
 
 cvsAddAndCommit
@@ -5718,6 +5846,7 @@
     ^ stream contents.
 ! !
 
+
 !AbstractFileBrowser methodsFor:'menu actions-scm-mercurial'!
 
 mercurialAdd
@@ -5867,6 +5996,7 @@
     "Created: / 15-01-2012 / 19:43:08 / cg"
 ! !
 
+
 !AbstractFileBrowser methodsFor:'menu actions-tools'!
 
 allFilesInSelectedDirectoriesForWhich:aBlock
@@ -6232,17 +6362,31 @@
 doMake
     |dir cmd|
 
-    cmd := 'make'.
-    dir := self theSingleSelectedDirectoryOrNil.
-
-    OperatingSystem isMSWINDOWSlike ifTrue:[
-        dir notNil ifTrue:[
-            (dir construct:'bmake.bat') exists ifTrue:[
-                cmd := 'bmake.bat'.
+    cmd := self makeCommandHolder value.
+
+    "Make"
+    cmd = 'make' ifTrue:[
+        dir := self theSingleSelectedDirectoryOrNil.
+        OperatingSystem isMSWINDOWSlike ifTrue:[
+            dir notNil ifTrue:[
+                (dir construct:'bmake.bat') exists ifTrue:[
+                    cmd := 'bmake.bat'.
+                ]
             ]
-        ]
-    ].
-    self executeCommand:cmd.
+        ].
+        self executeCommand:cmd.
+        ^self.
+    ].
+
+    "Apache ant"
+    cmd = 'ant' ifTrue:[
+        self executeCommand:cmd.
+        ^self.
+    ].
+
+    "Add more here..."
+
+    "Modified (comment): / 13-04-2012 / 17:07:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 doOpenCBrowser
@@ -7973,6 +8117,7 @@
     "Modified: / 04-12-2006 / 13:15:28 / cg"
 ! !
 
+
 !AbstractFileBrowser methodsFor:'menu queries-cvs'!
 
 canCvsAddAndCommit
@@ -7994,6 +8139,7 @@
         ].
 ! !
 
+
 !AbstractFileBrowser methodsFor:'menu queries-tools'!
 
 anySTFilesOrDirectoriesPresent
@@ -8183,6 +8329,7 @@
     ^ false
 ! !
 
+
 !AbstractFileBrowser methodsFor:'presentation'!
 
 getModeString:modeBits
@@ -8222,6 +8369,7 @@
     ^ modeString
 ! !
 
+
 !AbstractFileBrowser methodsFor:'private'!
 
 theSingleSelectedDirectoryOrHomeDir
@@ -8240,6 +8388,7 @@
     ^ dirs anElement.
 ! !
 
+
 !AbstractFileBrowser methodsFor:'queries'!
 
 cBrowserLoaded
@@ -8387,6 +8536,7 @@
     ^ OperatingSystem isUNIXlike
 ! !
 
+
 !AbstractFileBrowser methodsFor:'queries-file'!
 
 allItemsOfCurrentDirectory
@@ -8570,6 +8720,7 @@
     ^ self recursiveAnyFilesPresentWithSuffix:'st'
 ! !
 
+
 !AbstractFileBrowser methodsFor:'selection'!
 
 currentSelectedDirectories
@@ -8623,6 +8774,7 @@
     "Modified: / 04-12-2006 / 13:15:04 / cg"
 ! !
 
+
 !AbstractFileBrowser methodsFor:'sorting'!
 
 currentSortOrder
@@ -8705,6 +8857,7 @@
     "Modified: / 18-09-2007 / 09:42:47 / cg"
 ! !
 
+
 !AbstractFileBrowser methodsFor:'startup & release'!
 
 makeDependent
@@ -8746,6 +8899,7 @@
     "Modified: / 25-07-2006 / 09:12:45 / cg"
 ! !
 
+
 !AbstractFileBrowser::Clipboard methodsFor:'accessing'!
 
 files
@@ -8772,6 +8926,7 @@
     method := something.
 ! !
 
+
 !AbstractFileBrowser::CodeExecutionLock methodsFor:'accessing'!
 
 locked
@@ -8783,6 +8938,7 @@
     ^ locked
 ! !
 
+
 !AbstractFileBrowser::CodeExecutionLock methodsFor:'actions'!
 
 doIfUnLocked:aBlock
@@ -8800,18 +8956,21 @@
     ]
 ! !
 
+
 !AbstractFileBrowser::DirectoryHistory class methodsFor:'defaults'!
 
 defaultHistorySize
     ^ 50
 ! !
 
+
 !AbstractFileBrowser::DirectoryHistory class methodsFor:'instance creation'!
 
 new
     ^ (super new) initializeHistory.
 ! !
 
+
 !AbstractFileBrowser::DirectoryHistory methodsFor:'accessing'!
 
 historySize
@@ -8823,6 +8982,7 @@
     historySize := aNumber
 ! !
 
+
 !AbstractFileBrowser::DirectoryHistory methodsFor:'actions'!
 
 addToHistory:aPath
@@ -8916,6 +9076,7 @@
     ].
 ! !
 
+
 !AbstractFileBrowser::DirectoryHistory methodsFor:'initialization'!
 
 initializeHistory
@@ -8927,6 +9088,7 @@
     backForwardIndex := backForwardList size.
 ! !
 
+
 !AbstractFileBrowser::DirectoryHistory methodsFor:'queries'!
 
 canBackward
@@ -9012,6 +9174,7 @@
     ^ retPath.
 ! !
 
+
 !AbstractFileBrowser::DirectoryHistory::DirectoryHistoryItem class methodsFor:'instance creation'!
 
 path:aPath
@@ -9019,6 +9182,7 @@
     ^ self new path:aPath
 ! !
 
+
 !AbstractFileBrowser::DirectoryHistory::DirectoryHistoryItem methodsFor:'accessing'!
 
 asFilename
@@ -9054,6 +9218,7 @@
     ^ self path asString
 ! !
 
+
 !AbstractFileBrowser::SaveAspectItem class methodsFor:'instance creation'!
 
 withValue:aValue isHolder:aBoolean
@@ -9066,6 +9231,7 @@
     ^ instance
 ! !
 
+
 !AbstractFileBrowser::SaveAspectItem methodsFor:'accessing'!
 
 isHolder
@@ -9092,6 +9258,7 @@
     value := something.
 ! !
 
+
 !AbstractFileBrowser class methodsFor:'documentation'!
 
 version
@@ -9100,5 +9267,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/AbstractFileBrowser.st,v 1.507 2013-01-15 14:07:08 stefan Exp $'
+!
+
+version_SVN
+    ^ '$Id: AbstractFileBrowser.st 8084 2013-01-14 12:06:02Z vranyj1 $'
 ! !
 
--- a/AbstractFileFinderApplicationComponent.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/AbstractFileFinderApplicationComponent.st	Wed Jan 30 11:15:09 2013 +0000
@@ -37,6 +37,7 @@
 "
 ! !
 
+
 !AbstractFileFinderApplicationComponent methodsFor:'accessing'!
 
 accessLock
@@ -57,6 +58,7 @@
     "Modified (format): / 11-01-2012 / 22:41:01 / cg"
 ! !
 
+
 !AbstractFileFinderApplicationComponent methodsFor:'actions'!
 
 changeInformationTo:aString
@@ -196,6 +198,7 @@
     ].
 ! !
 
+
 !AbstractFileFinderApplicationComponent methodsFor:'aspects'!
 
 autoSelectInBrowser
@@ -287,6 +290,7 @@
     ^ shownListHolder.
 ! !
 
+
 !AbstractFileFinderApplicationComponent methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
@@ -303,6 +307,7 @@
     super update:something with:aParameter from:changedObject
 ! !
 
+
 !AbstractFileFinderApplicationComponent methodsFor:'drag & drop'!
 
 getDisplayObjects:anArgument
@@ -345,6 +350,7 @@
         ].
 ! !
 
+
 !AbstractFileFinderApplicationComponent methodsFor:'event handling'!
 
 fileDoubleClick:entries
@@ -432,6 +438,7 @@
     ^ false
 ! !
 
+
 !AbstractFileFinderApplicationComponent methodsFor:'initialization'!
 
 initialize
@@ -444,6 +451,7 @@
     "Modified: / 12-01-2012 / 01:39:27 / cg"
 ! !
 
+
 !AbstractFileFinderApplicationComponent methodsFor:'queries'!
 
 hasOneFileSelected
@@ -459,6 +467,7 @@
     ^ sel notEmptyOrNil
 ! !
 
+
 !AbstractFileFinderApplicationComponent methodsFor:'tasks'!
 
 stopSearchTaskOrAbort
@@ -474,6 +483,7 @@
     "Created: / 12-01-2012 / 01:48:42 / cg"
 ! !
 
+
 !AbstractFileFinderApplicationComponent class methodsFor:'documentation'!
 
 version
@@ -482,5 +492,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/AbstractFileFinderApplicationComponent.st,v 1.8 2013-01-26 21:27:34 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: AbstractFileFinderApplicationComponent.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
 
--- a/AbstractLauncherApplication.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/AbstractLauncherApplication.st	Wed Jan 30 11:15:09 2013 +0000
@@ -14,12 +14,12 @@
 ToolApplicationModel subclass:#AbstractLauncherApplication
 	instanceVariableNames:'transcript'
 	classVariableNames:'NotifyingEmergencyHandler OpenLaunchers RegisteredMenuHandlers
-		OpenSettingsDialog'
+		OpenSettingsDialog SettingsList UserSettingsList'
 	poolDictionaries:''
 	category:'Interface-Smalltalk'
 !
 
-AbstractLauncherApplication class instanceVariableNames:'SettingsList UserSettingsList'
+AbstractLauncherApplication class instanceVariableNames:''
 
 "
  The following class instance variables are inherited by this class:
@@ -69,6 +69,7 @@
 
 ! !
 
+
 !AbstractLauncherApplication class methodsFor:'accessing'!
 
 closeAllLaunchers
@@ -113,6 +114,7 @@
     ^ OpenLaunchers
 ! !
 
+
 !AbstractLauncherApplication class methodsFor:'defaults'!
 
 notifyingEmergencyHandler
@@ -132,6 +134,7 @@
     "Modified: 15.1.1997 / 21:15:38 / cg"
 ! !
 
+
 !AbstractLauncherApplication class methodsFor:'image specs'!
 
 communicationIcon
@@ -196,6 +199,7 @@
     ^ ToolbarIconLibrary systemBrowser24x24Icon
 ! !
 
+
 !AbstractLauncherApplication class methodsFor:'queries'!
 
 isVisualStartable
@@ -211,6 +215,7 @@
     "
 ! !
 
+
 !AbstractLauncherApplication class methodsFor:'settings application list'!
 
 addSettingsApplicationByClass:aClass withName:aName icon:anIcon
@@ -369,6 +374,7 @@
     ^ UserSettingsList
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'drag & drop'!
 
 canDropObjects:aCollectionOfDropObjects
@@ -417,6 +423,7 @@
     WorkspaceApplication openWith:aDropContext.
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'menu actions - tools'!
 
 clearAllCoverageInfo
@@ -434,6 +441,7 @@
     self openApplication:#Tools::TestRunner2
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'oldStyle-user actions-settings'!
 
 communicationsSettings
@@ -609,6 +617,7 @@
     "Modified: / 31.7.1998 / 22:47:33 / cg"
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'private'!
 
 allTopViewsAndLabelsSortedFilteringWindowGroups: windowGroupFilterOrNil
@@ -942,6 +951,7 @@
     "Modified: / 25.2.1998 / 21:24:20 / cg"
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'private-settings callBacks'!
 
 changeViewStyleTo:newStyle
@@ -1094,6 +1104,7 @@
     "Modified: / 4.8.1998 / 17:08:33 / cg"
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'queries'!
 
 bugReporterAvailable
@@ -1135,6 +1146,7 @@
     ^ false "/ WindowTreeView notNil
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'settings dialog'!
 
 openSettings
@@ -1169,6 +1181,7 @@
     OpenSettingsDialog := nil.
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'startup & release'!
 
 addTopViewsToCurrentProject
@@ -1239,6 +1252,7 @@
 
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'user actions-about'!
 
 openLicenseConditions
@@ -1265,6 +1279,7 @@
     "Modified: / 23.4.1998 / 11:45:53 / cg"
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'user actions-classes'!
 
 browseAllBreakAndTracePoints
@@ -1552,6 +1567,7 @@
     SystemBrowser openOnSnapShotImage:imageFileName
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'user actions-demos'!
 
 startPDALauncher
@@ -1604,6 +1620,7 @@
     "Created: / 10.9.1998 / 11:48:42 / cg"
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'user actions-file'!
 
 exit
@@ -1656,6 +1673,7 @@
     "Modified: / 27-07-2012 / 09:46:19 / cg"
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'user actions-help'!
 
 showBookPrintDocument
@@ -1760,6 +1778,7 @@
 
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'user actions-system'!
 
 compressingGarbageCollect
@@ -1813,6 +1832,7 @@
     ]
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'user actions-tools'!
 
 inspectGlobalVariables
@@ -2009,6 +2029,7 @@
     "Modified: / 17.10.1998 / 14:38:18 / cg"
 ! !
 
+
 !AbstractLauncherApplication methodsFor:'user actions-windows'!
 
 allTopViewsDo:aBlock
@@ -2415,6 +2436,7 @@
     "Created: / 21.8.1998 / 20:44:12 / cg"
 ! !
 
+
 !AbstractLauncherApplication::LauncherDialogs class methodsFor:'dialogs'!
 
 communicationsSettings
@@ -5362,6 +5384,7 @@
     "Modified: / 07-11-2006 / 13:58:06 / cg"
 ! !
 
+
 !AbstractLauncherApplication::LauncherDialogs class methodsFor:'dialogs-file'!
 
 objectModuleDialog
@@ -5924,6 +5947,7 @@
 "
 ! !
 
+
 !AbstractLauncherApplication::LauncherDialogs class methodsFor:'dialogs-private'!
 
 cvsConfigurationDialog
@@ -6589,6 +6613,7 @@
     "Modified: / 7.7.1999 / 00:27:02 / cg"
 ! !
 
+
 !AbstractLauncherApplication::LauncherDialogs class methodsFor:'interface specs'!
 
 cvsSetupSpec
@@ -7004,6 +7029,7 @@
       )
 ! !
 
+
 !AbstractLauncherApplication class methodsFor:'documentation'!
 
 version
@@ -7017,3 +7043,4 @@
 version_SVN
     ^ '§Id: AbstractLauncherApplication.st 7796 2011-06-23 16:01:32Z vranyj1 §'
 ! !
+
--- a/AbstractRevisionItem.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/AbstractRevisionItem.st	Wed Jan 30 11:15:09 2013 +0000
@@ -9,8 +9,7 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
-
-
+"{ Package: 'stx:libtool' }"
 
 AbstractVersionDiffBrowserItem subclass:#AbstractRevisionItem
 	instanceVariableNames:'revision'
@@ -73,12 +72,14 @@
 revision
     "return the value of the instance variable 'revision' (automatically generated)"
 
-    ^ revision!
+    ^ revision
+!
 
 revision:something
     "set the value of the instance variable 'revision' (automatically generated)"
 
-    revision := something.!
+    revision := something.
+!
 
 revisionString
     "return the value of the instance variable 'revision' (automatically generated)"
@@ -147,5 +148,9 @@
 !AbstractRevisionItem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractRevisionItem.st,v 1.5 2000-02-18 14:10:15 cg Exp $'
+    ^ '$Id: AbstractRevisionItem.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+!
+
+version_SVN
+    ^ '$Id: AbstractRevisionItem.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/AbstractSettingsApplication.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/AbstractSettingsApplication.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 2002 by eXept Software AG
-              All Rights Reserved
+	      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
@@ -98,8 +98,7 @@
 	instanceVariableNames:'st80EditingMode tabsIs4 st80DoubleClickSelectMode
 		searchDialogIsModal startTextDragWithControl
 		extendedWordSelectMode whitespaceWordSelectMode
-		enforceContentsDropForFiles selectAllWhenClickingBeyondEnd
-		showAcceptCancelBarInBrowser useCodeView2InTools'
+		enforceContentsDropForFiles selectAllWhenClickingBeyondEnd useCodeView2InTools showAcceptCancelBarInBrowser'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:AbstractSettingsApplication
@@ -326,7 +325,7 @@
 		showEmbeddedTestRunnerInBrowser showBookmarkBar
 		webBrowserLikeLayout sortAndIndentClassesByInheritance
 		showLocalHistory showGlobalHistory useInPlaceSearchInBrowserLists
-		sourceCodeManagementMenuLayout'
+		sourceCodeManagementMenuLayout confirmRefactorings'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:AbstractSettingsApplication
@@ -342,6 +341,22 @@
 	privateIn:AbstractSettingsApplication
 !
 
+AbstractSettingsApplication subclass:#ToolboxSettingsAppl
+	instanceVariableNames:'changesBrowserClassName fileBrowserClassName'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:AbstractSettingsApplication
+!
+
+ApplicationModel subclass:#ClassToolSetting
+	instanceVariableNames:'optionValueHolder optionValueList optionLabelHolder
+		optionSelectionHolder optionLabelList optionCustomValueHolder
+		optionCustomValueVisibleHolder optionCustomValueBackgroundHolder'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:AbstractSettingsApplication::ToolboxSettingsAppl
+!
+
 AbstractSettingsApplication subclass:#ToolsSettingsAppl
 	instanceVariableNames:'useNewVersionDiffBrowser transcriptBufferSize useNewInspector
 		showClockInLauncher useNewChangesBrowser useNewFileBrowser
@@ -359,7 +374,7 @@
 copyright
 "
  COPYRIGHT (c) 2002 by eXept Software AG
-              All Rights Reserved
+	      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
@@ -380,20 +395,21 @@
 
     typical use:
 
-        |settingsList settingsApp|
-
-        settingsList := NewLauncher settingsList.
-
-        settingsApp := SettingsDialog new.
-        'settingsApp requestor:requestingApplication'.
-        settingsApp installSettingsEntries:settingsList.
-        settingsApp allButOpen.
-        settingsApp window label:('ST/X Settings').
-        settingsApp openWindow.
+	|settingsList settingsApp|
+
+	settingsList := NewLauncher settingsList.
+
+	settingsApp := SettingsDialog new.
+	'settingsApp requestor:requestingApplication'.
+	settingsApp installSettingsEntries:settingsList.
+	settingsApp allButOpen.
+	settingsApp window label:('ST/X Settings').
+	settingsApp openWindow.
 
 "
 ! !
 
+
 !AbstractSettingsApplication class methodsFor:'defaults'!
 
 classResources
@@ -416,12 +432,14 @@
     "Created: / 25-10-2010 / 09:37:21 / cg"
 ! !
 
+
 !AbstractSettingsApplication class methodsFor:'interface specs'!
 
 windowSpec
     self subclassResponsibility
 ! !
 
+
 !AbstractSettingsApplication class methodsFor:'queries'!
 
 isVisualStartable
@@ -432,6 +450,7 @@
     ^ super isVisualStartable
 ! !
 
+
 !AbstractSettingsApplication methodsFor:'accessing'!
 
 requestor:anotherApplication
@@ -450,6 +469,7 @@
     "Modified: / 12-05-2010 / 18:44:09 / cg"
 ! !
 
+
 !AbstractSettingsApplication methodsFor:'actions'!
 
 evaluateModified
@@ -470,10 +490,10 @@
     DebugView newDebugger.
     transcript := Transcript current.
     (transcript notNil and:[transcript isExternalStream not]) ifTrue:[
-        app := transcript topView application.
-        (app respondsTo:#reopenLauncher) ifTrue:[
-            app reopenLauncher.
-        ].
+	app := transcript topView application.
+	(app respondsTo:#reopenLauncher) ifTrue:[
+	    app reopenLauncher.
+	].
     ].
 !
 
@@ -485,23 +505,23 @@
     |result|
 
     self hasUnsavedChanges ifTrue:[
-        askForChangeOnRelease ifTrue:[
-            result := self confirmWithCancel:(self resources 
-                                string:'Apply changes made in %1 ?' 
-                                with:(resources string:settingsString) allBold).
-        ] ifFalse:[
-            result := true.
-        ].
-
-        result isNil ifTrue:[
-            ^ false
-        ].
-        result ifTrue:[
-            self saveSettings
-        ] ifFalse:[
-            "/ reload current settings to show the right thing when re-entering.
-            self readSettings
-        ]
+	askForChangeOnRelease ifTrue:[
+	    result := self confirmWithCancel:(self resources
+				string:'Apply changes made in %1 ?'
+				with:(resources string:settingsString) allBold).
+	] ifFalse:[
+	    result := true.
+	].
+
+	result isNil ifTrue:[
+	    ^ false
+	].
+	result ifTrue:[
+	    self saveSettings
+	] ifFalse:[
+	    "/ reload current settings to show the right thing when re-entering.
+	    self readSettings
+	]
     ].
     ^ true
 
@@ -516,8 +536,8 @@
 
 saveSettingsIfUnsavedChangesArePresent
     self hasUnsavedChanges ifTrue:[
-        self saveSettings.
-        self modifiedChannel value:false
+	self saveSettings.
+	self modifiedChannel value:false
     ].
 !
 
@@ -525,16 +545,18 @@
     self modifiedChannel value:self hasUnsavedChanges
 ! !
 
+
 !AbstractSettingsApplication methodsFor:'aspects'!
 
 modifiedChannel
 
     modifiedChannel isNil ifTrue:[
-        modifiedChannel := false asValue.
+	modifiedChannel := false asValue.
     ].
     ^ modifiedChannel
 ! !
 
+
 !AbstractSettingsApplication methodsFor:'helpers'!
 
 hasChangedAspectIn:aListOfAspects asComparedTo:anAspectProvider
@@ -542,22 +564,22 @@
      The object is typically the current userPreferences object, or a flag-holder, such
      as ParserFlags.
      Using this, and a list of aspect selectors replaces code like:
-        someone aspect1 ~= (self aspect1 value) ifTrue:[^ true].
-        someone aspect2 ~= (self aspect2 value) ifTrue:[^ true].
-        ...
-        someone aspectN ~= (self aspectN value) ifTrue:[^ true].
-        ^ false
+	someone aspect1 ~= (self aspect1 value) ifTrue:[^ true].
+	someone aspect2 ~= (self aspect2 value) ifTrue:[^ true].
+	...
+	someone aspectN ~= (self aspectN value) ifTrue:[^ true].
+	^ false
      Prerequisite:
-        local aspects must be named like corresponding aspect methods in the flag-provider.
+	local aspects must be named like corresponding aspect methods in the flag-provider.
     "
 
     aListOfAspects do:[:eachAspectSymbol |
-        (self perform:eachAspectSymbol) value ~= (anAspectProvider perform:eachAspectSymbol) ifTrue:[
+	(self perform:eachAspectSymbol) value ~= (anAspectProvider perform:eachAspectSymbol) ifTrue:[
 "/Transcript showCR:'different: ',eachAspectSymbol.
 "/Transcript showCR:'here: ',(self perform:eachAspectSymbol) value.
 "/Transcript showCR:'there: ',(anAspectProvider perform:eachAspectSymbol) value.
-            ^ true
-        ].
+	    ^ true
+	].
     ].
     ^ false
 
@@ -569,18 +591,18 @@
      The object is typically the current userPreferences object, or a flag-holder, such
      as ParserFlags.
      Using this, and a list of aspect selectors replaces code like:
-        self aspect1 value:(someone aspect1).
-        self aspect2 value:(someone aspect2).
-        ...
-        self aspectN value:(someone aspectN).
+	self aspect1 value:(someone aspect1).
+	self aspect2 value:(someone aspect2).
+	...
+	self aspectN value:(someone aspectN).
      Prerequisite:
-        local aspects must be named like corresponding aspect methods in the flag-provider.
+	local aspects must be named like corresponding aspect methods in the flag-provider.
     "
 
     aListOfAspects do:[:eachAspectSymbol |
-        (self perform:eachAspectSymbol) 
-            value:(anAspectProvider perform:eachAspectSymbol)
-            withoutNotifying:self
+	(self perform:eachAspectSymbol)
+	    value:(anAspectProvider perform:eachAspectSymbol)
+	    withoutNotifying:self
     ].
 
     "Modified: / 08-02-2011 / 09:11:03 / cg"
@@ -591,21 +613,22 @@
      The object is typically the current userPreferences object, or a flag-holder, such
      as ParserFlags.
      Using this, and a list of aspect selectors replaces code like:
-        someone aspect1:(self aspect1 value).
-        someone aspect2:(self aspect2 value).
-        ...
-        someone aspectN:(self aspectN value).
+	someone aspect1:(self aspect1 value).
+	someone aspect2:(self aspect2 value).
+	...
+	someone aspectN:(self aspectN value).
      Prerequisite:
-        local aspects must be named like corresponding aspect methods in the flag-provider.
-    "
-
-    aListOfAspects do:[:eachAspectSymbol |   
-        anAspectProvider perform:(eachAspectSymbol,':')asSymbol with:(self perform:eachAspectSymbol) value
+	local aspects must be named like corresponding aspect methods in the flag-provider.
+    "
+
+    aListOfAspects do:[:eachAspectSymbol |
+	anAspectProvider perform:(eachAspectSymbol,':')asSymbol with:(self perform:eachAspectSymbol) value
     ].
 
     "Modified: / 24-08-2010 / 16:52:42 / sr"
 ! !
 
+
 !AbstractSettingsApplication methodsFor:'initialization'!
 
 initialize
@@ -622,12 +645,14 @@
     currentUserPrefs := UserPreferences current.
 ! !
 
+
 !AbstractSettingsApplication methodsFor:'menu'!
 
 settingsDialogPopUpMenu
     ^ nil
 ! !
 
+
 !AbstractSettingsApplication methodsFor:'protocol'!
 
 askForChangeOnRelease
@@ -648,11 +673,11 @@
 
     filename := self helpFilename.
     filename isNil ifTrue:[
-        self warn:(self resources string:'Sorry - no Help available here.').
-        ^ self.
+	self warn:(self resources string:'Sorry - no Help available here.').
+	^ self.
     ].
     self withWaitCursorDo:[
-        HTMLDocumentView openFullOnHelpFile:filename
+	HTMLDocumentView openFullOnHelpFile:filename
     ].
 !
 
@@ -662,11 +687,12 @@
      Or nil, if no help is available."
 
     Smalltalk isStandAloneApp ifFalse:[
-        self subclassResponsibility.
+	self subclassResponsibility.
     ].
     ^ nil.
 ! !
 
+
 !AbstractSettingsApplication methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -684,6 +710,7 @@
     ^ settingsDialog getNameOfApplication:self.
 ! !
 
+
 !AbstractSettingsApplication::BuildSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -694,6 +721,7 @@
     "Modified: / 17-09-2007 / 11:35:02 / cg"
 ! !
 
+
 !AbstractSettingsApplication::BuildSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -711,162 +739,163 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Build Settings'
-          name: 'Build Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 659 242)
-        )
-        component: 
+	  label: 'Build Settings'
+	  name: 'Build Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 659 242)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel3'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 3
-              verticalSpace: 4
-              component: 
-             (SpecCollection
-                collection: (
-                 (FramedBoxSpec
-                    label: 'Build Directory'
-                    name: 'FramedBox1'
-                    labelPosition: topLeft
-                    translateLabel: true
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ViewSpec
-                          name: 'LocalBuild'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 25 0)
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Local Build (Do not use Repository)'
-                                name: 'CheckBox4'
-                                layout: (LayoutFrame 2 0 5 0 -5 1 27 0)
-                                enableChannel: hasSourceCodeManager
-                                model: localBuild
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                        )
-                       (ViewSpec
-                          name: 'Build Directory'
-                          layout: (LayoutFrame 0 0 40 0 0 1 70 0)
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (LabelSpec
-                                label: 'Build Directory:'
-                                name: 'BuildDirDirLabel'
-                                layout: (LayoutFrame 0 0.0 0 0 60 0.25 22 0)
-                                translateLabel: true
-                                adjust: right
-                              )
-                             (FilenameInputFieldSpec
-                                name: 'FilenameEntryField1'
-                                layout: (LayoutFrame 221 0 0 0 0 1 22 0)
-                                enableChannel: localBuild
-                                model: buildDirectory
-                                acceptOnReturn: true
-                                acceptOnTab: true
-                                acceptOnLostFocus: true
-                                acceptOnPointerLeave: true
-                                viewClassName: FilenameWidgetWithHistory
-                                postBuildCallback: postBuildDirectoryField:
-                              )
-                             )
-                           
-                          )
-                        )
-                       (HorizontalPanelViewSpec
-                          name: 'ActionsHorizontalPanel'
-                          layout: (LayoutFrame 62 0.25 67 0 0 1 96 0)
-                          horizontalLayout: fitSpace
-                          verticalLayout: center
-                          horizontalSpace: 3
-                          verticalSpace: 3
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (ActionButtonSpec
-                                label: 'Cleanup Build Directory'
-                                name: 'CleanupBuildDirectoryButton'
-                                translateLabel: true
-                                tabable: true
-                                model: cleanupBuildDirectory
-                                extent: (Point 401 22)
-                              )
-                             )
-                           
-                          )
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 659 128)
-                  )
-                 (ViewSpec
-                    name: 'Box1'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Compiler for Build:'
-                          name: 'Label1'
-                          layout: (LayoutFrame 0 0 0 0 150 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (ComboListSpec
-                          name: 'ComboList1'
-                          layout: (LayoutFrame 150 0 0 0 300 0 20 0)
-                          model: usedCompilerForBuild
-                          comboList: listOfPossibleCompilers
-                          useIndex: false
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 659 25)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel3'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 4
+	      component:
+	     (SpecCollection
+		collection: (
+		 (FramedBoxSpec
+		    label: 'Build Directory'
+		    name: 'FramedBox1'
+		    labelPosition: topLeft
+		    translateLabel: true
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (ViewSpec
+			  name: 'LocalBuild'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Local Build (Do not use Repository)'
+				name: 'CheckBox4'
+				layout: (LayoutFrame 2 0 5 0 -5 1 27 0)
+				enableChannel: hasSourceCodeManager
+				model: localBuild
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			)
+		       (ViewSpec
+			  name: 'Build Directory'
+			  layout: (LayoutFrame 0 0 40 0 0 1 70 0)
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (LabelSpec
+				label: 'Build Directory:'
+				name: 'BuildDirDirLabel'
+				layout: (LayoutFrame 0 0.0 0 0 60 0.25 22 0)
+				translateLabel: true
+				adjust: right
+			      )
+			     (FilenameInputFieldSpec
+				name: 'FilenameEntryField1'
+				layout: (LayoutFrame 221 0 0 0 0 1 22 0)
+				enableChannel: localBuild
+				model: buildDirectory
+				acceptOnReturn: true
+				acceptOnTab: true
+				acceptOnLostFocus: true
+				acceptOnPointerLeave: true
+				viewClassName: FilenameWidgetWithHistory
+				postBuildCallback: postBuildDirectoryField:
+			      )
+			     )
+
+			  )
+			)
+		       (HorizontalPanelViewSpec
+			  name: 'ActionsHorizontalPanel'
+			  layout: (LayoutFrame 62 0.25 67 0 0 1 96 0)
+			  horizontalLayout: fitSpace
+			  verticalLayout: center
+			  horizontalSpace: 3
+			  verticalSpace: 3
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (ActionButtonSpec
+				label: 'Cleanup Build Directory'
+				name: 'CleanupBuildDirectoryButton'
+				translateLabel: true
+				tabable: true
+				model: cleanupBuildDirectory
+				extent: (Point 401 22)
+			      )
+			     )
+
+			  )
+			)
+		       )
+
+		    )
+		    extent: (Point 659 128)
+		  )
+		 (ViewSpec
+		    name: 'Box1'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Compiler for Build:'
+			  name: 'Label1'
+			  layout: (LayoutFrame 0 0 0 0 150 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (ComboListSpec
+			  name: 'ComboList1'
+			  layout: (LayoutFrame 150 0 0 0 300 0 20 0)
+			  model: usedCompilerForBuild
+			  comboList: listOfPossibleCompilers
+			  useIndex: false
+			)
+		       )
+
+		    )
+		    extent: (Point 659 25)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 
     "Modified: / 22-01-2012 / 10:59:44 / cg"
 ! !
 
+
 !AbstractSettingsApplication::BuildSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
-    self 
-        readAspects:
-            #( 
-                buildDirectory
-                localBuild
-                usedCompilerForBuild
-            )
-        from:currentUserPrefs.
+    self
+	readAspects:
+	    #(
+		buildDirectory
+		localBuild
+		usedCompilerForBuild
+	    )
+	from:currentUserPrefs.
 
     usedCompilerForBuild value isNil ifTrue:[
-        currentUserPrefs usedCompilerForBuild:(Tools::ProjectBuilder defaultUsedCompiler).
-        usedCompilerForBuild value:(Tools::ProjectBuilder defaultUsedCompiler).
+	currentUserPrefs usedCompilerForBuild:(Tools::ProjectBuilder defaultUsedCompiler).
+	usedCompilerForBuild value:(Tools::ProjectBuilder defaultUsedCompiler).
     ].
 
     "Modified: / 26-07-2012 / 23:16:52 / cg"
@@ -877,25 +906,25 @@
 
     buildDir := buildDirectory value.
     buildDir notEmptyOrNil ifTrue:[
-        buildDir := buildDir asFilename.
-        buildDir isDirectory ifFalse:[
-            (Dialog confirm:(resources 
-                        stringWithCRs:'Build directory %1 does not exist.\\Create?' 
-                        with:buildDir pathName allBold))
-            ifTrue:[
-                buildDir makeDirectory.
-            ]
-        ].
-    ].
-
-    self 
-        writeAspects:
-            #( 
-                buildDirectory
-                localBuild
-                usedCompilerForBuild
-            )
-        to:currentUserPrefs.
+	buildDir := buildDir asFilename.
+	buildDir isDirectory ifFalse:[
+	    (Dialog confirm:(resources
+			stringWithCRs:'Build directory %1 does not exist.\\Create?'
+			with:buildDir pathName allBold))
+	    ifTrue:[
+		buildDir makeDirectory.
+	    ]
+	].
+    ].
+
+    self
+	writeAspects:
+	    #(
+		buildDirectory
+		localBuild
+		usedCompilerForBuild
+	    )
+	to:currentUserPrefs.
 
     "Modified: / 22-01-2012 / 10:50:09 / cg"
 !
@@ -905,21 +934,22 @@
 
     buildDir := buildDirectory value.
     buildDir isEmptyOrNil ifTrue:[
-        ^ self.
+	^ self.
     ].
     buildDir := buildDir asFilename.
     (buildDir exists and:[Dialog confirm:('Really delete <1p> ?' expandMacrosWith:buildDir physicalPathName)]) ifTrue:[
-        buildDir recursiveRemove.
-        buildDir makeDirectory.
-    ].
-! !
+	buildDir recursiveRemove.
+	buildDir makeDirectory.
+    ].
+! !
+
 
 !AbstractSettingsApplication::BuildSettingsAppl methodsFor:'aspects'!
 
 buildDirectory
     buildDirectory isNil ifTrue:[
-        buildDirectory := ValueHolder new.
-        buildDirectory onChangeSend:#updateModifiedChannel to:self
+	buildDirectory := ValueHolder new.
+	buildDirectory onChangeSend:#updateModifiedChannel to:self
     ].
     ^ buildDirectory.
 !
@@ -936,53 +966,57 @@
 
 localBuild
     localBuild isNil ifTrue:[
-        localBuild := UserPreferences current localBuild asValue.
-        localBuild onChangeSend:#updateModifiedChannel to:self
+	localBuild := UserPreferences current localBuild asValue.
+	localBuild onChangeSend:#updateModifiedChannel to:self
     ].
     ^ localBuild.
 !
 
 usedCompilerForBuild
     usedCompilerForBuild isNil ifTrue:[
-        usedCompilerForBuild := nil asValue.
-        usedCompilerForBuild onChangeSend:#updateModifiedChannel to:self
+	usedCompilerForBuild := nil asValue.
+	usedCompilerForBuild onChangeSend:#updateModifiedChannel to:self
     ].
     ^ usedCompilerForBuild.
 
     "Created: / 22-01-2012 / 10:59:30 / cg"
 ! !
 
+
 !AbstractSettingsApplication::BuildSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/buildSetup.html'
 ! !
 
+
 !AbstractSettingsApplication::BuildSettingsAppl methodsFor:'initialization'!
 
 postBuildDirectoryField:aField
-    aField historyList value:(Array 
-        with:(OperatingSystem getHomeDirectory asFilename construct:'stx_build') pathName
-        with:(Filename currentDirectory construct:'stx_build') pathName)
-! !
+    aField historyList value:(Array
+	with:(OperatingSystem getHomeDirectory asFilename construct:'stx_build') pathName
+	with:(Filename currentDirectory construct:'stx_build') pathName)
+! !
+
 
 !AbstractSettingsApplication::BuildSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
     (self
-        hasChangedAspectIn:
-            #(
-                buildDirectory
-                localBuild
-                usedCompilerForBuild
-            )
-        asComparedTo:currentUserPrefs) ifTrue:[^ true].
+	hasChangedAspectIn:
+	    #(
+		buildDirectory
+		localBuild
+		usedCompilerForBuild
+	    )
+	asComparedTo:currentUserPrefs) ifTrue:[^ true].
 
     ^ false
 
     "Modified: / 22-01-2012 / 10:50:15 / cg"
 ! !
 
+
 !AbstractSettingsApplication::ByteCodeCompilerSettingsAppl class methodsFor:'defaults'!
 
 constantFoldingOptions
@@ -995,6 +1029,7 @@
     ^ #('disabled' 'level1 (always safe)' 'level2 (usually safe)' 'full')
 ! !
 
+
 !AbstractSettingsApplication::ByteCodeCompilerSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -1021,8 +1056,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::ByteCodeCompilerSettingsAppl class defaultIcon1'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[2]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::ByteCodeCompilerSettingsAppl class defaultIcon1'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[2]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@@@C??????@CUUUUUW@CZ(J@B''@CZ""(*''CCZ"*(*''@CV(J(*WKCV*"(*W@CU""()WJCU(J()W@CUZ**%W@CUZ**%WACUPJ(EW@CUR""QWDCUQ"!!UWI
 CUPJ!!UWICUQR!!UWJCUQR!!QWACUPFTEW@CUUUUUW@C??????@@@@@@@@B') ; colorMapFromArray:#[0 0 0 255 255 255 255 189 23 127 127 127]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8@@@@') ; yourself); yourself]
 !
@@ -1043,8 +1078,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::ByteCodeCompilerSettingsAppl class defaultIcon2'
-        ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::ByteCodeCompilerSettingsAppl class defaultIcon2'
+	ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 A@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PD@0LDA@PDA@PDA@PDA@PDA@PD
 A@PDA@LCA PCA@P@@@@@@@@@@@@@@@@@@@@D@0PFA PCA@PC@0@@@@@@@@@@@@@C@0@D@0PFAPTD@0LDA L@@@@@@@@@@@LFA@LCA@TEAPTEA@PE@PL@@@@@
 @@@@@@LAAPPDAPTEAPTEAPTF@0@@@@@@@@@@@@@CA TEAPTEA DFAPTD@0@@@@@@@@@@@@@CA@TEA DF@0LAA TEA@LC@@@@@@@@@0LDAPTF@PLC@ HC@PTE
@@ -1070,8 +1105,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:'AbstractSettingsApplication::ByteCodeCompilerSettingsAppl class defaultIcon5'
-        ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:'AbstractSettingsApplication::ByteCodeCompilerSettingsAppl class defaultIcon5'
+	ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 A@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PC@0PDA@PD
 A@PDA@PDA@PDA@PDA@PDA@LDA LDA@PDA@PDA@PDA@PDA@PD@0LDA@LDA LDA@LCA@PDA@PDA@PDA@PCA PC@0PEAPPC@0PF@0PDA@PDA@PDA@PC@PTDA@TE
 APTDA@TA@0PDA@PDA@PDA@PD@0XEAPTEAPTEAPXCA@PDA@PDA@PDA@PD@0PEAPXAA XEAPPCA@PDA@PDA@PDA@LCA@TEA DC@0DFAPTD@0LDA@PDA@PD@0PD
@@ -1081,6 +1116,7 @@
 @@PC@@LD@@P@@0PDA@PC@0LC@0LD@0LC@0LC@@LC@0LC@0PD') ; colorMapFromArray:#[255 189 23 127 127 127 236 233 216 0 0 0 255 255 255 194 194 194 161 161 165]; mask:((Depth1Image new) width: 24; height: 24; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@A @@C0@@33@A?? A?? @??@@??@C??0G??8G??8C??0@??@@??@A?? A?? @33@@C0@O5+<HT*DHTJDO7;<') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::ByteCodeCompilerSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -1098,451 +1134,452 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Byte Code Compiler Settings'
-          name: 'Byte Code Compiler Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 665 706)
-        )
-        component: 
+	  label: 'Byte Code Compiler Settings'
+	  name: 'Byte Code Compiler Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 665 706)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel1'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (CheckBoxSpec
-                    label: 'Just in Time Compilation to Machine Code'
-                    name: 'JustInTimeCompilation'
-                    model: justInTimeCompilation
-                    translateLabel: true
-                    extent: (Point 665 25)
-                  )
-                 (DividerSpec
-                    name: 'Separator3'
-                    extent: (Point 665 3)
-                  )
-                 (ViewSpec
-                    name: 'Box1'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (VerticalPanelViewSpec
-                          name: 'VerticalPanel1_1'
-                          layout: (LayoutFrame 0 0 0 0 -20 0.5 0 1)
-                          horizontalLayout: fit
-                          verticalLayout: top
-                          horizontalSpace: 3
-                          verticalSpace: 0
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Allow Underscore in Identifiers'
-                                name: 'AllowUnderscoreInIdentifiers'
-                                model: allowUnderscoreInIdentifier
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Allow Dollar in Identifiers'
-                                name: 'AllowDollarInIdentifiers'
-                                model: allowDollarInIdentifier
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Allow VW3 QualifiedNames'
-                                name: 'AllowVW3QualifiedNames'
-                                model: allowQualifiedNames
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Allow OldStyle Assignment (_)'
-                                name: 'AllowOldStyleAssignment'
-                                model: allowOldStyleAssignment
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Allow Reserved Words as Selector (self)'
-                                name: 'AllowReservedWordsAsSelector'
-                                model: allowReservedWordsAsSelectors
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Allow Extended Binary Selectors'
-                                name: 'CheckBox4'
-                                model: allowExtendedBinarySelectors
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Allow Assignment to Pool Variable'
-                                name: 'CheckBox6'
-                                model: allowAssignmentToPoolVariable
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             )
-                           
-                          )
-                        )
-                       (VerticalPanelViewSpec
-                          name: 'VerticalPanel1_2'
-                          layout: (LayoutFrame 0 0.5 0 0 0 1 0 1)
-                          horizontalLayout: left
-                          verticalLayout: top
-                          horizontalSpace: 3
-                          verticalSpace: 0
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Allow Squeak Extensions'
-                                name: 'AllowSqueakExtensions'
-                                model: allowSqueakExtensions
-                                translateLabel: true
-                                extent: (Point 665 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Allow Dolphin Extensions'
-                                name: 'AllowDolphinExtensions'
-                                model: allowDolphinExtensions
-                                translateLabel: true
-                                extent: (Point 665 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Allow VisualAge ES-Symbols'
-                                name: 'AllowVisualAgeESSymbolLiterals'
-                                model: allowVisualAgeESSymbolLiterals
-                                translateLabel: true
-                                extent: (Point 665 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Allow VisualAge Primitives'
-                                name: 'CheckBox8'
-                                model: allowVisualAgePrimitives
-                                translateLabel: true
-                                extent: (Point 665 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Allow FixedPoint-Number Literals'
-                                name: 'AllowFixedPointLiterals'
-                                model: allowFixedPointLiterals
-                                translateLabel: true
-                                extent: (Point 665 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Allow Empty Statements'
-                                name: 'AllowEmptyStatements'
-                                model: allowEmptyStatements
-                                translateLabel: true
-                                extent: (Point 665 22)
-                              )
-                             )
-                           
-                          )
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 665 157)
-                  )
-                 (DividerSpec
-                    name: 'Separator4'
-                    extent: (Point 665 1)
-                  )
-                 (CheckBoxSpec
-                    label: 'Warnings'
-                    name: 'Warnings'
-                    model: warnings
-                    translateLabel: true
-                    extent: (Point 665 22)
-                  )
-                 (ViewSpec
-                    name: 'Box2'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (VerticalPanelViewSpec
-                          name: 'VerticalPanel2_1'
-                          layout: (LayoutFrame 20 0 0 0 0 0.5 0 1)
-                          horizontalLayout: fit
-                          verticalLayout: top
-                          horizontalSpace: 3
-                          verticalSpace: 0
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'ST/X Extensions'
-                                name: 'STXExtensions'
-                                enableChannel: warnings
-                                model: warnSTXSpecials
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Reference to Private Class'
-                                name: 'CheckBox1'
-                                enableChannel: warnings
-                                model: warnAboutReferenceToPrivateClass
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Underscores in Identifiers'
-                                name: 'UnderscoresInIdentifiers'
-                                enableChannel: enableUnderscore
-                                model: warnUnderscoreInIdentifier
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Dollars in Identifiers'
-                                name: 'DollarsInIdentifiers'
-                                enableChannel: enableDollar
-                                model: warnDollarInIdentifier
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'OldStyle Assignment'
-                                name: 'OldStyleAssignment'
-                                enableChannel: warnings
-                                model: warnOldStyleAssignment
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Possible Incompatibilities'
-                                name: 'PossibleIncompatibilities'
-                                enableChannel: warnings
-                                model: warnPossibleIncompatibilities
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Possible STC Compilation Problems'
-                                name: 'PossibleSTCCompilationProblems'
-                                enableChannel: warnings
-                                model: warnAboutPossibleSTCCompilationProblems
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Possibly Unimplemented Selectors'
-                                name: 'CheckBox3'
-                                enableChannel: warnings
-                                model: warnAboutPossiblyUnimplementedSelectors
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Plausibility Checks'
-                                name: 'CheckBox7'
-                                enableChannel: warnings
-                                model: warnPlausibilityChecks
-                                translateLabel: true
-                                extent: (Point 313 22)
-                              )
-                             )
-                           
-                          )
-                        )
-                       (VerticalPanelViewSpec
-                          name: 'VerticalPanel2_2'
-                          layout: (LayoutFrame -1 0.5 0 0 0 1 0 1)
-                          horizontalLayout: left
-                          verticalLayout: top
-                          horizontalSpace: 3
-                          verticalSpace: 0
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Unused Method Variables'
-                                name: 'UnusedMethodVariables'
-                                enableChannel: warnings
-                                model: warnUnusedVars
-                                translateLabel: true
-                                extent: (Point 600 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Bad (non-English) Variable Names'
-                                name: 'BadVariableNames'
-                                enableChannel: warnings
-                                model: warnAboutWrongVariableNames
-                                translateLabel: true
-                                extent: (Point 600 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Bad (Non-Lowercase) Local Variable Names'
-                                name: 'BadLocalVariableNames'
-                                enableChannel: warnings
-                                model: warnAboutNonLowercaseLocalVariableNames
-                                translateLabel: true
-                                extent: (Point 600 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Bad (Short) Local Variable Names'
-                                name: 'CheckBox2'
-                                enableChannel: warnings
-                                model: warnAboutShortLocalVariableNames
-                                translateLabel: true
-                                extent: (Point 600 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Bad (empty) Comments'
-                                name: 'BadComments'
-                                enableChannel: warnings
-                                model: warnAboutBadComments
-                                translateLabel: true
-                                extent: (Point 600 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Method-Comment Missing '
-                                name: 'CheckBox5'
-                                enableChannel: warnings
-                                model: warnAboutMissingMethodComment
-                                translateLabel: true
-                                extent: (Point 600 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Inconsistent Return Values'
-                                name: 'InconsistentReturnValues'
-                                enableChannel: warnings
-                                model: warnInconsistentReturnValues
-                                translateLabel: true
-                                extent: (Point 600 22)
-                              )
-                             (CheckBoxSpec
-                                label: 'Common Mistakes'
-                                name: 'CommonMistakes'
-                                enableChannel: warnings
-                                model: warnCommonMistakes
-                                translateLabel: true
-                                extent: (Point 600 22)
-                              )
-                             )
-                           
-                          )
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 665 206)
-                  )
-                 (ViewSpec
-                    name: 'Box4'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ActionButtonSpec
-                          label: 'Reenable Suppressed Warnings Now'
-                          name: 'Button1'
-                          layout: (LayoutOrigin 0 0.5 0 0)
-                          translateLabel: true
-                          model: reenableSuppressedWarnings
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 665 30)
-                  )
-                 (DividerSpec
-                    name: 'Separator5'
-                    extent: (Point 665 2)
-                  )
-                 (CheckBoxSpec
-                    label: 'Literal Arrays are Immutable'
-                    name: 'LiteralArraysAreImmutable'
-                    model: arraysAreImmutable
-                    translateLabel: true
-                    extent: (Point 665 22)
-                  )
-                 (CheckBoxSpec
-                    label: 'Full Debug Info'
-                    name: 'FullDebugInfo'
-                    model: fullDebugSupport
-                    translateLabel: true
-                    extent: (Point 665 22)
-                  )
-                 (DividerSpec
-                    name: 'Separator6'
-                    extent: (Point 665 2)
-                  )
-                 (ViewSpec
-                    name: 'Box3'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Constant Folding:'
-                          name: 'ConstantFoldingLabel'
-                          layout: (LayoutFrame 0 0 0 0 306 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (PopUpListSpec
-                          label: 'PopUp List'
-                          name: 'ConstantFolding'
-                          layout: (LayoutFrame 313 0 0 0 -5 1 22 0)
-                          tabable: true
-                          model: constantFoldingSelection
-                          menu: constantFolding
-                          useIndex: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 665 22)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel1'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (CheckBoxSpec
+		    label: 'Just in Time Compilation to Machine Code'
+		    name: 'JustInTimeCompilation'
+		    model: justInTimeCompilation
+		    translateLabel: true
+		    extent: (Point 665 25)
+		  )
+		 (DividerSpec
+		    name: 'Separator3'
+		    extent: (Point 665 3)
+		  )
+		 (ViewSpec
+		    name: 'Box1'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (VerticalPanelViewSpec
+			  name: 'VerticalPanel1_1'
+			  layout: (LayoutFrame 0 0 0 0 -20 0.5 0 1)
+			  horizontalLayout: fit
+			  verticalLayout: top
+			  horizontalSpace: 3
+			  verticalSpace: 0
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Allow Underscore in Identifiers'
+				name: 'AllowUnderscoreInIdentifiers'
+				model: allowUnderscoreInIdentifier
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Allow Dollar in Identifiers'
+				name: 'AllowDollarInIdentifiers'
+				model: allowDollarInIdentifier
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Allow VW3 QualifiedNames'
+				name: 'AllowVW3QualifiedNames'
+				model: allowQualifiedNames
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Allow OldStyle Assignment (_)'
+				name: 'AllowOldStyleAssignment'
+				model: allowOldStyleAssignment
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Allow Reserved Words as Selector (self)'
+				name: 'AllowReservedWordsAsSelector'
+				model: allowReservedWordsAsSelectors
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Allow Extended Binary Selectors'
+				name: 'CheckBox4'
+				model: allowExtendedBinarySelectors
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Allow Assignment to Pool Variable'
+				name: 'CheckBox6'
+				model: allowAssignmentToPoolVariable
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     )
+
+			  )
+			)
+		       (VerticalPanelViewSpec
+			  name: 'VerticalPanel1_2'
+			  layout: (LayoutFrame 0 0.5 0 0 0 1 0 1)
+			  horizontalLayout: left
+			  verticalLayout: top
+			  horizontalSpace: 3
+			  verticalSpace: 0
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Allow Squeak Extensions'
+				name: 'AllowSqueakExtensions'
+				model: allowSqueakExtensions
+				translateLabel: true
+				extent: (Point 665 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Allow Dolphin Extensions'
+				name: 'AllowDolphinExtensions'
+				model: allowDolphinExtensions
+				translateLabel: true
+				extent: (Point 665 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Allow VisualAge ES-Symbols'
+				name: 'AllowVisualAgeESSymbolLiterals'
+				model: allowVisualAgeESSymbolLiterals
+				translateLabel: true
+				extent: (Point 665 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Allow VisualAge Primitives'
+				name: 'CheckBox8'
+				model: allowVisualAgePrimitives
+				translateLabel: true
+				extent: (Point 665 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Allow FixedPoint-Number Literals'
+				name: 'AllowFixedPointLiterals'
+				model: allowFixedPointLiterals
+				translateLabel: true
+				extent: (Point 665 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Allow Empty Statements'
+				name: 'AllowEmptyStatements'
+				model: allowEmptyStatements
+				translateLabel: true
+				extent: (Point 665 22)
+			      )
+			     )
+
+			  )
+			)
+		       )
+
+		    )
+		    extent: (Point 665 157)
+		  )
+		 (DividerSpec
+		    name: 'Separator4'
+		    extent: (Point 665 1)
+		  )
+		 (CheckBoxSpec
+		    label: 'Warnings'
+		    name: 'Warnings'
+		    model: warnings
+		    translateLabel: true
+		    extent: (Point 665 22)
+		  )
+		 (ViewSpec
+		    name: 'Box2'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (VerticalPanelViewSpec
+			  name: 'VerticalPanel2_1'
+			  layout: (LayoutFrame 20 0 0 0 0 0.5 0 1)
+			  horizontalLayout: fit
+			  verticalLayout: top
+			  horizontalSpace: 3
+			  verticalSpace: 0
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'ST/X Extensions'
+				name: 'STXExtensions'
+				enableChannel: warnings
+				model: warnSTXSpecials
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Reference to Private Class'
+				name: 'CheckBox1'
+				enableChannel: warnings
+				model: warnAboutReferenceToPrivateClass
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Underscores in Identifiers'
+				name: 'UnderscoresInIdentifiers'
+				enableChannel: enableUnderscore
+				model: warnUnderscoreInIdentifier
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Dollars in Identifiers'
+				name: 'DollarsInIdentifiers'
+				enableChannel: enableDollar
+				model: warnDollarInIdentifier
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     (CheckBoxSpec
+				label: 'OldStyle Assignment'
+				name: 'OldStyleAssignment'
+				enableChannel: warnings
+				model: warnOldStyleAssignment
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Possible Incompatibilities'
+				name: 'PossibleIncompatibilities'
+				enableChannel: warnings
+				model: warnPossibleIncompatibilities
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Possible STC Compilation Problems'
+				name: 'PossibleSTCCompilationProblems'
+				enableChannel: warnings
+				model: warnAboutPossibleSTCCompilationProblems
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Possibly Unimplemented Selectors'
+				name: 'CheckBox3'
+				enableChannel: warnings
+				model: warnAboutPossiblyUnimplementedSelectors
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Plausibility Checks'
+				name: 'CheckBox7'
+				enableChannel: warnings
+				model: warnPlausibilityChecks
+				translateLabel: true
+				extent: (Point 313 22)
+			      )
+			     )
+
+			  )
+			)
+		       (VerticalPanelViewSpec
+			  name: 'VerticalPanel2_2'
+			  layout: (LayoutFrame -1 0.5 0 0 0 1 0 1)
+			  horizontalLayout: left
+			  verticalLayout: top
+			  horizontalSpace: 3
+			  verticalSpace: 0
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Unused Method Variables'
+				name: 'UnusedMethodVariables'
+				enableChannel: warnings
+				model: warnUnusedVars
+				translateLabel: true
+				extent: (Point 600 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Bad (non-English) Variable Names'
+				name: 'BadVariableNames'
+				enableChannel: warnings
+				model: warnAboutWrongVariableNames
+				translateLabel: true
+				extent: (Point 600 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Bad (Non-Lowercase) Local Variable Names'
+				name: 'BadLocalVariableNames'
+				enableChannel: warnings
+				model: warnAboutNonLowercaseLocalVariableNames
+				translateLabel: true
+				extent: (Point 600 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Bad (Short) Local Variable Names'
+				name: 'CheckBox2'
+				enableChannel: warnings
+				model: warnAboutShortLocalVariableNames
+				translateLabel: true
+				extent: (Point 600 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Bad (empty) Comments'
+				name: 'BadComments'
+				enableChannel: warnings
+				model: warnAboutBadComments
+				translateLabel: true
+				extent: (Point 600 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Method-Comment Missing '
+				name: 'CheckBox5'
+				enableChannel: warnings
+				model: warnAboutMissingMethodComment
+				translateLabel: true
+				extent: (Point 600 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Inconsistent Return Values'
+				name: 'InconsistentReturnValues'
+				enableChannel: warnings
+				model: warnInconsistentReturnValues
+				translateLabel: true
+				extent: (Point 600 22)
+			      )
+			     (CheckBoxSpec
+				label: 'Common Mistakes'
+				name: 'CommonMistakes'
+				enableChannel: warnings
+				model: warnCommonMistakes
+				translateLabel: true
+				extent: (Point 600 22)
+			      )
+			     )
+
+			  )
+			)
+		       )
+
+		    )
+		    extent: (Point 665 206)
+		  )
+		 (ViewSpec
+		    name: 'Box4'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (ActionButtonSpec
+			  label: 'Reenable Suppressed Warnings Now'
+			  name: 'Button1'
+			  layout: (LayoutOrigin 0 0.5 0 0)
+			  translateLabel: true
+			  model: reenableSuppressedWarnings
+			)
+		       )
+
+		    )
+		    extent: (Point 665 30)
+		  )
+		 (DividerSpec
+		    name: 'Separator5'
+		    extent: (Point 665 2)
+		  )
+		 (CheckBoxSpec
+		    label: 'Literal Arrays are Immutable'
+		    name: 'LiteralArraysAreImmutable'
+		    model: arraysAreImmutable
+		    translateLabel: true
+		    extent: (Point 665 22)
+		  )
+		 (CheckBoxSpec
+		    label: 'Full Debug Info'
+		    name: 'FullDebugInfo'
+		    model: fullDebugSupport
+		    translateLabel: true
+		    extent: (Point 665 22)
+		  )
+		 (DividerSpec
+		    name: 'Separator6'
+		    extent: (Point 665 2)
+		  )
+		 (ViewSpec
+		    name: 'Box3'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Constant Folding:'
+			  name: 'ConstantFoldingLabel'
+			  layout: (LayoutFrame 0 0 0 0 306 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (PopUpListSpec
+			  label: 'PopUp List'
+			  name: 'ConstantFolding'
+			  layout: (LayoutFrame 313 0 0 0 -5 1 22 0)
+			  tabable: true
+			  model: constantFoldingSelection
+			  menu: constantFolding
+			  useIndex: true
+			)
+		       )
+
+		    )
+		    extent: (Point 665 22)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 
     "Modified: / 08-03-2012 / 10:26:26 / cg"
 ! !
 
+
 !AbstractSettingsApplication::ByteCodeCompilerSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
-    self 
-        readAspects:(self simpleAspects)
-        from:ParserFlags.
-
-    self constantFoldingSelection 
-        value:(self class constantFoldingOptions indexOf:Compiler foldConstants ifAbsent:3).
+    self
+	readAspects:(self simpleAspects)
+	from:ParserFlags.
+
+    self constantFoldingSelection
+	value:(self class constantFoldingOptions indexOf:Compiler foldConstants ifAbsent:3).
 
     self supportsJustInTimeCompilation ifTrue:[
-        self fullDebugSupport value:(ObjectMemory fullSingleStepSupport ? false)
+	self fullDebugSupport value:(ObjectMemory fullSingleStepSupport ? false)
     ] ifFalse:[
-        self fullDebugSupport value:(ParserFlags fullLineNumberInfo)
+	self fullDebugSupport value:(ParserFlags fullLineNumberInfo)
     ].
 
     self supportsJustInTimeCompilation ifTrue:[
-        self justInTimeCompilation value:(ObjectMemory justInTimeCompilation ? false)
+	self justInTimeCompilation value:(ObjectMemory justInTimeCompilation ? false)
     ] ifFalse:[
-        self justInTimeCompilation value:false
+	self justInTimeCompilation value:false
     ].
 
     self warnAboutMissingMethodComment value:(UserPreferences current enforceComment).
@@ -1551,22 +1588,22 @@
 !
 
 basicSaveSettings
-    self 
-        writeAspects:(self simpleAspects)
-        to:ParserFlags.
+    self
+	writeAspects:(self simpleAspects)
+	to:ParserFlags.
 
     ParserFlags lineNumberInfo:(self fullDebugSupport value ifTrue:[#full] ifFalse:[true]).
 
     Compiler foldConstants:(self class constantFoldingOptions at:self constantFoldingSelection value).
 
     self supportsJustInTimeCompilation ifTrue:[
-        | justInTime |
-        justInTime := self justInTimeCompilation value.
-        justInTime ifTrue:[
-            Smalltalk allMethodsDo:[:m | m checked:false].
-        ].
-        ObjectMemory justInTimeCompilation:justInTime.
-        ObjectMemory fullSingleStepSupport:self fullDebugSupport value.
+	| justInTime |
+	justInTime := self justInTimeCompilation value.
+	justInTime ifTrue:[
+	    Smalltalk allMethodsDo:[:m | m checked:false].
+	].
+	ObjectMemory justInTimeCompilation:justInTime.
+	ObjectMemory fullSingleStepSupport:self fullDebugSupport value.
     ].
 
     UserPreferences current enforceComment:(self warnAboutMissingMethodComment value).
@@ -1581,42 +1618,42 @@
 !
 
 simpleAspects
-    ^ 
-            #( 
-                warnings
-                warnCommonMistakes
-                warnPossibleIncompatibilities
-                warnDollarInIdentifier
-                warnOldStyleAssignment
-                warnSTXSpecials
-                warnUnderscoreInIdentifier
-                warnUnusedVars
-                warnAboutWrongVariableNames
-                warnAboutBadComments
-                warnInconsistentReturnValues
-                warnAboutNonLowercaseLocalVariableNames
-                warnAboutShortLocalVariableNames
-                warnAboutPossibleSTCCompilationProblems
-                warnAboutReferenceToPrivateClass
-                warnAboutPossiblyUnimplementedSelectors
-                warnPlausibilityChecks
-
-                allowDollarInIdentifier
-                allowDolphinExtensions
-                allowOldStyleAssignment
-                allowQualifiedNames
-                allowReservedWordsAsSelectors
-                allowSqueakExtensions
-                allowUnderscoreInIdentifier
-                allowVisualAgeESSymbolLiterals
-                allowVisualAgePrimitives
-                allowFixedPointLiterals
-                allowEmptyStatements
-                allowExtendedBinarySelectors
-
-                arraysAreImmutable
-                allowAssignmentToPoolVariable
-            )
+    ^
+	    #(
+		warnings
+		warnCommonMistakes
+		warnPossibleIncompatibilities
+		warnDollarInIdentifier
+		warnOldStyleAssignment
+		warnSTXSpecials
+		warnUnderscoreInIdentifier
+		warnUnusedVars
+		warnAboutWrongVariableNames
+		warnAboutBadComments
+		warnInconsistentReturnValues
+		warnAboutNonLowercaseLocalVariableNames
+		warnAboutShortLocalVariableNames
+		warnAboutPossibleSTCCompilationProblems
+		warnAboutReferenceToPrivateClass
+		warnAboutPossiblyUnimplementedSelectors
+		warnPlausibilityChecks
+
+		allowDollarInIdentifier
+		allowDolphinExtensions
+		allowOldStyleAssignment
+		allowQualifiedNames
+		allowReservedWordsAsSelectors
+		allowSqueakExtensions
+		allowUnderscoreInIdentifier
+		allowVisualAgeESSymbolLiterals
+		allowVisualAgePrimitives
+		allowFixedPointLiterals
+		allowEmptyStatements
+		allowExtendedBinarySelectors
+
+		arraysAreImmutable
+		allowAssignmentToPoolVariable
+	    )
 
     "Created: / 20-11-2006 / 22:37:17 / cg"
 !
@@ -1626,13 +1663,14 @@
     AbstractLauncherApplication::LauncherDialogs stcCompilerSettings
 ! !
 
+
 !AbstractSettingsApplication::ByteCodeCompilerSettingsAppl methodsFor:'aspects'!
 
 allowAssignmentToPoolVariable
 
     allowAssignmentToPoolVariable isNil ifTrue:[
-        allowAssignmentToPoolVariable := ParserFlags allowAssignmentToPoolVariable asValue.
-        allowAssignmentToPoolVariable onChangeSend:#updateModifiedChannel to:self.
+	allowAssignmentToPoolVariable := ParserFlags allowAssignmentToPoolVariable asValue.
+	allowAssignmentToPoolVariable onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ allowAssignmentToPoolVariable.
 
@@ -1642,9 +1680,9 @@
 allowDollarInIdentifier
 
     allowDollar isNil ifTrue:[
-        allowDollar := ParserFlags allowDollarInIdentifier asValue.
-        allowDollar onChangeSend:#updateModifiedChannel to:self.
-        allowDollar addDependent:self.
+	allowDollar := ParserFlags allowDollarInIdentifier asValue.
+	allowDollar onChangeSend:#updateModifiedChannel to:self.
+	allowDollar addDependent:self.
     ].
     ^ allowDollar.
 !
@@ -1652,8 +1690,8 @@
 allowDolphinExtensions
 
     allowDolphinExtensions isNil ifTrue:[
-        allowDolphinExtensions := ParserFlags allowDolphinExtensions asValue.
-        allowDolphinExtensions onChangeSend:#updateModifiedChannel to:self.
+	allowDolphinExtensions := ParserFlags allowDolphinExtensions asValue.
+	allowDolphinExtensions onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ allowDolphinExtensions.
 !
@@ -1661,9 +1699,9 @@
 allowEmptyStatements
 
     allowEmptyStatements isNil ifTrue:[
-        allowEmptyStatements := ParserFlags allowEmptyStatements asValue.
-        allowEmptyStatements onChangeSend:#updateModifiedChannel to:self.
-        "/ allowEmptyStatements addDependent:self.
+	allowEmptyStatements := ParserFlags allowEmptyStatements asValue.
+	allowEmptyStatements onChangeSend:#updateModifiedChannel to:self.
+	"/ allowEmptyStatements addDependent:self.
     ].
     ^ allowEmptyStatements.
 
@@ -1673,8 +1711,8 @@
 allowExtendedBinarySelectors
 
     allowExtendedBinarySelectors isNil ifTrue:[
-        allowExtendedBinarySelectors := (ParserFlags allowExtendedBinarySelectors ? false) asValue.
-        allowExtendedBinarySelectors onChangeSend:#updateModifiedChannel to:self.
+	allowExtendedBinarySelectors := (ParserFlags allowExtendedBinarySelectors ? false) asValue.
+	allowExtendedBinarySelectors onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ allowExtendedBinarySelectors.
 !
@@ -1682,8 +1720,8 @@
 allowFixedPointLiterals
 
     allowFixedPointLiterals isNil ifTrue:[
-        allowFixedPointLiterals := (ParserFlags allowFixedPointLiterals ? false) asValue.
-        allowFixedPointLiterals onChangeSend:#updateModifiedChannel to:self.
+	allowFixedPointLiterals := (ParserFlags allowFixedPointLiterals ? false) asValue.
+	allowFixedPointLiterals onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ allowFixedPointLiterals.
 !
@@ -1691,8 +1729,8 @@
 allowOldStyleAssignment
 
     allowOldStyleAssignment isNil ifTrue:[
-        allowOldStyleAssignment := ParserFlags allowOldStyleAssignment asValue.
-        allowOldStyleAssignment onChangeSend:#updateModifiedChannel to:self.
+	allowOldStyleAssignment := ParserFlags allowOldStyleAssignment asValue.
+	allowOldStyleAssignment onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ allowOldStyleAssignment.
 !
@@ -1700,8 +1738,8 @@
 allowQualifiedNames
 
     allowQualifiedNames isNil ifTrue:[
-        allowQualifiedNames := ParserFlags allowQualifiedNames asValue.
-        allowQualifiedNames onChangeSend:#updateModifiedChannel to:self.
+	allowQualifiedNames := ParserFlags allowQualifiedNames asValue.
+	allowQualifiedNames onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ allowQualifiedNames.
 !
@@ -1709,8 +1747,8 @@
 allowReservedWordsAsSelectors
 
     allowReservedWordsAsSelectors isNil ifTrue:[
-        allowReservedWordsAsSelectors := ParserFlags allowReservedWordsAsSelectors asValue.
-        allowReservedWordsAsSelectors onChangeSend:#updateModifiedChannel to:self.
+	allowReservedWordsAsSelectors := ParserFlags allowReservedWordsAsSelectors asValue.
+	allowReservedWordsAsSelectors onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ allowReservedWordsAsSelectors.
 !
@@ -1718,8 +1756,8 @@
 allowSqueakExtensions
 
     allowSqueakExtensions isNil ifTrue:[
-        allowSqueakExtensions := ParserFlags allowSqueakExtensions asValue.
-        allowSqueakExtensions onChangeSend:#updateModifiedChannel to:self.
+	allowSqueakExtensions := ParserFlags allowSqueakExtensions asValue.
+	allowSqueakExtensions onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ allowSqueakExtensions.
 !
@@ -1727,9 +1765,9 @@
 allowUnderscoreInIdentifier
 
     allowUnderscore isNil ifTrue:[
-        allowUnderscore := ParserFlags allowUnderscoreInIdentifier asValue.
-        allowUnderscore onChangeSend:#updateModifiedChannel to:self.
-        allowUnderscore addDependent:self.
+	allowUnderscore := ParserFlags allowUnderscoreInIdentifier asValue.
+	allowUnderscore onChangeSend:#updateModifiedChannel to:self.
+	allowUnderscore addDependent:self.
     ].
     ^ allowUnderscore.
 !
@@ -1737,8 +1775,8 @@
 allowVisualAgeESSymbolLiterals
 
     allowVisualAgeESSymbolLiterals isNil ifTrue:[
-        allowVisualAgeESSymbolLiterals := ParserFlags allowVisualAgeESSymbolLiterals asValue.
-        allowVisualAgeESSymbolLiterals onChangeSend:#updateModifiedChannel to:self.
+	allowVisualAgeESSymbolLiterals := ParserFlags allowVisualAgeESSymbolLiterals asValue.
+	allowVisualAgeESSymbolLiterals onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ allowVisualAgeESSymbolLiterals.
 !
@@ -1746,8 +1784,8 @@
 allowVisualAgePrimitives
 
     allowVisualAgePrimitives isNil ifTrue:[
-        allowVisualAgePrimitives := ParserFlags allowVisualAgePrimitives asValue.
-        allowVisualAgePrimitives onChangeSend:#updateModifiedChannel to:self.
+	allowVisualAgePrimitives := ParserFlags allowVisualAgePrimitives asValue.
+	allowVisualAgePrimitives onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ allowVisualAgePrimitives.
 
@@ -1757,8 +1795,8 @@
 arraysAreImmutable
 
     immutableArrays isNil ifTrue:[
-        immutableArrays := ParserFlags arraysAreImmutable asValue.
-        immutableArrays onChangeSend:#updateModifiedChannel to:self.
+	immutableArrays := ParserFlags arraysAreImmutable asValue.
+	immutableArrays onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ immutableArrays.
 !
@@ -1766,7 +1804,7 @@
 constantFolding
 
     constantFolding isNil ifTrue:[
-        constantFolding := (resources array:(self class constantFoldingStrings)) asList.
+	constantFolding := (resources array:(self class constantFoldingStrings)) asList.
     ].
     ^ constantFolding.
 !
@@ -1774,7 +1812,7 @@
 constantFoldingOptions
 
     constantFoldingOptions isNil ifTrue:[
-        constantFoldingOptions := self class constantFoldingOptions.
+	constantFoldingOptions := self class constantFoldingOptions.
     ].
     ^ constantFoldingOptions.
 !
@@ -1782,10 +1820,10 @@
 constantFoldingSelection
 
     constantFoldingSelection isNil ifTrue:[
-        | index |
-        index := self class constantFoldingOptions indexOf:Compiler foldConstants ifAbsent:3.
-        constantFoldingSelection := index asValue.
-        constantFoldingSelection onChangeSend:#updateModifiedChannel to:self.
+	| index |
+	index := self class constantFoldingOptions indexOf:Compiler foldConstants ifAbsent:3.
+	constantFoldingSelection := index asValue.
+	constantFoldingSelection onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ constantFoldingSelection.
 !
@@ -1793,15 +1831,15 @@
 enableDollar
 
     enableDollar isNil ifTrue:[
-        enableDollar := true asValue.
-        enableDollar addDependent:self.
+	enableDollar := true asValue.
+	enableDollar addDependent:self.
     ].
     ^ enableDollar.
 !
 
 enableUnderscore
     enableUnderscore isNil ifTrue:[
-        enableUnderscore := true asValue.
+	enableUnderscore := true asValue.
     ].
     ^ enableUnderscore.
 !
@@ -1809,12 +1847,12 @@
 fullDebugSupport
 
     fullDebugSupport isNil ifTrue:[
-        self supportsJustInTimeCompilation ifTrue:[
-            fullDebugSupport := (ObjectMemory fullSingleStepSupport ? false) asValue.
-        ] ifFalse:[ 
-            fullDebugSupport := (ParserFlags fullLineNumberInfo) asValue.
-        ].
-        fullDebugSupport onChangeSend:#updateModifiedChannel to:self.
+	self supportsJustInTimeCompilation ifTrue:[
+	    fullDebugSupport := (ObjectMemory fullSingleStepSupport ? false) asValue.
+	] ifFalse:[
+	    fullDebugSupport := (ParserFlags fullLineNumberInfo) asValue.
+	].
+	fullDebugSupport onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ fullDebugSupport.
 
@@ -1824,20 +1862,20 @@
 justInTimeCompilation
 
     justInTimeCompilation isNil ifTrue:[
-        self supportsJustInTimeCompilation ifTrue:[
-            justInTimeCompilation := (ObjectMemory justInTimeCompilation ? false) asValue.
-        ] ifFalse:[ 
-            justInTimeCompilation := false asValue.
-        ].
-        justInTimeCompilation onChangeSend:#updateModifiedChannel to:self.
+	self supportsJustInTimeCompilation ifTrue:[
+	    justInTimeCompilation := (ObjectMemory justInTimeCompilation ? false) asValue.
+	] ifFalse:[
+	    justInTimeCompilation := false asValue.
+	].
+	justInTimeCompilation onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ justInTimeCompilation.
 !
 
 warnAboutBadComments
     warnAboutBadComments isNil ifTrue:[
-        warnAboutBadComments := ParserFlags warnAboutBadComments asValue.
-        warnAboutBadComments onChangeSend:#updateModifiedChannel to:self.
+	warnAboutBadComments := ParserFlags warnAboutBadComments asValue.
+	warnAboutBadComments onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnAboutBadComments.
 !
@@ -1845,8 +1883,8 @@
 warnAboutMissingMethodComment
 
     warnAboutMissingMethodComment isNil ifTrue:[
-        warnAboutMissingMethodComment := UserPreferences current enforceComment asValue.
-        warnAboutMissingMethodComment onChangeSend:#updateModifiedChannel to:self.
+	warnAboutMissingMethodComment := UserPreferences current enforceComment asValue.
+	warnAboutMissingMethodComment onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnAboutMissingMethodComment.
 
@@ -1855,8 +1893,8 @@
 
 warnAboutNonLowercaseLocalVariableNames
     warnAboutNonLowercaseLocalVariableNames isNil ifTrue:[
-        warnAboutNonLowercaseLocalVariableNames := ParserFlags warnAboutNonLowercaseLocalVariableNames asValue.
-        warnAboutNonLowercaseLocalVariableNames onChangeSend:#updateModifiedChannel to:self.
+	warnAboutNonLowercaseLocalVariableNames := ParserFlags warnAboutNonLowercaseLocalVariableNames asValue.
+	warnAboutNonLowercaseLocalVariableNames onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnAboutNonLowercaseLocalVariableNames.
 
@@ -1866,8 +1904,8 @@
 warnAboutPossibleSTCCompilationProblems
 
     warnAboutPossibleSTCCompilationProblems isNil ifTrue:[
-        warnAboutPossibleSTCCompilationProblems := ParserFlags warnAboutPossibleSTCCompilationProblems asValue.
-        warnAboutPossibleSTCCompilationProblems onChangeSend:#updateModifiedChannel to:self.
+	warnAboutPossibleSTCCompilationProblems := ParserFlags warnAboutPossibleSTCCompilationProblems asValue.
+	warnAboutPossibleSTCCompilationProblems onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnAboutPossibleSTCCompilationProblems.
 
@@ -1877,8 +1915,8 @@
 warnAboutPossiblyUnimplementedSelectors
 
     warnAboutPossiblyUnimplementedSelectors isNil ifTrue:[
-        warnAboutPossiblyUnimplementedSelectors := ParserFlags warnAboutPossiblyUnimplementedSelectors asValue.
-        warnAboutPossiblyUnimplementedSelectors onChangeSend:#updateModifiedChannel to:self.
+	warnAboutPossiblyUnimplementedSelectors := ParserFlags warnAboutPossiblyUnimplementedSelectors asValue.
+	warnAboutPossiblyUnimplementedSelectors onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnAboutPossiblyUnimplementedSelectors.
 
@@ -1887,24 +1925,24 @@
 
 warnAboutReferenceToPrivateClass
     warnAboutReferenceToPrivateClass isNil ifTrue:[
-        warnAboutReferenceToPrivateClass := ParserFlags warnAboutReferenceToPrivateClass asValue.
-        warnAboutReferenceToPrivateClass onChangeSend:#updateModifiedChannel to:self.
+	warnAboutReferenceToPrivateClass := ParserFlags warnAboutReferenceToPrivateClass asValue.
+	warnAboutReferenceToPrivateClass onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnAboutReferenceToPrivateClass.
 !
 
 warnAboutShortLocalVariableNames
     warnAboutShortLocalVariableNames isNil ifTrue:[
-        warnAboutShortLocalVariableNames := ParserFlags warnAboutShortLocalVariableNames asValue.
-        warnAboutShortLocalVariableNames onChangeSend:#updateModifiedChannel to:self.
+	warnAboutShortLocalVariableNames := ParserFlags warnAboutShortLocalVariableNames asValue.
+	warnAboutShortLocalVariableNames onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnAboutShortLocalVariableNames.
 !
 
 warnAboutWrongVariableNames
     warnAboutWrongVariableNames isNil ifTrue:[
-        warnAboutWrongVariableNames := ParserFlags warnAboutWrongVariableNames asValue.
-        warnAboutWrongVariableNames onChangeSend:#updateModifiedChannel to:self.
+	warnAboutWrongVariableNames := ParserFlags warnAboutWrongVariableNames asValue.
+	warnAboutWrongVariableNames onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnAboutWrongVariableNames.
 !
@@ -1912,8 +1950,8 @@
 warnCommonMistakes
 
     warnCommonMistakes isNil ifTrue:[
-        warnCommonMistakes := ParserFlags warnCommonMistakes asValue.
-        warnCommonMistakes onChangeSend:#updateModifiedChannel to:self.
+	warnCommonMistakes := ParserFlags warnCommonMistakes asValue.
+	warnCommonMistakes onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnCommonMistakes.
 !
@@ -1921,16 +1959,16 @@
 warnDollarInIdentifier
 
     warnDollar isNil ifTrue:[
-        warnDollar := ParserFlags warnDollarInIdentifier asValue.
-        warnDollar onChangeSend:#updateModifiedChannel to:self.
+	warnDollar := ParserFlags warnDollarInIdentifier asValue.
+	warnDollar onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnDollar.
 !
 
 warnInconsistentReturnValues
     warnInconsistentReturnValues isNil ifTrue:[
-        warnInconsistentReturnValues := ParserFlags warnInconsistentReturnValues asValue.
-        warnInconsistentReturnValues onChangeSend:#updateModifiedChannel to:self.
+	warnInconsistentReturnValues := ParserFlags warnInconsistentReturnValues asValue.
+	warnInconsistentReturnValues onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnInconsistentReturnValues.
 !
@@ -1938,8 +1976,8 @@
 warnOldStyleAssignment
 
     warnOldStyle isNil ifTrue:[
-        warnOldStyle := ParserFlags warnOldStyleAssignment asValue.
-        warnOldStyle onChangeSend:#updateModifiedChannel to:self.
+	warnOldStyle := ParserFlags warnOldStyleAssignment asValue.
+	warnOldStyle onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnOldStyle.
 !
@@ -1947,8 +1985,8 @@
 warnPlausibilityChecks
 
     warnPlausibilityChecks isNil ifTrue:[
-        warnPlausibilityChecks := ParserFlags warnPlausibilityChecks asValue.
-        warnPlausibilityChecks onChangeSend:#updateModifiedChannel to:self.
+	warnPlausibilityChecks := ParserFlags warnPlausibilityChecks asValue.
+	warnPlausibilityChecks onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnPlausibilityChecks.
 
@@ -1960,8 +1998,8 @@
      are to be warned about"
 
     warnCompatibility isNil ifTrue:[
-        warnCompatibility := ParserFlags warnPossibleIncompatibilities asValue.
-        warnCompatibility onChangeSend:#updateModifiedChannel to:self.
+	warnCompatibility := ParserFlags warnPossibleIncompatibilities asValue.
+	warnCompatibility onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnCompatibility.
 !
@@ -1969,8 +2007,8 @@
 warnSTXSpecials
 
     warnSTX isNil ifTrue:[
-        warnSTX := ParserFlags warnSTXSpecials asValue.
-        warnSTX onChangeSend:#updateModifiedChannel to:self.
+	warnSTX := ParserFlags warnSTXSpecials asValue.
+	warnSTX onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnSTX.
 !
@@ -1978,8 +2016,8 @@
 warnUnderscoreInIdentifier
 
     warnUnderscore isNil ifTrue:[
-        warnUnderscore := ParserFlags warnUnderscoreInIdentifier asValue.
-        warnUnderscore onChangeSend:#updateModifiedChannel to:self.
+	warnUnderscore := ParserFlags warnUnderscoreInIdentifier asValue.
+	warnUnderscore onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnUnderscore.
 !
@@ -1987,8 +2025,8 @@
 warnUnusedVars
 
     warnUnusedVars isNil ifTrue:[
-        warnUnusedVars := ParserFlags warnUnusedVars asValue.
-        warnUnusedVars onChangeSend:#updateModifiedChannel to:self.
+	warnUnusedVars := ParserFlags warnUnusedVars asValue.
+	warnUnusedVars onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnUnusedVars.
 !
@@ -1996,47 +2034,50 @@
 warnings
 
     warnings isNil ifTrue:[
-        warnings := ParserFlags warnings asValue.
-        warnings addDependent:self.
-        warnings changed.
-        warnings onChangeSend:#updateModifiedChannel to:self.
+	warnings := ParserFlags warnings asValue.
+	warnings addDependent:self.
+	warnings changed.
+	warnings onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ warnings.
 ! !
 
+
 !AbstractSettingsApplication::ByteCodeCompilerSettingsAppl methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
     changedObject == self warnings ifTrue:[
-        changedObject value ifTrue:[
-            self enableUnderscore value:self allowUnderscoreInIdentifier value.
-            self enableDollar value:self allowDollarInIdentifier value.
-        ] ifFalse:[
-            self enableUnderscore value:false.
-            self enableDollar value:false.
-        ].
-        ^ self
+	changedObject value ifTrue:[
+	    self enableUnderscore value:self allowUnderscoreInIdentifier value.
+	    self enableDollar value:self allowDollarInIdentifier value.
+	] ifFalse:[
+	    self enableUnderscore value:false.
+	    self enableDollar value:false.
+	].
+	^ self
     ].
     (changedObject == self allowDollarInIdentifier or:[changedObject == self allowUnderscoreInIdentifier]) ifTrue:[
-        self warnings changed.
-        ^ self
+	self warnings changed.
+	^ self
     ].
 
     super update:something with:aParameter from:changedObject
 ! !
 
+
 !AbstractSettingsApplication::ByteCodeCompilerSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/compilerSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::ByteCodeCompilerSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
     (self
-        hasChangedAspectIn:(self simpleAspects)
-        asComparedTo:ParserFlags) ifTrue:[^ true].
+	hasChangedAspectIn:(self simpleAspects)
+	asComparedTo:ParserFlags) ifTrue:[^ true].
 
     ((self supportsJustInTimeCompilation value ifTrue:[ObjectMemory fullSingleStepSupport ? false] ifFalse:[ParserFlags fullLineNumberInfo]) ~= self fullDebugSupport value) ifTrue:[^ true].
     ((Compiler foldConstants) ~= (self class constantFoldingOptions at:self constantFoldingSelection value)) ifTrue:[^ true].
@@ -2054,6 +2095,7 @@
     ^ ObjectMemory supportsJustInTimeCompilation
 ! !
 
+
 !AbstractSettingsApplication::ChangeFileSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -2072,8 +2114,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:'AbstractSettingsApplication::ChangeFileSettingsAppl class defaultIcon'
-        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:'AbstractSettingsApplication::ChangeFileSettingsAppl class defaultIcon'
+	ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 B (JB (JB (JB (JB (JB (JB (JB (HB@ HB@ HB@ HB@ HB@ HB@$JB (JB@ EAPTEAPTEAPTEAPTEAPTIB@@@B  HAP(JB TEAPTEAPTEAPTEBP @@@(H
 B@TJAPTEAPTEAPTEAPTEAP$H@@@JB@ EB TEAPTEAPTEAPTEAPTIB@@@B  HAP(JB TEAP(JAPTEAPTEBP @@@(HB@TEAPTEAP(JB (EAPTEAP$H@@@JB@ E
 APTEAP(JAPTJB TEAPTIB@@@B  HAPTEAP(JAPTEAP(JAPTEBP @@@(HB@TEAP(JAPTEAPTEB (EAP$H@@(JB@ EAP(JAPTEAPTEAPTJB TIB@@JB  HAPTJ
@@ -2082,6 +2124,7 @@
 A@PDA@PDA@PDB@(JB (HB@ HB@ HB@ HB@ HB@ HB@ JB @a') ; colorMapFromArray:#[240 160 80 192 80 0 64 0 0 240 208 160 0 0 0 240 240 240 192 192 192 240 128 0 208 208 208 48 48 48 160 160 160]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@_?? _??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0O??0') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::ChangeFileSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -2099,83 +2142,84 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Changes Settings'
-          name: 'Changes Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 561 478)
-        )
-        component: 
+	  label: 'Changes Settings'
+	  name: 'Changes Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 561 478)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel2'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fitSpace
-              verticalLayout: topSpace
-              horizontalSpace: 5
-              verticalSpace: 5
-              component: 
-             (SpecCollection
-                collection: (
-                 (FramedBoxSpec
-                    label: 'Change File'
-                    name: 'FramedBox2'
-                    labelPosition: topLeft
-                    translateLabel: true
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Log compiles in Changefile'
-                          name: 'CheckBox1'
-                          layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
-                          model: updChanges
-                          translateLabel: true
-                        )
-                       (CheckBoxSpec
-                          label: 'Log doIts in Changefile'
-                          name: 'CheckBox2'
-                          layout: (LayoutFrame 5 0 30 0 -5 1 52 0)
-                          model: logDoits
-                          translateLabel: true
-                        )
-                       (LabelSpec
-                          label: 'Changefile Name:'
-                          name: 'ChangefileNameLabel'
-                          layout: (LayoutFrame 4 0 55 0 189 0 77 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (InputFieldSpec
-                          name: 'ChangeFileNameEntryField'
-                          layout: (LayoutFrame 192 0 55 0 0 1 77 0)
-                          model: changeFileName
-                          immediateAccept: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 551 112)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel2'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fitSpace
+	      verticalLayout: topSpace
+	      horizontalSpace: 5
+	      verticalSpace: 5
+	      component:
+	     (SpecCollection
+		collection: (
+		 (FramedBoxSpec
+		    label: 'Change File'
+		    name: 'FramedBox2'
+		    labelPosition: topLeft
+		    translateLabel: true
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Log compiles in Changefile'
+			  name: 'CheckBox1'
+			  layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
+			  model: updChanges
+			  translateLabel: true
+			)
+		       (CheckBoxSpec
+			  label: 'Log doIts in Changefile'
+			  name: 'CheckBox2'
+			  layout: (LayoutFrame 5 0 30 0 -5 1 52 0)
+			  model: logDoits
+			  translateLabel: true
+			)
+		       (LabelSpec
+			  label: 'Changefile Name:'
+			  name: 'ChangefileNameLabel'
+			  layout: (LayoutFrame 4 0 55 0 189 0 77 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (InputFieldSpec
+			  name: 'ChangeFileNameEntryField'
+			  layout: (LayoutFrame 192 0 55 0 0 1 77 0)
+			  model: changeFileName
+			  immediateAccept: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 551 112)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::ChangeFileSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
@@ -2195,12 +2239,13 @@
     "Modified: / 09-02-2011 / 20:32:47 / cg"
 ! !
 
+
 !AbstractSettingsApplication::ChangeFileSettingsAppl methodsFor:'aspects'!
 
 changeFileName
     changeFileName isNil ifTrue:[
-        changeFileName := ObjectMemory nameForChanges asValue.
-        changeFileName onChangeSend:#updateModifiedChannel to:self
+	changeFileName := ObjectMemory nameForChanges asValue.
+	changeFileName onChangeSend:#updateModifiedChannel to:self
     ].
     ^ changeFileName.
 
@@ -2209,8 +2254,8 @@
 
 logDoits
     logDoits isNil ifTrue:[
-        logDoits := Smalltalk logDoits asValue.
-        logDoits onChangeSend:#updateModifiedChannel to:self
+	logDoits := Smalltalk logDoits asValue.
+	logDoits onChangeSend:#updateModifiedChannel to:self
     ].
     ^ logDoits.
 
@@ -2219,20 +2264,22 @@
 
 updChanges
     updChanges isNil ifTrue:[
-        updChanges := Class updatingChanges asValue.
-        updChanges onChangeSend:#updateModifiedChannel to:self
+	updChanges := Class updatingChanges asValue.
+	updChanges onChangeSend:#updateModifiedChannel to:self
     ].
     ^ updChanges.
 
     "Modified (format): / 25-11-2011 / 15:43:45 / cg"
 ! !
 
+
 !AbstractSettingsApplication::ChangeFileSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/messageSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::ChangeFileSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -2244,6 +2291,7 @@
     "Modified: / 27-10-2010 / 10:17:21 / cg"
 ! !
 
+
 !AbstractSettingsApplication::CodeGeneratorSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -2262,8 +2310,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:'AbstractSettingsApplication::CodeGeneratorSettingsAppl class defaultIcon'
-        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:'AbstractSettingsApplication::CodeGeneratorSettingsAppl class defaultIcon'
+	ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 B (JB (JB (JB (JB (JB (JB (JB (HB@ HB@ HB@ HB@ HB@ HB@$JB (JB@ EAPTEAPTEAPTEAPTEAPTIB@@@B  HAP(JB TEAPTEAPTEAPTEBP @@@(H
 B@TJAPTEAPTEAPTEAPTEAP$H@@@JB@ EB TEAPTEAPTQAPTEAPTIB@@@B  HAP(JB TEAPTQD!!DEAPTEBP @@@(HB@TEAPTEDQDEDQLQAQDQAP$H@@@JB@ E
 APTEDQPUDQTVEQDUEADIB@@@B  HAPTEAPTQE1 YF!!$XE1DEBP @@@(HB@TEAPTEAQDUF ,ZEQDEAP$H@@(JB@ EAPTEAPTQEQ(KF!!TQAPTIB@@JB  HAPTE
@@ -2272,6 +2320,7 @@
 A@PDA@PDA@PDB@(JB (HB@ HB@ HB@ HB@ HB@ HB@ JB @a') ; colorMapFromArray:#[240 160 80 192 80 0 64 0 0 240 208 160 0 0 0 240 240 240 192 192 192 240 128 0 208 208 208 48 48 48 160 160 160 255 248 248 207 216 240 240 240 248 239 232 240 48 88 176 224 224 232 240 144 24 255 248 48 255 248 96 255 248 24 240 208 24 255 248 152 255 248 88 255 248 136 255 248 176 255 248 200]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@_?? _??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0O??0') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::CodeGeneratorSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -2289,131 +2338,136 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Tool Settings'
-          name: 'Tool Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 607 786)
-        )
-        component: 
+	  label: 'Tool Settings'
+	  name: 'Tool Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 607 786)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel2'
-              layout: (LayoutFrame 0 0.0 0 0 0 1.0 342 0)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (CheckBoxSpec
-                    label: 'Generate Comments'
-                    name: 'GenerateComments'
-                    activeHelpKey: generateComments
-                    model: generateComments
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Generate Comments in Getters'
-                    name: 'GenerateCommentsInGetters'
-                    activeHelpKey: generateCommentsInGetters
-                    enableChannel: generateComments
-                    model: generateCommentsInGetters
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Generate Comments in Setters'
-                    name: 'GenerateCommentsInSetters'
-                    activeHelpKey: generateCommentsInSetters
-                    enableChannel: generateComments
-                    model: generateCommentsInSetters
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel2'
+	      layout: (LayoutFrame 0 0.0 0 0 0 1.0 342 0)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (CheckBoxSpec
+		    label: 'Generate Comments'
+		    name: 'GenerateComments'
+		    activeHelpKey: generateComments
+		    model: generateComments
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Generate Comments in Getters'
+		    name: 'GenerateCommentsInGetters'
+		    activeHelpKey: generateCommentsInGetters
+		    enableChannel: generateComments
+		    model: generateCommentsInGetters
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Generate Comments in Setters'
+		    name: 'GenerateCommentsInSetters'
+		    activeHelpKey: generateCommentsInSetters
+		    enableChannel: generateComments
+		    model: generateCommentsInSetters
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 
     "Modified: / 04-07-2011 / 16:58:44 / cg"
 ! !
 
+
 !AbstractSettingsApplication::CodeGeneratorSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
-    self 
-        readAspects:(self aspectSelectors)
-        from:currentUserPrefs.
+    self
+	readAspects:(self aspectSelectors)
+	from:currentUserPrefs.
 !
 
 basicSaveSettings
-    self 
-        writeAspects:(self aspectSelectors)
-        to:currentUserPrefs.
-! !
+    self
+	writeAspects:(self aspectSelectors)
+	to:currentUserPrefs.
+! !
+
 
 !AbstractSettingsApplication::CodeGeneratorSettingsAppl methodsFor:'aspects'!
 
 aspectSelectors
     ^ #(
-        generateComments
-        generateCommentsForGetters
-        generateCommentsForSetters
+	generateComments
+	generateCommentsForGetters
+	generateCommentsForSetters
     )
 !
 
 generateComments
     generateComments isNil ifTrue:[
-        generateComments := UserPreferences current generateComments asValue.
-        generateComments onChangeSend:#updateModifiedChannel to:self
+	generateComments := UserPreferences current generateComments asValue.
+	generateComments onChangeSend:#updateModifiedChannel to:self
     ].
     ^ generateComments.
 !
 
 generateCommentsForGetters
     generateCommentsForGetters isNil ifTrue:[
-        generateCommentsForGetters := UserPreferences current generateCommentsForGetters asValue.
-        generateCommentsForGetters onChangeSend:#updateModifiedChannel to:self
+	generateCommentsForGetters := UserPreferences current generateCommentsForGetters asValue.
+	generateCommentsForGetters onChangeSend:#updateModifiedChannel to:self
     ].
     ^ generateCommentsForGetters.
 !
 
 generateCommentsForSetters
     generateCommentsForSetters isNil ifTrue:[
-        generateCommentsForSetters := UserPreferences current generateCommentsForSetters asValue.
-        generateCommentsForSetters onChangeSend:#updateModifiedChannel to:self
+	generateCommentsForSetters := UserPreferences current generateCommentsForSetters asValue.
+	generateCommentsForSetters onChangeSend:#updateModifiedChannel to:self
     ].
     ^ generateCommentsForSetters.
 ! !
 
+
 !AbstractSettingsApplication::CodeGeneratorSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/codeGeneratorSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::CodeGeneratorSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
     ^ self
-        hasChangedAspectIn:(self aspectSelectors)
-        asComparedTo:currentUserPrefs
+	hasChangedAspectIn:(self aspectSelectors)
+	asComparedTo:currentUserPrefs
 
     "Modified: / 25-11-2011 / 15:22:51 / cg"
 ! !
 
+
 !AbstractSettingsApplication::CommunicationLoggingSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -2438,8 +2492,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:'AbstractSettingsApplication::CommunicationLoggingSettingsAppl class defaultIcon1'
-        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:'AbstractSettingsApplication::CommunicationLoggingSettingsAppl class defaultIcon1'
+	ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ECP4MCP4MCP4MCP4MCP4@@A @F@@CAPHB@ HB@ HB@ HBB (E@@@X@A @@0TB@ HB@ HB@ HB@ (JAP@@@@@@@@LE
 @ 4MCP4MCPHB@ (JB T@@@@@@@@CAPHB@ HB@ HB@ HJB (E@@@@@@@@@0TBCP4MCP4M@ HBB (JAP@@@@@@@@LE@ HB@ HB@ HB@ (JB T@@@@@@@@CAPHM
 CP4MCP4B@ (JB (E@@@@@@@@@0TB@ HB@ HB@ HJB (JAP@@@@@@@@LE@ 4MCP4MCPHBB (JB T@@A(XF@@CAPHB@ HB@ HB@ (JB (E@ @@@@@@@0TB@ HB
@@ -2464,8 +2518,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:'AbstractSettingsApplication::CommunicationLoggingSettingsAppl class defaultIcon2'
-        ifAbsentPut:[(Depth8Image new) width: 17; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:'AbstractSettingsApplication::CommunicationLoggingSettingsAppl class defaultIcon2'
+	ifAbsentPut:[(Depth8Image new) width: 17; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@@@@@@@@@@@@@@@@@@@AP4MCP4MCP4MCP4MCP4M@@LE@ HB@ HB@ HB@ HJB T@@0TB@ HB@ HB@ HB@ (JAP@CAPHMCP4MCP4B@ HJB (E@@LE@ HB
 @ HB@ HB@ (JB T@@0TBCP4MCP4M@ HBB (JAP@CAPHB@ HB@ HB@ HJB (E@@LE@ 4MCP4MCPHBB (JB T@@0TB@ HB@ HB@ HJB (JAP@CAPHMCP4MCP4B
 @ (JB (E@@LE@ HB@ HB@ HBB (JB T@@0TB@ HB@ HB@ HJB (JAP@CAPHMCP4MCP4B@ (JB (E@@LE@ HB@ HB@ HBB (JB T@@0TBCP4MCP4M@ (JB (J
@@ -2473,6 +2527,7 @@
 @@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 32 96 80 240 240 240 192 192 192 64 144 128 80 80 80 48 112 112 48 128 128 32 96 96 48 128 112 224 224 224 32 80 80 64 96 96 0 80 128]; mask:((Depth1Image new) width: 17; height: 22; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@_?<@??<@??<@??<@??<@??<@??<@??<@??<@??<@??<@??<@??<@??<@??<@??<@??<@??<@??8@@@@@@@@@') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::CommunicationLoggingSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -2490,113 +2545,119 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Com-Logging settings'
-          name: 'Com-Logging settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 445 401)
-        )
-        component: 
+	  label: 'Com-Logging settings'
+	  name: 'Com-Logging settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 445 401)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel1'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              horizontalLayout: fitSpace
-              verticalLayout: topSpace
-              horizontalSpace: 5
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (CheckBoxSpec
-                    label: 'Log Outgoing HTTP Requests on Transcript'
-                    name: 'LogHTTPRequests'
-                    model: logHTTPRequests
-                    translateLabel: true
-                    extent: (Point 435 22)
-                  )
-                 (CheckBoxSpec
-                    label: 'Log Outgoing SOAP Requests on Transcript'
-                    name: 'LogSOAPRequests'
-                    model: logSOAPRequests
-                    translateLabel: true
-                    extent: (Point 435 22)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel1'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      horizontalLayout: fitSpace
+	      verticalLayout: topSpace
+	      horizontalSpace: 5
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (CheckBoxSpec
+		    label: 'Log Outgoing HTTP Requests on Transcript'
+		    name: 'LogHTTPRequests'
+		    model: logHTTPRequests
+		    translateLabel: true
+		    extent: (Point 435 22)
+		  )
+		 (CheckBoxSpec
+		    label: 'Log Outgoing SOAP Requests on Transcript'
+		    name: 'LogSOAPRequests'
+		    model: logSOAPRequests
+		    translateLabel: true
+		    extent: (Point 435 22)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::CommunicationLoggingSettingsAppl methodsFor:'actions'!
 
 aspectsFromUserPreferences
     ^ #(
-        logHTTPRequests
-        logSOAPRequests
+	logHTTPRequests
+	logSOAPRequests
     )
 !
 
 basicReadSettings
-    self 
-        readAspects:(self aspectsFromUserPreferences)
-        from:currentUserPrefs.
+    self
+	readAspects:(self aspectsFromUserPreferences)
+	from:currentUserPrefs.
 !
 
 basicSaveSettings
-    self 
-        writeAspects:(self aspectsFromUserPreferences)
-        to:currentUserPrefs.
-! !
+    self
+	writeAspects:(self aspectsFromUserPreferences)
+	to:currentUserPrefs.
+! !
+
 
 !AbstractSettingsApplication::CommunicationLoggingSettingsAppl methodsFor:'aspects'!
 
-logHTTPRequests 
+logHTTPRequests
     logHTTPRequests isNil ifTrue:[
-        logHTTPRequests := false asValue.
-        logHTTPRequests onChangeSend:#updateModifiedChannel to:self
+	logHTTPRequests := false asValue.
+	logHTTPRequests onChangeSend:#updateModifiedChannel to:self
     ].
     ^ logHTTPRequests.
 !
 
 logSOAPRequests
     logSOAPRequests isNil ifTrue:[
-        logSOAPRequests := false asValue.
-        logSOAPRequests onChangeSend:#updateModifiedChannel to:self
+	logSOAPRequests := false asValue.
+	logSOAPRequests onChangeSend:#updateModifiedChannel to:self
     ].
     ^ logSOAPRequests.
 ! !
 
+
 !AbstractSettingsApplication::CommunicationLoggingSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/comLoggingSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::CommunicationLoggingSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
      ^ self
-        hasChangedAspectIn:(self aspectsFromUserPreferences)
-        asComparedTo:currentUserPrefs
-! !
+	hasChangedAspectIn:(self aspectsFromUserPreferences)
+	asComparedTo:currentUserPrefs
+! !
+
 
 !AbstractSettingsApplication::DebuggerSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
     <resource: #programImage>
 
-    ^ ToolbarIconLibrary bugReporter24x24Icon    
-! !
+    ^ ToolbarIconLibrary bugReporter24x24Icon
+! !
+
 
 !AbstractSettingsApplication::DebuggerSettingsAppl class methodsFor:'interface specs'!
 
@@ -2615,124 +2676,125 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Debugger Settings'
-          name: 'Debugger Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 600 320)
-        )
-        component: 
+	  label: 'Debugger Settings'
+	  name: 'Debugger Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 600 320)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel2'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 3
-              verticalSpace: 0
-              component: 
-             (SpecCollection
-                collection: (
-                 (ViewSpec
-                    name: 'ShowErrorNotifierBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Show Error Notifier before Opening Debugger'
-                          name: 'ShowErrorNotifierCheckBox'
-                          layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
-                          model: showErrorNotifier
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'UseNewLayoutInDebuggerBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Use New Layout'
-                          name: 'UseNewLayoutInDebuggerCheckBox'
-                          layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
-                          model: useNewLayoutInDebugger
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 29)
-                  )
-                 (ViewSpec
-                    name: 'ShowVerboseStackBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Verbose Backtrace by Default in Debugger'
-                          name: 'ShowVerboseStackCheckBox'
-                          layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
-                          model: verboseBacktraceInDebugger
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'HideEnumerationCodeBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Hide Support Code (Implementation of Enumerations, Exceptions, etc.)'
-                          name: 'CheckBox1'
-                          layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
-                          model: hideSupportCodeInDebugger
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'AllowSendingMailFromDebuggerBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Allow Sending of Error Reports from Debugger'
-                          name: 'AllowSendingMailFromDebuggerCheckBox'
-                          layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
-                          model: allowSendMailFromDebugger
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel2'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 0
+	      component:
+	     (SpecCollection
+		collection: (
+		 (ViewSpec
+		    name: 'ShowErrorNotifierBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Show Error Notifier before Opening Debugger'
+			  name: 'ShowErrorNotifierCheckBox'
+			  layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
+			  model: showErrorNotifier
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'UseNewLayoutInDebuggerBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Use New Layout'
+			  name: 'UseNewLayoutInDebuggerCheckBox'
+			  layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
+			  model: useNewLayoutInDebugger
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 29)
+		  )
+		 (ViewSpec
+		    name: 'ShowVerboseStackBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Verbose Backtrace by Default in Debugger'
+			  name: 'ShowVerboseStackCheckBox'
+			  layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
+			  model: verboseBacktraceInDebugger
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'HideEnumerationCodeBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Hide Support Code (Implementation of Enumerations, Exceptions, etc.)'
+			  name: 'CheckBox1'
+			  layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
+			  model: hideSupportCodeInDebugger
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'AllowSendingMailFromDebuggerBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Allow Sending of Error Reports from Debugger'
+			  name: 'AllowSendingMailFromDebuggerCheckBox'
+			  layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
+			  model: allowSendMailFromDebugger
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::DebuggerSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
@@ -2747,9 +2809,9 @@
 
 basicSaveSettings
     self showErrorNotifier value ifFalse:[
-        NoHandlerError emergencyHandler:nil
+	NoHandlerError emergencyHandler:nil
     ] ifTrue:[
-        NoHandlerError emergencyHandler:(AbstractLauncherApplication notifyingEmergencyHandler)
+	NoHandlerError emergencyHandler:(AbstractLauncherApplication notifyingEmergencyHandler)
     ].
     currentUserPrefs allowSendMailFromDebugger:(self allowSendMailFromDebugger value).
     currentUserPrefs verboseBacktraceInDebugger:(self verboseBacktraceInDebugger value).
@@ -2760,13 +2822,14 @@
     "Modified: / 10-06-2012 / 21:23:32 / cg"
 ! !
 
+
 !AbstractSettingsApplication::DebuggerSettingsAppl methodsFor:'aspects'!
 
 allowSendMailFromDebugger
 
     allowSendMailFromDebugger isNil ifTrue:[
-        allowSendMailFromDebugger := currentUserPrefs allowSendMailFromDebugger asValue.
-        allowSendMailFromDebugger onChangeSend:#updateModifiedChannel to:self
+	allowSendMailFromDebugger := currentUserPrefs allowSendMailFromDebugger asValue.
+	allowSendMailFromDebugger onChangeSend:#updateModifiedChannel to:self
     ].
     ^ allowSendMailFromDebugger.
 !
@@ -2774,8 +2837,8 @@
 hideSupportCodeInDebugger
 
     hideSupportCodeInDebugger isNil ifTrue:[
-        hideSupportCodeInDebugger := (UserPreferences current hideSupportCodeInDebugger ? true) asValue.
-        hideSupportCodeInDebugger onChangeSend:#updateModifiedChannel to:self
+	hideSupportCodeInDebugger := (UserPreferences current hideSupportCodeInDebugger ? true) asValue.
+	hideSupportCodeInDebugger onChangeSend:#updateModifiedChannel to:self
     ].
     ^ hideSupportCodeInDebugger.
 
@@ -2785,8 +2848,8 @@
 showErrorNotifier
 
     showErrorNotifier isNil ifTrue:[
-        showErrorNotifier := (NoHandlerError emergencyHandler == AbstractLauncherApplication notifyingEmergencyHandler) asValue.
-        showErrorNotifier onChangeSend:#updateModifiedChannel to:self
+	showErrorNotifier := (NoHandlerError emergencyHandler == AbstractLauncherApplication notifyingEmergencyHandler) asValue.
+	showErrorNotifier onChangeSend:#updateModifiedChannel to:self
     ].
     ^ showErrorNotifier.
 !
@@ -2794,8 +2857,8 @@
 useNewLayoutInDebugger
 
     useNewLayoutInDebugger isNil ifTrue:[
-        useNewLayoutInDebugger := (UserPreferences current useNewLayoutInDebugger) asValue.
-        useNewLayoutInDebugger onChangeSend:#updateModifiedChannel to:self
+	useNewLayoutInDebugger := (UserPreferences current useNewLayoutInDebugger) asValue.
+	useNewLayoutInDebugger onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useNewLayoutInDebugger.
 !
@@ -2803,18 +2866,20 @@
 verboseBacktraceInDebugger
 
     verboseBacktraceInDebugger isNil ifTrue:[
-        verboseBacktraceInDebugger := (UserPreferences current verboseBacktraceInDebugger ? false) asValue.
-        verboseBacktraceInDebugger onChangeSend:#updateModifiedChannel to:self
+	verboseBacktraceInDebugger := (UserPreferences current verboseBacktraceInDebugger ? false) asValue.
+	verboseBacktraceInDebugger onChangeSend:#updateModifiedChannel to:self
     ].
     ^ verboseBacktraceInDebugger.
 ! !
 
+
 !AbstractSettingsApplication::DebuggerSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/debuggerSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::DebuggerSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -2828,6 +2893,7 @@
     "Modified: / 10-06-2012 / 21:23:54 / cg"
 ! !
 
+
 !AbstractSettingsApplication::DisplaySettingsAppl class methodsFor:'defaults'!
 
 clipEncodingStrings
@@ -2860,6 +2926,7 @@
     ^ #(ordered floydSteinberg)
 ! !
 
+
 !AbstractSettingsApplication::DisplaySettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -2868,6 +2935,7 @@
     ^ ToolbarIconLibrary displayScreenIcon
 ! !
 
+
 !AbstractSettingsApplication::DisplaySettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -2885,196 +2953,197 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Display Screen Settings'
-          name: 'Display Screen Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 600 378)
-        )
-        component: 
+	  label: 'Display Screen Settings'
+	  name: 'Display Screen Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 600 378)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (LabelSpec
-              label: 'Actual Visible Screen Area:'
-              name: 'ActualVisibleScreenAreaLabel'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 22 0)
-              translateLabel: true
-              adjust: left
-            )
-           (LabelSpec
-              label: 'Common Sizes:'
-              name: 'CommonSizesLabel'
-              layout: (LayoutFrame 0 0 39 0 163 0 61 0)
-              translateLabel: true
-              adjust: right
-            )
-           (PopUpListSpec
-              label: 'monitor size'
-              name: 'MonitorSelectionPopUpList'
-              layout: (LayoutFrame 170 0 39 0 -5 1 61 0)
-              tabable: true
-              model: monitorSelection
-              menu: monitorList
-              useIndex: true
-            )
-           (LabelSpec
-              label: 'Screen Size:'
-              name: 'ScreenSizeLabel'
-              layout: (LayoutFrame 0 0 72 0 163 0 94 0)
-              translateLabel: true
-              adjust: right
-            )
-           (InputFieldSpec
-              name: 'SizeXEntryField'
-              layout: (LayoutFrame 170 0 72 0 237 0 94 0)
-              model: sizeX
-              type: number
-              immediateAccept: true
-              acceptOnReturn: true
-              acceptOnTab: true
-              acceptOnLostFocus: true
-              acceptOnPointerLeave: true
-            )
-           (LabelSpec
-              label: ' x '
-              name: 'xLabel'
-              layout: (LayoutFrame 238 0 72 0 271 0 94 0)
-              translateLabel: true
-            )
-           (InputFieldSpec
-              name: 'SizeYEntryField'
-              layout: (LayoutFrame 272 0 72 0 339 0 94 0)
-              model: sizeY
-              type: number
-              immediateAccept: true
-              acceptOnReturn: true
-              acceptOnTab: true
-              acceptOnLostFocus: true
-              acceptOnPointerLeave: true
-            )
-           (LabelSpec
-              label: '(mm)'
-              name: 'mmLabel'
-              layout: (LayoutFrame 351 0 72 0 397 0 94 0)
-              translateLabel: true
-              adjust: left
-            )
-           (DividerSpec
-              name: 'Separator1'
-              layout: (LayoutFrame 0 0.0 105 0 0 1.0 109 0)
-            )
-           (LabelSpec
-              name: 'ScreenDepthVisualLabel'
-              layout: (LayoutFrame 0 0.0 113 0.0 0 1.0 135 0)
-              translateLabel: true
-              labelChannel: screenDepthVisualLabelHolder
-              adjust: left
-            )
-           (DividerSpec
-              name: 'Separator2'
-              layout: (LayoutFrame 0 0.0 139 0 0 1.0 143 0)
-            )
-           (CheckBoxSpec
-              label: 'Color Monitor'
-              name: 'ColorMonitorCheckBox'
-              layout: (LayoutFrame 5 0 150 0 250 0 172 0)
-              model: isColorMonitor
-              translateLabel: true
-            )
-           (CheckBoxSpec
-              label: 'Use Fix Color Palette'
-              name: 'FixColorPaletteCheckBox'
-              layout: (LayoutFrame 5 0 175 0 301 0 197 0)
-              enableChannel: visualIsPseudoColor
-              model: useFixPalette
-              translateLabel: true
-              labelChannel: useFixPaletteLabel
-            )
-           (CheckBoxSpec
-              label: 'Use Fix Gray Color Palette'
-              name: 'UseFixGrayPaletteCheckBox'
-              layout: (LayoutFrame 5 0 201 0 301 0 223 0)
-              enableChannel: visualIsPseudoColor
-              model: useFixGrayPalette
-              translateLabel: true
-              labelChannel: useFixGrayPaletteLabel
-            )
-           (LabelSpec
-              label: 'Image Display:'
-              name: 'ImageDisplayLabel'
-              layout: (LayoutFrame 0 0 230 0 255 0 252 0)
-              translateLabel: true
-              adjust: right
-            )
-           (PopUpListSpec
-              label: 'image display'
-              name: 'DitherListPopUpList'
-              layout: (LayoutFrame 255 0 230 0 -5 1 252 0)
-              tabable: true
-              model: ditherListSelection
-              enableChannel: ditherSymsNotNil
-              menu: ditherList
-              useIndex: true
-            )
-           (CheckBoxSpec
-              label: 'Allow Colored/Grayscale Icons'
-              name: 'AllowColoredGrayscaleIconsCheckBox'
-              layout: (LayoutFrame 5 0 262 0 301 0 284 0)
-              model: deepIcons
-              translateLabel: true
-            )
-           (DividerSpec
-              name: 'Separator3'
-              layout: (LayoutFrame 0 0.0 288 0 0 1.0 292 0)
-            )
-           (LabelSpec
-              label: 'ClipBoard Encoding:'
-              name: 'ClipBoardEncodingLabel'
-              layout: (LayoutFrame 0 0 303 0 255 0 325 0)
-              translateLabel: true
-              adjust: right
-            )
-           (PopUpListSpec
-              label: 'image display'
-              name: 'ClipEncodingListPopUpList'
-              layout: (LayoutFrame 255 0 303 0 -5 1 325 0)
-              tabable: true
-              model: clipEncodingListSelection
-              menu: clipEncodingList
-              useIndex: true
-            )
-           (DividerSpec
-              name: 'Separator4'
-              layout: (LayoutFrame 0 0.0 360 0 0 1.0 364 0)
-            )
-           (LabelSpec
-              label: 'Max. CopyBuffer Size:'
-              name: 'MaxCopyBufferSizeLabel'
-              layout: (LayoutFrame 0 0 330 0 255 0 352 0)
-              translateLabel: true
-              adjust: right
-            )
-           (InputFieldSpec
-              name: 'MaxCopyBufferEntryField'
-              layout: (LayoutFrame 255 0 330 0 350 0 352 0)
-              model: maxCopyBufferSize
-              type: fileSize
-              immediateAccept: true
-              acceptOnReturn: true
-              acceptOnTab: true
-              acceptOnLostFocus: true
-              acceptOnPointerLeave: true
-            )
-           )
-         
-        )
+	  collection: (
+	   (LabelSpec
+	      label: 'Actual Visible Screen Area:'
+	      name: 'ActualVisibleScreenAreaLabel'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 22 0)
+	      translateLabel: true
+	      adjust: left
+	    )
+	   (LabelSpec
+	      label: 'Common Sizes:'
+	      name: 'CommonSizesLabel'
+	      layout: (LayoutFrame 0 0 39 0 163 0 61 0)
+	      translateLabel: true
+	      adjust: right
+	    )
+	   (PopUpListSpec
+	      label: 'monitor size'
+	      name: 'MonitorSelectionPopUpList'
+	      layout: (LayoutFrame 170 0 39 0 -5 1 61 0)
+	      tabable: true
+	      model: monitorSelection
+	      menu: monitorList
+	      useIndex: true
+	    )
+	   (LabelSpec
+	      label: 'Screen Size:'
+	      name: 'ScreenSizeLabel'
+	      layout: (LayoutFrame 0 0 72 0 163 0 94 0)
+	      translateLabel: true
+	      adjust: right
+	    )
+	   (InputFieldSpec
+	      name: 'SizeXEntryField'
+	      layout: (LayoutFrame 170 0 72 0 237 0 94 0)
+	      model: sizeX
+	      type: number
+	      immediateAccept: true
+	      acceptOnReturn: true
+	      acceptOnTab: true
+	      acceptOnLostFocus: true
+	      acceptOnPointerLeave: true
+	    )
+	   (LabelSpec
+	      label: ' x '
+	      name: 'xLabel'
+	      layout: (LayoutFrame 238 0 72 0 271 0 94 0)
+	      translateLabel: true
+	    )
+	   (InputFieldSpec
+	      name: 'SizeYEntryField'
+	      layout: (LayoutFrame 272 0 72 0 339 0 94 0)
+	      model: sizeY
+	      type: number
+	      immediateAccept: true
+	      acceptOnReturn: true
+	      acceptOnTab: true
+	      acceptOnLostFocus: true
+	      acceptOnPointerLeave: true
+	    )
+	   (LabelSpec
+	      label: '(mm)'
+	      name: 'mmLabel'
+	      layout: (LayoutFrame 351 0 72 0 397 0 94 0)
+	      translateLabel: true
+	      adjust: left
+	    )
+	   (DividerSpec
+	      name: 'Separator1'
+	      layout: (LayoutFrame 0 0.0 105 0 0 1.0 109 0)
+	    )
+	   (LabelSpec
+	      name: 'ScreenDepthVisualLabel'
+	      layout: (LayoutFrame 0 0.0 113 0.0 0 1.0 135 0)
+	      translateLabel: true
+	      labelChannel: screenDepthVisualLabelHolder
+	      adjust: left
+	    )
+	   (DividerSpec
+	      name: 'Separator2'
+	      layout: (LayoutFrame 0 0.0 139 0 0 1.0 143 0)
+	    )
+	   (CheckBoxSpec
+	      label: 'Color Monitor'
+	      name: 'ColorMonitorCheckBox'
+	      layout: (LayoutFrame 5 0 150 0 250 0 172 0)
+	      model: isColorMonitor
+	      translateLabel: true
+	    )
+	   (CheckBoxSpec
+	      label: 'Use Fix Color Palette'
+	      name: 'FixColorPaletteCheckBox'
+	      layout: (LayoutFrame 5 0 175 0 301 0 197 0)
+	      enableChannel: visualIsPseudoColor
+	      model: useFixPalette
+	      translateLabel: true
+	      labelChannel: useFixPaletteLabel
+	    )
+	   (CheckBoxSpec
+	      label: 'Use Fix Gray Color Palette'
+	      name: 'UseFixGrayPaletteCheckBox'
+	      layout: (LayoutFrame 5 0 201 0 301 0 223 0)
+	      enableChannel: visualIsPseudoColor
+	      model: useFixGrayPalette
+	      translateLabel: true
+	      labelChannel: useFixGrayPaletteLabel
+	    )
+	   (LabelSpec
+	      label: 'Image Display:'
+	      name: 'ImageDisplayLabel'
+	      layout: (LayoutFrame 0 0 230 0 255 0 252 0)
+	      translateLabel: true
+	      adjust: right
+	    )
+	   (PopUpListSpec
+	      label: 'image display'
+	      name: 'DitherListPopUpList'
+	      layout: (LayoutFrame 255 0 230 0 -5 1 252 0)
+	      tabable: true
+	      model: ditherListSelection
+	      enableChannel: ditherSymsNotNil
+	      menu: ditherList
+	      useIndex: true
+	    )
+	   (CheckBoxSpec
+	      label: 'Allow Colored/Grayscale Icons'
+	      name: 'AllowColoredGrayscaleIconsCheckBox'
+	      layout: (LayoutFrame 5 0 262 0 301 0 284 0)
+	      model: deepIcons
+	      translateLabel: true
+	    )
+	   (DividerSpec
+	      name: 'Separator3'
+	      layout: (LayoutFrame 0 0.0 288 0 0 1.0 292 0)
+	    )
+	   (LabelSpec
+	      label: 'ClipBoard Encoding:'
+	      name: 'ClipBoardEncodingLabel'
+	      layout: (LayoutFrame 0 0 303 0 255 0 325 0)
+	      translateLabel: true
+	      adjust: right
+	    )
+	   (PopUpListSpec
+	      label: 'image display'
+	      name: 'ClipEncodingListPopUpList'
+	      layout: (LayoutFrame 255 0 303 0 -5 1 325 0)
+	      tabable: true
+	      model: clipEncodingListSelection
+	      menu: clipEncodingList
+	      useIndex: true
+	    )
+	   (DividerSpec
+	      name: 'Separator4'
+	      layout: (LayoutFrame 0 0.0 360 0 0 1.0 364 0)
+	    )
+	   (LabelSpec
+	      label: 'Max. CopyBuffer Size:'
+	      name: 'MaxCopyBufferSizeLabel'
+	      layout: (LayoutFrame 0 0 330 0 255 0 352 0)
+	      translateLabel: true
+	      adjust: right
+	    )
+	   (InputFieldSpec
+	      name: 'MaxCopyBufferEntryField'
+	      layout: (LayoutFrame 255 0 330 0 350 0 352 0)
+	      model: maxCopyBufferSize
+	      type: fileSize
+	      immediateAccept: true
+	      acceptOnReturn: true
+	      acceptOnTab: true
+	      acceptOnLostFocus: true
+	      acceptOnPointerLeave: true
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::DisplaySettingsAppl methodsFor:'actions'!
 
 basicReadSettings
@@ -3085,12 +3154,12 @@
     self sizeY value:screen heightInMillimeter.
     self deepIcons value:screen supportsDeepIcons.
     ditherSyms notNil ifTrue:[
-        self ditherListSelection 
-            value:(ditherSyms indexOf:(Image ditherAlgorithm) ifAbsent:#threshold)
-    ].
-    self clipEncodingListSelection 
-        value:(self class clipEncodingSyms indexOf:screen clipboardEncoding
-                ifAbsent:1).
+	self ditherListSelection
+	    value:(ditherSyms indexOf:(Image ditherAlgorithm) ifAbsent:#threshold)
+    ].
+    self clipEncodingListSelection
+	value:(self class clipEncodingSyms indexOf:screen clipboardEncoding
+		ifAbsent:1).
 !
 
 basicSaveSettings
@@ -3098,25 +3167,25 @@
     Image flushDeviceImages.
 
     screen visualType == #PseudoColor ifTrue:[
-        self useFixPalette value ifTrue:[
-            Color colorAllocationFailSignal handle:[:ex |
-                self warn:'Could not allocate colors.'.
-            ] do:[
-                Color getColorsRed:4 green:8 blue:4 on:screen
-            ]
-        ] ifFalse:[
-            screen releaseFixColors
-        ].
-
-        self useFixGrayPalette value ifTrue:[
-            Color colorAllocationFailSignal handle:[:ex |
-                self warn:'Could not allocate colors.'.
-            ] do:[
-                Color getGrayColors:32 on:screen
-            ]
-        ] ifFalse:[
-            screen releaseFixGrayColors
-        ]
+	self useFixPalette value ifTrue:[
+	    Color colorAllocationFailSignal handle:[:ex |
+		self warn:'Could not allocate colors.'.
+	    ] do:[
+		Color getColorsRed:4 green:8 blue:4 on:screen
+	    ]
+	] ifFalse:[
+	    screen releaseFixColors
+	].
+
+	self useFixGrayPalette value ifTrue:[
+	    Color colorAllocationFailSignal handle:[:ex |
+		self warn:'Could not allocate colors.'.
+	    ] do:[
+		Color getGrayColors:32 on:screen
+	    ]
+	] ifFalse:[
+	    screen releaseFixGrayColors
+	]
     ].
     screen hasColors:self isColorMonitor value.
     screen widthInMillimeter:self sizeX value.
@@ -3124,22 +3193,23 @@
 
     screen supportsDeepIcons:self deepIcons value.
     ditherSyms notNil ifTrue:[
-        Image ditherAlgorithm:(ditherSyms at:self ditherListSelection value).
+	Image ditherAlgorithm:(ditherSyms at:self ditherListSelection value).
     ].
 
     WindowGroup activeGroup withWaitCursorDo:[
-        View defaultStyle:(View defaultStyle).
+	View defaultStyle:(View defaultStyle).
     ].
 
     screen clipboardEncoding:(self class clipEncodingSyms at:self clipEncodingListSelection value).
 ! !
 
+
 !AbstractSettingsApplication::DisplaySettingsAppl methodsFor:'aspects'!
 
 clipEncodingList
 
     clipEncodingList isNil ifTrue:[
-        clipEncodingList := (resources array:self class clipEncodingStrings) asValue.
+	clipEncodingList := (resources array:self class clipEncodingStrings) asValue.
 "/ if your app needs to be notified of changes, uncomment one of the lines below:
 "/       clipEncodingList addDependent:self.
 "/       clipEncodingList onChangeSend:#clipEncodingListChanged to:self.
@@ -3150,8 +3220,8 @@
 clipEncodingListSelection
 
     clipEncodingListSelection isNil ifTrue:[
-        clipEncodingListSelection := (self class clipEncodingSyms indexOf:screen clipboardEncoding ifAbsent:1) asValue.
-        clipEncodingListSelection onChangeSend:#updateModifiedChannel to:self.
+	clipEncodingListSelection := (self class clipEncodingSyms indexOf:screen clipboardEncoding ifAbsent:1) asValue.
+	clipEncodingListSelection onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ clipEncodingListSelection.
 !
@@ -3159,8 +3229,8 @@
 deepIcons
 
     deepIcons isNil ifTrue:[
-        deepIcons := screen supportsDeepIcons asValue.
-        deepIcons onChangeSend:#updateModifiedChannel to:self.
+	deepIcons := screen supportsDeepIcons asValue.
+	deepIcons onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ deepIcons.
 !
@@ -3168,7 +3238,7 @@
 ditherList
 
     ditherList isNil ifTrue:[
-        ditherList := ValueHolder new.
+	ditherList := ValueHolder new.
     ].
     ^ ditherList.
 !
@@ -3176,12 +3246,12 @@
 ditherListSelection
 
     ditherListSelection isNil ifTrue:[
-        ditherSyms notNil ifTrue:[
-            ditherListSelection := (ditherSyms indexOf:(Image ditherAlgorithm) ifAbsent:#threshold) asValue.
-        ] ifFalse:[
-            ditherListSelection := ValueHolder new.
-        ].
-        ditherListSelection onChangeSend:#updateModifiedChannel to:self.
+	ditherSyms notNil ifTrue:[
+	    ditherListSelection := (ditherSyms indexOf:(Image ditherAlgorithm) ifAbsent:#threshold) asValue.
+	] ifFalse:[
+	    ditherListSelection := ValueHolder new.
+	].
+	ditherListSelection onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ ditherListSelection.
 !
@@ -3189,7 +3259,7 @@
 ditherSymsNotNil
 
     ditherSymsNotNil isNil ifTrue:[
-        ditherSymsNotNil := ditherSyms notNil asValue.
+	ditherSymsNotNil := ditherSyms notNil asValue.
     ].
     ^ ditherSymsNotNil.
 !
@@ -3197,8 +3267,8 @@
 isColorMonitor
 
     isColorMonitor isNil ifTrue:[
-        isColorMonitor := screen hasColors asValue.
-        isColorMonitor onChangeSend:#updateModifiedChannel to:self.
+	isColorMonitor := screen hasColors asValue.
+	isColorMonitor onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ isColorMonitor.
 !
@@ -3206,10 +3276,10 @@
 maxCopyBufferSize
 
     maxCopyBufferSize isNil ifTrue:[
-        maxCopyBufferSize := (8*1024*1024) asValue.
-        maxCopyBufferSize addDependent:self.
-        maxCopyBufferSize changed.
-        maxCopyBufferSize onChangeSend:#updateModifiedChannel to:self.
+	maxCopyBufferSize := (8*1024*1024) asValue.
+	maxCopyBufferSize addDependent:self.
+	maxCopyBufferSize changed.
+	maxCopyBufferSize onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ maxCopyBufferSize.
 !
@@ -3217,7 +3287,7 @@
 monitorList
 
     monitorList isNil ifTrue:[
-        monitorList := (resources array:(sizeInfos collect:[:entry | entry at:1])) asList.
+	monitorList := (resources array:(sizeInfos collect:[:entry | entry at:1])) asList.
     ].
     ^ monitorList.
 !
@@ -3225,10 +3295,10 @@
 monitorSelection
 
     monitorSelection isNil ifTrue:[
-        monitorSelection := ValueHolder new.
-        monitorSelection addDependent:self.
-        monitorSelection onChangeSend:#updateModifiedChannel to:self.
-        monitorSelection changed.
+	monitorSelection := ValueHolder new.
+	monitorSelection addDependent:self.
+	monitorSelection onChangeSend:#updateModifiedChannel to:self.
+	monitorSelection changed.
     ].
     ^ monitorSelection.
 !
@@ -3236,10 +3306,10 @@
 screenDepthVisualLabelHolder
 
     screenDepthVisualLabelHolder isNil ifTrue:[
-        screenDepthVisualLabelHolder := (resources string:'Screen: Depth: %1 Visual: %2  (%3)'
-                                 with:screen depth printString
-                                 with:screen visualType
-                                 with:screen serverVendor) asValue.
+	screenDepthVisualLabelHolder := (resources string:'Screen: Depth: %1 Visual: %2  (%3)'
+				 with:screen depth printString
+				 with:screen visualType
+				 with:screen serverVendor) asValue.
     ].
     ^ screenDepthVisualLabelHolder.
 !
@@ -3247,21 +3317,21 @@
 sizeX
 
     sizeX isNil ifTrue:[
-        sizeX := screen widthInMillimeter asValue.
-        sizeX addDependent:self.
-        sizeX changed.
-        sizeX onChangeSend:#updateModifiedChannel to:self.
+	sizeX := screen widthInMillimeter asValue.
+	sizeX addDependent:self.
+	sizeX changed.
+	sizeX onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ sizeX.
 !
 
-sizeY                              
+sizeY
 
     sizeY isNil ifTrue:[
-        sizeY := screen heightInMillimeter asValue.
-        sizeY addDependent:self.
-        sizeY changed.
-        sizeY onChangeSend:#updateModifiedChannel to:self.
+	sizeY := screen heightInMillimeter asValue.
+	sizeY addDependent:self.
+	sizeY changed.
+	sizeY onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ sizeY.
 !
@@ -3269,8 +3339,8 @@
 useFixGrayPalette
 
     useFixGrayPalette isNil ifTrue:[
-        useFixGrayPalette := screen fixGrayColors notNil asValue.
-        useFixGrayPalette onChangeSend:#updateModifiedChannel to:self.
+	useFixGrayPalette := screen fixGrayColors notNil asValue.
+	useFixGrayPalette onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ useFixGrayPalette.
 !
@@ -3278,7 +3348,7 @@
 useFixGrayPaletteLabel
 
     useFixGrayPaletteLabel isNil ifTrue:[
-        useFixGrayPaletteLabel := (resources string:'Use Fix Gray Color Palette %1' with:'(32)') asValue.
+	useFixGrayPaletteLabel := (resources string:'Use Fix Gray Color Palette %1' with:'(32)') asValue.
     ].
     ^ useFixGrayPaletteLabel.
 !
@@ -3286,8 +3356,8 @@
 useFixPalette
 
     useFixPalette isNil ifTrue:[
-        useFixPalette := screen fixColors notNil asValue.
-        useFixPalette onChangeSend:#updateModifiedChannel to:self.
+	useFixPalette := screen fixColors notNil asValue.
+	useFixPalette onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ useFixPalette.
 !
@@ -3295,7 +3365,7 @@
 useFixPaletteLabel
 
     useFixPaletteLabel isNil ifTrue:[
-        useFixPaletteLabel := (resources string:'Use Fix Color Palette %1' with:'(4x8x4)') asValue.
+	useFixPaletteLabel := (resources string:'Use Fix Color Palette %1' with:'(4x8x4)') asValue.
     ].
     ^ useFixPaletteLabel.
 !
@@ -3303,12 +3373,13 @@
 visualIsPseudoColor
 
     visualIsPseudoColor isNil ifTrue:[
-        visualIsPseudoColor := (screen visualType == #PseudoColor) asValue.
-        visualIsPseudoColor onChangeSend:#updateModifiedChannel to:self.
+	visualIsPseudoColor := (screen visualType == #PseudoColor) asValue.
+	visualIsPseudoColor onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ visualIsPseudoColor.
 ! !
 
+
 !AbstractSettingsApplication::DisplaySettingsAppl methodsFor:'change & update'!
 
 monitorSelectionChanged
@@ -3317,10 +3388,10 @@
 
     sel := self monitorSelection value.
     (sel notNil and:[sel ~~ 0]) ifTrue:[
-        sizeInfoEntry := sizeInfos at:sel.
-        sizes := sizeInfoEntry at:2.
-        self sizeX value:(sizes at:1).
-        self sizeY value:(sizes at:2).
+	sizeInfoEntry := sizeInfos at:sel.
+	sizes := sizeInfoEntry at:2.
+	self sizeX value:(sizes at:1).
+	self sizeY value:(sizes at:2).
     ].
 !
 
@@ -3329,33 +3400,35 @@
 
     sizes := sizeInfos collect:[:entry | entry at:2].
     idx := sizes findFirst:[:entry |
-                                ((entry at:1) = sizeX value)
-                                and:[((entry at:2) = sizeY value)]
-                           ].
+				((entry at:1) = sizeX value)
+				and:[((entry at:2) = sizeY value)]
+			   ].
     idx ~~ 0 ifTrue:[
-        self monitorSelection value:idx
+	self monitorSelection value:idx
     ].
 !
 
 update:something with:aParameter from:changedObject
     changedObject == self monitorSelection ifTrue:[
-        self monitorSelectionChanged.
-        ^ self.
+	self monitorSelectionChanged.
+	^ self.
     ].
     (changedObject == self sizeX or:[self sizeY]) ifTrue:[
-        self sizeXorYChanged.
-        ^ self.
+	self sizeXorYChanged.
+	^ self.
     ].
 
     super update:something with:aParameter from:changedObject
 ! !
 
+
 !AbstractSettingsApplication::DisplaySettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/screenSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::DisplaySettingsAppl methodsFor:'initialization & release'!
 
 initialize
@@ -3366,31 +3439,32 @@
 
     listOfSizes := self class classResources at:'LIST_OF_OFFERED_SCREEN_SIZES' default:#default.
     listOfSizes == #default ifTrue:[
-        "/ nothing in resource file; offer at least some.
-        sizeInfos := #(
-                           ( '11.3'' (235mm x 175mm) LCD'   (235 175)    )
-                           ( '17''   (325mm x 245mm)'       (325 245)    )
-                           ( '19''   (340mm x 270mm)'       (340 270)    )
-                           ( '20''   (350mm x 280mm)'       (350 280)    )
-                           ( '21''   (365mm x 285mm)'       (365 285)    )
-                       ).
+	"/ nothing in resource file; offer at least some.
+	sizeInfos := #(
+			   ( '11.3'' (235mm x 175mm) LCD'   (235 175)    )
+			   ( '17''   (325mm x 245mm)'       (325 245)    )
+			   ( '19''   (340mm x 270mm)'       (340 270)    )
+			   ( '20''   (350mm x 280mm)'       (350 280)    )
+			   ( '21''   (365mm x 285mm)'       (365 285)    )
+		       ).
     ] ifFalse:[
-        sizeInfos := resources array:listOfSizes.
+	sizeInfos := resources array:listOfSizes.
     ].
     visual := screen visualType.
     (visual == #StaticGray or:[visual == #GrayScale]) ifTrue:[
-        ditherStyles := self class staticGrayOrGrayScaleDitherStrings.
-        ditherSyms := self class staticGrayOrGrayScaleDitherSyms.
+	ditherStyles := self class staticGrayOrGrayScaleDitherStrings.
+	ditherSyms := self class staticGrayOrGrayScaleDitherSyms.
     ] ifFalse:[
-        visual ~~ #TrueColor ifTrue:[
-            ditherStyles := self class trueColorDitherStrings.
-            ditherSyms := self class trueColorDitherSyms.
-        ]
+	visual ~~ #TrueColor ifTrue:[
+	    ditherStyles := self class trueColorDitherStrings.
+	    ditherSyms := self class trueColorDitherSyms.
+	]
     ].
     super initialize.
 
 ! !
 
+
 !AbstractSettingsApplication::DisplaySettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -3402,12 +3476,13 @@
 
     self deepIcons value ~= screen supportsDeepIcons ifTrue:[^ true].
     ditherSyms notNil ifTrue:[
-        self ditherListSelection value ~= (ditherSyms indexOf:(Image ditherAlgorithm) ifAbsent:#threshold) ifTrue:[^ true].
+	self ditherListSelection value ~= (ditherSyms indexOf:(Image ditherAlgorithm) ifAbsent:#threshold) ifTrue:[^ true].
     ].
     self clipEncodingListSelection value ~= (self class clipEncodingSyms indexOf:screen clipboardEncoding ifAbsent:1) ifTrue:[^ true].
     ^ false
 ! !
 
+
 !AbstractSettingsApplication::EditSettingsAppl class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -3418,7 +3493,7 @@
      the UIHelpTool may not be able to read the specification."
 
     "
-     UIHelpTool openOnClass:AbstractSettingsApplication::FontSettingsAppl    
+     UIHelpTool openOnClass:AbstractSettingsApplication::FontSettingsAppl
     "
 
     <resource: #help>
@@ -3450,6 +3525,7 @@
     "Created: / 17-03-2012 / 11:37:51 / cg"
 ! !
 
+
 !AbstractSettingsApplication::EditSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -3458,6 +3534,7 @@
     ^ ToolbarIconLibrary editorIcon
 ! !
 
+
 !AbstractSettingsApplication::EditSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -3475,131 +3552,132 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Editor Settings'
-          name: 'Editor Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 600 320)
-        )
-        component: 
+	  label: 'Editor Settings'
+	  name: 'Editor Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 600 320)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel1'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                             (CheckBoxSpec
-                                label: 'Use the new Code Editor 2 (experimental)'
-                                name: 'UserCodeView2'
-                                model: useCodeView2InTools
-                                aktiveHelpKey: useCodeView2InTools
-                                extent: (Point 607 25)
-                              )
-                 (CheckBoxSpec
-                    label: 'Show Accept/Cancel Bar in Editor'
-                    name: 'ShowAcceptCancelBarInBrowser'
-                    model: showAcceptCancelBarInBrowser
-                                aktiveHelpKey: showAcceptCancelBarInBrowser
-                    extent: (Point 600 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'CTRL-Key to Start TextDrag'
-                    name: 'CTRLKeyStTextDragCheckBox'
-                    model: startTextDragWithControl
-                                aktiveHelpKey: startTextDragWithControl
-                    translateLabel: true
-                    extent: (Point 600 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Always Paste the Contents when Dropping a File (Do not Ask) '
-                    name: 'EnforceContentsDropForFiles'
-                    model: enforceContentsDropForFiles
-                                aktiveHelpKey: enforceContentsDropForFiles
-                    translateLabel: true
-                    extent: (Point 600 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'SearchBox is Modal'
-                    name: 'SearchBoxModalCheckBox'
-                    model: searchDialogIsModal
-                                aktiveHelpKey: searchDialogIsModal
-                    translateLabel: true
-                    extent: (Point 600 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Tab Stops in Multiples of 4'
-                    name: 'TabStopsMultiples4CheckBox'
-                    model: tabsIs4
-                                aktiveHelpKey: tabsIs4
-                    translateLabel: true
-                    extent: (Point 600 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Double Click Select Behavior as in ST80'
-                    name: 'DoubleClickSelectBehaviorST80CheckBox'
-                    model: st80DoubleClickSelectMode
-                                aktiveHelpKey: st80DoubleClickSelectMode
-                    translateLabel: true
-                    extent: (Point 600 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Cursor has ST80 Line-end Behavior'
-                    name: 'CursorST80LineEndBehaviorCheckBox'
-                    model: st80EditMode
-                                aktiveHelpKey: st80EditMode
-                    translateLabel: true
-                    extent: (Point 600 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Select all when Clicking beyond the Text''s End'
-                    name: 'CheckBox2'
-                    model: selectAllWhenClickingBeyondEnd
-                                aktiveHelpKey: selectAllWhenClickingBeyondEnd
-                    translateLabel: true
-                    extent: (Point 600 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Treat Underscore as Letter in Word-Select'
-                    name: 'UnderscoreIsLetterCheckBox'
-                    model: extendedWordSelectMode
-                                aktiveHelpKey: extendedWordSelectMode
-                    translateLabel: true
-                    extent: (Point 600 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Any non-Whitespace in Word-Select'
-                    name: 'CheckBox1'
-                    model: whitespaceWordSelectMode
-                                aktiveHelpKey: whitespaceWordSelectMode
-                    translateLabel: true
-                    extent: (Point 600 25)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel1'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+			     (CheckBoxSpec
+				label: 'Use the new Code Editor 2 (experimental)'
+				name: 'UserCodeView2'
+				model: useCodeView2InTools
+				aktiveHelpKey: useCodeView2InTools
+				extent: (Point 607 25)
+			      )
+		 (CheckBoxSpec
+		    label: 'Show Accept/Cancel Bar in Editor'
+		    name: 'ShowAcceptCancelBarInBrowser'
+		    model: showAcceptCancelBarInBrowser
+				aktiveHelpKey: showAcceptCancelBarInBrowser
+		    extent: (Point 600 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'CTRL-Key to Start TextDrag'
+		    name: 'CTRLKeyStTextDragCheckBox'
+		    model: startTextDragWithControl
+				aktiveHelpKey: startTextDragWithControl
+		    translateLabel: true
+		    extent: (Point 600 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Always Paste the Contents when Dropping a File (Do not Ask) '
+		    name: 'EnforceContentsDropForFiles'
+		    model: enforceContentsDropForFiles
+				aktiveHelpKey: enforceContentsDropForFiles
+		    translateLabel: true
+		    extent: (Point 600 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'SearchBox is Modal'
+		    name: 'SearchBoxModalCheckBox'
+		    model: searchDialogIsModal
+				aktiveHelpKey: searchDialogIsModal
+		    translateLabel: true
+		    extent: (Point 600 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Tab Stops in Multiples of 4'
+		    name: 'TabStopsMultiples4CheckBox'
+		    model: tabsIs4
+				aktiveHelpKey: tabsIs4
+		    translateLabel: true
+		    extent: (Point 600 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Double Click Select Behavior as in ST80'
+		    name: 'DoubleClickSelectBehaviorST80CheckBox'
+		    model: st80DoubleClickSelectMode
+				aktiveHelpKey: st80DoubleClickSelectMode
+		    translateLabel: true
+		    extent: (Point 600 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Cursor has ST80 Line-end Behavior'
+		    name: 'CursorST80LineEndBehaviorCheckBox'
+		    model: st80EditMode
+				aktiveHelpKey: st80EditMode
+		    translateLabel: true
+		    extent: (Point 600 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Select all when Clicking beyond the Text''s End'
+		    name: 'CheckBox2'
+		    model: selectAllWhenClickingBeyondEnd
+				aktiveHelpKey: selectAllWhenClickingBeyondEnd
+		    translateLabel: true
+		    extent: (Point 600 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Treat Underscore as Letter in Word-Select'
+		    name: 'UnderscoreIsLetterCheckBox'
+		    model: extendedWordSelectMode
+				aktiveHelpKey: extendedWordSelectMode
+		    translateLabel: true
+		    extent: (Point 600 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Any non-Whitespace in Word-Select'
+		    name: 'CheckBox1'
+		    model: whitespaceWordSelectMode
+				aktiveHelpKey: whitespaceWordSelectMode
+		    translateLabel: true
+		    extent: (Point 600 25)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::EditSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
-    self 
-        readAspects:self commonAspects
-        from:currentUserPrefs.
+    self
+	readAspects:self commonAspects
+	from:currentUserPrefs.
 
     self st80DoubleClickSelectMode value:TextView st80SelectMode.
     self tabsIs4 value:(ListView userDefaultTabPositions = ListView tab4Positions).
@@ -3607,74 +3685,75 @@
 !
 
 basicSaveSettings
-    self 
-        writeAspects:self commonAspects
-        to:currentUserPrefs.
+    self
+	writeAspects:self commonAspects
+	to:currentUserPrefs.
 
     self enforceContentsDropForFiles value ifTrue:[
-        currentUserPrefs enforcedDropModeForFiles:#text
+	currentUserPrefs enforcedDropModeForFiles:#text
     ] ifFalse:[
-        currentUserPrefs enforcedDropModeForFiles:nil
+	currentUserPrefs enforcedDropModeForFiles:nil
     ].
 
     TextView st80SelectMode:(self st80DoubleClickSelectMode value).
     tabsIs4 value ~~ (ListView userDefaultTabPositions = ListView tab4Positions) ifTrue:[
-        ListView userDefaultTabPositions:(self tabsIs4 value 
-                                            ifTrue:[ListView tab4Positions] 
-                                            ifFalse:[ListView tab8Positions]).
-        ListView allSubInstancesDo:[:eachKindOfListView |
-            self tabsIs4 value 
-                ifTrue:[eachKindOfListView setTab4] 
-                ifFalse:[eachKindOfListView setTab8]
-        ].
+	ListView userDefaultTabPositions:(self tabsIs4 value
+					    ifTrue:[ListView tab4Positions]
+					    ifFalse:[ListView tab8Positions]).
+	ListView allSubInstancesDo:[:eachKindOfListView |
+	    self tabsIs4 value
+		ifTrue:[eachKindOfListView setTab4]
+		ifFalse:[eachKindOfListView setTab8]
+	].
     ].
 !
 
 commonAspects
-    ^ #( 
-        #useCodeView2InTools
-         #showAcceptCancelBarInBrowser
-         #searchDialogIsModal
-         #startTextDragWithControl
-         #st80EditMode
-         #extendedWordSelectMode
-         #whitespaceWordSelectMode
-         #selectAllWhenClickingBeyondEnd
+    ^ #(
+	#useCodeView2InTools
+	 #showAcceptCancelBarInBrowser
+	 #searchDialogIsModal
+	 #startTextDragWithControl
+	 #st80EditMode
+	 #extendedWordSelectMode
+	 #whitespaceWordSelectMode
+	 #selectAllWhenClickingBeyondEnd
     )
 
     "Modified: / 07-03-2012 / 14:33:40 / cg"
 ! !
 
+
 !AbstractSettingsApplication::EditSettingsAppl methodsFor:'aspects'!
 
 enforceContentsDropForFiles
     enforceContentsDropForFiles isNil ifTrue:[
-        enforceContentsDropForFiles := true asValue.
-        enforceContentsDropForFiles onChangeSend:#updateModifiedChannel to:self.
+	enforceContentsDropForFiles := true asValue.
+	enforceContentsDropForFiles onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ enforceContentsDropForFiles.
 !
 
 extendedWordSelectMode
     extendedWordSelectMode isNil ifTrue:[
-        extendedWordSelectMode := true asValue.
-        extendedWordSelectMode onChangeSend:#updateModifiedChannel to:self.
+	extendedWordSelectMode := true asValue.
+	extendedWordSelectMode onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ extendedWordSelectMode.
 !
 
 searchDialogIsModal
     searchDialogIsModal isNil ifTrue:[
-        searchDialogIsModal := true asValue.
-        searchDialogIsModal onChangeSend:#updateModifiedChannel to:self.
+	searchDialogIsModal := true asValue.
+	searchDialogIsModal onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ searchDialogIsModal.
 !
 
 selectAllWhenClickingBeyondEnd
     selectAllWhenClickingBeyondEnd isNil ifTrue:[
-        selectAllWhenClickingBeyondEnd := true asValue.
-        selectAllWhenClickingBeyondEnd onChangeSend:#updateModifiedChannel to:self.
+	selectAllWhenClickingBeyondEnd := true asValue.
+	selectAllWhenClickingBeyondEnd onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ selectAllWhenClickingBeyondEnd.
 
@@ -3683,48 +3762,48 @@
 
 showAcceptCancelBarInBrowser
     showAcceptCancelBarInBrowser isNil ifTrue:[
-        showAcceptCancelBarInBrowser := false asValue.
-        showAcceptCancelBarInBrowser onChangeSend:#updateModifiedChannel to:self
+	showAcceptCancelBarInBrowser := false asValue.
+	showAcceptCancelBarInBrowser onChangeSend:#updateModifiedChannel to:self
     ].
     ^ showAcceptCancelBarInBrowser.
 !
 
 st80DoubleClickSelectMode
     st80DoubleClickSelectMode isNil ifTrue:[
-        st80DoubleClickSelectMode := true asValue.
-        st80DoubleClickSelectMode onChangeSend:#updateModifiedChannel to:self.
+	st80DoubleClickSelectMode := true asValue.
+	st80DoubleClickSelectMode onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ st80DoubleClickSelectMode.
 !
 
 st80EditMode
     st80EditingMode isNil ifTrue:[
-        st80EditingMode := true asValue.
-        st80EditingMode onChangeSend:#updateModifiedChannel to:self.
+	st80EditingMode := true asValue.
+	st80EditingMode onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ st80EditingMode.
 !
 
 startTextDragWithControl
     startTextDragWithControl isNil ifTrue:[
-        startTextDragWithControl := true asValue.
-        startTextDragWithControl onChangeSend:#updateModifiedChannel to:self.
+	startTextDragWithControl := true asValue.
+	startTextDragWithControl onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ startTextDragWithControl.
 !
 
 tabsIs4
     tabsIs4 isNil ifTrue:[
-        tabsIs4 := true asValue.
-        tabsIs4 onChangeSend:#updateModifiedChannel to:self.
+	tabsIs4 := true asValue.
+	tabsIs4 onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ tabsIs4.
 !
 
 useCodeView2InTools
     useCodeView2InTools isNil ifTrue:[
-        useCodeView2InTools := ValueHolder new.
-        useCodeView2InTools onChangeSend:#updateModifiedChannel to:self
+	useCodeView2InTools := ValueHolder new.
+	useCodeView2InTools onChangeSend:#updateModifiedChannel to:self
 
     ].
     ^ useCodeView2InTools
@@ -3734,50 +3813,54 @@
 
 whitespaceWordSelectMode
     whitespaceWordSelectMode isNil ifTrue:[
-        whitespaceWordSelectMode := true asValue.
-        whitespaceWordSelectMode onChangeSend:#updateModifiedChannel to:self.
+	whitespaceWordSelectMode := true asValue.
+	whitespaceWordSelectMode onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ whitespaceWordSelectMode.
 ! !
 
+
 !AbstractSettingsApplication::EditSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/editSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::EditSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
     self enforceContentsDropForFiles value ~= (currentUserPrefs enforcedDropModeForFiles == #text) ifTrue:[^ true].
     TextView st80SelectMode ~= (self st80DoubleClickSelectMode value) ifTrue:[^ true].
     tabsIs4 value ~~ (ListView userDefaultTabPositions = ListView tab4Positions) ifTrue:[
-        ListView userDefaultTabPositions ~= (self tabsIs4 value 
-                                                ifTrue:[ListView tab4Positions] 
-                                                ifFalse:[ListView tab8Positions]) ifTrue:[^ true].
+	ListView userDefaultTabPositions ~= (self tabsIs4 value
+						ifTrue:[ListView tab4Positions]
+						ifFalse:[ListView tab8Positions]) ifTrue:[^ true].
     ].
 
     ^ self
-        hasChangedAspectIn:self commonAspects
-        asComparedTo:currentUserPrefs
+	hasChangedAspectIn:self commonAspects
+	asComparedTo:currentUserPrefs
 
     "Modified: / 25-11-2011 / 15:23:02 / cg"
 ! !
 
+
 !AbstractSettingsApplication::FontSettingsAppl class methodsFor:'defaults'!
 
 widgetList
 
     ^  #(
-        'All' 
-        'Labels' 
-        'Buttons' 
-        'Lists' 
-        'Menus' 
-        'Edited Text'
+	'All'
+	'Labels'
+	'Buttons'
+	'Lists'
+	'Menus'
+	'Edited Text'
        )
 ! !
 
+
 !AbstractSettingsApplication::FontSettingsAppl class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -3788,7 +3871,7 @@
      the UIHelpTool may not be able to read the specification."
 
     "
-     UIHelpTool openOnClass:AbstractSettingsApplication::FontSettingsAppl    
+     UIHelpTool openOnClass:AbstractSettingsApplication::FontSettingsAppl
     "
 
     <resource: #help>
@@ -3820,6 +3903,7 @@
     "Created: / 17-03-2012 / 11:37:51 / cg"
 ! !
 
+
 !AbstractSettingsApplication::FontSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -3844,13 +3928,14 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::FontSettingsAppl class defaultIcon2'
-        ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::FontSettingsAppl class defaultIcon2'
+	ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@@@@@@@@@@@@@@@@!!X @@@@@@@!!X @@@6H@@@@@@DP6H@@@Y!!H@@@@@QDY"@@@BY"@@@@ADQBY"@@@FX @@@@@DQCX @@@6H@@@@@QEP6H@@@@ @@@@
 ADUDP @C@@@@@@@DQSH@@@L @@@@@@QEL @@@2@@@@@@ADT2@@@CH@@@@@@DQSH@@@L @@@@@@QEL @@@2@@@@@@QDT2@@@CH@@@@@QDQSH@@@@ @@@@@DQE
 P @@@@@@@@@@@DQ@@@@@@@@@@@@@@D@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255 150 150 150 213 213 213 215 48 48 134 54 54 240 240 240]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@G @OG0@O''<@O7>@O<?@A>? A?? A??@A<?@A<>@A<>@A<>@A=>@C?>@G<>@C<\@@8D@@H@@@@@@@@@@@@@@') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::FontSettingsAppl class methodsFor:'instance creation'!
 
 fontForEncoding:encodingMatch
@@ -3863,6 +3948,7 @@
     self open.
 ! !
 
+
 !AbstractSettingsApplication::FontSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -3880,419 +3966,421 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Font Settings'
-          name: 'Font Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 512 657)
-        )
-        component: 
+	  label: 'Font Settings'
+	  name: 'Font Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 512 657)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel1'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fitSpace
-              verticalLayout: topSpace
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (LabelSpec
-                    label: 'Label'
-                    name: 'Label3'
-                    style: labelFont
-                    translateLabel: true
-                    labelChannel: infoText
-                    resizeForLabel: false
-                    adjust: left
-                    extent: (Point 506 132)
-                  )
-                 (ViewSpec
-                    name: 'CodeBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Code'
-                          name: 'Label1'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (LabelSpec
-                          label: 'Text Font'
-                          name: 'Label2'
-                          layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
-                          translateLabel: true
-                          labelChannel: textFontLabelHolder
-                          adjust: left
-                          postBuildCallback: postBuildTextFontLabel:
-                        )
-                       (ActionButtonSpec
-                          label: 'Change...'
-                          name: 'Button1'
-                          layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
-                          translateLabel: true
-                          tabable: true
-                          model: changeTextFont
-                        )
-                       (DividerSpec
-                          name: 'Separator11'
-                          layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 506 50)
-                  )
-                 (ViewSpec
-                    name: 'InputFieldsBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Input Fields'
-                          name: 'Input Fields'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (LabelSpec
-                          label: 'InputFields Font'
-                          name: 'InputFieldsFont'
-                          layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
-                          translateLabel: true
-                          labelChannel: inputFieldFontLabelHolder
-                          adjust: left
-                          postBuildCallback: postBuildInputFieldFontLabel:
-                        )
-                       (ActionButtonSpec
-                          label: 'Change...'
-                          name: 'ChangeText'
-                          layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
-                          translateLabel: true
-                          tabable: true
-                          model: changeInputFieldFont
-                        )
-                       (DividerSpec
-                          name: 'Separator10'
-                          layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 506 50)
-                  )
-                 (ViewSpec
-                    name: 'ListsBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Lists'
-                          name: 'Lists'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (LabelSpec
-                          label: 'Lists Font'
-                          name: 'ListsFont'
-                          layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
-                          translateLabel: true
-                          labelChannel: listsFontLabelHolder
-                          adjust: left
-                          postBuildCallback: postBuildListsFontLabel:
-                        )
-                       (ActionButtonSpec
-                          label: 'Change...'
-                          name: 'ChangeLists'
-                          layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
-                          translateLabel: true
-                          tabable: true
-                          model: changeListsFont
-                        )
-                       (DividerSpec
-                          name: 'Separator8'
-                          layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 506 50)
-                  )
-                 (ViewSpec
-                    name: 'MenusBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Menus'
-                          name: 'Menus'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (LabelSpec
-                          label: 'Menus Font'
-                          name: 'MenusFont'
-                          layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
-                          translateLabel: true
-                          labelChannel: menusFontLabelHolder
-                          adjust: left
-                          postBuildCallback: postBuildMenuesFontLabel:
-                        )
-                       (ActionButtonSpec
-                          label: 'Change...'
-                          name: 'ChangeMenus'
-                          layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
-                          translateLabel: true
-                          tabable: true
-                          model: changeMenusFont
-                        )
-                       (DividerSpec
-                          name: 'Separator9'
-                          layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 506 50)
-                  )
-                 (ViewSpec
-                    name: 'LabelsBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Labels'
-                          name: 'Labels'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (LabelSpec
-                          label: 'Labels'
-                          name: 'LabelsFont'
-                          layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
-                          translateLabel: true
-                          labelChannel: labelsFontLabelHolder
-                          adjust: left
-                          postBuildCallback: postBuildLabelsFontLabel:
-                        )
-                       (ActionButtonSpec
-                          label: 'Change...'
-                          name: 'ChangeLabels'
-                          layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
-                          translateLabel: true
-                          tabable: true
-                          model: changeLabelsFont
-                        )
-                       (DividerSpec
-                          name: 'Separator6'
-                          layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 506 50)
-                  )
-                 (ViewSpec
-                    name: 'ButtonsBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Buttons'
-                          name: 'Buttons'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (LabelSpec
-                          label: 'Buttons Font'
-                          name: 'ButtonsFont'
-                          layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
-                          translateLabel: true
-                          labelChannel: buttonsFontLabelHolder
-                          adjust: left
-                          postBuildCallback: postBuildButtonsFontLabel:
-                        )
-                       (ActionButtonSpec
-                          label: 'Change...'
-                          name: 'Change Buttons'
-                          layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
-                          translateLabel: true
-                          tabable: true
-                          model: changeButtonsFont
-                        )
-                       (DividerSpec
-                          name: 'Separator7'
-                          layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 506 50)
-                  )
-                 (ViewSpec
-                    name: 'AllBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'All (Others)'
-                          name: 'All'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (LabelSpec
-                          label: 'Label'
-                          name: 'AllFont'
-                          layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
-                          translateLabel: true
-                          labelChannel: allFontLabelHolder
-                          adjust: left
-                          postBuildCallback: postBuildAllFontLabel:
-                        )
-                       (ActionButtonSpec
-                          label: 'Change...'
-                          name: 'ChangeAll'
-                          layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
-                          translateLabel: true
-                          tabable: true
-                          model: changeAllFont
-                        )
-                       (DividerSpec
-                          name: 'Separator1'
-                          layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 506 50)
-                  )
-                 (CheckBoxSpec
-                    label: 'Linux font workaround: do not reset fonts on snapshot restart'
-                    name: 'LinuxFontWorkaroundBox'
-                    visibilityChannel: linuxFontWorkaroundVisible
-                    model: linuxFontWorkaround
-                    translateLabel: true
-                    extent: (Point 506 22)
-                  )
-                 (DividerSpec
-                    name: 'Separator12'
-                    visibilityChannel: linuxFontWorkaroundVisible
-                    extent: (Point 506 3)
-                  )
-                 (ViewSpec
-                    name: 'SpecialsBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Common Settings:'
-                          name: 'Label4'
-                          layout: (LayoutFrame 0 0.0 11 0 0 1.0 33 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (ActionButtonSpec
-                          label: 'Default'
-                          name: 'Button2'
-                          layout: (LayoutFrame 0 0.0 35 0 105 0 57 0)
-                          activeHelpKey: resetToDefault
-                          translateLabel: true
-                          tabable: true
-                          model: changeToDefault
-                        )
-                       (ActionButtonSpec
-                          label: 'High Contrast'
-                          name: 'Button3'
-                          layout: (LayoutFrame 148 0.0 35 0 255 0 57 0)
-                          translateLabel: true
-                          tabable: true
-                          model: changeToHighContrast
-                          activeHelpKey: changeToHighContrast
-                        )
-                       (ActionButtonSpec
-                          label: 'Big Fonts'
-                          name: 'Button4'
-                          layout: (LayoutFrame 260 0.0 35 0 365 0 57 0)
-                          translateLabel: true
-                          tabable: true
-                          model: changeToBigFonts
-                          activeHelpKey: changeToBigFonts
-                        )
-                       (ActionButtonSpec
-                          label: 'Huge Fonts'
-                          name: 'Button5'
-                          layout: (LayoutFrame 370 0.0 35 0 475 0 57 0)
-                          translateLabel: true
-                          tabable: true
-                          model: changeToHugeFonts
-                          activeHelpKey: changeToHugeFonts
-                        )
-                       (ActionButtonSpec
-                          label: 'ST/X Look'
-                          name: 'Button8'
-                          layout: (LayoutFrame 148 0.0 67 0 255 0 89 0)
-                          translateLabel: true
-                          tabable: true
-                          model: changeToSTXLook
-                          activeHelpKey: changeToSTXLook
-                        )
-                       (ActionButtonSpec
-                          label: 'Squeak Look'
-                          name: 'Button6'
-                          layout: (LayoutFrame 260 0.0 67 0 367 0 89 0)
-                          translateLabel: true
-                          tabable: true
-                          model: changeToSqueakLook
-                          activeHelpKey: changeToSqueakLook
-                        )
-                       (ActionButtonSpec
-                          label: 'V''Age Look'
-                          name: 'Button7'
-                          layout: (LayoutFrame 370 0.0 67 0 475 0 89 0)
-                          translateLabel: true
-                          tabable: true
-                          model: changeToVisualAgeLook
-                          activeHelpKey: changeToVisualAgeLook
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 506 94)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel1'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fitSpace
+	      verticalLayout: topSpace
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (LabelSpec
+		    label: 'Label'
+		    name: 'Label3'
+		    style: labelFont
+		    translateLabel: true
+		    labelChannel: infoText
+		    resizeForLabel: false
+		    adjust: left
+		    extent: (Point 506 132)
+		  )
+		 (ViewSpec
+		    name: 'CodeBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Code'
+			  name: 'Label1'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (LabelSpec
+			  label: 'Text Font'
+			  name: 'Label2'
+			  layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
+			  translateLabel: true
+			  labelChannel: textFontLabelHolder
+			  adjust: left
+			  postBuildCallback: postBuildTextFontLabel:
+			)
+		       (ActionButtonSpec
+			  label: 'Change...'
+			  name: 'Button1'
+			  layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+			  translateLabel: true
+			  tabable: true
+			  model: changeTextFont
+			)
+		       (DividerSpec
+			  name: 'Separator11'
+			  layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+			)
+		       )
+
+		    )
+		    extent: (Point 506 50)
+		  )
+		 (ViewSpec
+		    name: 'InputFieldsBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Input Fields'
+			  name: 'Input Fields'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (LabelSpec
+			  label: 'InputFields Font'
+			  name: 'InputFieldsFont'
+			  layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
+			  translateLabel: true
+			  labelChannel: inputFieldFontLabelHolder
+			  adjust: left
+			  postBuildCallback: postBuildInputFieldFontLabel:
+			)
+		       (ActionButtonSpec
+			  label: 'Change...'
+			  name: 'ChangeText'
+			  layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+			  translateLabel: true
+			  tabable: true
+			  model: changeInputFieldFont
+			)
+		       (DividerSpec
+			  name: 'Separator10'
+			  layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+			)
+		       )
+
+		    )
+		    extent: (Point 506 50)
+		  )
+		 (ViewSpec
+		    name: 'ListsBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Lists'
+			  name: 'Lists'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (LabelSpec
+			  label: 'Lists Font'
+			  name: 'ListsFont'
+			  layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
+			  translateLabel: true
+			  labelChannel: listsFontLabelHolder
+			  adjust: left
+			  postBuildCallback: postBuildListsFontLabel:
+			)
+		       (ActionButtonSpec
+			  label: 'Change...'
+			  name: 'ChangeLists'
+			  layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+			  translateLabel: true
+			  tabable: true
+			  model: changeListsFont
+			)
+		       (DividerSpec
+			  name: 'Separator8'
+			  layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+			)
+		       )
+
+		    )
+		    extent: (Point 506 50)
+		  )
+		 (ViewSpec
+		    name: 'MenusBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Menus'
+			  name: 'Menus'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (LabelSpec
+			  label: 'Menus Font'
+			  name: 'MenusFont'
+			  layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
+			  translateLabel: true
+			  labelChannel: menusFontLabelHolder
+			  adjust: left
+			  postBuildCallback: postBuildMenuesFontLabel:
+			)
+		       (ActionButtonSpec
+			  label: 'Change...'
+			  name: 'ChangeMenus'
+			  layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+			  translateLabel: true
+			  tabable: true
+			  model: changeMenusFont
+			)
+		       (DividerSpec
+			  name: 'Separator9'
+			  layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+			)
+		       )
+
+		    )
+		    extent: (Point 506 50)
+		  )
+		 (ViewSpec
+		    name: 'LabelsBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Labels'
+			  name: 'Labels'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (LabelSpec
+			  label: 'Labels'
+			  name: 'LabelsFont'
+			  layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
+			  translateLabel: true
+			  labelChannel: labelsFontLabelHolder
+			  adjust: left
+			  postBuildCallback: postBuildLabelsFontLabel:
+			)
+		       (ActionButtonSpec
+			  label: 'Change...'
+			  name: 'ChangeLabels'
+			  layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+			  translateLabel: true
+			  tabable: true
+			  model: changeLabelsFont
+			)
+		       (DividerSpec
+			  name: 'Separator6'
+			  layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+			)
+		       )
+
+		    )
+		    extent: (Point 506 50)
+		  )
+		 (ViewSpec
+		    name: 'ButtonsBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Buttons'
+			  name: 'Buttons'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (LabelSpec
+			  label: 'Buttons Font'
+			  name: 'ButtonsFont'
+			  layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
+			  translateLabel: true
+			  labelChannel: buttonsFontLabelHolder
+			  adjust: left
+			  postBuildCallback: postBuildButtonsFontLabel:
+			)
+		       (ActionButtonSpec
+			  label: 'Change...'
+			  name: 'Change Buttons'
+			  layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+			  translateLabel: true
+			  tabable: true
+			  model: changeButtonsFont
+			)
+		       (DividerSpec
+			  name: 'Separator7'
+			  layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+			)
+		       )
+
+		    )
+		    extent: (Point 506 50)
+		  )
+		 (ViewSpec
+		    name: 'AllBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'All (Others)'
+			  name: 'All'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (LabelSpec
+			  label: 'Label'
+			  name: 'AllFont'
+			  layout: (LayoutFrame 110 0 22 0 -5 1 44 0)
+			  translateLabel: true
+			  labelChannel: allFontLabelHolder
+			  adjust: left
+			  postBuildCallback: postBuildAllFontLabel:
+			)
+		       (ActionButtonSpec
+			  label: 'Change...'
+			  name: 'ChangeAll'
+			  layout: (LayoutFrame 0 0.0 22 0 105 0 44 0)
+			  translateLabel: true
+			  tabable: true
+			  model: changeAllFont
+			)
+		       (DividerSpec
+			  name: 'Separator1'
+			  layout: (LayoutFrame 0 0.0 -3 1 0 1.0 0 1)
+			)
+		       )
+
+		    )
+		    extent: (Point 506 50)
+		  )
+		 (CheckBoxSpec
+		    label: 'Linux font workaround: do not reset fonts on snapshot restart'
+		    name: 'LinuxFontWorkaroundBox'
+		    visibilityChannel: linuxFontWorkaroundVisible
+		    model: linuxFontWorkaround
+		    translateLabel: true
+		    extent: (Point 506 22)
+		  )
+		 (DividerSpec
+		    name: 'Separator12'
+		    visibilityChannel: linuxFontWorkaroundVisible
+		    extent: (Point 506 3)
+		  )
+		 (ViewSpec
+		    name: 'SpecialsBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Common Settings:'
+			  name: 'Label4'
+			  layout: (LayoutFrame 0 0.0 11 0 0 1.0 33 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (ActionButtonSpec
+			  label: 'Default'
+			  name: 'Button2'
+			  layout: (LayoutFrame 0 0.0 35 0 105 0 57 0)
+			  activeHelpKey: resetToDefault
+			  translateLabel: true
+			  tabable: true
+			  model: changeToDefault
+			)
+		       (ActionButtonSpec
+			  label: 'High Contrast'
+			  name: 'Button3'
+			  layout: (LayoutFrame 148 0.0 35 0 255 0 57 0)
+			  translateLabel: true
+			  tabable: true
+			  model: changeToHighContrast
+			  activeHelpKey: changeToHighContrast
+			)
+		       (ActionButtonSpec
+			  label: 'Big Fonts'
+			  name: 'Button4'
+			  layout: (LayoutFrame 260 0.0 35 0 365 0 57 0)
+			  translateLabel: true
+			  tabable: true
+			  model: changeToBigFonts
+			  activeHelpKey: changeToBigFonts
+			)
+		       (ActionButtonSpec
+			  label: 'Huge Fonts'
+			  name: 'Button5'
+			  layout: (LayoutFrame 370 0.0 35 0 475 0 57 0)
+			  translateLabel: true
+			  tabable: true
+			  model: changeToHugeFonts
+			  activeHelpKey: changeToHugeFonts
+			)
+		       (ActionButtonSpec
+			  label: 'ST/X Look'
+			  name: 'Button8'
+			  layout: (LayoutFrame 148 0.0 67 0 255 0 89 0)
+			  translateLabel: true
+			  tabable: true
+			  model: changeToSTXLook
+			  activeHelpKey: changeToSTXLook
+			)
+		       (ActionButtonSpec
+			  label: 'Squeak Look'
+			  name: 'Button6'
+			  layout: (LayoutFrame 260 0.0 67 0 367 0 89 0)
+			  translateLabel: true
+			  tabable: true
+			  model: changeToSqueakLook
+			  activeHelpKey: changeToSqueakLook
+			)
+		       (ActionButtonSpec
+			  label: 'V''Age Look'
+			  name: 'Button7'
+			  layout: (LayoutFrame 370 0.0 67 0 475 0 89 0)
+			  translateLabel: true
+			  tabable: true
+			  model: changeToVisualAgeLook
+			  activeHelpKey: changeToVisualAgeLook
+			)
+		       )
+
+		    )
+		    extent: (Point 506 94)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 
     "Modified: / 17-03-2012 / 11:44:29 / cg"
 ! !
 
+
 !AbstractSettingsApplication::FontSettingsAppl methodsFor:'accessing'!
 
 encodingMatch:aEncodingMatch
 
     aEncodingMatch notNil ifTrue:[
-        filter := [:f | f encoding notNil 
-                        and:[aEncodingMatch match:f encoding]].
-    ].
-! !
+	filter := [:f | f encoding notNil
+			and:[aEncodingMatch match:f encoding]].
+    ].
+! !
+
 
 !AbstractSettingsApplication::FontSettingsAppl methodsFor:'actions'!
 
@@ -4353,18 +4441,18 @@
 changeAllFont
     |f|
 
-    f := FontPanel 
-        fontFromUserInitial:(self allOfThem value) 
-                      title:(resources string:'Font for %1' with:'All')
-                     filter:filter.
+    f := FontPanel
+	fontFromUserInitial:(self allOfThem value)
+		      title:(resources string:'Font for %1' with:'All')
+		     filter:filter.
     f notNil ifTrue:[
-        self allOfThem value:(f onDevice:allLabel device).
-        self labelDef value:(f onDevice:labelLabel device).
-        self buttonDef value:(f onDevice:buttonsLabel device).
-        self listDef value:(f onDevice:listsLabel device).
-        self menuDef value:(f onDevice:menuLabel device).
-        self textDef value:(f onDevice:textLabel device).
-        self inputFieldDef value:(f onDevice:inputFieldLabel device).
+	self allOfThem value:(f onDevice:allLabel device).
+	self labelDef value:(f onDevice:labelLabel device).
+	self buttonDef value:(f onDevice:buttonsLabel device).
+	self listDef value:(f onDevice:listsLabel device).
+	self menuDef value:(f onDevice:menuLabel device).
+	self textDef value:(f onDevice:textLabel device).
+	self inputFieldDef value:(f onDevice:inputFieldLabel device).
     ]
 !
 
@@ -4372,72 +4460,72 @@
 
     |f|
 
-    f := FontPanel 
-        fontFromUserInitial:(self buttonDef value) 
-                      title:(resources string:'Font for %1' with:'All')
-                     filter:filter.
+    f := FontPanel
+	fontFromUserInitial:(self buttonDef value)
+		      title:(resources string:'Font for %1' with:'All')
+		     filter:filter.
     f notNil ifTrue:[
-        self buttonDef value:(f onDevice:buttonsLabel device).
+	self buttonDef value:(f onDevice:buttonsLabel device).
     ]
 !
 
 changeInputFieldFont
     |f|
 
-    f := FontPanel 
-        fontFromUserInitial:(self inputFieldDef value) 
-                      title:(resources string:'Font for %1' with:'Input Fields')
-                     filter:filter.
+    f := FontPanel
+	fontFromUserInitial:(self inputFieldDef value)
+		      title:(resources string:'Font for %1' with:'Input Fields')
+		     filter:filter.
     f notNil ifTrue:[
-        self inputFieldDef value:(f onDevice:inputFieldLabel device).
+	self inputFieldDef value:(f onDevice:inputFieldLabel device).
     ]
 !
 
 changeLabelsFont
     |f |
 
-    f := FontPanel 
-        fontFromUserInitial:(self labelDef value) 
-                      title:(resources string:'Font for %1' with:'Labels')
-                     filter:filter.
+    f := FontPanel
+	fontFromUserInitial:(self labelDef value)
+		      title:(resources string:'Font for %1' with:'Labels')
+		     filter:filter.
     f notNil ifTrue:[
-        self labelDef value:(f onDevice:labelLabel device).
+	self labelDef value:(f onDevice:labelLabel device).
     ].
 !
 
 changeListsFont
     |f|
 
-    f := FontPanel 
-        fontFromUserInitial:(self listDef value) 
-                      title:(resources string:'Font for %1' with:'Lists')
-                     filter:filter.
+    f := FontPanel
+	fontFromUserInitial:(self listDef value)
+		      title:(resources string:'Font for %1' with:'Lists')
+		     filter:filter.
     f notNil ifTrue:[
-        self listDef value:(f onDevice:listsLabel device).
+	self listDef value:(f onDevice:listsLabel device).
     ]
 !
 
 changeMenusFont
     |f|
 
-    f := FontPanel 
-        fontFromUserInitial:(self menuDef value) 
-                      title:(resources string:'Font for %1' with:'Menus')
-                     filter:filter.
+    f := FontPanel
+	fontFromUserInitial:(self menuDef value)
+		      title:(resources string:'Font for %1' with:'Menus')
+		     filter:filter.
     f notNil ifTrue:[
-        self menuDef value:(f onDevice:menuLabel device).
+	self menuDef value:(f onDevice:menuLabel device).
     ]
 !
 
 changeTextFont
     |f|
 
-    f := FontPanel 
-        fontFromUserInitial:(self textDef value) 
-                      title:(resources string:'Font for %1' with:'Edited Text')
-                     filter:filter.
+    f := FontPanel
+	fontFromUserInitial:(self textDef value)
+		      title:(resources string:'Font for %1' with:'Edited Text')
+		     filter:filter.
     f notNil ifTrue:[
-        self textDef value:(f onDevice:textLabel device).
+	self textDef value:(f onDevice:textLabel device).
     ]
 !
 
@@ -4529,12 +4617,13 @@
     "Created: / 17-03-2012 / 11:22:18 / cg"
 ! !
 
+
 !AbstractSettingsApplication::FontSettingsAppl methodsFor:'aspects'!
 
 allFontLabelHolder
 
     allFontLabelHolder isNil ifTrue:[
-        allFontLabelHolder := '' asValue.
+	allFontLabelHolder := '' asValue.
     ].
     ^ allFontLabelHolder.
 !
@@ -4543,8 +4632,8 @@
     "return/create the 'allOfThem' value holder (automatically generated)"
 
     allOfThem isNil ifTrue:[
-        allOfThem := ValueHolder new.
-        allOfThem addDependent:self.
+	allOfThem := ValueHolder new.
+	allOfThem addDependent:self.
     ].
     ^ allOfThem
 !
@@ -4553,8 +4642,8 @@
     "return/create the 'buttonDef' value holder (automatically generated)"
 
     buttonDef isNil ifTrue:[
-        buttonDef := ValueHolder new.
-        buttonDef addDependent:self.
+	buttonDef := ValueHolder new.
+	buttonDef addDependent:self.
     ].
     ^ buttonDef
 !
@@ -4562,20 +4651,20 @@
 buttonsFontLabelHolder
 
     buttonsFontLabelHolder isNil ifTrue:[
-        buttonsFontLabelHolder := '' asValue.
+	buttonsFontLabelHolder := '' asValue.
     ].
     ^ buttonsFontLabelHolder.
 !
 
 infoText
-    ^ self resources 
-        string:'FONT_SETTINGS_INFO'
-        default:'Please notice that any changes usually only affect new windows.
+    ^ self resources
+	string:'FONT_SETTINGS_INFO'
+	default:'Please notice that any changes usually only affect new windows.
 Existing  windows usually remember their initial font as created.
 If required, reopen some of the views.
 
-Also notice: 
-    unless you save your new settings, 
+Also notice:
+    unless you save your new settings,
     only the current session is affected by changes here.'
 
     "Created: / 17-08-2010 / 10:52:00 / cg"
@@ -4583,8 +4672,8 @@
 
 inputFieldDef
     inputFieldDef isNil ifTrue:[
-        inputFieldDef := ValueHolder new.
-        inputFieldDef addDependent:self.
+	inputFieldDef := ValueHolder new.
+	inputFieldDef addDependent:self.
     ].
     ^ inputFieldDef
 !
@@ -4592,7 +4681,7 @@
 inputFieldFontLabelHolder
 
     inputFieldFontLabelHolder isNil ifTrue:[
-        inputFieldFontLabelHolder := '' asValue.
+	inputFieldFontLabelHolder := '' asValue.
     ].
     ^ inputFieldFontLabelHolder.
 !
@@ -4601,8 +4690,8 @@
     "return/create the 'labelDef' value holder (automatically generated)"
 
     labelDef isNil ifTrue:[
-        labelDef := ValueHolder new.
-        labelDef addDependent:self.
+	labelDef := ValueHolder new.
+	labelDef addDependent:self.
     ].
     ^ labelDef
 !
@@ -4610,7 +4699,7 @@
 labelsFontLabelHolder
 
     labelsFontLabelHolder isNil ifTrue:[
-        labelsFontLabelHolder := '' asValue.
+	labelsFontLabelHolder := '' asValue.
     ].
     ^ labelsFontLabelHolder.
 !
@@ -4618,8 +4707,8 @@
 linuxFontWorkaround
 
     linuxFontWorkaround isNil ifTrue:[
-        linuxFontWorkaround := false asValue.
-        linuxFontWorkaround onChangeSend:#updateModifiedChannel to:self
+	linuxFontWorkaround := false asValue.
+	linuxFontWorkaround onChangeSend:#updateModifiedChannel to:self
 
     ].
     ^ linuxFontWorkaround.
@@ -4638,8 +4727,8 @@
     "return/create the 'listDef' value holder (automatically generated)"
 
     listDef isNil ifTrue:[
-        listDef := ValueHolder new.
-        listDef addDependent:self.
+	listDef := ValueHolder new.
+	listDef addDependent:self.
     ].
     ^ listDef
 !
@@ -4647,7 +4736,7 @@
 listsFontLabelHolder
 
     listsFontLabelHolder isNil ifTrue:[
-        listsFontLabelHolder := '' asValue.
+	listsFontLabelHolder := '' asValue.
     ].
     ^ listsFontLabelHolder.
 !
@@ -4656,8 +4745,8 @@
     "return/create the 'menuDef' value holder (automatically generated)"
 
     menuDef isNil ifTrue:[
-        menuDef := ValueHolder new.
-        menuDef addDependent:self.
+	menuDef := ValueHolder new.
+	menuDef addDependent:self.
     ].
     ^ menuDef
 !
@@ -4665,7 +4754,7 @@
 menusFontLabelHolder
 
     menusFontLabelHolder isNil ifTrue:[
-        menusFontLabelHolder := '' asValue.
+	menusFontLabelHolder := '' asValue.
     ].
     ^ menusFontLabelHolder.
 !
@@ -4674,8 +4763,8 @@
     "return/create the 'textDef' value holder (automatically generated)"
 
     textDef isNil ifTrue:[
-        textDef := ValueHolder new.
-        textDef addDependent:self.
+	textDef := ValueHolder new.
+	textDef addDependent:self.
     ].
     ^ textDef
 !
@@ -4683,43 +4772,44 @@
 textFontLabelHolder
 
     textFontLabelHolder isNil ifTrue:[
-        textFontLabelHolder := '' asValue.
+	textFontLabelHolder := '' asValue.
     ].
     ^ textFontLabelHolder.
 ! !
 
+
 !AbstractSettingsApplication::FontSettingsAppl methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
     builder notNil ifTrue:[
-        changedObject == self allOfThem ifTrue:[
-            self updateFontOfLabel:allLabel andFontNameHolder:(self allFontLabelHolder) from:changedObject.
-            ^ self.
-        ].
-        changedObject == self labelDef ifTrue:[
-            self updateFontOfLabel:labelLabel andFontNameHolder:(self labelsFontLabelHolder) from:changedObject.
-            ^ self.
-        ].
-        changedObject == self buttonDef ifTrue:[
-            self updateFontOfLabel:buttonsLabel andFontNameHolder:(self buttonsFontLabelHolder) from:changedObject.
-            ^ self.
-        ].
-        changedObject == self listDef ifTrue:[
-            self updateFontOfLabel:listsLabel andFontNameHolder:(self listsFontLabelHolder) from:changedObject.
-            ^ self.
-        ].
-        changedObject == self menuDef ifTrue:[
-            self updateFontOfLabel:menuLabel andFontNameHolder:(self menusFontLabelHolder) from:changedObject.
-            ^ self.
-        ].
-        changedObject == self textDef ifTrue:[
-            self updateFontOfLabel:textLabel andFontNameHolder:(self textFontLabelHolder) from:changedObject.
-            ^ self.
-        ].
-        changedObject == self inputFieldDef ifTrue:[
-            self updateFontOfLabel:inputFieldLabel andFontNameHolder:(self inputFieldFontLabelHolder) from:changedObject.
-            ^ self.
-        ].
+	changedObject == self allOfThem ifTrue:[
+	    self updateFontOfLabel:allLabel andFontNameHolder:(self allFontLabelHolder) from:changedObject.
+	    ^ self.
+	].
+	changedObject == self labelDef ifTrue:[
+	    self updateFontOfLabel:labelLabel andFontNameHolder:(self labelsFontLabelHolder) from:changedObject.
+	    ^ self.
+	].
+	changedObject == self buttonDef ifTrue:[
+	    self updateFontOfLabel:buttonsLabel andFontNameHolder:(self buttonsFontLabelHolder) from:changedObject.
+	    ^ self.
+	].
+	changedObject == self listDef ifTrue:[
+	    self updateFontOfLabel:listsLabel andFontNameHolder:(self listsFontLabelHolder) from:changedObject.
+	    ^ self.
+	].
+	changedObject == self menuDef ifTrue:[
+	    self updateFontOfLabel:menuLabel andFontNameHolder:(self menusFontLabelHolder) from:changedObject.
+	    ^ self.
+	].
+	changedObject == self textDef ifTrue:[
+	    self updateFontOfLabel:textLabel andFontNameHolder:(self textFontLabelHolder) from:changedObject.
+	    ^ self.
+	].
+	changedObject == self inputFieldDef ifTrue:[
+	    self updateFontOfLabel:inputFieldLabel andFontNameHolder:(self inputFieldFontLabelHolder) from:changedObject.
+	    ^ self.
+	].
     ].
     super update:something with:aParameter from:changedObject
 !
@@ -4734,26 +4824,28 @@
     self update:#value with:nil from:self inputFieldDef.
 !
 
-updateFontOfLabel:labelWidget andFontNameHolder:fontNameHolder from:changedObject 
+updateFontOfLabel:labelWidget andFontNameHolder:fontNameHolder from:changedObject
     |f label|
 
     f := changedObject value.
     labelWidget font:f.
     label := f isNil ifTrue:[
-                ''
-            ] ifFalse:[
-                f userFriendlyName
-            ].
+		''
+	    ] ifFalse:[
+		f userFriendlyName
+	    ].
     fontNameHolder value:label.
     self updateModifiedChannel
 ! !
 
+
 !AbstractSettingsApplication::FontSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/fontSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::FontSettingsAppl methodsFor:'initialization & release'!
 
 postBuildAllFontLabel:aWidget
@@ -4791,12 +4883,13 @@
     textLabel := aWidget.
 !
 
-postBuildWith:aBuilder 
+postBuildWith:aBuilder
 "/    self readSettings.
     self updateAllFontLabels.
     super postBuildWith:aBuilder
 ! !
 
+
 !AbstractSettingsApplication::FontSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -4814,6 +4907,7 @@
     "Modified: / 10-10-2011 / 12:14:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !AbstractSettingsApplication::GeneralCompilerSettingsAppl class methodsFor:'defaults'!
 
 keepSourceOptions
@@ -4826,6 +4920,7 @@
     ^ #('Keep as String' 'Reference to Filename' 'Reference to Full Path' 'Append and Ref in `st.src''' 'Discard' )
 ! !
 
+
 !AbstractSettingsApplication::GeneralCompilerSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -4852,8 +4947,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::GeneralCompilerSettingsAppl class defaultIcon1'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[2]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::GeneralCompilerSettingsAppl class defaultIcon1'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[2]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@@@C??????@CUUUUUW@CZ****''@CZ****''CCZ****''@CV****WKCV****W@CU***)WJCU***)W@CUZ**%W@CUZ**%WACUV**UW@CUV**UWDCUU*)UWI
 CUU*)UWICUUZ%UWJCUUZ%UWACUUVUUW@CUUUUUW@C??????@@@@@@@@B') ; colorMapFromArray:#[0 0 0 255 255 255 255 189 23 127 127 127]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8@@@@') ; yourself); yourself]
 !
@@ -4874,8 +4969,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::GeneralCompilerSettingsAppl class defaultIcon3'
-        ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::GeneralCompilerSettingsAppl class defaultIcon3'
+	ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 A@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PC@0PDA@PD
 A@PDA@PDA@PDA@PDA@PDA@LDA LDA@PDA@PDA@PDA@PDA@PD@0LDA@LDA LDA@LCA@PDA@PDA@PDA@PCA PC@0PEAPPC@0PF@0PDA@PDA@PDA@PC@PTDA@TE
 APTDA@TA@0PDA@PDA@PDA@PD@0XEAPTEAPTEAPXCA@PDA@PDA@PDA@PD@0PEAPXAA XEAPPCA@PDA@PDA@PDA@LCA@TEA DC@0DFAPTD@0LDA@PDA@PD@0PD
@@ -4885,6 +4980,7 @@
 A@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PD') ; colorMapFromArray:#[255 189 23 127 127 127 236 233 216 0 0 0 255 255 255 194 194 194 161 161 165]; mask:((Depth1Image new) width: 24; height: 24; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@A @@C0@@33@A?? A?? @??@@??@C??0G??8G??8C??0@??@@??@A?? A?? @33@@C0@@A @@@@@@@@@@@@@') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::GeneralCompilerSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -4902,165 +4998,166 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'General Compiler Settings'
-          name: 'General Compiler Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 600 320)
-        )
-        component: 
+	  label: 'General Compiler Settings'
+	  name: 'General Compiler Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 600 320)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel2'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (CheckBoxSpec
-                    label: 'Catch Method Redefinitions'
-                    name: 'CatchMethodRedefinitions'
-                    model: catchMethodRedefs
-                    translateLabel: true
-                    extent: (Point 600 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Catch Class Redefinitions'
-                    name: 'CatchClassRedefinitions'
-                    model: catchClassRedefs
-                    translateLabel: true
-                    extent: (Point 600 25)
-                  )
-                 (DividerSpec
-                    name: 'Separator2'
-                    extent: (Point 600 3)
-                  )
-                 (CheckBoxSpec
-                    label: 'Keep History Line in Methods'
-                    name: 'KeepHistoryLineinMethods'
-                    model: historyLines
-                    translateLabel: true
-                    extent: (Point 600 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Keep Full Class History'
-                    name: 'KeepFullClassHistory'
-                    enableChannel: hasHistoryManager
-                    model: fullHistoryUpdate
-                    translateLabel: true
-                    extent: (Point 600 25)
-                  )
-                 (ViewSpec
-                    name: 'Box2'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Username in History:'
-                          name: 'Label1'
-                          layout: (LayoutFrame 0 0 5 0 200 0 27 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField1'
-                          layout: (LayoutFrame 200 0 5 0 347 0 27 0)
-                          model: userNameInHistoryHolder
-                          immediateAccept: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: false
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: '(leave empty for login-name)'
-                          name: 'Label2'
-                          layout: (LayoutFrame 354 0 5 0 554 0 27 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 29)
-                  )
-                 (DividerSpec
-                    name: 'Separator3'
-                    extent: (Point 600 3)
-                  )
-                 (ViewSpec
-                    name: 'Box1'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'FileIn Source Mode:'
-                          name: 'FileInSourceModeLabel'
-                          layout: (LayoutFrame 0 0 5 0 200 0 27 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (PopUpListSpec
-                          label: 'PopUp List'
-                          name: 'KeepSourceSelection'
-                          layout: (LayoutFrame 200 0 5 0 -5 1 27 0)
-                          tabable: true
-                          model: keepSourceSelection
-                          menu: keepSource
-                          useIndex: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (DividerSpec
-                    name: 'Separator1'
-                    extent: (Point 600 3)
-                  )
-                 (CheckBoxSpec
-                    label: 'If Present, Load Binary Objects when Autoloading'
-                    name: 'LoadBinaryObjectsWhenAutoloading'
-                    enableChannel: canLoadBinaries
-                    model: loadBinaries
-                    translateLabel: true
-                    extent: (Point 600 25)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel2'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (CheckBoxSpec
+		    label: 'Catch Method Redefinitions'
+		    name: 'CatchMethodRedefinitions'
+		    model: catchMethodRedefs
+		    translateLabel: true
+		    extent: (Point 600 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Catch Class Redefinitions'
+		    name: 'CatchClassRedefinitions'
+		    model: catchClassRedefs
+		    translateLabel: true
+		    extent: (Point 600 25)
+		  )
+		 (DividerSpec
+		    name: 'Separator2'
+		    extent: (Point 600 3)
+		  )
+		 (CheckBoxSpec
+		    label: 'Keep History Line in Methods'
+		    name: 'KeepHistoryLineinMethods'
+		    model: historyLines
+		    translateLabel: true
+		    extent: (Point 600 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Keep Full Class History'
+		    name: 'KeepFullClassHistory'
+		    enableChannel: hasHistoryManager
+		    model: fullHistoryUpdate
+		    translateLabel: true
+		    extent: (Point 600 25)
+		  )
+		 (ViewSpec
+		    name: 'Box2'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Username in History:'
+			  name: 'Label1'
+			  layout: (LayoutFrame 0 0 5 0 200 0 27 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'EntryField1'
+			  layout: (LayoutFrame 200 0 5 0 347 0 27 0)
+			  model: userNameInHistoryHolder
+			  immediateAccept: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: false
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: '(leave empty for login-name)'
+			  name: 'Label2'
+			  layout: (LayoutFrame 354 0 5 0 554 0 27 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       )
+
+		    )
+		    extent: (Point 600 29)
+		  )
+		 (DividerSpec
+		    name: 'Separator3'
+		    extent: (Point 600 3)
+		  )
+		 (ViewSpec
+		    name: 'Box1'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'FileIn Source Mode:'
+			  name: 'FileInSourceModeLabel'
+			  layout: (LayoutFrame 0 0 5 0 200 0 27 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (PopUpListSpec
+			  label: 'PopUp List'
+			  name: 'KeepSourceSelection'
+			  layout: (LayoutFrame 200 0 5 0 -5 1 27 0)
+			  tabable: true
+			  model: keepSourceSelection
+			  menu: keepSource
+			  useIndex: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (DividerSpec
+		    name: 'Separator1'
+		    extent: (Point 600 3)
+		  )
+		 (CheckBoxSpec
+		    label: 'If Present, Load Binary Objects when Autoloading'
+		    name: 'LoadBinaryObjectsWhenAutoloading'
+		    enableChannel: canLoadBinaries
+		    model: loadBinaries
+		    translateLabel: true
+		    extent: (Point 600 25)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::GeneralCompilerSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
-    self keepSourceSelection value:(self class keepSourceOptions 
-                indexOf:ClassCategoryReader sourceMode
-                ifAbsent:1).
+    self keepSourceSelection value:(self class keepSourceOptions
+		indexOf:ClassCategoryReader sourceMode
+		ifAbsent:1).
     self catchClassRedefs value:(Class catchClassRedefinitions ? false).
     self catchMethodRedefs value:(Class catchMethodRedefinitions ? false).
     self canLoadBinaries value ifTrue:[
-        self loadBinaries value:Smalltalk loadBinaries
+	self loadBinaries value:Smalltalk loadBinaries
     ] ifFalse:[
-        self loadBinaries value:false
+	self loadBinaries value:false
     ].
     self hasHistoryManager ifTrue:[
-        self fullHistoryUpdate value:(HistoryManager fullHistoryUpdate ? false)
+	self fullHistoryUpdate value:(HistoryManager fullHistoryUpdate ? false)
     ] ifFalse:[
-        self fullHistoryUpdate value:false
+	self fullHistoryUpdate value:false
     ].
     self historyLines value:self hasHistoryManager.
     self userNameInHistoryHolder value:(UserPreferences current historyManagerSignature).
@@ -5076,15 +5173,15 @@
     Class catchClassRedefinitions:self catchClassRedefs value.
     Class catchMethodRedefinitions:self catchMethodRedefs value.
     HistoryManager notNil ifTrue:[
-        HistoryManager fullHistoryUpdate:self fullHistoryUpdate value.
-        self historyLines value ifTrue:[
-            HistoryManager activate
-        ] ifFalse:[
-            HistoryManager deactivate
-        ].
-        nm := (self userNameInHistoryHolder value ? '') withoutSeparators.
-        nm isEmpty ifTrue:[ nm := nil ].
-        UserPreferences current historyManagerSignature:nm.
+	HistoryManager fullHistoryUpdate:self fullHistoryUpdate value.
+	self historyLines value ifTrue:[
+	    HistoryManager activate
+	] ifFalse:[
+	    HistoryManager deactivate
+	].
+	nm := (self userNameInHistoryHolder value ? '') withoutSeparators.
+	nm isEmpty ifTrue:[ nm := nil ].
+	UserPreferences current historyManagerSignature:nm.
     ].
     Smalltalk loadBinaries:self loadBinaries value.
 
@@ -5092,12 +5189,13 @@
     "Modified: / 08-07-2011 / 10:26:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !AbstractSettingsApplication::GeneralCompilerSettingsAppl methodsFor:'aspects'!
 
 canLoadBinaries
 
     canLoadBinaries isNil ifTrue:[
-        canLoadBinaries := (ObjectFileLoader notNil and:[ObjectFileLoader canLoadObjectFiles]) asValue.
+	canLoadBinaries := (ObjectFileLoader notNil and:[ObjectFileLoader canLoadObjectFiles]) asValue.
     ].
     ^ canLoadBinaries.
 !
@@ -5105,8 +5203,8 @@
 catchClassRedefs
 
     catchClassRedefs isNil ifTrue:[
-        catchClassRedefs := (Class catchClassRedefinitions ? false) asValue.
-        catchClassRedefs onChangeSend:#updateModifiedChannel to:self.
+	catchClassRedefs := (Class catchClassRedefinitions ? false) asValue.
+	catchClassRedefs onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ catchClassRedefs.
 !
@@ -5114,8 +5212,8 @@
 catchMethodRedefs
 
     catchMethodRedefs isNil ifTrue:[
-        catchMethodRedefs := (Class catchMethodRedefinitions ? false) asValue.
-        catchMethodRedefs onChangeSend:#updateModifiedChannel to:self.
+	catchMethodRedefs := (Class catchMethodRedefinitions ? false) asValue.
+	catchMethodRedefs onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ catchMethodRedefs.
 !
@@ -5123,12 +5221,12 @@
 fullHistoryUpdate
 
     fullHistoryUpdate isNil ifTrue:[
-        self hasHistoryManager ifTrue:[
-            fullHistoryUpdate := (HistoryManager fullHistoryUpdate ? false) asValue.
-        ] ifFalse:[
-            fullHistoryUpdate := false asValue.
-        ].
-        fullHistoryUpdate onChangeSend:#updateModifiedChannel to:self.
+	self hasHistoryManager ifTrue:[
+	    fullHistoryUpdate := (HistoryManager fullHistoryUpdate ? false) asValue.
+	] ifFalse:[
+	    fullHistoryUpdate := false asValue.
+	].
+	fullHistoryUpdate onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ fullHistoryUpdate.
 !
@@ -5138,11 +5236,11 @@
     ^ HistoryManager notNil and:[HistoryManager isLoaded and:[HistoryManager isActive]]
 !
 
-historyLines                                  
+historyLines
 
     historyLines isNil ifTrue:[
-        historyLines := self hasHistoryManager asValue.
-        historyLines onChangeSend:#updateModifiedChannel to:self.
+	historyLines := self hasHistoryManager asValue.
+	historyLines onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ historyLines.
 !
@@ -5150,7 +5248,7 @@
 keepSource
 
     keepSource isNil ifTrue:[
-        keepSource := (resources array:(self class keepSourceStrings)) asList.
+	keepSource := (resources array:(self class keepSourceStrings)) asList.
     ].
     ^ keepSource.
 !
@@ -5158,8 +5256,8 @@
 keepSourceSelection
 
     keepSourceSelection isNil ifTrue:[
-        keepSourceSelection := (self class keepSourceOptions indexOf:ClassCategoryReader sourceMode ifAbsent:1) asValue.
-        keepSourceSelection onChangeSend:#updateModifiedChannel to:self.
+	keepSourceSelection := (self class keepSourceOptions indexOf:ClassCategoryReader sourceMode ifAbsent:1) asValue.
+	keepSourceSelection onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ keepSourceSelection.
 !
@@ -5167,12 +5265,12 @@
 loadBinaries
 
     loadBinaries isNil ifTrue:[
-        self canLoadBinaries value ifTrue:[ 
-            loadBinaries:=  Smalltalk loadBinaries asValue
-        ] ifFalse:[
-            loadBinaries:=  false asValue
-        ].
-        loadBinaries onChangeSend:#updateModifiedChannel to:self.
+	self canLoadBinaries value ifTrue:[
+	    loadBinaries:=  Smalltalk loadBinaries asValue
+	] ifFalse:[
+	    loadBinaries:=  false asValue
+	].
+	loadBinaries onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ loadBinaries.
 
@@ -5182,20 +5280,22 @@
 userNameInHistoryHolder
 
     userNameInHistoryHolder isNil ifTrue:[
-        userNameInHistoryHolder := '' asValue.
-        userNameInHistoryHolder onChangeSend:#updateModifiedChannel to:self.
+	userNameInHistoryHolder := '' asValue.
+	userNameInHistoryHolder onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ userNameInHistoryHolder.
 
     "Modified: / 04-08-2010 / 18:37:53 / cg"
 ! !
 
+
 !AbstractSettingsApplication::GeneralCompilerSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/compilerSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::GeneralCompilerSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -5212,6 +5312,7 @@
     "Modified: / 08-07-2011 / 10:25:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !AbstractSettingsApplication::HTTPStartServerSettingsApplication class methodsFor:'image specs'!
 
 defaultIcon
@@ -5230,8 +5331,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::HTTPStartServerSettingsApplication class defaultIcon'
-        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::HTTPStartServerSettingsApplication class defaultIcon'
+	ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@DB@0PC@0HBAP@@@@@@@@@@@@@@@@TFA0 IB ,KB00E@@@@@@@@@@@@@@4NC1@QD!!LKB08KE@T@@@@@@@@@@@TUE!!\PDA@XFQ(NF10]AP@@@@@@@@DF
 BQ8PDA@PDAH_E $HE"@@@@@@@@@BHP$VDA@PB00"H2P$IRX''J@@@@@@@JR(WG!!@PB2,+J2,+J2,+J2,+@@@@@@P,DA@PDB,-K"4-K2</K24(L@@@@@@1L#L3
 DQ@+K"8.K"84MR86AS@@@@@@M3 IBP 9J28:N3,<OC4(O T0@@@@@C<*BP$IPB,6O#8>O#8>O#XEL@@@@@@APSHIBQ\+K"8.K"8.KR >AS@@@@@@K!!P2BQ8P
@@ -5240,6 +5341,7 @@
 JB (JCX6AS@@@@@@@@@@@@@@J28AM#XAJCX(M T0@@@@@@@a') ; colorMapFromArray:#[0 0 0 144 144 144 112 144 112 16 96 16 0 80 0 128 128 128 0 144 0 0 112 64 0 224 16 0 240 0 0 64 160 16 16 224 64 64 192 128 144 128 0 160 0 0 208 32 0 0 240 0 32 208 0 112 128 0 0 224 48 48 96 0 128 32 0 96 128 0 80 160 0 16 224 0 208 0 64 112 64 32 128 32 0 96 112 48 48 112 0 96 144 0 192 32 48 48 64 0 192 0 64 112 144 64 96 144 64 192 64 64 160 96 64 128 112 80 96 80 160 160 160 16 32 64 0 48 192 96 96 96 0 160 80 208 208 208 192 192 192 224 224 224 48 48 48 0 16 48 0 64 176 0 176 64 192 176 192 176 192 176 176 176 176 0 0 80 0 144 80 0 32 192 16 16 16 208 192 208 208 144 144 96 192 96 176 160 176 48 48 128 0 112 112 0 0 144 0 144 64 160 160 64 144 144 80 48 112 48 0 0 208 208 208 224 48 48 80 32 32 144 224 208 224 176 176 224 176 176 240 192 176 208]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C? @G?0@O?8@_?<@??<@??>@???@???@???@???@???@???@???@_??@O??@G??@A??@@??@@??@@??@@??@@??@') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::HTTPStartServerSettingsApplication class methodsFor:'interface specs'!
 
 windowSpec
@@ -5257,155 +5359,156 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'HTTP Server Settings'
-          name: 'HTTP Server Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 539 630)
-        )
-        component: 
+	  label: 'HTTP Server Settings'
+	  name: 'HTTP Server Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 539 630)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel1'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (VerticalPanelViewSpec
-                    name: 'VerticalPanel4'
-                    horizontalLayout: fit
-                    verticalLayout: topSpace
-                    horizontalSpace: 3
-                    verticalSpace: 3
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ViewSpec
-                          name: 'Box19'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (LabelSpec
-                                label: 'Label'
-                                name: 'Label2'
-                                layout: (LayoutFrame 5 0.0 0 0.0 -5 1 0 1.0)
-                                translateLabel: true
-                                labelChannel: informationLabel
-                                resizeForLabel: false
-                                adjust: left
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 539 200)
-                        )
-                       (ViewSpec
-                          name: 'Box18'
-                          extent: (Point 539 20)
-                        )
-                       (ViewSpec
-                          name: 'Box17'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (LabelSpec
-                                label: 'Port:'
-                                name: 'Label1'
-                                layout: (LayoutFrame 3 0 21 0 40 0 43 0)
-                                translateLabel: true
-                                adjust: right
-                              )
-                             (InputFieldSpec
-                                name: 'EntryField1'
-                                layout: (LayoutFrame 40 0 20 0 111 0 42 0)
-                                enableChannel: hasHTTPServerClass
-                                model: portNumberChannel
-                                type: number
-                                immediateAccept: true
-                                acceptOnReturn: true
-                                acceptOnTab: true
-                                acceptOnLostFocus: true
-                                acceptOnPointerLeave: false
-                              )
-                             (VerticalPanelViewSpec
-                                name: 'VerticalPanel5'
-                                layout: (LayoutFrame 136 0 14 0 -12 1 132 0)
-                                horizontalLayout: fit
-                                verticalLayout: spreadSpace
-                                horizontalSpace: 3
-                                verticalSpace: 3
-                                component: 
-                               (SpecCollection
-                                  collection: (
-                                   (ActionButtonSpec
-                                      label: 'Create new HTTP Server'
-                                      name: 'Button4'
-                                      translateLabel: true
-                                      tabable: true
-                                      model: createServer
-                                      enableChannel: hasHTTPServerClass
-                                      useDefaultExtent: true
-                                    )
-                                   (ActionButtonSpec
-                                      label: 'Create new FastCGI Server'
-                                      name: 'Button7'
-                                      translateLabel: true
-                                      tabable: true
-                                      model: createFcgiServer
-                                      enableChannel: hasFCGIServerClass
-                                      useDefaultExtent: true
-                                    )
-                                   (ActionButtonSpec
-                                      label: 'Create Server from Settings File...'
-                                      name: 'Button6'
-                                      translateLabel: true
-                                      tabable: true
-                                      model: createServerFromFile
-                                      enableChannel: hasHTTPServerClass
-                                      useDefaultExtent: true
-                                    )
-                                   (ActionButtonSpec
-                                      label: 'Remove all Servers'
-                                      name: 'Button5'
-                                      translateLabel: true
-                                      tabable: true
-                                      model: removeAllServers
-                                      enableChannel: hasCreatedServerChannel
-                                      useDefaultExtent: true
-                                    )
-                                   )
-                                 
-                                )
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 539 142)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 539 620)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel1'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (VerticalPanelViewSpec
+		    name: 'VerticalPanel4'
+		    horizontalLayout: fit
+		    verticalLayout: topSpace
+		    horizontalSpace: 3
+		    verticalSpace: 3
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (ViewSpec
+			  name: 'Box19'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (LabelSpec
+				label: 'Label'
+				name: 'Label2'
+				layout: (LayoutFrame 5 0.0 0 0.0 -5 1 0 1.0)
+				translateLabel: true
+				labelChannel: informationLabel
+				resizeForLabel: false
+				adjust: left
+			      )
+			     )
+
+			  )
+			  extent: (Point 539 200)
+			)
+		       (ViewSpec
+			  name: 'Box18'
+			  extent: (Point 539 20)
+			)
+		       (ViewSpec
+			  name: 'Box17'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (LabelSpec
+				label: 'Port:'
+				name: 'Label1'
+				layout: (LayoutFrame 3 0 21 0 40 0 43 0)
+				translateLabel: true
+				adjust: right
+			      )
+			     (InputFieldSpec
+				name: 'EntryField1'
+				layout: (LayoutFrame 40 0 20 0 111 0 42 0)
+				enableChannel: hasHTTPServerClass
+				model: portNumberChannel
+				type: number
+				immediateAccept: true
+				acceptOnReturn: true
+				acceptOnTab: true
+				acceptOnLostFocus: true
+				acceptOnPointerLeave: false
+			      )
+			     (VerticalPanelViewSpec
+				name: 'VerticalPanel5'
+				layout: (LayoutFrame 136 0 14 0 -12 1 132 0)
+				horizontalLayout: fit
+				verticalLayout: spreadSpace
+				horizontalSpace: 3
+				verticalSpace: 3
+				component:
+			       (SpecCollection
+				  collection: (
+				   (ActionButtonSpec
+				      label: 'Create new HTTP Server'
+				      name: 'Button4'
+				      translateLabel: true
+				      tabable: true
+				      model: createServer
+				      enableChannel: hasHTTPServerClass
+				      useDefaultExtent: true
+				    )
+				   (ActionButtonSpec
+				      label: 'Create new FastCGI Server'
+				      name: 'Button7'
+				      translateLabel: true
+				      tabable: true
+				      model: createFcgiServer
+				      enableChannel: hasFCGIServerClass
+				      useDefaultExtent: true
+				    )
+				   (ActionButtonSpec
+				      label: 'Create Server from Settings File...'
+				      name: 'Button6'
+				      translateLabel: true
+				      tabable: true
+				      model: createServerFromFile
+				      enableChannel: hasHTTPServerClass
+				      useDefaultExtent: true
+				    )
+				   (ActionButtonSpec
+				      label: 'Remove all Servers'
+				      name: 'Button5'
+				      translateLabel: true
+				      tabable: true
+				      model: removeAllServers
+				      enableChannel: hasCreatedServerChannel
+				      useDefaultExtent: true
+				    )
+				   )
+
+				)
+			      )
+			     )
+
+			  )
+			  extent: (Point 539 142)
+			)
+		       )
+
+		    )
+		    extent: (Point 539 620)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::HTTPStartServerSettingsApplication class methodsFor:'servers access'!
 
 addCreatedServer:aServer
@@ -5414,7 +5517,7 @@
 
 createdServers
     CreatedServers isNil ifTrue:[
-        CreatedServers := Set new.
+	CreatedServers := Set new.
     ].
     ^ CreatedServers
 !
@@ -5427,6 +5530,7 @@
     self createdServers remove:aServer ifAbsent:nil.
 ! !
 
+
 !AbstractSettingsApplication::HTTPStartServerSettingsApplication methodsFor:'actions'!
 
 basicReadSettings
@@ -5434,9 +5538,9 @@
 
     serverClass := self serverClass.
     (serverClass notNil and:[serverClass isLoaded]) ifTrue:[
-        self serverClass runningServers 
-            removeDependent:self;
-            addDependent:self.
+	self serverClass runningServers
+	    removeDependent:self;
+	    addDependent:self.
     ].
     self createServerSubApplicationsForRunningServers.
     self createdServerChanged.
@@ -5454,8 +5558,8 @@
     "create a FastCGI server"
 
     FCGIServer isNil ifTrue:[
-        self warn:'The FCGIServer-class is missing - cannot create server.'.
-        ^ self.
+	self warn:'The FCGIServer-class is missing - cannot create server.'.
+	^ self.
     ].
     ^ self createServerForClass:FCGIServer.
 
@@ -5466,8 +5570,8 @@
     "create a default server - i.e. a HTTP server"
 
     HTTPServer isNil ifTrue:[
-        self warn:'The HTTPServer-class is missing - cannot create server.'.
-        ^ self.
+	self warn:'The HTTPServer-class is missing - cannot create server.'.
+	^ self.
     ].
     ^ self createServerForClass:self serverClass.
 
@@ -5479,12 +5583,12 @@
 
     openApps := settingsDialog getAllChildrenAppsForApplication:self childrenClass:HTTPServerSettingsAppl.
     (openApps contains:[:app | app httpServerInstance == aServerInstance]) ifTrue:[
-        " already have an Item for this application "
-        ^ self 
+	" already have an Item for this application "
+	^ self
     ].
     HTTPServerSettingsAppl isNil ifTrue:[
-        self warn:'Missing settings application: HTTPServerSettingsAppl'.
-        ^ self.
+	self warn:'Missing settings application: HTTPServerSettingsAppl'.
+	^ self.
     ].
 
     settingsApp := HTTPServerSettingsAppl basicNew.
@@ -5508,30 +5612,30 @@
     |newServer port runningServers|
 
     serverClass isNil ifTrue:[
-        self warn:'The server class is missing - cannot create server.'.
-        ^ self.
+	self warn:'The server class is missing - cannot create server.'.
+	^ self.
     ].
 
     self withWaitCursorDo:[
-        port := self portNumberChannel value.
-        runningServers := serverClass runningServers.
-        runningServers notEmpty ifTrue:[
-            runningServers do:[:aServer |
-                aServer port = port asInteger ifTrue:[
-                    Dialog warn:'There is already a server for port ', port asString.
-                    ^ self
-                ]
-            ]
-        ].
-        runningServers addDependent:self.
-
-        (port = serverClass defaultPort) ifTrue:[
-            newServer := serverClass newServerWithDefaultServiceListOn:port.
-        ] ifFalse:[
-            newServer := serverClass newServerOnPort:port.
-        ].
-        self class addCreatedServer:newServer.
-        self createServerApplicationFor:newServer.
+	port := self portNumberChannel value.
+	runningServers := serverClass runningServers.
+	runningServers notEmpty ifTrue:[
+	    runningServers do:[:aServer |
+		aServer port = port asInteger ifTrue:[
+		    Dialog warn:'There is already a server for port ', port asString.
+		    ^ self
+		]
+	    ]
+	].
+	runningServers addDependent:self.
+
+	(port = serverClass defaultPort) ifTrue:[
+	    newServer := serverClass newServerWithDefaultServiceListOn:port.
+	] ifFalse:[
+	    newServer := serverClass newServerOnPort:port.
+	].
+	self class addCreatedServer:newServer.
+	self createServerApplicationFor:newServer.
     ]
 !
 
@@ -5540,31 +5644,31 @@
 
     serverClass := self serverClass.
     fileName := Dialog requestFileName:'Select a Server Settings File'
-            default:(serverClass settingsFilename)
-            pattern:'*.xml'.
+	    default:(serverClass settingsFilename)
+	    pattern:'*.xml'.
 
     fileName isEmptyOrNil ifTrue:[ ^ self].
     self withWaitCursorDo:[
-        newServer := serverClass serverFromSettingsFile:(fileName asFilename).
-        newServer notNil ifTrue:[
-            newServerPort := newServer port.
-            runningServers := serverClass runningServers.
-            runningServers notEmpty ifTrue:[
-                [self hasServerForPort:newServerPort] whileTrue:[
-                    answer := Dialog 
-                        request:('There is already a server for port <1p>. Please select another one' expandMacrosWith:newServerPort) 
-                        initialAnswer:self portNumberChannel value printString.  
-                    answer isEmptyOrNil ifTrue:[
-                        ^ self
-                    ].
-                    newServerPort := Number readFromString:answer.
-                ]
-            ].
-            newServer port:newServerPort.
-            runningServers addDependent:self.
-            self class addCreatedServer:newServer.
-            self createServerApplicationFor:newServer.
-        ].
+	newServer := serverClass serverFromSettingsFile:(fileName asFilename).
+	newServer notNil ifTrue:[
+	    newServerPort := newServer port.
+	    runningServers := serverClass runningServers.
+	    runningServers notEmpty ifTrue:[
+		[self hasServerForPort:newServerPort] whileTrue:[
+		    answer := Dialog
+			request:('There is already a server for port <1p>. Please select another one' expandMacrosWith:newServerPort)
+			initialAnswer:self portNumberChannel value printString.
+		    answer isEmptyOrNil ifTrue:[
+			^ self
+		    ].
+		    newServerPort := Number readFromString:answer.
+		]
+	    ].
+	    newServer port:newServerPort.
+	    runningServers addDependent:self.
+	    self class addCreatedServer:newServer.
+	    self createServerApplicationFor:newServer.
+	].
     ].
 
     "Modified: / 25-01-2007 / 16:40:57 / cg"
@@ -5576,18 +5680,18 @@
     serverClass := self serverClass.
 
     (serverClass notNil and:[ serverClass isLoaded ]) ifFalse:[
-        ^ self 
+	^ self
     ].
 
     serverToStart := serverClass runningServers asSet.
     serverToStart addAll:self class createdServers.
-    serverToStart isEmpty ifTrue:[ 
-        ^ self
+    serverToStart isEmpty ifTrue:[
+	^ self
     ].
     serverToStart := serverToStart select:[:s | s port notNil].
     serverToStart := serverToStart asSortedCollection:[:a :b | a port < b port].
     serverToStart do:[:eachServerInstance |
-        self createServerApplicationFor:eachServerInstance.
+	self createServerApplicationFor:eachServerInstance.
     ]
 
     "Modified: / 26-08-2012 / 10:25:23 / cg"
@@ -5598,8 +5702,8 @@
 
     serverClass := self serverClass.
     ^ serverClass notNil
-      and:[ serverClass runningServers 
-                contains:[:eachServer| eachServer port = newServerPort]].
+      and:[ serverClass runningServers
+		contains:[:eachServer| eachServer port = newServerPort]].
 
     "Modified: / 25-01-2007 / 16:39:48 / cg"
 !
@@ -5613,7 +5717,7 @@
 
     serverClass := self serverClass.
     serverClass isLoaded ifTrue:[
-        serverClass terminateAllServers.
+	serverClass terminateAllServers.
     ].
     self class removeAllCreatedServer.
     self removeAllServerSubApplications.
@@ -5627,28 +5731,29 @@
 
     serverClass := self serverClass.
     (serverClass notNil and:[serverClass isLoaded]) ifTrue:[
-        instances := serverClass runningServers asSet.
-        instances addAll:((settingsDialog getAllChildrenAppsForApplication:self) 
-                          collect:[:aApp| aApp httpServerInstance]).
-        instances := instances select:[:i | i port notNil].
-        highestUsedPortNr := instances 
-                                inject:(serverClass defaultPort - 1) 
-                                into:[:maxSoFar :thisServer | thisServer port max:maxSoFar].
-
-        portToUse := highestUsedPortNr + 1
+	instances := serverClass runningServers asSet.
+	instances addAll:((settingsDialog getAllChildrenAppsForApplication:self)
+			  collect:[:aApp| aApp httpServerInstance]).
+	instances := instances select:[:i | i port notNil].
+	highestUsedPortNr := instances
+				inject:(serverClass defaultPort - 1)
+				into:[:maxSoFar :thisServer | thisServer port max:maxSoFar].
+
+	portToUse := highestUsedPortNr + 1
     ] ifFalse:[
-        portToUse := 8080
+	portToUse := 8080
     ].
     self portNumberChannel value:portToUse.
 
     "Modified: / 26-08-2012 / 10:26:20 / cg"
 ! !
 
+
 !AbstractSettingsApplication::HTTPStartServerSettingsApplication methodsFor:'aspects'!
 
 hasCreatedServerChannel
     hasCreatedServerChannel isNil ifTrue:[
-        hasCreatedServerChannel := true asValue.
+	hasCreatedServerChannel := true asValue.
     ].
     ^ hasCreatedServerChannel.
 !
@@ -5656,19 +5761,19 @@
 informationLabel
     |info|
 
-    info := resources 
-        string:'HTTPSTARTINFO'
-        default:
-'This dialog enables you to create (possibly multiple) HTTP Server processes. 
+    info := resources
+	string:'HTTPSTARTINFO'
+	default:
+'This dialog enables you to create (possibly multiple) HTTP Server processes.
 (i.e. it is possible to serve multiple ports)
 
-Once created, select the individual server in the left tree, 
+Once created, select the individual server in the left tree,
 configure its services, and finally start it up.'.
 
     self hasHTTPServerClass ifFalse:[
-        info := info , 
-                '\\' withCRs, 
-                (resources string:'ATTENTION: Disabled because HTTPServer class is missing.') allBold
+	info := info ,
+		'\\' withCRs,
+		(resources string:'ATTENTION: Disabled because HTTPServer class is missing.') allBold
     ].
     ^ info
 
@@ -5678,11 +5783,12 @@
 portNumberChannel
 
     portNumberChannel isNil ifTrue:[
-        portNumberChannel := ValueHolder new.
+	portNumberChannel := ValueHolder new.
     ].
     ^ portNumberChannel.
 ! !
 
+
 !AbstractSettingsApplication::HTTPStartServerSettingsApplication methodsFor:'change & update'!
 
 createdServerChanged
@@ -5701,20 +5807,22 @@
 
     serverClass := self serverClass.
     (serverClass isLoaded and:[changedObject == serverClass runningServers]) ifTrue:[
-        self runningServersChanged.
-        ^ self.
+	self runningServersChanged.
+	^ self.
     ].
     super update:something with:aParameter from:changedObject
 
     "Modified: / 25-01-2007 / 16:38:52 / cg"
 ! !
 
+
 !AbstractSettingsApplication::HTTPStartServerSettingsApplication methodsFor:'help'!
 
 helpFilename
     ^ 'HTTPServer/index.html'
 ! !
 
+
 !AbstractSettingsApplication::HTTPStartServerSettingsApplication methodsFor:'initialization & release'!
 
 release
@@ -5722,17 +5830,18 @@
 
     serverClass := self serverClass.
     (serverClass notNil and:[serverClass isLoaded]) ifTrue:[
-        serverClass runningServers removeDependent:self.
+	serverClass runningServers removeDependent:self.
     ]
 
     "Modified: / 25-01-2007 / 16:39:23 / cg"
 ! !
 
+
 !AbstractSettingsApplication::HTTPStartServerSettingsApplication methodsFor:'queries'!
 
 hasCreatedServer
-    ^ (settingsDialog getAllChildrenAppsForApplication:self childrenClass:HTTPServerSettingsAppl) 
-        notEmpty
+    ^ (settingsDialog getAllChildrenAppsForApplication:self childrenClass:HTTPServerSettingsAppl)
+	notEmpty
 !
 
 hasFCGIServerClass
@@ -5775,6 +5884,7 @@
     "Created: / 25-01-2007 / 17:16:46 / cg"
 ! !
 
+
 !AbstractSettingsApplication::KbdMappingSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -5783,6 +5893,7 @@
     ^ ToolbarIconLibrary keyboardMappingIcon
 ! !
 
+
 !AbstractSettingsApplication::KbdMappingSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -5800,95 +5911,96 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Keyboard Mapping Settings'
-          name: 'Keyboard Mapping Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 491 653)
-        )
-        component: 
+	  label: 'Keyboard Mapping Settings'
+	  name: 'Keyboard Mapping Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 491 653)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VariableVerticalPanelSpec
-              name: 'VariableVerticalPanel1'
-              layout: (LayoutFrame 0 0.0 80 0 0 1.0 0 1.0)
-              component: 
-             (SpecCollection
-                collection: (
-                 (VariableHorizontalPanelSpec
-                    name: 'VariableHorizontalPanel1'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (SequenceViewSpec
-                          name: 'RawKeyList'
-                          model: selectedRawKey
-                          hasHorizontalScrollBar: true
-                          hasVerticalScrollBar: true
-                          useIndex: false
-                          sequenceList: rawKeyList
-                        )
-                       (SequenceViewSpec
-                          name: 'FunctionKeyList'
-                          model: selectedFunctionKey
-                          hasHorizontalScrollBar: true
-                          hasVerticalScrollBar: true
-                          useIndex: false
-                          sequenceList: functionKeyList
-                        )
-                       )
-                     
-                    )
-                    handles: (Any 0.5 1.0)
-                  )
-                 (ViewSpec
-                    name: 'Box1'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (TextEditorSpec
-                          name: 'MacroText'
-                          layout: (LayoutFrame 0 0.0 20 0 0 1.0 0 1.0)
-                          model: macroTextHolder
-                          hasHorizontalScrollBar: true
-                          hasVerticalScrollBar: true
-                          isReadOnly: true
-                        )
-                       (LabelSpec
-                          label: 'Macro text (if any):'
-                          name: 'MacroTextLabel'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       )
-                     
-                    )
-                  )
-                 )
-               
-              )
-              handles: (Any 0.5 1.0)
-            )
-           (LabelSpec
-              label: 'NoticeText'
-              name: 'Text'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 80 0)
-              translateLabel: true
-              labelChannel: labelTextHolder
-              resizeForLabel: true
-              adjust: left
-            )
-           )
-         
-        )
+	  collection: (
+	   (VariableVerticalPanelSpec
+	      name: 'VariableVerticalPanel1'
+	      layout: (LayoutFrame 0 0.0 80 0 0 1.0 0 1.0)
+	      component:
+	     (SpecCollection
+		collection: (
+		 (VariableHorizontalPanelSpec
+		    name: 'VariableHorizontalPanel1'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (SequenceViewSpec
+			  name: 'RawKeyList'
+			  model: selectedRawKey
+			  hasHorizontalScrollBar: true
+			  hasVerticalScrollBar: true
+			  useIndex: false
+			  sequenceList: rawKeyList
+			)
+		       (SequenceViewSpec
+			  name: 'FunctionKeyList'
+			  model: selectedFunctionKey
+			  hasHorizontalScrollBar: true
+			  hasVerticalScrollBar: true
+			  useIndex: false
+			  sequenceList: functionKeyList
+			)
+		       )
+
+		    )
+		    handles: (Any 0.5 1.0)
+		  )
+		 (ViewSpec
+		    name: 'Box1'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (TextEditorSpec
+			  name: 'MacroText'
+			  layout: (LayoutFrame 0 0.0 20 0 0 1.0 0 1.0)
+			  model: macroTextHolder
+			  hasHorizontalScrollBar: true
+			  hasVerticalScrollBar: true
+			  isReadOnly: true
+			)
+		       (LabelSpec
+			  label: 'Macro text (if any):'
+			  name: 'MacroTextLabel'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 20 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       )
+
+		    )
+		  )
+		 )
+
+	      )
+	      handles: (Any 0.5 1.0)
+	    )
+	   (LabelSpec
+	      label: 'NoticeText'
+	      name: 'Text'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 80 0)
+	      translateLabel: true
+	      labelChannel: labelTextHolder
+	      resizeForLabel: true
+	      adjust: left
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::KbdMappingSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
@@ -5899,25 +6011,26 @@
     "nothing done here"
 ! !
 
+
 !AbstractSettingsApplication::KbdMappingSettingsAppl methodsFor:'aspects'!
 
 functionKeyList
     functionKeyList isNil ifTrue:[
-        functionKeyList := ValueHolder new.
+	functionKeyList := ValueHolder new.
     ].
     ^ functionKeyList.
 !
 
 labelTextHolder
     labelTextHolder isNil ifTrue:[
-        labelTextHolder := ValueHolder new.
+	labelTextHolder := ValueHolder new.
     ].
     ^ labelTextHolder.
 !
 
 macroTextHolder
     macroTextHolder isNil ifTrue:[
-        macroTextHolder := ValueHolder new.
+	macroTextHolder := ValueHolder new.
     ].
     ^ macroTextHolder.
 !
@@ -5925,7 +6038,7 @@
 rawKeyList
 
     rawKeyList isNil ifTrue:[
-        rawKeyList := List new.
+	rawKeyList := List new.
     ].
     ^ rawKeyList.
 !
@@ -5933,8 +6046,8 @@
 selectedFunctionKey
 
     selectedFunctionKey isNil ifTrue:[
-        selectedFunctionKey := ValueHolder new.
-        selectedFunctionKey addDependent:self.
+	selectedFunctionKey := ValueHolder new.
+	selectedFunctionKey addDependent:self.
     ].
     ^ selectedFunctionKey.
 !
@@ -5942,12 +6055,13 @@
 selectedRawKey
 
     selectedRawKey isNil ifTrue:[
-        selectedRawKey := ValueHolder new.
-        selectedRawKey addDependent:self.
+	selectedRawKey := ValueHolder new.
+	selectedRawKey addDependent:self.
     ].
     ^ selectedRawKey.
 ! !
 
+
 !AbstractSettingsApplication::KbdMappingSettingsAppl methodsFor:'change & update'!
 
 changeFunctionKeySelection
@@ -5965,32 +6079,32 @@
 
     f := self selectedFunctionKey value.
     (f startsWith:'Cmd') ifTrue:[
-        f := f copyFrom:4
-    ].
-    macro := currentUserPrefs functionKeySequences 
-                at:(f asSymbol) ifAbsent:nil.
+	f := f copyFrom:4
+    ].
+    macro := currentUserPrefs functionKeySequences
+		at:(f asSymbol) ifAbsent:nil.
     macro notNil ifTrue:[
-        macro := macro asStringCollection.
-        indent := macro
-                     inject:99999 into:[:min :element |
-                         |stripped|
-
-                         stripped := element withoutLeadingSeparators.
-                         stripped isEmpty ifTrue:[
-                             min
-                         ] ifFalse:[
-                             min min:(element size - stripped size)
-                         ]
-                     ].
-        indent ~~ 0 ifTrue:[
-            macro := macro collect:[:line | 
-                         line size > indent ifTrue:[
-                            line copyFrom:indent+1
-                         ] ifFalse:[
-                            line
-                         ].
-                    ]
-        ].                        
+	macro := macro asStringCollection.
+	indent := macro
+		     inject:99999 into:[:min :element |
+			 |stripped|
+
+			 stripped := element withoutLeadingSeparators.
+			 stripped isEmpty ifTrue:[
+			     min
+			 ] ifFalse:[
+			     min min:(element size - stripped size)
+			 ]
+		     ].
+	indent ~~ 0 ifTrue:[
+	    macro := macro collect:[:line |
+			 line size > indent ifTrue:[
+			    line copyFrom:indent+1
+			 ] ifFalse:[
+			    line
+			 ].
+		    ]
+	].
     ].
     macroTextHolder value:macro.
 !
@@ -6001,10 +6115,10 @@
     f := self selectedFunctionKey value.
     raw := mappings keyAtValue:f asString.
     raw isNil ifTrue:[
-        raw := mappings keyAtValue:f first.
-        raw isNil ifTrue:[
-            raw := mappings keyAtValue:f asSymbol.
-        ]
+	raw := mappings keyAtValue:f first.
+	raw isNil ifTrue:[
+	    raw := mappings keyAtValue:f asSymbol.
+	]
     ].
     self selectedRawKey value:raw withoutNotifying:self.
 
@@ -6013,29 +6127,31 @@
 
 update:something with:aParameter from:changedObject
     changedObject == self selectedFunctionKey ifTrue:[
-        self changeRawKeySelection.
-        self changeMacroText.
-        ^ self
+	self changeRawKeySelection.
+	self changeMacroText.
+	^ self
     ].
     changedObject == self selectedRawKey ifTrue:[
-        self changeFunctionKeySelection.
-        ^ self
+	self changeFunctionKeySelection.
+	^ self
     ].
     super update:something with:aParameter from:changedObject
 ! !
 
+
 !AbstractSettingsApplication::KbdMappingSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/keyboardSetting.html'
 ! !
 
+
 !AbstractSettingsApplication::KbdMappingSettingsAppl methodsFor:'initialization & release'!
 
 initialize
 
     super initialize.
-    
+
     mappings := Screen current keyboardMap.
 
     rawKeyList := (mappings keys collect:[:key | key asString] as:Array) sort.
@@ -6044,6 +6160,7 @@
     self labelTextHolder value:(resources at:'KEY_MSG2' default:'keyboard mapping:') withCRs.
 ! !
 
+
 !AbstractSettingsApplication::KbdMappingSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -6051,6 +6168,7 @@
     ^ false
 ! !
 
+
 !AbstractSettingsApplication::LanguageSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -6059,6 +6177,7 @@
     ^ ToolbarIconLibrary languagesIcon
 ! !
 
+
 !AbstractSettingsApplication::LanguageSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -6076,97 +6195,98 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Language Settings'
-          name: 'Language Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 571 878)
-        )
-        component: 
+	  label: 'Language Settings'
+	  name: 'Language Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 571 878)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (LabelSpec
-              label: 'Current Language:'
-              name: 'Label1'
-              layout: (LayoutFrame 0 0 0 0 -233 1 20 0)
-              translateLabel: true
-              labelChannel: currentLanguageLabel
-              adjust: right
-            )
-           (LabelSpec
-              label: 'Label'
-              name: 'CurrentLang'
-              layout: (LayoutFrame -233 1 0 0 0 1 20 0)
-              style: (FontDescription arial bold roman 10 nil)
-              translateLabel: true
-              labelChannel: currentFlagAndLanguageChannel
-              adjust: left
-            )
-           (TextEditorSpec
-              name: 'TextEditor1'
-              layout: (LayoutFrame 0 0 24 0 0 1.0 181 0)
-              style: (FontDescription helvetica medium roman 10 #'iso10646-1')
-              model: noticeLabelHolder
-              hasHorizontalScrollBar: true
-              hasVerticalScrollBar: true
-              miniScrollerHorizontal: true
-              autoHideScrollBars: true
-              isReadOnly: true
-              hasKeyboardFocusInitially: false
-              viewClassName: 'TextView'
-              postBuildCallback: postBuildHelpLabel:
-            )
-           (InputFieldSpec
-              name: 'EntryField1'
-              layout: (LayoutFrame 2 0.0 180 0 -2 1.0 204 0)
-              model: languageHolder
-              acceptOnReturn: true
-              acceptOnTab: true
-              acceptOnLostFocus: true
-              acceptOnPointerLeave: true
-            )
-           (SequenceViewSpec
-              name: 'List1'
-              layout: (LayoutFrame 2 0.0 206 0 -2 1.0 -30 1.0)
-              model: languageIndexHolder
-              hasHorizontalScrollBar: true
-              hasVerticalScrollBar: true
-              doubleClickSelector: doubleClick:
-              useIndex: true
-              sequenceList: languageListHolder
-            )
-           (HorizontalPanelViewSpec
-              name: 'HorizontalPanel1'
-              layout: (LayoutFrame 0 0 -30 1 0 1 0 1)
-              horizontalLayout: center
-              verticalLayout: center
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (ActionButtonSpec
-                    label: 'Reread Language Resources'
-                    name: 'RereadResourcesButton'
-                    translateLabel: true
-                    resizeForLabel: true
-                    model: rereadResourceFiles
-                    useDefaultExtent: true
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (LabelSpec
+	      label: 'Current Language:'
+	      name: 'Label1'
+	      layout: (LayoutFrame 0 0 0 0 -233 1 20 0)
+	      translateLabel: true
+	      labelChannel: currentLanguageLabel
+	      adjust: right
+	    )
+	   (LabelSpec
+	      label: 'Label'
+	      name: 'CurrentLang'
+	      layout: (LayoutFrame -233 1 0 0 0 1 20 0)
+	      style: (FontDescription arial bold roman 10 nil)
+	      translateLabel: true
+	      labelChannel: currentFlagAndLanguageChannel
+	      adjust: left
+	    )
+	   (TextEditorSpec
+	      name: 'TextEditor1'
+	      layout: (LayoutFrame 0 0 24 0 0 1.0 181 0)
+	      style: (FontDescription helvetica medium roman 10 #'iso10646-1')
+	      model: noticeLabelHolder
+	      hasHorizontalScrollBar: true
+	      hasVerticalScrollBar: true
+	      miniScrollerHorizontal: true
+	      autoHideScrollBars: true
+	      isReadOnly: true
+	      hasKeyboardFocusInitially: false
+	      viewClassName: 'TextView'
+	      postBuildCallback: postBuildHelpLabel:
+	    )
+	   (InputFieldSpec
+	      name: 'EntryField1'
+	      layout: (LayoutFrame 2 0.0 180 0 -2 1.0 204 0)
+	      model: languageHolder
+	      acceptOnReturn: true
+	      acceptOnTab: true
+	      acceptOnLostFocus: true
+	      acceptOnPointerLeave: true
+	    )
+	   (SequenceViewSpec
+	      name: 'List1'
+	      layout: (LayoutFrame 2 0.0 206 0 -2 1.0 -30 1.0)
+	      model: languageIndexHolder
+	      hasHorizontalScrollBar: true
+	      hasVerticalScrollBar: true
+	      doubleClickSelector: doubleClick:
+	      useIndex: true
+	      sequenceList: languageListHolder
+	    )
+	   (HorizontalPanelViewSpec
+	      name: 'HorizontalPanel1'
+	      layout: (LayoutFrame 0 0 -30 1 0 1 0 1)
+	      horizontalLayout: center
+	      verticalLayout: center
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (ActionButtonSpec
+		    label: 'Reread Language Resources'
+		    name: 'RereadResourcesButton'
+		    translateLabel: true
+		    resizeForLabel: true
+		    model: rereadResourceFiles
+		    useDefaultExtent: true
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::LanguageSettingsAppl methodsFor:'accessing'!
 
 languageList
@@ -6175,6 +6295,7 @@
     ^ languageList
 ! !
 
+
 !AbstractSettingsApplication::LanguageSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
@@ -6186,123 +6307,123 @@
 !
 
 basicSaveSettings
-    |fontPref fontPrefs language oldLanguage languageString territory enc 
+    |fontPref fontPrefs language oldLanguage languageString territory enc
      answer matchingFonts l screen switch dialog anyWrong|
 
     self withWaitCursorDo:[
-        languageString := translatedLanguages at:(self languageIndexHolder value).
-        language := self languageHolder value asString string.
-        (language includes:$-) ifTrue:[
-            l := language asCollectionOfSubstringsSeparatedBy:$-.
-            language := l at:1.
-            territory := l at:2.
-            territory isNil ifTrue:[
-                territory := language string copyTo:2
-            ].
-        ].
-
-        "/ check if the new language needs a differently encoded font;
-        "/ ask user to switch font and allow cancellation.
-        "/ Otherwise, you are left with unreadable menu & button items ...
-
-        oldLanguage := UserPreferences current language.
-        Smalltalk language:language asSymbol.
-        ResourcePack flushCachedResourcePacks.
-
-        "/ refetch resources ...
-        resources := AbstractLauncherApplication classResources.
-        fontPrefs := resources at:'PREFERRED_FONT_ENCODINGS' default:nil.
-        fontPrefs isNil ifTrue:[
-            fontPref := resources at:'PREFERRED_FONT_ENCODING' default:nil.
-            fontPref isNil ifTrue:[
-                fontPrefs := #(#'iso10646-1')
-            ] ifFalse:[
-                fontPrefs := #(#'iso10646-1') , (Array with:fontPref).
-            ]
-        ].
-
-        "/ 'normalize' names of encodings
-        fontPrefs := fontPrefs collect:[:each | (CharacterEncoder encoderFor:each asLowercase asSymbol ifAbsent:nil)].       
-        fontPrefs := fontPrefs select:[:each | each notNil] thenCollect:[:each | each nameOfEncoding].       
-        fontPrefs isEmpty ifTrue:[
-            fontPrefs := #(#'iso10464-1')
-        ].
-        fontPref := fontPrefs first.
-
-        Smalltalk setLanguage:#en.
-        ResourcePack flushCachedResourcePacks.
-        resources := AbstractLauncherApplication classResources.
-
-        switch := true.
-        anyWrong := false.
-        (Array
-            with:MenuView defaultFont
-            "/ with:ListView defaultFont
-            with:EditTextView defaultFont
-            with:Button defaultFont)
-        do:[:fn |
-            enc := fn encoding.
-            (fontPrefs contains:[:pref | CharacterEncoder isEncoding:pref subSetOf:enc])
-            ifFalse:[
-                anyWrong := true    
-            ].
-        ].
-        anyWrong ifTrue:[
-            "/ look if there is one at all.
-            screen := Screen current.
-            matchingFonts := screen listOfAvailableFonts 
-                                select:[:f | fontPrefs contains:[:pref |
-                                                CharacterEncoder 
-                                                    isEncoding:pref subSetOf:(f encoding ? 'ascii')]].
-
-            matchingFonts isEmpty ifTrue:[
-                "/ flush and try again - just in case, the font path has changed.
-                screen flushListOfAvailableFonts.
-                matchingFonts := screen listOfAvailableFonts 
-                                    select:[:f | fontPrefs contains:[:pref |
-                                                    CharacterEncoder 
-                                                        isEncoding:pref subSetOf:(f encoding ? 'ascii')]].
-            ].
-            matchingFonts isEmpty ifTrue:[
-                (Dialog 
-                    confirm:(resources 
-                                string:'Your display does not seem to offer any appropriate font.\\Change the language anyway ?\ (Texts will probably be unreadable then)'
-                                  with:fontPref) withCRs)
-                ifFalse:[
-                    switch := false
-                ]
-            ] ifFalse:[
-                answer := Dialog 
-                            confirmWithCancel:(resources 
-                                                    string:'Some font(s) is not %1-encoded.\\Change it ?'
-                                                    with:fontPref) withCRs
-                                       labels:(resources
-                                                    array:#('Cancel' 'No' 'Yes'))
-                                       default:3.
-                answer isNil ifTrue:[
-                    switch := false
-                ] ifFalse:[
-                    answer ifTrue:[
-                        switch := (AbstractLauncherApplication::LauncherDialogs fontBoxForEncoding:fontPref)
-                    ]
-                ].
-            ].
-        ].
-
-        switch ifTrue:[
-            Transcript showCR:'Changing language setting to ' , languageString string , ' (' , language , ')...'.
-            Smalltalk language:language asSymbol territory:(territory ? language) asSymbol.
-            ResourcePack flushCachedResourcePacks.
-            "/ ResourcePack flushCachedResourcePacks - already done by language-change
-        ].
-    ].
-    switch ifTrue:[       
-        (dialog := settingsDialog) notNil ifTrue:[
-            dialog reopenLauncher.
-        ] ifFalse:[
-            NewLauncher current reopenLauncher.
-        ].
-        DebugView newDebugger.
+	languageString := translatedLanguages at:(self languageIndexHolder value).
+	language := self languageHolder value asString string.
+	(language includes:$-) ifTrue:[
+	    l := language asCollectionOfSubstringsSeparatedBy:$-.
+	    language := l at:1.
+	    territory := l at:2.
+	    territory isNil ifTrue:[
+		territory := language string copyTo:2
+	    ].
+	].
+
+	"/ check if the new language needs a differently encoded font;
+	"/ ask user to switch font and allow cancellation.
+	"/ Otherwise, you are left with unreadable menu & button items ...
+
+	oldLanguage := UserPreferences current language.
+	Smalltalk language:language asSymbol.
+	ResourcePack flushCachedResourcePacks.
+
+	"/ refetch resources ...
+	resources := AbstractLauncherApplication classResources.
+	fontPrefs := resources at:'PREFERRED_FONT_ENCODINGS' default:nil.
+	fontPrefs isNil ifTrue:[
+	    fontPref := resources at:'PREFERRED_FONT_ENCODING' default:nil.
+	    fontPref isNil ifTrue:[
+		fontPrefs := #(#'iso10646-1')
+	    ] ifFalse:[
+		fontPrefs := #(#'iso10646-1') , (Array with:fontPref).
+	    ]
+	].
+
+	"/ 'normalize' names of encodings
+	fontPrefs := fontPrefs collect:[:each | (CharacterEncoder encoderFor:each asLowercase asSymbol ifAbsent:nil)].
+	fontPrefs := fontPrefs select:[:each | each notNil] thenCollect:[:each | each nameOfEncoding].
+	fontPrefs isEmpty ifTrue:[
+	    fontPrefs := #(#'iso10464-1')
+	].
+	fontPref := fontPrefs first.
+
+	Smalltalk setLanguage:#en.
+	ResourcePack flushCachedResourcePacks.
+	resources := AbstractLauncherApplication classResources.
+
+	switch := true.
+	anyWrong := false.
+	(Array
+	    with:MenuView defaultFont
+	    "/ with:ListView defaultFont
+	    with:EditTextView defaultFont
+	    with:Button defaultFont)
+	do:[:fn |
+	    enc := fn encoding.
+	    (fontPrefs contains:[:pref | CharacterEncoder isEncoding:pref subSetOf:enc])
+	    ifFalse:[
+		anyWrong := true
+	    ].
+	].
+	anyWrong ifTrue:[
+	    "/ look if there is one at all.
+	    screen := Screen current.
+	    matchingFonts := screen listOfAvailableFonts
+				select:[:f | fontPrefs contains:[:pref |
+						CharacterEncoder
+						    isEncoding:pref subSetOf:(f encoding ? 'ascii')]].
+
+	    matchingFonts isEmpty ifTrue:[
+		"/ flush and try again - just in case, the font path has changed.
+		screen flushListOfAvailableFonts.
+		matchingFonts := screen listOfAvailableFonts
+				    select:[:f | fontPrefs contains:[:pref |
+						    CharacterEncoder
+							isEncoding:pref subSetOf:(f encoding ? 'ascii')]].
+	    ].
+	    matchingFonts isEmpty ifTrue:[
+		(Dialog
+		    confirm:(resources
+				string:'Your display does not seem to offer any appropriate font.\\Change the language anyway ?\ (Texts will probably be unreadable then)'
+				  with:fontPref) withCRs)
+		ifFalse:[
+		    switch := false
+		]
+	    ] ifFalse:[
+		answer := Dialog
+			    confirmWithCancel:(resources
+						    string:'Some font(s) is not %1-encoded.\\Change it ?'
+						    with:fontPref) withCRs
+				       labels:(resources
+						    array:#('Cancel' 'No' 'Yes'))
+				       default:3.
+		answer isNil ifTrue:[
+		    switch := false
+		] ifFalse:[
+		    answer ifTrue:[
+			switch := (AbstractLauncherApplication::LauncherDialogs fontBoxForEncoding:fontPref)
+		    ]
+		].
+	    ].
+	].
+
+	switch ifTrue:[
+	    Transcript showCR:'Changing language setting to ' , languageString string , ' (' , language , ')...'.
+	    Smalltalk language:language asSymbol territory:(territory ? language) asSymbol.
+	    ResourcePack flushCachedResourcePacks.
+	    "/ ResourcePack flushCachedResourcePacks - already done by language-change
+	].
+    ].
+    switch ifTrue:[
+	(dialog := settingsDialog) notNil ifTrue:[
+	    dialog reopenLauncher.
+	] ifFalse:[
+	    NewLauncher current reopenLauncher.
+	].
+	DebugView newDebugger.
     ].
     self updateForChangedLanguage.
 
@@ -6317,7 +6438,7 @@
     ResourcePack flushCachedResourcePacks.
     perLanguageResources := nil.
     self withWaitCursorDo:[
-        self updateForChangedLanguage.
+	self updateForChangedLanguage.
     ].
 
 "/    Smalltalk language:(Smalltalk language).
@@ -6336,27 +6457,28 @@
     self setNoticeLabel.
 ! !
 
+
 !AbstractSettingsApplication::LanguageSettingsAppl methodsFor:'aspects'!
 
 currentFlagAndLanguageChannel
     currentFlagAndLanguageChannel isNil ifTrue:[
-        currentFlagAndLanguageChannel := self currentLanguage asValue.
+	currentFlagAndLanguageChannel := self currentLanguage asValue.
     ].
     ^ currentFlagAndLanguageChannel.
 !
 
 currentLanguageLabel
     currentLanguageLabel isNil ifTrue:[
-        currentLanguageLabel := ValueHolder new.
-        self setCurrentLanguageLabel.
+	currentLanguageLabel := ValueHolder new.
+	self setCurrentLanguageLabel.
     ].
     ^ currentLanguageLabel.
 !
 
 languageHolder
     languageHolder isNil ifTrue:[
-        languageHolder := self currentLanguage asValue.
-        languageHolder onChangeSend:#updateModifiedChannel to:self.
+	languageHolder := self currentLanguage asValue.
+	languageHolder onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ languageHolder.
 !
@@ -6371,23 +6493,23 @@
 
 languageIndexHolder
     languageIndexHolder isNil ifTrue:[
-        languageIndexHolder := (self currentLanguageIndex) asValue.
-        languageIndexHolder onChangeSend:#languageIndexChanged to:self.
+	languageIndexHolder := (self currentLanguageIndex) asValue.
+	languageIndexHolder onChangeSend:#languageIndexChanged to:self.
     ].
     ^ languageIndexHolder.
 !
 
 languageListHolder
     languageListHolder isNil ifTrue:[
-        languageListHolder := self languageList asValue.
+	languageListHolder := self languageList asValue.
     ].
     ^ languageListHolder.
 !
 
 noticeLabelHolder
     noticeLabelHolder isNil ifTrue:[
-        noticeLabelHolder := ValueHolder new.
-        self setNoticeLabel.
+	noticeLabelHolder := ValueHolder new.
+	self setNoticeLabel.
     ].
     ^ noticeLabelHolder.
 !
@@ -6397,9 +6519,10 @@
 !
 
 setNoticeLabel
-    noticeLabelHolder 
-        value: ((resources at:'LANG_MSG' default:'Select a Language') withCRs).
-! !
+    noticeLabelHolder
+	value: ((resources at:'LANG_MSG' default:'Select a Language') withCRs).
+! !
+
 
 !AbstractSettingsApplication::LanguageSettingsAppl methodsFor:'help'!
 
@@ -6407,6 +6530,7 @@
     ^ 'Launcher/languageSetting.html'
 ! !
 
+
 !AbstractSettingsApplication::LanguageSettingsAppl methodsFor:'initialization & release'!
 
 initialize
@@ -6422,128 +6546,128 @@
     listOfLanguages := listOfLanguages asOrderedCollection.
     listOfLanguageKeys := listOfLanguages collect:[:l | l copyReplaceAll:$- with:$_ ].
 
-    (perLanguageResources notNil 
-    and:[ (perLanguageResources includesKey:#en) not 
-    and:[ (perLanguageResources includesKey:#'en_us') not ]]) 
+    (perLanguageResources notNil
+    and:[ (perLanguageResources includesKey:#en) not
+    and:[ (perLanguageResources includesKey:#'en_us') not ]])
     ifTrue:[
-        perLanguageResources := nil.
+	perLanguageResources := nil.
     ].
 
     perLanguageResources isNil ifTrue:[
-        perLanguageResources := Dictionary new.
-
-        listOfLanguageKeys do:[:eachLang |
-            savedLanguage := Language.
-            savedLanguageTerritory := LanguageTerritory.
-            ResourcePack flushCachedResourcePacks.
-            [
-                |rsc lang terr|
-
-                lang := terr := eachLang.
-                (lang includes:$_) ifTrue:[
-                    terr := lang copyFrom:4.
-                    lang := lang copyTo:2.
-                ].                
-                Language := lang asSymbol.
-                LanguageTerritory := terr asSymbol.
-                rsc := ResourcePack for:(self class) cached:false.
-                perLanguageResources at:eachLang asSymbol put:rsc.
-            ] ensure:[
-                Language := savedLanguage.
-                LanguageTerritory := savedLanguageTerritory.
-            ].
-        ].
-        ResourcePack flushCachedResourcePacks.
+	perLanguageResources := Dictionary new.
+
+	listOfLanguageKeys do:[:eachLang |
+	    savedLanguage := Language.
+	    savedLanguageTerritory := LanguageTerritory.
+	    ResourcePack flushCachedResourcePacks.
+	    [
+		|rsc lang terr|
+
+		lang := terr := eachLang.
+		(lang includes:$_) ifTrue:[
+		    terr := lang copyFrom:4.
+		    lang := lang copyTo:2.
+		].
+		Language := lang asSymbol.
+		LanguageTerritory := terr asSymbol.
+		rsc := ResourcePack for:(self class) cached:false.
+		perLanguageResources at:eachLang asSymbol put:rsc.
+	    ] ensure:[
+		Language := savedLanguage.
+		LanguageTerritory := savedLanguageTerritory.
+	    ].
+	].
+	ResourcePack flushCachedResourcePacks.
     ].
 
     enResources := perLanguageResources at:#en ifAbsent:[perLanguageResources at:#'en_us'].
 
-    enLanguages := listOfLanguageKeys 
-                                collect:[:lang | |item|
-                                        item := enResources at:('LANG_' , lang) default:nil.
-                                        item isNil ifTrue:[
-                                            lang
-                                        ] ifFalse:[
-                                            item isString ifTrue:[
-                                                item
-                                            ] ifFalse:[
-                                                item at:1
-                                            ]
-                                        ]
-                                ].
-
-    nativeLanguages := listOfLanguageKeys 
-                                collect:[:lang | |item enLang|
-                                        item := enResources at:('LANG_' , lang) default:nil.
-                                        item isNil ifTrue:[ 
-                                            enLang := lang
-                                        ] ifFalse:[
-                                            item isString ifTrue:[
-                                                enLang := item
-                                            ] ifFalse:[
-                                                enLang := item at:1
-                                            ]
-                                        ].
-                                        item := (perLanguageResources at:lang asSymbol ifAbsent:enResources) at:enLang default:enLang.
-                                ].
-
-    languages := enLanguages 
-                                collect:[:enLang | |item|
-                                        item := resources at:enLang default:enLang.
-                                ].
+    enLanguages := listOfLanguageKeys
+				collect:[:lang | |item|
+					item := enResources at:('LANG_' , lang) default:nil.
+					item isNil ifTrue:[
+					    lang
+					] ifFalse:[
+					    item isString ifTrue:[
+						item
+					    ] ifFalse:[
+						item at:1
+					    ]
+					]
+				].
+
+    nativeLanguages := listOfLanguageKeys
+				collect:[:lang | |item enLang|
+					item := enResources at:('LANG_' , lang) default:nil.
+					item isNil ifTrue:[
+					    enLang := lang
+					] ifFalse:[
+					    item isString ifTrue:[
+						enLang := item
+					    ] ifFalse:[
+						enLang := item at:1
+					    ]
+					].
+					item := (perLanguageResources at:lang asSymbol ifAbsent:enResources) at:enLang default:enLang.
+				].
+
+    languages := enLanguages
+				collect:[:enLang | |item|
+					item := resources at:enLang default:enLang.
+				].
 
     flags := listOfLanguageKeys collect:[:lang | |item coll|
-                                        item := resources at:('FLAG_' , lang) default:nil.
-                                        item notNil ifTrue:[
-                                            item
-                                        ] ifFalse:[
-                                            coll := lang asCollectionOfSubstringsSeparatedBy:$_.
-                                            (coll size > 1
-                                            and:[(item := resources at:('FLAG_' , coll last) default:nil) notNil])
-                                            ifTrue:[
-                                                item
-                                            ] ifFalse:[
-                                                item := resources string:('LANG_' , lang).
-                                                item isArray ifTrue:[
-                                                    item at:2
-                                                ] ifFalse:[
-                                                    nil
-                                                ]
-                                            ]
-                                        ]
-                                ].
+					item := resources at:('FLAG_' , lang) default:nil.
+					item notNil ifTrue:[
+					    item
+					] ifFalse:[
+					    coll := lang asCollectionOfSubstringsSeparatedBy:$_.
+					    (coll size > 1
+					    and:[(item := resources at:('FLAG_' , coll last) default:nil) notNil])
+					    ifTrue:[
+						item
+					    ] ifFalse:[
+						item := resources string:('LANG_' , lang).
+						item isArray ifTrue:[
+						    item at:2
+						] ifFalse:[
+						    nil
+						]
+					    ]
+					]
+				].
     flags := flags collect:[:nm | |img d| nm notNil ifTrue:[
-                                            img := Image fromFile:nm.
-                                            img isNil ifTrue:[
-                                                d := Smalltalk getPackageDirectoryForPackage:'stx:goodies'.
-                                                img := Image fromFile:(d construct:nm).
-                                            ].
-                                        ] ifFalse:[
-                                            nil
-                                        ]
-                           ].
-
-    
+					    img := Image fromFile:nm.
+					    img isNil ifTrue:[
+						d := Smalltalk getPackageDirectoryForPackage:'stx:goodies'.
+						img := Image fromFile:(d construct:nm).
+					    ].
+					] ifFalse:[
+					    nil
+					]
+			   ].
+
+
     translatedLanguages := (1 to:languages size) collect:[:idx |
-                                |l eL nL s|
-
-                                l := languages at:idx.
-                                eL := enLanguages at:idx.
-                                nL := nativeLanguages at:idx.
-
-                                s := nL.
-                                eL ~= nL ifTrue:[
-                                    s := s , ' / ' , eL
-                                ].
-                                (l ~= nL and:[l ~= eL]) ifTrue:[
-                                    s := s , ' / ' , l
-                                ].
-                                s   
-                            ].
-
-    languageList := translatedLanguages 
-                        with:flags 
-                        collect:[:lang :flag | LabelAndIcon icon:flag string:lang.].
+				|l eL nL s|
+
+				l := languages at:idx.
+				eL := enLanguages at:idx.
+				nL := nativeLanguages at:idx.
+
+				s := nL.
+				eL ~= nL ifTrue:[
+				    s := s , ' / ' , eL
+				].
+				(l ~= nL and:[l ~= eL]) ifTrue:[
+				    s := s , ' / ' , l
+				].
+				s
+			    ].
+
+    languageList := translatedLanguages
+			with:flags
+			collect:[:lang :flag | LabelAndIcon icon:flag string:lang.].
 
     "Modified: / 18-09-2006 / 19:23:39 / cg"
 !
@@ -6553,6 +6677,7 @@
     aWidget scrolledView backgroundColor:self window viewBackground.
 ! !
 
+
 !AbstractSettingsApplication::LanguageSettingsAppl methodsFor:'queries'!
 
 currentLanguage
@@ -6567,20 +6692,20 @@
     | langIdx |
 
     (Language ~= LanguageTerritory) ifTrue:[
-        langIdx := listOfLanguages indexOf:(Language , '-' , LanguageTerritory) ifAbsent:nil.
+	langIdx := listOfLanguages indexOf:(Language , '-' , LanguageTerritory) ifAbsent:nil.
     ].
     langIdx isNil ifTrue:[
-        langIdx := listOfLanguages indexOf:Language ifAbsent:nil.
+	langIdx := listOfLanguages indexOf:Language ifAbsent:nil.
     ].
     langIdx isNil ifTrue:[
-        langIdx := listOfLanguages indexOf:'en' ifAbsent:nil.
-        langIdx isNil ifTrue:[
-            langIdx := listOfLanguages indexOf:'en-us' ifAbsent:nil.
-    
-            langIdx isNil ifTrue:[
-                langIdx := 1.
-            ]
-        ]
+	langIdx := listOfLanguages indexOf:'en' ifAbsent:nil.
+	langIdx isNil ifTrue:[
+	    langIdx := listOfLanguages indexOf:'en-us' ifAbsent:nil.
+
+	    langIdx isNil ifTrue:[
+		langIdx := 1.
+	    ]
+	]
     ].
     ^ langIdx
 !
@@ -6592,6 +6717,7 @@
     "Modified: / 24-08-2010 / 18:50:11 / sr"
 ! !
 
+
 !AbstractSettingsApplication::MemorySettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -6600,6 +6726,7 @@
     ^ ToolbarIconLibrary memoryIcon
 ! !
 
+
 !AbstractSettingsApplication::MemorySettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -6617,517 +6744,518 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Memory Manager Settings'
-          name: 'Memory Manager Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 705 722)
-        )
-        component: 
+	  label: 'Memory Manager Settings'
+	  name: 'Memory Manager Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 705 722)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (LabelSpec
-              label: 'Label'
-              name: 'Label1'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 50 0)
-              translateLabel: true
-              labelChannel: warningLabelHolder
-              adjust: left
-            )
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel1'
-              layout: (LayoutFrame 0 0.0 50 0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 0
-              verticalSpace: 3
-              ignoreInvisibleComponents: true
-              component: 
-             (SpecCollection
-                collection: (
-                 (ViewSpec
-                    name: 'NewSpaceSizeBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (InputFieldSpec
-                          name: 'EntryField23'
-                          layout: (LayoutFrame 270 0 3 0 360 0 23 0)
-                          model: newSpaceSize
-                          type: fileSize
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: 'Size of NewSpace:'
-                          name: 'Label44'
-                          layout: (LayoutFrame 0 0 3 0 265 0 23 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (LabelSpec
-                          label: '(Size of Space where new objects are created)'
-                          name: 'Label45'
-                          layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (DividerSpec
-                          name: 'Separator24'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 705 30)
-                  )
-                 (ViewSpec
-                    name: 'MaximumMemoryLimitBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (InputFieldSpec
-                          name: 'EntryField24'
-                          layout: (LayoutFrame 270 0 3 0 360 0 23 0)
-                          model: maxOldSpace
-                          type: fileSize
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: 'Maximum Memory Limit:'
-                          name: 'Label46'
-                          layout: (LayoutFrame 0 0 3 0 265 0 23 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (LabelSpec
-                          label: '(Never allocate more than this amount of memory)'
-                          name: 'Label47'
-                          layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (DividerSpec
-                          name: 'Separator25'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 705 30)
-                  )
-                 (ViewSpec
-                    name: 'QuickAllocationLimitBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (InputFieldSpec
-                          name: 'EntryField14'
-                          layout: (LayoutFrame 270 0 3 0 360 0 23 0)
-                          model: fastMoreLimit
-                          type: fileSize
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: 'Quick Allocation Limit:'
-                          name: 'Label26'
-                          layout: (LayoutFrame 0 0 3 0 265 0 23 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (LabelSpec
-                          label: '(Quickly allocate more memory (suppress GC) up to this limit)'
-                          name: 'Label27'
-                          layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (DividerSpec
-                          name: 'Separator15'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 705 30)
-                  )
-                 (ViewSpec
-                    name: 'IncrementalGCAllocationTriggerBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (InputFieldSpec
-                          name: 'EntryField25'
-                          layout: (LayoutFrame 270 0 3 0 360 0 23 0)
-                          model: igcLimit
-                          type: fileSize
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: 'Incremental GC Allocation Trigger:'
-                          name: 'Label48'
-                          layout: (LayoutFrame 0 0 3 0 265 0 23 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (LabelSpec
-                          label: '(Start IGC whenever this amount has been allocated)'
-                          name: 'Label49'
-                          layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (DividerSpec
-                          name: 'Separator26'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 705 30)
-                  )
-                 (ViewSpec
-                    name: 'IncrementalGCFreespaceTriggerBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (InputFieldSpec
-                          name: 'EntryField26'
-                          layout: (LayoutFrame 270 0 3 0 360 0 23 0)
-                          model: igcFreeLimit
-                          type: fileSize
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: 'Incremental GC Freespace Trigger:'
-                          name: 'Label50'
-                          layout: (LayoutFrame 0 0 3 0 265 0 23 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (LabelSpec
-                          label: '(Start IGC whenever freespace drops below this)'
-                          name: 'Label51'
-                          layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (DividerSpec
-                          name: 'Separator27'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 705 30)
-                  )
-                 (ViewSpec
-                    name: 'GCAmountBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (InputFieldSpec
-                          name: 'EntryField17'
-                          layout: (LayoutFrame 270 0 3 0 360 0 23 0)
-                          model: igcFreeAmount
-                          type: fileSize
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: 'Incremental GC Amount:'
-                          name: 'Label32'
-                          layout: (LayoutFrame 0 0 3 0 265 0 23 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (LabelSpec
-                          label: '(Try to keep this amount for peak requests)'
-                          name: 'Label33'
-                          layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (DividerSpec
-                          name: 'Separator18'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 705 30)
-                  )
-                 (ViewSpec
-                    name: 'OldspaceIncrementBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (InputFieldSpec
-                          name: 'EntryField18'
-                          layout: (LayoutFrame 270 0 3 0 360 0 23 0)
-                          model: oldIncr
-                          type: fileSize
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: 'Oldspace Increment:'
-                          name: 'Label34'
-                          layout: (LayoutFrame 0 0 3 0 265 0 23 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (LabelSpec
-                          label: '(Increase oldSpace in chunks of this size)'
-                          name: 'Label35'
-                          layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (DividerSpec
-                          name: 'Separator19'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 705 30)
-                  )
-                 (ViewSpec
-                    name: 'OldSpaceCompressLimitBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (InputFieldSpec
-                          name: 'EntryField19'
-                          layout: (LayoutFrame 270 0 3 0 360 0 23 0)
-                          model: compressLimit
-                          type: fileSize
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: 'Oldspace Compress Limit:'
-                          name: 'Label36'
-                          layout: (LayoutFrame 0 0 3 0 265 0 23 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (LabelSpec
-                          label: '(Use 2-pass compressing GC if > 0 and more memory is in use)'
-                          name: 'Label37'
-                          layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (DividerSpec
-                          name: 'Separator20'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 705 30)
-                  )
-                 (ViewSpec
-                    name: 'StackLimitBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (InputFieldSpec
-                          name: 'EntryField20'
-                          layout: (LayoutFrame 270 0 3 0 360 0 23 0)
-                          enableChannel: supportsJustInTimeCompilation
-                          model: stackLimit
-                          type: fileSize
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: 'Stack Limit:'
-                          name: 'Label38'
-                          layout: (LayoutFrame 0 0 3 0 265 0 23 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (LabelSpec
-                          label: '(Trigger recursionInterrupt if more stack is used by a process)'
-                          name: 'Label39'
-                          layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (DividerSpec
-                          name: 'Separator21'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 705 30)
-                  )
-                 (ViewSpec
-                    name: 'CodeLimitBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (InputFieldSpec
-                          name: 'EntryField21'
-                          layout: (LayoutFrame 270 0 3 0 360 0 23 0)
-                          enableChannel: supportsJustInTimeCompilation
-                          model: codeLimit
-                          type: fileSize
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: 'Dynamic code Limit:'
-                          name: 'Label40'
-                          layout: (LayoutFrame 0 0 3 0 265 0 23 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (LabelSpec
-                          label: '(Flush dynamic compiled code to stay within this limit)'
-                          name: 'Label41'
-                          layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (DividerSpec
-                          name: 'Separator22'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 705 30)
-                  )
-                 (ViewSpec
-                    name: 'Box1'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (InputFieldSpec
-                          name: 'EntryField27'
-                          layout: (LayoutFrame 270 0 3 0 360 0 23 0)
-                          enableChannel: supportsJustInTimeCompilation
-                          model: methodCodeSizeLimit
-                          type: fileSize
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: 'Method Code Size Limit:'
-                          name: 'Label52'
-                          layout: (LayoutFrame 0 0 3 0 265 0 23 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (LabelSpec
-                          label: '(Do not JIT, if an individual method''s code size exceeds this)'
-                          name: 'Label53'
-                          layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (DividerSpec
-                          name: 'Separator28'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 705 30)
-                  )
-                 (ViewSpec
-                    name: 'CodeTriggerBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (InputFieldSpec
-                          name: 'EntryField22'
-                          layout: (LayoutFrame 270 0 3 0 360 0 23 0)
-                          model: codeTrigger
-                          type: fileSize
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: 'Dynamic code Limit:'
-                          name: 'Label42'
-                          layout: (LayoutFrame 0 0 3 0 265 0 23 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (LabelSpec
-                          label: '(Start incremental GC whenever this amount of code has been allocated)'
-                          name: 'Label43'
-                          layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (DividerSpec
-                          name: 'Separator23'
-                          layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 705 30)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (LabelSpec
+	      label: 'Label'
+	      name: 'Label1'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 50 0)
+	      translateLabel: true
+	      labelChannel: warningLabelHolder
+	      adjust: left
+	    )
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel1'
+	      layout: (LayoutFrame 0 0.0 50 0 0 1.0 0 1.0)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 0
+	      verticalSpace: 3
+	      ignoreInvisibleComponents: true
+	      component:
+	     (SpecCollection
+		collection: (
+		 (ViewSpec
+		    name: 'NewSpaceSizeBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (InputFieldSpec
+			  name: 'EntryField23'
+			  layout: (LayoutFrame 270 0 3 0 360 0 23 0)
+			  model: newSpaceSize
+			  type: fileSize
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: 'Size of NewSpace:'
+			  name: 'Label44'
+			  layout: (LayoutFrame 0 0 3 0 265 0 23 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (LabelSpec
+			  label: '(Size of Space where new objects are created)'
+			  name: 'Label45'
+			  layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (DividerSpec
+			  name: 'Separator24'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+			)
+		       )
+
+		    )
+		    extent: (Point 705 30)
+		  )
+		 (ViewSpec
+		    name: 'MaximumMemoryLimitBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (InputFieldSpec
+			  name: 'EntryField24'
+			  layout: (LayoutFrame 270 0 3 0 360 0 23 0)
+			  model: maxOldSpace
+			  type: fileSize
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: 'Maximum Memory Limit:'
+			  name: 'Label46'
+			  layout: (LayoutFrame 0 0 3 0 265 0 23 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (LabelSpec
+			  label: '(Never allocate more than this amount of memory)'
+			  name: 'Label47'
+			  layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (DividerSpec
+			  name: 'Separator25'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+			)
+		       )
+
+		    )
+		    extent: (Point 705 30)
+		  )
+		 (ViewSpec
+		    name: 'QuickAllocationLimitBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (InputFieldSpec
+			  name: 'EntryField14'
+			  layout: (LayoutFrame 270 0 3 0 360 0 23 0)
+			  model: fastMoreLimit
+			  type: fileSize
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: 'Quick Allocation Limit:'
+			  name: 'Label26'
+			  layout: (LayoutFrame 0 0 3 0 265 0 23 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (LabelSpec
+			  label: '(Quickly allocate more memory (suppress GC) up to this limit)'
+			  name: 'Label27'
+			  layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (DividerSpec
+			  name: 'Separator15'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+			)
+		       )
+
+		    )
+		    extent: (Point 705 30)
+		  )
+		 (ViewSpec
+		    name: 'IncrementalGCAllocationTriggerBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (InputFieldSpec
+			  name: 'EntryField25'
+			  layout: (LayoutFrame 270 0 3 0 360 0 23 0)
+			  model: igcLimit
+			  type: fileSize
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: 'Incremental GC Allocation Trigger:'
+			  name: 'Label48'
+			  layout: (LayoutFrame 0 0 3 0 265 0 23 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (LabelSpec
+			  label: '(Start IGC whenever this amount has been allocated)'
+			  name: 'Label49'
+			  layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (DividerSpec
+			  name: 'Separator26'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+			)
+		       )
+
+		    )
+		    extent: (Point 705 30)
+		  )
+		 (ViewSpec
+		    name: 'IncrementalGCFreespaceTriggerBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (InputFieldSpec
+			  name: 'EntryField26'
+			  layout: (LayoutFrame 270 0 3 0 360 0 23 0)
+			  model: igcFreeLimit
+			  type: fileSize
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: 'Incremental GC Freespace Trigger:'
+			  name: 'Label50'
+			  layout: (LayoutFrame 0 0 3 0 265 0 23 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (LabelSpec
+			  label: '(Start IGC whenever freespace drops below this)'
+			  name: 'Label51'
+			  layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (DividerSpec
+			  name: 'Separator27'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+			)
+		       )
+
+		    )
+		    extent: (Point 705 30)
+		  )
+		 (ViewSpec
+		    name: 'GCAmountBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (InputFieldSpec
+			  name: 'EntryField17'
+			  layout: (LayoutFrame 270 0 3 0 360 0 23 0)
+			  model: igcFreeAmount
+			  type: fileSize
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: 'Incremental GC Amount:'
+			  name: 'Label32'
+			  layout: (LayoutFrame 0 0 3 0 265 0 23 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (LabelSpec
+			  label: '(Try to keep this amount for peak requests)'
+			  name: 'Label33'
+			  layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (DividerSpec
+			  name: 'Separator18'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+			)
+		       )
+
+		    )
+		    extent: (Point 705 30)
+		  )
+		 (ViewSpec
+		    name: 'OldspaceIncrementBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (InputFieldSpec
+			  name: 'EntryField18'
+			  layout: (LayoutFrame 270 0 3 0 360 0 23 0)
+			  model: oldIncr
+			  type: fileSize
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: 'Oldspace Increment:'
+			  name: 'Label34'
+			  layout: (LayoutFrame 0 0 3 0 265 0 23 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (LabelSpec
+			  label: '(Increase oldSpace in chunks of this size)'
+			  name: 'Label35'
+			  layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (DividerSpec
+			  name: 'Separator19'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+			)
+		       )
+
+		    )
+		    extent: (Point 705 30)
+		  )
+		 (ViewSpec
+		    name: 'OldSpaceCompressLimitBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (InputFieldSpec
+			  name: 'EntryField19'
+			  layout: (LayoutFrame 270 0 3 0 360 0 23 0)
+			  model: compressLimit
+			  type: fileSize
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: 'Oldspace Compress Limit:'
+			  name: 'Label36'
+			  layout: (LayoutFrame 0 0 3 0 265 0 23 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (LabelSpec
+			  label: '(Use 2-pass compressing GC if > 0 and more memory is in use)'
+			  name: 'Label37'
+			  layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (DividerSpec
+			  name: 'Separator20'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+			)
+		       )
+
+		    )
+		    extent: (Point 705 30)
+		  )
+		 (ViewSpec
+		    name: 'StackLimitBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (InputFieldSpec
+			  name: 'EntryField20'
+			  layout: (LayoutFrame 270 0 3 0 360 0 23 0)
+			  enableChannel: supportsJustInTimeCompilation
+			  model: stackLimit
+			  type: fileSize
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: 'Stack Limit:'
+			  name: 'Label38'
+			  layout: (LayoutFrame 0 0 3 0 265 0 23 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (LabelSpec
+			  label: '(Trigger recursionInterrupt if more stack is used by a process)'
+			  name: 'Label39'
+			  layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (DividerSpec
+			  name: 'Separator21'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+			)
+		       )
+
+		    )
+		    extent: (Point 705 30)
+		  )
+		 (ViewSpec
+		    name: 'CodeLimitBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (InputFieldSpec
+			  name: 'EntryField21'
+			  layout: (LayoutFrame 270 0 3 0 360 0 23 0)
+			  enableChannel: supportsJustInTimeCompilation
+			  model: codeLimit
+			  type: fileSize
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: 'Dynamic code Limit:'
+			  name: 'Label40'
+			  layout: (LayoutFrame 0 0 3 0 265 0 23 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (LabelSpec
+			  label: '(Flush dynamic compiled code to stay within this limit)'
+			  name: 'Label41'
+			  layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (DividerSpec
+			  name: 'Separator22'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+			)
+		       )
+
+		    )
+		    extent: (Point 705 30)
+		  )
+		 (ViewSpec
+		    name: 'Box1'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (InputFieldSpec
+			  name: 'EntryField27'
+			  layout: (LayoutFrame 270 0 3 0 360 0 23 0)
+			  enableChannel: supportsJustInTimeCompilation
+			  model: methodCodeSizeLimit
+			  type: fileSize
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: 'Method Code Size Limit:'
+			  name: 'Label52'
+			  layout: (LayoutFrame 0 0 3 0 265 0 23 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (LabelSpec
+			  label: '(Do not JIT, if an individual method''s code size exceeds this)'
+			  name: 'Label53'
+			  layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (DividerSpec
+			  name: 'Separator28'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+			)
+		       )
+
+		    )
+		    extent: (Point 705 30)
+		  )
+		 (ViewSpec
+		    name: 'CodeTriggerBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (InputFieldSpec
+			  name: 'EntryField22'
+			  layout: (LayoutFrame 270 0 3 0 360 0 23 0)
+			  model: codeTrigger
+			  type: fileSize
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: 'Dynamic code Limit:'
+			  name: 'Label42'
+			  layout: (LayoutFrame 0 0 3 0 265 0 23 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (LabelSpec
+			  label: '(Start incremental GC whenever this amount of code has been allocated)'
+			  name: 'Label43'
+			  layout: (LayoutFrame 364 0.0 3 0 0 1.0 23 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (DividerSpec
+			  name: 'Separator23'
+			  layout: (LayoutFrame 0 0.0 0 0 0 1.0 3 0)
+			)
+		       )
+
+		    )
+		    extent: (Point 705 30)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::MemorySettingsAppl methodsFor:'actions'!
 
 basicReadSettings
-    self 
-        readAspects:
-            #( 
-                newSpaceSize
-                maxOldSpace
-            )
-        from:ObjectMemory.
+    self
+	readAspects:
+	    #(
+		newSpaceSize
+		maxOldSpace
+	    )
+	from:ObjectMemory.
 
     self igcLimit value:ObjectMemory incrementalGCLimit.
     self igcFreeLimit value:ObjectMemory freeSpaceGCLimit.
@@ -7145,13 +7273,13 @@
 !
 
 basicSaveSettings
-    self 
-        writeAspects:
-            #(
-                newSpaceSize
-                maxOldSpace
-            )
-        to:ObjectMemory.
+    self
+	writeAspects:
+	    #(
+		newSpaceSize
+		maxOldSpace
+	    )
+	to:ObjectMemory.
 
     ObjectMemory freeSpaceGCAmount:self igcFreeAmount value.
     ObjectMemory freeSpaceGCLimit:self igcFreeLimit value.
@@ -7168,13 +7296,14 @@
     "Modified: / 12-08-2010 / 15:34:47 / cg"
 ! !
 
+
 !AbstractSettingsApplication::MemorySettingsAppl methodsFor:'aspects'!
 
 codeLimit
 
     codeLimit isNil ifTrue:[
-        codeLimit := ObjectMemory dynamicCodeLimit asValue.
-        codeLimit onChangeSend:#updateModifiedChannel to:self
+	codeLimit := ObjectMemory dynamicCodeLimit asValue.
+	codeLimit onChangeSend:#updateModifiedChannel to:self
     ].
     ^ codeLimit.
 !
@@ -7182,8 +7311,8 @@
 codeTrigger
 
     codeTrigger isNil ifTrue:[
-        codeTrigger := ObjectMemory dynamicCodeGCTrigger asValue.
-        codeTrigger onChangeSend:#updateModifiedChannel to:self
+	codeTrigger := ObjectMemory dynamicCodeGCTrigger asValue.
+	codeTrigger onChangeSend:#updateModifiedChannel to:self
     ].
     ^ codeTrigger.
 !
@@ -7191,8 +7320,8 @@
 compressLimit
 
     compressLimit isNil ifTrue:[
-        compressLimit := ObjectMemory oldSpaceCompressLimit asValue.
-        compressLimit onChangeSend:#updateModifiedChannel to:self
+	compressLimit := ObjectMemory oldSpaceCompressLimit asValue.
+	compressLimit onChangeSend:#updateModifiedChannel to:self
     ].
     ^ compressLimit.
 !
@@ -7200,8 +7329,8 @@
 fastMoreLimit
 
     fastMoreLimit isNil ifTrue:[
-        fastMoreLimit := (ObjectMemory fastMoreOldSpaceLimit:-1) asValue.
-        fastMoreLimit onChangeSend:#updateModifiedChannel to:self
+	fastMoreLimit := (ObjectMemory fastMoreOldSpaceLimit:-1) asValue.
+	fastMoreLimit onChangeSend:#updateModifiedChannel to:self
     ].
     ^ fastMoreLimit.
 !
@@ -7209,8 +7338,8 @@
 igcFreeAmount
 
     igcFreeAmount isNil ifTrue:[
-        igcFreeAmount := ObjectMemory freeSpaceGCAmount asValue.
-        igcFreeAmount onChangeSend:#updateModifiedChannel to:self
+	igcFreeAmount := ObjectMemory freeSpaceGCAmount asValue.
+	igcFreeAmount onChangeSend:#updateModifiedChannel to:self
     ].
     ^ igcFreeAmount.
 !
@@ -7218,8 +7347,8 @@
 igcFreeLimit
 
     igcFreeLimit isNil ifTrue:[
-        igcFreeLimit := ObjectMemory freeSpaceGCLimit asValue.
-        igcFreeLimit onChangeSend:#updateModifiedChannel to:self
+	igcFreeLimit := ObjectMemory freeSpaceGCLimit asValue.
+	igcFreeLimit onChangeSend:#updateModifiedChannel to:self
     ].
     ^ igcFreeLimit.
 !
@@ -7227,8 +7356,8 @@
 igcLimit
 
     igcLimit isNil ifTrue:[
-        igcLimit := ObjectMemory incrementalGCLimit asValue.
-        igcLimit onChangeSend:#updateModifiedChannel to:self
+	igcLimit := ObjectMemory incrementalGCLimit asValue.
+	igcLimit onChangeSend:#updateModifiedChannel to:self
     ].
     ^ igcLimit.
 !
@@ -7236,8 +7365,8 @@
 maxOldSpace
 
     maxOldSpace isNil ifTrue:[
-        maxOldSpace := ObjectMemory maxOldSpace asValue.
-        maxOldSpace onChangeSend:#updateModifiedChannel to:self
+	maxOldSpace := ObjectMemory maxOldSpace asValue.
+	maxOldSpace onChangeSend:#updateModifiedChannel to:self
     ].
     ^ maxOldSpace.
 !
@@ -7245,8 +7374,8 @@
 methodCodeSizeLimit
 
     methodCodeSizeLimit isNil ifTrue:[
-        methodCodeSizeLimit := (ObjectMemory codeSizeLimitForDynamicCompilation:-1) asValue.
-        methodCodeSizeLimit onChangeSend:#updateModifiedChannel to:self
+	methodCodeSizeLimit := (ObjectMemory codeSizeLimitForDynamicCompilation:-1) asValue.
+	methodCodeSizeLimit onChangeSend:#updateModifiedChannel to:self
     ].
     ^ methodCodeSizeLimit.
 
@@ -7256,8 +7385,8 @@
 newSpaceSize
 
     newSpaceSize isNil ifTrue:[
-        newSpaceSize := ObjectMemory newSpaceSize asValue.
-        newSpaceSize onChangeSend:#updateModifiedChannel to:self
+	newSpaceSize := ObjectMemory newSpaceSize asValue.
+	newSpaceSize onChangeSend:#updateModifiedChannel to:self
     ].
     ^ newSpaceSize.
 !
@@ -7265,8 +7394,8 @@
 oldIncr
 
     oldIncr isNil ifTrue:[
-        oldIncr := ObjectMemory oldSpaceIncrement asValue.
-        oldIncr onChangeSend:#updateModifiedChannel to:self
+	oldIncr := ObjectMemory oldSpaceIncrement asValue.
+	oldIncr onChangeSend:#updateModifiedChannel to:self
     ].
     ^ oldIncr.
 !
@@ -7274,8 +7403,8 @@
 stackLimit
 
     stackLimit isNil ifTrue:[
-        stackLimit := Process defaultMaximumStackSize asValue.
-        stackLimit onChangeSend:#updateModifiedChannel to:self
+	stackLimit := Process defaultMaximumStackSize asValue.
+	stackLimit onChangeSend:#updateModifiedChannel to:self
     ].
     ^ stackLimit.
 !
@@ -7288,38 +7417,41 @@
 warningLabelHolder
 
     warningLabelHolder isNil ifTrue:[
-        warningLabelHolder := ValueHolder new.
+	warningLabelHolder := ValueHolder new.
     ].
     ^ warningLabelHolder.
 ! !
 
+
 !AbstractSettingsApplication::MemorySettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/memorySettings.html'
 ! !
 
+
 !AbstractSettingsApplication::MemorySettingsAppl methodsFor:'initialization & release'!
 
 initialize
     super initialize.
-    self warningLabelHolder 
-        value:(StringCollection
-                with:(resources string:'Warning - invalid settings may result in failures or poor performance.')
-                with:(resources string:'You have been warned.') allBold
-               ).
-! !
+    self warningLabelHolder
+	value:(StringCollection
+		with:(resources string:'Warning - invalid settings may result in failures or poor performance.')
+		with:(resources string:'You have been warned.') allBold
+	       ).
+! !
+
 
 !AbstractSettingsApplication::MemorySettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
      (self
-        hasChangedAspectIn:
-            #(
-                newSpaceSize
-                maxOldSpace
-            )
-        asComparedTo:ObjectMemory) ifTrue:[^ true].
+	hasChangedAspectIn:
+	    #(
+		newSpaceSize
+		maxOldSpace
+	    )
+	asComparedTo:ObjectMemory) ifTrue:[^ true].
 
     ObjectMemory freeSpaceGCAmount ~= self igcFreeAmount value ifTrue:[^ true].
     ObjectMemory freeSpaceGCLimit ~= self igcFreeLimit value ifTrue:[^ true].
@@ -7337,6 +7469,7 @@
     "Modified: / 12-08-2010 / 15:33:12 / cg"
 ! !
 
+
 !AbstractSettingsApplication::MiscCommunicationSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -7355,13 +7488,14 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::MiscCommunicationSettingsAppl class defaultIcon'
-        ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::MiscCommunicationSettingsAppl class defaultIcon'
+	ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@!!8@@@@@@BG @@@!!1]P@@@@AWE8@@!!1 '' @@@BGFB^@!!1 5Q8@@BGFBUG !!DWQPH@@B@Q]HD \QFA] @@A1DXE6X"DQ]VY&Y"HQE5I&@ ]QHD@FHBAED"TG
 ]QD$Q5IVI5ERQ5 !!TVPW]BUBEQIF$REXPT^FY1HV!!@$''HXPXIWU"]!!!!%@GI(BAFGUV\&!!FT@UGQ"PQEW^D]EYP@@PFHHETU5A@U%@@@@I@BGTRT@U%@@@@AH
 P"DQ]PU%@@@@@EBUHQU5U%@@@@@@@B !!YHU%@@@@@@@E@ UFY%@@@@@@@@APIH@@@@@@@@@@@@T@@@@@@@@b') ; colorMapFromArray:#[0 0 0 224 224 224 64 64 64 96 96 96 128 128 128 192 192 192 32 32 32 96 96 96 160 160 160 96 96 96]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'G@C O G0_0O8?8_<?(W<?8_<???<=:^<???<???<???<_??<O??<O??<B?=\@?<8@?=0@?? @O?@@W>@@K @@D@@') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::MiscCommunicationSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -7379,404 +7513,405 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Communication Settings'
-          name: 'Communication Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 732 558)
-        )
-        component: 
+	  label: 'Communication Settings'
+	  name: 'Communication Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 732 558)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel1'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (FramedBoxSpec
-                    label: 'SMTP Server'
-                    name: 'SMTPServerBox1'
-                    labelPosition: topLeft
-                    translateLabel: true
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ViewSpec
-                          name: 'Box5'
-                          layout: (LayoutFrame 0 0 5 0 0 1 28 0)
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (LabelSpec
-                                label: 'SMTP Server:'
-                                name: 'SMTPLabel'
-                                layout: (LayoutFrame 0 0 0 0 150 0 22 0)
-                                translateLabel: true
-                                adjust: right
-                              )
-                             (InputFieldSpec
-                                name: 'SMTPServer'
-                                layout: (LayoutFrame 150 0 0 0 400 0 22 0)
-                                model: smtpServerName
-                                acceptOnReturn: true
-                                acceptOnTab: true
-                                acceptOnLostFocus: true
-                                acceptOnPointerLeave: false
-                              )
-                             )
-                           
-                          )
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 732 58)
-                  )
-                 (FramedBoxSpec
-                    label: 'Window migration'
-                    name: 'WindowMicrationSetupBox'
-                    labelPosition: topLeft
-                    translateLabel: true
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (VerticalPanelViewSpec
-                          name: 'VerticalPanel2'
-                          layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-                          horizontalLayout: left
-                          verticalLayout: center
-                          horizontalSpace: 3
-                          verticalSpace: 3
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (ViewSpec
-                                name: 'Box2'
-                                component: 
-                               (SpecCollection
-                                  collection: (
-                                   (CheckBoxSpec
-                                      label: 'Window migration enabled'
-                                      name: 'CheckBox2'
-                                      layout: (LayoutFrame 5 0 0 0 600 0 22 0)
-                                      enableChannel: hasWindowMigrationServer
-                                      model: windowMigrationEnabled
-                                      translateLabel: true
-                                    )
-                                   )
-                                 
-                                )
-                                extent: (Point 696 23)
-                              )
-                             (ViewSpec
-                                name: 'Box3'
-                                component: 
-                               (SpecCollection
-                                  collection: (
-                                   (CheckBoxSpec
-                                      label: 'Password check'
-                                      name: 'CheckBox3'
-                                      layout: (LayoutFrame 5 0 -2 0 600 0 20 0)
-                                      enableChannel: enablePasswordCheck
-                                      model: windowMigrationAuthenticate
-                                      translateLabel: true
-                                    )
-                                   )
-                                 
-                                )
-                                extent: (Point 696 22)
-                              )
-                             (ViewSpec
-                                name: 'Box4'
-                                component: 
-                               (SpecCollection
-                                  collection: (
-                                   (LabelSpec
-                                      label: 'Password:'
-                                      name: 'Label3'
-                                      layout: (LayoutFrame 0 0 0 0 150 0 22 0)
-                                      translateLabel: true
-                                      adjust: right
-                                    )
-                                   (InputFieldSpec
-                                      name: 'EntryField1'
-                                      layout: (LayoutFrame 150 0 0 0 400 0 22 0)
-                                      enableChannel: windowMigrationAuthenticate
-                                      model: windowMigrationPassword
-                                      type: password
-                                      acceptOnReturn: true
-                                      acceptOnTab: true
-                                      acceptOnLostFocus: true
-                                      acceptOnPointerLeave: true
-                                    )
-                                   )
-                                 
-                                )
-                                extent: (Point 696 22)
-                              )
-                             )
-                           
-                          )
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 732 115)
-                  )
-                 (FramedBoxSpec
-                    label: 'Remote Browsing'
-                    name: 'RemoteBrowsingSetupBox'
-                    labelPosition: topLeft
-                    translateLabel: true
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ViewSpec
-                          name: 'Box1'
-                          layout: (LayoutFrame 0 0 5 0 0 1 28 0)
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Remote browsing enabled'
-                                name: 'CheckBox1'
-                                layout: (LayoutFrame 5 0 0 0 600 0 22 0)
-                                enableChannel: hasRemoteBrowsingSupport
-                                model: remoteBrowsingEnabled
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 732 59)
-                  )
-                 (FramedBoxSpec
-                    label: 'SmallTeam Change Distribution'
-                    name: 'SmallTeamSetupBox'
-                    visibilityChannel: managerIsCVSSourceCodeManager
-                    labelPosition: topLeft
-                    translateLabel: true
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ViewSpec
-                          name: 'enableBox'
-                          layout: (LayoutFrame 0 0 8 0 0 1 31 0)
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'SmallTeam Server enabled'
-                                name: 'CheckBox4'
-                                layout: (LayoutFrame 5 0 0 0 600 0 22 0)
-                                enableChannel: smallTeamServerAvailable
-                                model: smallTeamServerEnabled
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                        )
-                       (LabelSpec
-                          label: 'SmallTeam Hosts:'
-                          name: 'smallTeamHostsLabel'
-                          layout: (LayoutFrame 0 0.0 37 0 60 0.25 59 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (SequenceViewSpec
-                          name: 'smallTeamHostsList'
-                          layout: (LayoutFrame 64 0.25 37 0 0 1 131 0)
-                          enableChannel: smallTeamServerEnabled
-                          tabable: true
-                          model: selectedSmallTeamHost
-                          hasHorizontalScrollBar: true
-                          hasVerticalScrollBar: true
-                          miniScrollerHorizontal: true
-                          useIndex: false
-                          sequenceList: listOfSmallTeamHosts
-                        )
-                       (LabelSpec
-                          label: 'Host:'
-                          name: 'hostLabel'
-                          layout: (LayoutFrame 0 0.0 142 0 60 0.25 159 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'smallTeamHostEntryField'
-                          layout: (LayoutFrame 64 0.25 138 0 0 1 160 0)
-                          enableChannel: smallTeamServerEnabled
-                          tabable: true
-                          model: smallTeamHostEntry
-                          acceptChannel: acceptChannel
-                          acceptOnPointerLeave: true
-                        )
-                       (HorizontalPanelViewSpec
-                          name: 'HorizontalPanel2'
-                          layout: (LayoutFrame 64 0.25 165 0 -1 1 190 0)
-                          horizontalLayout: fitSpace
-                          verticalLayout: center
-                          horizontalSpace: 3
-                          verticalSpace: 3
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (ActionButtonSpec
-                                label: 'Add'
-                                name: 'addButton'
-                                translateLabel: true
-                                tabable: true
-                                model: addSmallTeamHost
-                                enableChannel: addHostEnabled
-                                extent: (Point 225 22)
-                              )
-                             (ActionButtonSpec
-                                label: 'Remove'
-                                name: 'removeButton'
-                                translateLabel: true
-                                tabable: true
-                                model: removeSmallTeamHost
-                                enableChannel: removeHostEnabled
-                                extent: (Point 225 22)
-                              )
-                             )
-                           
-                          )
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 732 222)
-                  )
-                 (FramedBoxSpec
-                    label: '.NET Bridge'
-                    name: 'FramedBox1'
-                    labelPosition: topLeft
-                    translateLabel: true
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (VerticalPanelViewSpec
-                          name: 'VerticalPanel3'
-                          layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-                          horizontalLayout: left
-                          verticalLayout: center
-                          horizontalSpace: 3
-                          verticalSpace: 3
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (ViewSpec
-                                name: 'Box6'
-                                component: 
-                               (SpecCollection
-                                  collection: (
-                                   (CheckBoxSpec
-                                      label: 'Verbose'
-                                      name: 'CheckBox5'
-                                      layout: (LayoutFrame 5 0 5 0 600 0 22 0)
-                                      enableChannel: hasDotNetBridge
-                                      model: dotNetBridgeVerbose
-                                      translateLabel: true
-                                    )
-                                   )
-                                 
-                                )
-                                extent: (Point 696 23)
-                              )
-                             (ViewSpec
-                                name: 'Box7'
-                                component: 
-                               (SpecCollection
-                                  collection: (
-                                   (CheckBoxSpec
-                                      label: 'Bridge Runs in IDE'
-                                      name: 'CheckBox6'
-                                      layout: (LayoutFrame 5 0 3 0 600 0 25 0)
-                                      enableChannel: hasDotNetBridge
-                                      model: dotNetBridgeRunsInIDE
-                                      translateLabel: true
-                                    )
-                                   )
-                                 
-                                )
-                                extent: (Point 696 22)
-                              )
-                             )
-                           
-                          )
-                        )
-                       (ActionButtonSpec
-                          label: 'Close all Connections'
-                          name: 'Button1'
-                          layout: (LayoutFrame -228 1 27 0 -3 1 49 0)
-                          translateLabel: true
-                          tabable: true
-                          model: closeAllDotNetConnections
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 732 83)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel1'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (FramedBoxSpec
+		    label: 'SMTP Server'
+		    name: 'SMTPServerBox1'
+		    labelPosition: topLeft
+		    translateLabel: true
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (ViewSpec
+			  name: 'Box5'
+			  layout: (LayoutFrame 0 0 5 0 0 1 28 0)
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (LabelSpec
+				label: 'SMTP Server:'
+				name: 'SMTPLabel'
+				layout: (LayoutFrame 0 0 0 0 150 0 22 0)
+				translateLabel: true
+				adjust: right
+			      )
+			     (InputFieldSpec
+				name: 'SMTPServer'
+				layout: (LayoutFrame 150 0 0 0 400 0 22 0)
+				model: smtpServerName
+				acceptOnReturn: true
+				acceptOnTab: true
+				acceptOnLostFocus: true
+				acceptOnPointerLeave: false
+			      )
+			     )
+
+			  )
+			)
+		       )
+
+		    )
+		    extent: (Point 732 58)
+		  )
+		 (FramedBoxSpec
+		    label: 'Window migration'
+		    name: 'WindowMicrationSetupBox'
+		    labelPosition: topLeft
+		    translateLabel: true
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (VerticalPanelViewSpec
+			  name: 'VerticalPanel2'
+			  layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+			  horizontalLayout: left
+			  verticalLayout: center
+			  horizontalSpace: 3
+			  verticalSpace: 3
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (ViewSpec
+				name: 'Box2'
+				component:
+			       (SpecCollection
+				  collection: (
+				   (CheckBoxSpec
+				      label: 'Window migration enabled'
+				      name: 'CheckBox2'
+				      layout: (LayoutFrame 5 0 0 0 600 0 22 0)
+				      enableChannel: hasWindowMigrationServer
+				      model: windowMigrationEnabled
+				      translateLabel: true
+				    )
+				   )
+
+				)
+				extent: (Point 696 23)
+			      )
+			     (ViewSpec
+				name: 'Box3'
+				component:
+			       (SpecCollection
+				  collection: (
+				   (CheckBoxSpec
+				      label: 'Password check'
+				      name: 'CheckBox3'
+				      layout: (LayoutFrame 5 0 -2 0 600 0 20 0)
+				      enableChannel: enablePasswordCheck
+				      model: windowMigrationAuthenticate
+				      translateLabel: true
+				    )
+				   )
+
+				)
+				extent: (Point 696 22)
+			      )
+			     (ViewSpec
+				name: 'Box4'
+				component:
+			       (SpecCollection
+				  collection: (
+				   (LabelSpec
+				      label: 'Password:'
+				      name: 'Label3'
+				      layout: (LayoutFrame 0 0 0 0 150 0 22 0)
+				      translateLabel: true
+				      adjust: right
+				    )
+				   (InputFieldSpec
+				      name: 'EntryField1'
+				      layout: (LayoutFrame 150 0 0 0 400 0 22 0)
+				      enableChannel: windowMigrationAuthenticate
+				      model: windowMigrationPassword
+				      type: password
+				      acceptOnReturn: true
+				      acceptOnTab: true
+				      acceptOnLostFocus: true
+				      acceptOnPointerLeave: true
+				    )
+				   )
+
+				)
+				extent: (Point 696 22)
+			      )
+			     )
+
+			  )
+			)
+		       )
+
+		    )
+		    extent: (Point 732 115)
+		  )
+		 (FramedBoxSpec
+		    label: 'Remote Browsing'
+		    name: 'RemoteBrowsingSetupBox'
+		    labelPosition: topLeft
+		    translateLabel: true
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (ViewSpec
+			  name: 'Box1'
+			  layout: (LayoutFrame 0 0 5 0 0 1 28 0)
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Remote browsing enabled'
+				name: 'CheckBox1'
+				layout: (LayoutFrame 5 0 0 0 600 0 22 0)
+				enableChannel: hasRemoteBrowsingSupport
+				model: remoteBrowsingEnabled
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			)
+		       )
+
+		    )
+		    extent: (Point 732 59)
+		  )
+		 (FramedBoxSpec
+		    label: 'SmallTeam Change Distribution'
+		    name: 'SmallTeamSetupBox'
+		    visibilityChannel: managerIsCVSSourceCodeManager
+		    labelPosition: topLeft
+		    translateLabel: true
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (ViewSpec
+			  name: 'enableBox'
+			  layout: (LayoutFrame 0 0 8 0 0 1 31 0)
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'SmallTeam Server enabled'
+				name: 'CheckBox4'
+				layout: (LayoutFrame 5 0 0 0 600 0 22 0)
+				enableChannel: smallTeamServerAvailable
+				model: smallTeamServerEnabled
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			)
+		       (LabelSpec
+			  label: 'SmallTeam Hosts:'
+			  name: 'smallTeamHostsLabel'
+			  layout: (LayoutFrame 0 0.0 37 0 60 0.25 59 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (SequenceViewSpec
+			  name: 'smallTeamHostsList'
+			  layout: (LayoutFrame 64 0.25 37 0 0 1 131 0)
+			  enableChannel: smallTeamServerEnabled
+			  tabable: true
+			  model: selectedSmallTeamHost
+			  hasHorizontalScrollBar: true
+			  hasVerticalScrollBar: true
+			  miniScrollerHorizontal: true
+			  useIndex: false
+			  sequenceList: listOfSmallTeamHosts
+			)
+		       (LabelSpec
+			  label: 'Host:'
+			  name: 'hostLabel'
+			  layout: (LayoutFrame 0 0.0 142 0 60 0.25 159 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'smallTeamHostEntryField'
+			  layout: (LayoutFrame 64 0.25 138 0 0 1 160 0)
+			  enableChannel: smallTeamServerEnabled
+			  tabable: true
+			  model: smallTeamHostEntry
+			  acceptChannel: acceptChannel
+			  acceptOnPointerLeave: true
+			)
+		       (HorizontalPanelViewSpec
+			  name: 'HorizontalPanel2'
+			  layout: (LayoutFrame 64 0.25 165 0 -1 1 190 0)
+			  horizontalLayout: fitSpace
+			  verticalLayout: center
+			  horizontalSpace: 3
+			  verticalSpace: 3
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (ActionButtonSpec
+				label: 'Add'
+				name: 'addButton'
+				translateLabel: true
+				tabable: true
+				model: addSmallTeamHost
+				enableChannel: addHostEnabled
+				extent: (Point 225 22)
+			      )
+			     (ActionButtonSpec
+				label: 'Remove'
+				name: 'removeButton'
+				translateLabel: true
+				tabable: true
+				model: removeSmallTeamHost
+				enableChannel: removeHostEnabled
+				extent: (Point 225 22)
+			      )
+			     )
+
+			  )
+			)
+		       )
+
+		    )
+		    extent: (Point 732 222)
+		  )
+		 (FramedBoxSpec
+		    label: '.NET Bridge'
+		    name: 'FramedBox1'
+		    labelPosition: topLeft
+		    translateLabel: true
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (VerticalPanelViewSpec
+			  name: 'VerticalPanel3'
+			  layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+			  horizontalLayout: left
+			  verticalLayout: center
+			  horizontalSpace: 3
+			  verticalSpace: 3
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (ViewSpec
+				name: 'Box6'
+				component:
+			       (SpecCollection
+				  collection: (
+				   (CheckBoxSpec
+				      label: 'Verbose'
+				      name: 'CheckBox5'
+				      layout: (LayoutFrame 5 0 5 0 600 0 22 0)
+				      enableChannel: hasDotNetBridge
+				      model: dotNetBridgeVerbose
+				      translateLabel: true
+				    )
+				   )
+
+				)
+				extent: (Point 696 23)
+			      )
+			     (ViewSpec
+				name: 'Box7'
+				component:
+			       (SpecCollection
+				  collection: (
+				   (CheckBoxSpec
+				      label: 'Bridge Runs in IDE'
+				      name: 'CheckBox6'
+				      layout: (LayoutFrame 5 0 3 0 600 0 25 0)
+				      enableChannel: hasDotNetBridge
+				      model: dotNetBridgeRunsInIDE
+				      translateLabel: true
+				    )
+				   )
+
+				)
+				extent: (Point 696 22)
+			      )
+			     )
+
+			  )
+			)
+		       (ActionButtonSpec
+			  label: 'Close all Connections'
+			  name: 'Button1'
+			  layout: (LayoutFrame -228 1 27 0 -3 1 49 0)
+			  translateLabel: true
+			  tabable: true
+			  model: closeAllDotNetConnections
+			)
+		       )
+
+		    )
+		    extent: (Point 732 83)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::MiscCommunicationSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
     |pw auth|
 
-    self 
-        readAspects:
-            #( 
-                smtpServerName
-                dotNetBridgeRunsInIDE
-                dotNetBridgeVerbose
-            )
-        from:currentUserPrefs.
+    self
+	readAspects:
+	    #(
+		smtpServerName
+		dotNetBridgeRunsInIDE
+		dotNetBridgeVerbose
+	    )
+	from:currentUserPrefs.
 
     SmallTeam notNil ifTrue:[
-        self smallTeamServerEnabled value:(SmallTeam isLoaded and:[SmallTeam serverRunning]).
-        self listOfSmallTeamHosts contents:(SmallTeam connectedHosts).
-    ].
-
-    self remoteBrowsingEnabled 
-        value:(self hasRemoteBrowsingSupport 
-               and:[SmalltalkShareServer isLoaded and:[SmalltalkShareServer serverRunning]]).
-
-    self windowMigrationEnabled 
-        value:(self hasWindowMigrationServer 
-               and:[ WindowMigrationServer isLoaded 
-               and:[ WindowMigrationServer serverRunning ]]).
-
-    
+	self smallTeamServerEnabled value:(SmallTeam isLoaded and:[SmallTeam serverRunning]).
+	self listOfSmallTeamHosts contents:(SmallTeam connectedHosts).
+    ].
+
+    self remoteBrowsingEnabled
+	value:(self hasRemoteBrowsingSupport
+	       and:[SmalltalkShareServer isLoaded and:[SmalltalkShareServer serverRunning]]).
+
+    self windowMigrationEnabled
+	value:(self hasWindowMigrationServer
+	       and:[ WindowMigrationServer isLoaded
+	       and:[ WindowMigrationServer serverRunning ]]).
+
+
     pw := nil.
     auth := false.
     (self hasWindowMigrationServer and:[WindowMigrationServer isLoaded]) ifTrue:[
-        pw := WindowMigrationServer password.
-        auth := self windowMigrationPassword value notNil
+	pw := WindowMigrationServer password.
+	auth := self windowMigrationPassword value notNil
     ].
 
     self windowMigrationPassword value:pw.
@@ -7786,82 +7921,83 @@
 !
 
 basicSaveSettings
-    self 
-        writeAspects:
-            #( 
-                smtpServerName
-                dotNetBridgeRunsInIDE
-                dotNetBridgeVerbose
-            )
-        to:currentUserPrefs.
+    self
+	writeAspects:
+	    #(
+		smtpServerName
+		dotNetBridgeRunsInIDE
+		dotNetBridgeVerbose
+	    )
+	to:currentUserPrefs.
 
     (SmallTeam notNil) ifTrue:[
-        SmallTeam connectedHosts copy do:[:host |
-            (self listOfSmallTeamHosts includes:host) ifFalse:[
-                SmallTeam removeHost:host.
-            ].
-        ].
-
-        self listOfSmallTeamHosts do:[:eachHost |
-            SmallTeam addHost:eachHost.
-        ].
-        self smallTeamServerEnabled value ifTrue:[
-            SmallTeam startServer
-        ] ifFalse:[
-            SmallTeam stopServer
-        ].
+	SmallTeam connectedHosts copy do:[:host |
+	    (self listOfSmallTeamHosts includes:host) ifFalse:[
+		SmallTeam removeHost:host.
+	    ].
+	].
+
+	self listOfSmallTeamHosts do:[:eachHost |
+	    SmallTeam addHost:eachHost.
+	].
+	self smallTeamServerEnabled value ifTrue:[
+	    SmallTeam startServer
+	] ifFalse:[
+	    SmallTeam stopServer
+	].
     ].
 
     self hasRemoteBrowsingSupport ifTrue:[
-        self remoteBrowsingEnabled value ifFalse:[
-            SmalltalkShareServer serverRunning ifTrue:[
-                SmalltalkShareServer killAll
-            ].
-        ] ifTrue:[
-            SmalltalkShareServer serverRunning ifFalse:[
-                SmalltalkShareServer start.
-                "/ must wait a bit; give it a chance to
-                "/ really start (before checking)
-                Delay waitForSeconds:0.5.
-                SmalltalkShareServer serverRunning ifFalse:[
-                    self warn:'SmalltalkShareServer startup failed (see stderr).'
-                ]
-            ].
-        ].
+	self remoteBrowsingEnabled value ifFalse:[
+	    SmalltalkShareServer serverRunning ifTrue:[
+		SmalltalkShareServer killAll
+	    ].
+	] ifTrue:[
+	    SmalltalkShareServer serverRunning ifFalse:[
+		SmalltalkShareServer start.
+		"/ must wait a bit; give it a chance to
+		"/ really start (before checking)
+		Delay waitForSeconds:0.5.
+		SmalltalkShareServer serverRunning ifFalse:[
+		    self warn:'SmalltalkShareServer startup failed (see stderr).'
+		]
+	    ].
+	].
     ].
 
     self hasWindowMigrationServer ifTrue:[
-        self windowMigrationAuthenticate value ifTrue:[
-            WindowMigrationServer password:self windowMigrationPassword value.
-        ] ifFalse:[
-            WindowMigrationServer password:nil    
-        ].
-        self windowMigrationEnabled value ifFalse:[
-            WindowMigrationServer serverRunning ifTrue:[
-                WindowMigrationServer stop
-            ].
-        ] ifTrue:[
-            WindowMigrationServer serverRunning ifFalse:[
-                WindowMigrationServer start.
-                "/ must wait a bit; give it a chance to
-                "/ really start (before checking)
-                Delay waitForSeconds:0.5.
-                WindowMigrationServer serverRunning ifFalse:[
-                    self warn:'WindowMigrationServer startup failed (see stderr).'
-                ]
-            ].
-        ].
+	self windowMigrationAuthenticate value ifTrue:[
+	    WindowMigrationServer password:self windowMigrationPassword value.
+	] ifFalse:[
+	    WindowMigrationServer password:nil
+	].
+	self windowMigrationEnabled value ifFalse:[
+	    WindowMigrationServer serverRunning ifTrue:[
+		WindowMigrationServer stop
+	    ].
+	] ifTrue:[
+	    WindowMigrationServer serverRunning ifFalse:[
+		WindowMigrationServer start.
+		"/ must wait a bit; give it a chance to
+		"/ really start (before checking)
+		Delay waitForSeconds:0.5.
+		WindowMigrationServer serverRunning ifFalse:[
+		    self warn:'WindowMigrationServer startup failed (see stderr).'
+		]
+	    ].
+	].
     ].
 
     "Modified: / 20-09-2007 / 16:05:01 / cg"
 ! !
 
+
 !AbstractSettingsApplication::MiscCommunicationSettingsAppl methodsFor:'aspects'!
 
 acceptChannel
 
     acceptChannel isNil ifTrue:[
-        acceptChannel := TriggerValue new.
+	acceptChannel := TriggerValue new.
     ].
     ^ acceptChannel.
 
@@ -7871,8 +8007,8 @@
 dotNetBridgeRunsInIDE
 
     dotNetBridgeRunsInIDE isNil ifTrue:[
-        dotNetBridgeRunsInIDE := false asValue.
-        dotNetBridgeRunsInIDE onChangeSend:#updateModifiedChannel to:self.
+	dotNetBridgeRunsInIDE := false asValue.
+	dotNetBridgeRunsInIDE onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ dotNetBridgeRunsInIDE.
 !
@@ -7880,8 +8016,8 @@
 dotNetBridgeVerbose
 
     dotNetBridgeVerbose isNil ifTrue:[
-        dotNetBridgeVerbose := false asValue.
-        dotNetBridgeVerbose onChangeSend:#updateModifiedChannel to:self.
+	dotNetBridgeVerbose := false asValue.
+	dotNetBridgeVerbose onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ dotNetBridgeVerbose.
 !
@@ -7889,11 +8025,11 @@
 enablePasswordCheck
 
     enablePasswordCheck isNil ifTrue:[
-        self hasWindowMigrationServer ifFalse:[
-            enablePasswordCheck := false asValue.
-        ] ifTrue:[
-            enablePasswordCheck := self windowMigrationEnabled.
-        ].
+	self hasWindowMigrationServer ifFalse:[
+	    enablePasswordCheck := false asValue.
+	] ifTrue:[
+	    enablePasswordCheck := self windowMigrationEnabled.
+	].
     ].
     ^ enablePasswordCheck.
 !
@@ -7905,8 +8041,8 @@
 listOfSmallTeamHosts
 
     listOfSmallTeamHosts isNil ifTrue:[
-        listOfSmallTeamHosts := List new.
-        listOfSmallTeamHosts onChangeSend:#updateModifiedChannel to:self.
+	listOfSmallTeamHosts := List new.
+	listOfSmallTeamHosts onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ listOfSmallTeamHosts.
 
@@ -7916,18 +8052,18 @@
 remoteBrowsingEnabled
 
     remoteBrowsingEnabled isNil ifTrue:[
-        remoteBrowsingEnabled := true asValue.
-        remoteBrowsingEnabled onChangeSend:#updateModifiedChannel to:self.
+	remoteBrowsingEnabled := true asValue.
+	remoteBrowsingEnabled onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ remoteBrowsingEnabled.
 !
 
 removeHostEnabled
-    ^ BlockValue 
-        forLogical:self smallTeamServerEnabled 
-        and:(BlockValue
-                with:[:h | h notEmptyOrNil] 
-                argument:self selectedSmallTeamHost)
+    ^ BlockValue
+	forLogical:self smallTeamServerEnabled
+	and:(BlockValue
+		with:[:h | h notEmptyOrNil]
+		argument:self selectedSmallTeamHost)
 
     "Created: / 12-11-2006 / 19:01:42 / cg"
     "Modified: / 08-03-2007 / 23:02:36 / cg"
@@ -7936,8 +8072,8 @@
 selectedSmallTeamHost
 
     selectedSmallTeamHost isNil ifTrue:[
-        selectedSmallTeamHost := nil asValue.
-        selectedSmallTeamHost addDependent:self
+	selectedSmallTeamHost := nil asValue.
+	selectedSmallTeamHost addDependent:self
     ].
     ^ selectedSmallTeamHost.
 
@@ -7947,8 +8083,8 @@
 smallTeamHostEntry
 
     smallTeamHostEntry isNil ifTrue:[
-        smallTeamHostEntry := nil asValue.
-        smallTeamHostEntry onChangeSend:#updateModifiedChannel to:self.
+	smallTeamHostEntry := nil asValue.
+	smallTeamHostEntry onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ smallTeamHostEntry.
 
@@ -7964,8 +8100,8 @@
 smallTeamServerEnabled
 
     smallTeamServerEnabled isNil ifTrue:[
-        smallTeamServerEnabled := false asValue.
-        smallTeamServerEnabled onChangeSend:#updateModifiedChannel to:self.
+	smallTeamServerEnabled := false asValue.
+	smallTeamServerEnabled onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ smallTeamServerEnabled.
 
@@ -7975,8 +8111,8 @@
 smtpServerName
 
     smtpServerName isNil ifTrue:[
-        smtpServerName := '' asValue.
-        smtpServerName onChangeSend:#updateModifiedChannel to:self.
+	smtpServerName := '' asValue.
+	smtpServerName onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ smtpServerName.
 
@@ -7986,8 +8122,8 @@
 windowMigrationAuthenticate
 
     windowMigrationAuthenticate isNil ifTrue:[
-        windowMigrationAuthenticate := true asValue.
-        windowMigrationAuthenticate onChangeSend:#updateModifiedChannel to:self.
+	windowMigrationAuthenticate := true asValue.
+	windowMigrationAuthenticate onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ windowMigrationAuthenticate.
 !
@@ -7995,8 +8131,8 @@
 windowMigrationEnabled
 
     windowMigrationEnabled isNil ifTrue:[
-        windowMigrationEnabled := true asValue.
-        windowMigrationEnabled onChangeSend:#updateModifiedChannel to:self.
+	windowMigrationEnabled := true asValue.
+	windowMigrationEnabled onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ windowMigrationEnabled.
 !
@@ -8004,16 +8140,17 @@
 windowMigrationPassword
 
     windowMigrationPassword isNil ifTrue:[
-        windowMigrationPassword := ValueHolder new.
-        windowMigrationPassword onChangeSend:#updateModifiedChannel to:self.
+	windowMigrationPassword := ValueHolder new.
+	windowMigrationPassword onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ windowMigrationPassword.
 ! !
 
+
 !AbstractSettingsApplication::MiscCommunicationSettingsAppl methodsFor:'change & update'!
 
 selectedSmallTeamHostChanged
-    self acceptChannel value:true.    
+    self acceptChannel value:true.
     self smallTeamHostEntry value:( self selectedSmallTeamHost value).
 
     "Created: / 12-11-2006 / 19:09:49 / cg"
@@ -8021,8 +8158,8 @@
 
 update:someting with:aParameter from:changedObject
     changedObject == selectedSmallTeamHost ifTrue:[
-        self selectedSmallTeamHostChanged.
-        ^ self
+	self selectedSmallTeamHostChanged.
+	^ self
     ].
 
     super update:someting with:aParameter from:changedObject
@@ -8030,12 +8167,14 @@
     "Created: / 12-11-2006 / 19:09:40 / cg"
 ! !
 
+
 !AbstractSettingsApplication::MiscCommunicationSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/communicationsSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::MiscCommunicationSettingsAppl methodsFor:'initialization & release'!
 
 initialize
@@ -8043,6 +8182,7 @@
     self readSettings.
 ! !
 
+
 !AbstractSettingsApplication::MiscCommunicationSettingsAppl methodsFor:'queries'!
 
 addHostEnabled
@@ -8058,31 +8198,31 @@
 
 hasUnsavedChanges
     (self
-        hasChangedAspectIn:
-            #(
-                smtpServerName
-                dotNetBridgeRunsInIDE
-                dotNetBridgeVerbose
-            )
-        asComparedTo:currentUserPrefs) ifTrue:[^ true].
+	hasChangedAspectIn:
+	    #(
+		smtpServerName
+		dotNetBridgeRunsInIDE
+		dotNetBridgeVerbose
+	    )
+	asComparedTo:currentUserPrefs) ifTrue:[^ true].
 
     SmallTeam notNil ifTrue:[
-        self smallTeamServerEnabled value ~= (SmallTeam isLoaded and:[SmallTeam serverRunning]) ifTrue:[^ true].
-        self listOfSmallTeamHosts asSet ~= (SmallTeam connectedHosts asSet) ifTrue:[^ true].
+	self smallTeamServerEnabled value ~= (SmallTeam isLoaded and:[SmallTeam serverRunning]) ifTrue:[^ true].
+	self listOfSmallTeamHosts asSet ~= (SmallTeam connectedHosts asSet) ifTrue:[^ true].
     ].
 
     (self hasRemoteBrowsingSupport and:[SmalltalkShareServer isLoaded]) ifTrue:[
-        self remoteBrowsingEnabled value ~~ SmalltalkShareServer serverRunning ifTrue:[^ true].
+	self remoteBrowsingEnabled value ~~ SmalltalkShareServer serverRunning ifTrue:[^ true].
     ].
     self hasWindowMigrationServer ifTrue:[
-        WindowMigrationServer isLoaded ifFalse:[
-            self windowMigrationEnabled value ifTrue:[
-                WindowMigrationServer autoload.
-            ].
-        ].
-        (self windowMigrationEnabled value ~~ WindowMigrationServer serverRunning) ifTrue:[^ true].
-        (self windowMigrationPassword value ~= WindowMigrationServer password)  ifTrue:[^ true].
-        (self windowMigrationAuthenticate value ~= self windowMigrationPassword value notNil) ifTrue:[^ true].
+	WindowMigrationServer isLoaded ifFalse:[
+	    self windowMigrationEnabled value ifTrue:[
+		WindowMigrationServer autoload.
+	    ].
+	].
+	(self windowMigrationEnabled value ~~ WindowMigrationServer serverRunning) ifTrue:[^ true].
+	(self windowMigrationPassword value ~= WindowMigrationServer password)  ifTrue:[^ true].
+	(self windowMigrationAuthenticate value ~= self windowMigrationPassword value notNil) ifTrue:[^ true].
     ].
     ^ false
 
@@ -8094,17 +8234,18 @@
     ^ WindowMigrationServer notNil
 ! !
 
+
 !AbstractSettingsApplication::MiscCommunicationSettingsAppl methodsFor:'user actions'!
 
 addSmallTeamHost
     |host|
 
-    acceptChannel value:true.    
+    acceptChannel value:true.
 
     host := self smallTeamHostEntry value.
 
     host size > 0 ifTrue:[
-        self listOfSmallTeamHosts add:host
+	self listOfSmallTeamHosts add:host
     ].
 
     "Modified: / 12-11-2006 / 19:06:22 / cg"
@@ -8112,26 +8253,27 @@
 
 closeAllDotNetConnections
     DOTNET::DotNet notNil ifTrue:[
-        DOTNET::DotNet exitAllLiveInstances
+	DOTNET::DotNet exitAllLiveInstances
     ].
 !
 
 removeSmallTeamHost
     |host|
 
-    acceptChannel value:true.    
+    acceptChannel value:true.
 
     host := self selectedSmallTeamHost value.
 
     host size > 0 ifTrue:[
-        self selectedSmallTeamHost value:nil.
-        self listOfSmallTeamHosts remove:host ifAbsent:[ self window beep ].
-        self smallTeamHostEntry value:''.
+	self selectedSmallTeamHost value:nil.
+	self listOfSmallTeamHosts remove:host ifAbsent:[ self window beep ].
+	self smallTeamHostEntry value:''.
     ].
 
     "Modified: / 12-11-2006 / 19:15:05 / cg"
 ! !
 
+
 !AbstractSettingsApplication::MiscDisplay2SettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -8150,8 +8292,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:'AbstractSettingsApplication::MiscDisplay2SettingsAppl class defaultIcon'
-        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:'AbstractSettingsApplication::MiscDisplay2SettingsAppl class defaultIcon'
+	ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@A @F@@@@@@@@@@@@@@@@@@@@@@@@@@X@A @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@CP4MCP4MCP4MCP4MCP4M@@@@@@@@@04B@0<ODADRD!!LT@ LCCP@@@@@@@@LM@ LOC1@QD!!HSE@HC@04@@@@@@@@CCPLN
 EQTUE!!XVE1\CC 8M@@@@@@@@@0TB@ HB@ HB@ HBB (JAP@@@@@@@@LE@ HB@ HB@ HB@ (JB T@@A(XF@@CAPHB@ HB@ HB@ (JB (E@ @@@@@@@0TB@ HB
@@ -8160,6 +8302,7 @@
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 32 96 80 240 240 240 192 192 192 64 144 128 80 80 80 48 112 112 48 128 128 32 96 96 48 128 112 224 224 224 32 80 80 64 96 96 0 80 128 128 128 128 16 144 192 16 128 176 16 128 160 0 112 160 0 112 144 0 96 144 16 112 144 0 96 128 0 80 112 100 100 100 127 127 127 255 255 0]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@8@@@8@@@P@@@P_?<P??<P??<P??<P??<8??=<???<??>8??<8??<8??=<??=<??=<??=<??9<@@@8@@@@') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::MiscDisplay2SettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -8177,130 +8320,131 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Display settings 2'
-          name: 'Display settings 2'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 671 591)
-        )
-        component: 
+	  label: 'Display settings 2'
+	  name: 'Display settings 2'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 671 591)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel1'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              horizontalLayout: fitSpace
-              verticalLayout: topSpace
-              horizontalSpace: 5
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (CheckBoxSpec
-                    label: 'Use Native Widgets (Experimental & Unfinished Feature)'
-                    name: 'NativeWidgets'
-                    enableChannel: displaySupportsNativeWidgets
-                    model: nativeWidgets
-                    translateLabel: true
-                    extent: (Point 661 22)
-                  )
-                 (CheckBoxSpec
-                    label: 'Use Native Dialogs (Experimental & Unfinished Feature)'
-                    name: 'NativeDialogs'
-                    enableChannel: displaySupportsNativeDialogs
-                    model: nativeDialogs
-                    translateLabel: true
-                    extent: (Point 661 22)
-                  )
-                 (CheckBoxSpec
-                    label: 'Use Native File Dialogs (Experimental & Unfinished Feature)'
-                    name: 'CheckBox1'
-                    enableChannel: displaySupportsNativeFileDialogs
-                    model: nativeFileDialogs
-                    translateLabel: true
-                    extent: (Point 661 22)
-                  )
-                 (ViewSpec
-                    name: 'SeparatingSpace1'
-                    extent: (Point 661 5)
-                  )
-                 (DividerSpec
-                    name: 'Separator1'
-                    extent: (Point 661 4)
-                  )
-                 (ViewSpec
-                    name: 'SeparatingSpace2'
-                    extent: (Point 661 5)
-                  )
-                 (CheckBoxSpec
-                    label: 'Shadows under PopUp Views'
-                    name: 'shadows'
-                    model: shadows
-                    translateLabel: true
-                    extent: (Point 661 22)
-                  )
-                 (CheckBoxSpec
-                    label: 'Opaque Variable Panel Resizing'
-                    name: 'opaqueVariablePanelResize'
-                    model: opaqueVariablePanelResizing
-                    translateLabel: true
-                    extent: (Point 661 22)
-                  )
-                 (CheckBoxSpec
-                    label: 'Opaque Table Column Resizing'
-                    name: 'opaqueTableColumnResize'
-                    model: opaqueTableColumnResizing
-                    translateLabel: true
-                    extent: (Point 661 22)
-                  )
-                 (ViewSpec
-                    name: 'SeparatingSpace3'
-                    extent: (Point 661 4)
-                  )
-                 (DividerSpec
-                    name: 'Separator3'
-                    extent: (Point 661 3)
-                  )
-                 (ViewSpec
-                    name: 'SeparatingSpace4'
-                    extent: (Point 661 3)
-                  )
-                 (CheckBoxSpec
-                    label: 'Right-Click in Title brings Window to Back'
-                    name: 'lowerOnRightClickInTitle'
-                    enableChannel: isWindowsDisplay
-                    model: lowerOnRightClickInTitle
-                    translateLabel: true
-                    extent: (Point 661 21)
-                  )
-                 (CheckBoxSpec
-                    label: 'Shift-Click in Title brings Window to Back'
-                    name: 'lowerOnShiftClickInTitle'
-                    enableChannel: isWindowsDisplay
-                    model: lowerOnShiftClickInTitle
-                    translateLabel: true
-                    extent: (Point 661 21)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel1'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      horizontalLayout: fitSpace
+	      verticalLayout: topSpace
+	      horizontalSpace: 5
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (CheckBoxSpec
+		    label: 'Use Native Widgets (Experimental & Unfinished Feature)'
+		    name: 'NativeWidgets'
+		    enableChannel: displaySupportsNativeWidgets
+		    model: nativeWidgets
+		    translateLabel: true
+		    extent: (Point 661 22)
+		  )
+		 (CheckBoxSpec
+		    label: 'Use Native Dialogs (Experimental & Unfinished Feature)'
+		    name: 'NativeDialogs'
+		    enableChannel: displaySupportsNativeDialogs
+		    model: nativeDialogs
+		    translateLabel: true
+		    extent: (Point 661 22)
+		  )
+		 (CheckBoxSpec
+		    label: 'Use Native File Dialogs (Experimental & Unfinished Feature)'
+		    name: 'CheckBox1'
+		    enableChannel: displaySupportsNativeFileDialogs
+		    model: nativeFileDialogs
+		    translateLabel: true
+		    extent: (Point 661 22)
+		  )
+		 (ViewSpec
+		    name: 'SeparatingSpace1'
+		    extent: (Point 661 5)
+		  )
+		 (DividerSpec
+		    name: 'Separator1'
+		    extent: (Point 661 4)
+		  )
+		 (ViewSpec
+		    name: 'SeparatingSpace2'
+		    extent: (Point 661 5)
+		  )
+		 (CheckBoxSpec
+		    label: 'Shadows under PopUp Views'
+		    name: 'shadows'
+		    model: shadows
+		    translateLabel: true
+		    extent: (Point 661 22)
+		  )
+		 (CheckBoxSpec
+		    label: 'Opaque Variable Panel Resizing'
+		    name: 'opaqueVariablePanelResize'
+		    model: opaqueVariablePanelResizing
+		    translateLabel: true
+		    extent: (Point 661 22)
+		  )
+		 (CheckBoxSpec
+		    label: 'Opaque Table Column Resizing'
+		    name: 'opaqueTableColumnResize'
+		    model: opaqueTableColumnResizing
+		    translateLabel: true
+		    extent: (Point 661 22)
+		  )
+		 (ViewSpec
+		    name: 'SeparatingSpace3'
+		    extent: (Point 661 4)
+		  )
+		 (DividerSpec
+		    name: 'Separator3'
+		    extent: (Point 661 3)
+		  )
+		 (ViewSpec
+		    name: 'SeparatingSpace4'
+		    extent: (Point 661 3)
+		  )
+		 (CheckBoxSpec
+		    label: 'Right-Click in Title brings Window to Back'
+		    name: 'lowerOnRightClickInTitle'
+		    enableChannel: isWindowsDisplay
+		    model: lowerOnRightClickInTitle
+		    translateLabel: true
+		    extent: (Point 661 21)
+		  )
+		 (CheckBoxSpec
+		    label: 'Shift-Click in Title brings Window to Back'
+		    name: 'lowerOnShiftClickInTitle'
+		    enableChannel: isWindowsDisplay
+		    model: lowerOnShiftClickInTitle
+		    translateLabel: true
+		    extent: (Point 661 21)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::MiscDisplay2SettingsAppl methodsFor:'actions'!
 
 aspectsFromUserPreferences
     ^ #(
-        opaqueVariablePanelResizing
-        opaqueTableColumnResizing
+	opaqueVariablePanelResizing
+	opaqueTableColumnResizing
     )
 
     "Modified: / 24-08-2010 / 17:26:38 / sr"
@@ -8311,24 +8455,24 @@
 
     currentScreen := Screen current.
 
-    self 
-        readAspects:
-            #( 
-                nativeWidgets
-                nativeDialogs
-                nativeFileDialogs
-            )
-        from:currentScreen.
-
-    self 
-        readAspects:(self aspectsFromUserPreferences)
-        from:currentUserPrefs.
+    self
+	readAspects:
+	    #(
+		nativeWidgets
+		nativeDialogs
+		nativeFileDialogs
+	    )
+	from:currentScreen.
+
+    self
+	readAspects:(self aspectsFromUserPreferences)
+	from:currentUserPrefs.
 
     self shadows value:PopUpView shadows.
 
-    currentScreen platformName = 'WIN32' ifTrue:[   
-        self lowerOnRightClickInTitle value:(currentScreen rightButtonIsLowerWindow:nil).
-        self lowerOnShiftClickInTitle value:(currentScreen shiftedLeftButtonIsLowerWindow:nil).
+    currentScreen platformName = 'WIN32' ifTrue:[
+	self lowerOnRightClickInTitle value:(currentScreen rightButtonIsLowerWindow:nil).
+	self lowerOnShiftClickInTitle value:(currentScreen shiftedLeftButtonIsLowerWindow:nil).
     ].
 
     "Modified: / 24-08-2010 / 16:43:39 / sr"
@@ -8342,39 +8486,40 @@
     currentScreen := Screen current.
 
     self displaySupportsNativeWidgets ifTrue:[
-        currentScreen nativeWidgets ~= self nativeWidgets value ifTrue:[
-            mustReopenTools := true.
-            currentScreen nativeWidgets:self nativeWidgets value.
-            currentUserPrefs nativeWidgets:self nativeWidgets value.
-        ].
+	currentScreen nativeWidgets ~= self nativeWidgets value ifTrue:[
+	    mustReopenTools := true.
+	    currentScreen nativeWidgets:self nativeWidgets value.
+	    currentUserPrefs nativeWidgets:self nativeWidgets value.
+	].
     ].
     self displaySupportsNativeDialogs ifTrue:[
-        currentScreen nativeDialogs:self nativeDialogs value.
-        currentUserPrefs nativeDialogs:self nativeDialogs value.
+	currentScreen nativeDialogs:self nativeDialogs value.
+	currentUserPrefs nativeDialogs:self nativeDialogs value.
     ].
     self displaySupportsNativeFileDialogs ifTrue:[
-        currentScreen nativeFileDialogs:self nativeFileDialogs value.
-        currentUserPrefs nativeFileDialogs:self nativeFileDialogs value.
+	currentScreen nativeFileDialogs:self nativeFileDialogs value.
+	currentUserPrefs nativeFileDialogs:self nativeFileDialogs value.
     ].
 
     PopUpView shadows:self shadows value.
 
-    self 
-        writeAspects:(self aspectsFromUserPreferences)
-        to:currentUserPrefs.
+    self
+	writeAspects:(self aspectsFromUserPreferences)
+	to:currentUserPrefs.
 
     currentScreen platformName = 'WIN32' ifTrue:[
-        currentScreen rightButtonIsLowerWindow:(self lowerOnRightClickInTitle value).
-        currentScreen shiftedLeftButtonIsLowerWindow:(self lowerOnShiftClickInTitle value).
+	currentScreen rightButtonIsLowerWindow:(self lowerOnRightClickInTitle value).
+	currentScreen shiftedLeftButtonIsLowerWindow:(self lowerOnShiftClickInTitle value).
     ].
 
     mustReopenTools ifTrue:[
-        self reopenToolsAfterChangedViewStyleSetting.
+	self reopenToolsAfterChangedViewStyleSetting.
     ].
 
     "Modified: / 24-08-2010 / 17:27:25 / sr"
 ! !
 
+
 !AbstractSettingsApplication::MiscDisplay2SettingsAppl methodsFor:'aspects'!
 
 displaySupportsNativeDialogs
@@ -8393,32 +8538,32 @@
 
 lowerOnRightClickInTitle
     lowerOnRightClickInTitle isNil ifTrue:[
-        lowerOnRightClickInTitle := true asValue.
-        lowerOnRightClickInTitle onChangeSend:#updateModifiedChannel to:self
+	lowerOnRightClickInTitle := true asValue.
+	lowerOnRightClickInTitle onChangeSend:#updateModifiedChannel to:self
     ].
     ^ lowerOnRightClickInTitle.
 !
 
 lowerOnShiftClickInTitle
     lowerOnShiftClickInTitle isNil ifTrue:[
-        lowerOnShiftClickInTitle := true asValue.
-        lowerOnShiftClickInTitle onChangeSend:#updateModifiedChannel to:self
+	lowerOnShiftClickInTitle := true asValue.
+	lowerOnShiftClickInTitle onChangeSend:#updateModifiedChannel to:self
     ].
     ^ lowerOnShiftClickInTitle.
 !
 
 nativeDialogs
     nativeDialogs isNil ifTrue:[
-        nativeDialogs := Screen current nativeDialogs asValue.
-        nativeDialogs onChangeSend:#updateModifiedChannel to:self
+	nativeDialogs := Screen current nativeDialogs asValue.
+	nativeDialogs onChangeSend:#updateModifiedChannel to:self
     ].
     ^ nativeDialogs.
 !
 
 nativeFileDialogs
     nativeFileDialogs isNil ifTrue:[
-        nativeFileDialogs := Screen current nativeFileDialogs asValue.
-        nativeFileDialogs onChangeSend:#updateModifiedChannel to:self
+	nativeFileDialogs := Screen current nativeFileDialogs asValue.
+	nativeFileDialogs onChangeSend:#updateModifiedChannel to:self
     ].
     ^ nativeFileDialogs
 
@@ -8427,42 +8572,44 @@
 
 nativeWidgets
     nativeWidgets isNil ifTrue:[
-        nativeWidgets := Screen current nativeWidgets asValue.
-        nativeWidgets onChangeSend:#updateModifiedChannel to:self
+	nativeWidgets := Screen current nativeWidgets asValue.
+	nativeWidgets onChangeSend:#updateModifiedChannel to:self
     ].
     ^ nativeWidgets.
 !
 
 opaqueTableColumnResizing
     opaqueTableColumnResize isNil ifTrue:[
-        opaqueTableColumnResize := true asValue.
-        opaqueTableColumnResize onChangeSend:#updateModifiedChannel to:self
+	opaqueTableColumnResize := true asValue.
+	opaqueTableColumnResize onChangeSend:#updateModifiedChannel to:self
     ].
     ^ opaqueTableColumnResize.
 !
 
 opaqueVariablePanelResizing
     opaqueVariablePanelResize isNil ifTrue:[
-        opaqueVariablePanelResize := true asValue.
-        opaqueVariablePanelResize onChangeSend:#updateModifiedChannel to:self
+	opaqueVariablePanelResize := true asValue.
+	opaqueVariablePanelResize onChangeSend:#updateModifiedChannel to:self
     ].
     ^ opaqueVariablePanelResize.
 !
 
 shadows
     shadows isNil ifTrue:[
-        shadows := PopUpView shadows asValue.
-        shadows onChangeSend:#updateModifiedChannel to:self
+	shadows := PopUpView shadows asValue.
+	shadows onChangeSend:#updateModifiedChannel to:self
     ].
     ^ shadows.
 ! !
 
+
 !AbstractSettingsApplication::MiscDisplay2SettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/miscSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::MiscDisplay2SettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -8471,23 +8618,23 @@
      currentScreen := Screen current.
 
      (self
-        hasChangedAspectIn:
-            #(
-                nativeWidgets
-                nativeDialogs
-                nativeFileDialogs
-            )
-        asComparedTo:currentScreen) ifTrue:[^ true].
+	hasChangedAspectIn:
+	    #(
+		nativeWidgets
+		nativeDialogs
+		nativeFileDialogs
+	    )
+	asComparedTo:currentScreen) ifTrue:[^ true].
 
      (self
-        hasChangedAspectIn:(self aspectsFromUserPreferences)
-        asComparedTo:currentUserPrefs) ifTrue:[^ true].
+	hasChangedAspectIn:(self aspectsFromUserPreferences)
+	asComparedTo:currentUserPrefs) ifTrue:[^ true].
 
     self shadows value ~= PopUpView shadows ifTrue:[^ true].
 
-    currentScreen platformName = 'WIN32' ifTrue:[   
-        (currentScreen rightButtonIsLowerWindow:nil) ~= (self lowerOnRightClickInTitle value) ifTrue:[^ true].
-        (currentScreen shiftedLeftButtonIsLowerWindow:nil) ~= (self lowerOnShiftClickInTitle value) ifTrue:[^ true].
+    currentScreen platformName = 'WIN32' ifTrue:[
+	(currentScreen rightButtonIsLowerWindow:nil) ~= (self lowerOnRightClickInTitle value) ifTrue:[^ true].
+	(currentScreen shiftedLeftButtonIsLowerWindow:nil) ~= (self lowerOnShiftClickInTitle value) ifTrue:[^ true].
     ].
     ^ false
 
@@ -8498,6 +8645,7 @@
      ^ Screen current platformName = 'WIN32'
 ! !
 
+
 !AbstractSettingsApplication::MiscDisplaySettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -8516,8 +8664,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:'AbstractSettingsApplication::MiscDisplaySettingsAppl class defaultIcon'
-        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:'AbstractSettingsApplication::MiscDisplaySettingsAppl class defaultIcon'
+	ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@@@@@@@@@DA@@@@@@@@@@@@@@@@@@@@@@@@@@DB@0D@@@@@@@@@@@@@@@@@@@@@@@DB@0LD@P@@@@@@@@@@@@@@@@@@@@DB@0LDA@DA@@@@@@@@@@@@
 @@@@@@TB@ HDA@XF@PD@@@@@@@@@@@@@@@TB@ HB@ \FA  H@P@@@@@@@@@@@@TB@ HB@ HBB@XIB@ A@@@@@@@@@@TB@ HB@ HB@ (KB@ KB0DC@@@@@@TB
 @ HB@ HB@ HB@ ,KB0LC@P@@@@@@APHB@ HB@ HBB (JB0LC@0HL@@4MCP4MCP4MCP4MCP4MCP4AC HE@@@MCPHCC0<PDQHRD1PB@0LM@ DE@@@@CP4B@0<O
@@ -8526,6 +8674,7 @@
 B (JB (E@@@@@@@@APTEAPTEAPTEAPTEAPTEAP@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 32 96 80 240 240 240 192 192 192 64 144 128 80 80 80 48 112 112 48 128 128 32 96 96 48 128 112 224 224 224 32 80 80 64 96 96 0 80 128 128 128 128 16 144 192 16 128 176 16 128 160 0 112 160 0 112 144 0 96 144 16 112 144 0 96 128 0 80 112]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@C@@@G @@O0@@_8@@?<@A?>@C??@G??0O??0G??8???0??? ???@??>@??<@??<@??<@??<@??<@??<@??<@??<@') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::MiscDisplaySettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -8543,250 +8692,251 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Display settings'
-          name: 'Display settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 445 497)
-        )
-        component: 
+	  label: 'Display settings'
+	  name: 'Display settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 445 497)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel1'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              horizontalLayout: fitSpace
-              verticalLayout: topSpace
-              horizontalSpace: 5
-              verticalSpace: 1
-              component: 
-             (SpecCollection
-                collection: (
-                 (CheckBoxSpec
-                    label: 'Beeper enabled'
-                    name: 'beepEnabled'
-                    visibilityChannel: false
-                    model: beepEnabled
-                    translateLabel: true
-                    extent: (Point 435 22)
-                  )
-                 (CheckBoxSpec
-                    label: 'Show Accelerator Keys in Menus'
-                    name: 'showAccelerators'
-                    model: showAccelerators
-                    translateLabel: true
-                    extent: (Point 435 22)
-                  )
-                 (ViewSpec
-                    name: 'SeparatingSpace1'
-                    extent: (Point 435 4)
-                  )
-                 (DividerSpec
-                    name: 'Separator1'
-                    extent: (Point 435 3)
-                  )
-                 (ViewSpec
-                    name: 'SeparatingSpace2'
-                    extent: (Point 435 3)
-                  )
-                 (CheckBoxSpec
-                    label: 'Keyboard Focus Follows Mouse'
-                    name: 'focusFollowsMouse'
-                    model: focusFollowsMouse
-                    translateLabel: true
-                    extent: (Point 435 22)
-                  )
-                 (CheckBoxSpec
-                    label: 'Views Catch Focus when Mapped'
-                    name: 'takeFocus'
-                    model: takeFocus
-                    translateLabel: true
-                    extent: (Point 435 22)
-                  )
-                 (CheckBoxSpec
-                    label: 'Boxes Return Focus to Previously Active View'
-                    name: 'returnFocus'
-                    model: returnFocus
-                    translateLabel: true
-                    extent: (Point 435 22)
-                  )
-                 (CheckBoxSpec
-                    label: 'Raise & Activate Windows on Click'
-                    name: 'activateOnClick'
-                    model: activateOnClick
-                    translateLabel: true
-                    extent: (Point 435 22)
-                  )
-                 (CheckBoxSpec
-                    label: 'Force Windows into Monitor''s Bounds'
-                    name: 'CheckBox2'
-                    activeHelpKey: forceWindowsIntoMonitorBounds
-                    model: forceWindowsIntoMonitorBounds
-                    translateLabel: true
-                    extent: (Point 435 22)
-                  )
-                 (ViewSpec
-                    name: 'SeparatingSpace3'
-                    extent: (Point 435 4)
-                  )
-                 (DividerSpec
-                    name: 'Separator2'
-                    extent: (Point 435 3)
-                  )
-                 (ViewSpec
-                    name: 'SeparatingSpace4'
-                    extent: (Point 435 3)
-                  )
-                 (CheckBoxSpec
-                    label: 'MouseWheel Focus Follows Mouse'
-                    name: 'mouseWheelFocusFollowsMouse'
-                    enableChannel: mouseWheelFocusFollowsMouseEnabled
-                    model: mouseWheelFocusFollowsMouse
-                    translateLabel: true
-                    extent: (Point 435 22)
-                  )
-                 (CheckBoxSpec
-                    label: 'CTRL-MouseWheel is Zoom'
-                    name: 'CheckBox1'
-                    model: allowMouseWheelZoom
-                    translateLabel: true
-                    extent: (Point 435 22)
-                  )
-                 (ViewSpec
-                    name: 'SeparatingSpace5'
-                    extent: (Point 435 4)
-                  )
-                 (DividerSpec
-                    name: 'Separator3'
-                    extent: (Point 435 4)
-                  )
-                 (ViewSpec
-                    name: 'SeparatingSpace6'
-                    extent: (Point 435 3)
-                  )
-                 (CheckBoxSpec
-                    label: 'Select on Right-Button-Press'
-                    name: 'selectOnRightClick'
-                    model: selectOnRightClick
-                    translateLabel: true
-                    extent: (Point 435 21)
-                  )
-                 (CheckBoxSpec
-                    label: 'Menu on Right-Button-Release'
-                    name: 'showRightButtonMenuOnRelease'
-                    model: showRightButtonMenuOnRelease
-                    translateLabel: true
-                    extent: (Point 435 21)
-                  )
-                 (ViewSpec
-                    name: 'SeparatingSpace7'
-                    extent: (Point 435 4)
-                  )
-                 (DividerSpec
-                    name: 'Separator4'
-                    extent: (Point 435 4)
-                  )
-                 (ViewSpec
-                    name: 'SeparatingSpace8'
-                    extent: (Point 435 4)
-                  )
-                 (ViewSpec
-                    name: 'Box1'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Label'
-                          name: 'Label1'
-                          layout: (LayoutFrame 0 0 0 0 170 0 17 0)
-                          translateLabel: true
-                          labelChannel: formatHostNameWindowLabel
-                          adjust: right
-                          useDefaultExtent: true
-                        )
-                       (LabelSpec
-                          label: 'Label'
-                          name: 'Label2'
-                          layout: (LayoutFrame 0 0.3 30 0 0 0.6 0 1)
-                          translateLabel: true
-                          labelChannel: formatHostNameWindowLabel1
-                          adjust: left
-                        )
-                       (LabelSpec
-                          label: 'Label'
-                          name: 'Label3'
-                          layout: (LayoutFrame 0 0.6 30 0 0 1 0 1)
-                          translateLabel: true
-                          labelChannel: formatHostNameWindowLabel2
-                          adjust: left
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 435 92)
-                  )
-                 (ViewSpec
-                    name: 'WindowLabelBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Window Label Format'
-                          name: 'hostNameInLabelHolder'
-                          layout: (LayoutFrame 0 0 -22 1 216 0 0 1)
-                          model: hostNameInLabelHolder
-                          translateLabel: true
-                        )
-                       (InputFieldSpec
-                          name: 'hostNameInLabelEntryField'
-                          layout: (LayoutFrame 218 0 -22 1 -5 1 0 1)
-                          enableChannel: hostNameInLabelHolder
-                          model: newWindowLabelFormat
-                          immediateAccept: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 435 30)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel1'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      horizontalLayout: fitSpace
+	      verticalLayout: topSpace
+	      horizontalSpace: 5
+	      verticalSpace: 1
+	      component:
+	     (SpecCollection
+		collection: (
+		 (CheckBoxSpec
+		    label: 'Beeper enabled'
+		    name: 'beepEnabled'
+		    visibilityChannel: false
+		    model: beepEnabled
+		    translateLabel: true
+		    extent: (Point 435 22)
+		  )
+		 (CheckBoxSpec
+		    label: 'Show Accelerator Keys in Menus'
+		    name: 'showAccelerators'
+		    model: showAccelerators
+		    translateLabel: true
+		    extent: (Point 435 22)
+		  )
+		 (ViewSpec
+		    name: 'SeparatingSpace1'
+		    extent: (Point 435 4)
+		  )
+		 (DividerSpec
+		    name: 'Separator1'
+		    extent: (Point 435 3)
+		  )
+		 (ViewSpec
+		    name: 'SeparatingSpace2'
+		    extent: (Point 435 3)
+		  )
+		 (CheckBoxSpec
+		    label: 'Keyboard Focus Follows Mouse'
+		    name: 'focusFollowsMouse'
+		    model: focusFollowsMouse
+		    translateLabel: true
+		    extent: (Point 435 22)
+		  )
+		 (CheckBoxSpec
+		    label: 'Views Catch Focus when Mapped'
+		    name: 'takeFocus'
+		    model: takeFocus
+		    translateLabel: true
+		    extent: (Point 435 22)
+		  )
+		 (CheckBoxSpec
+		    label: 'Boxes Return Focus to Previously Active View'
+		    name: 'returnFocus'
+		    model: returnFocus
+		    translateLabel: true
+		    extent: (Point 435 22)
+		  )
+		 (CheckBoxSpec
+		    label: 'Raise & Activate Windows on Click'
+		    name: 'activateOnClick'
+		    model: activateOnClick
+		    translateLabel: true
+		    extent: (Point 435 22)
+		  )
+		 (CheckBoxSpec
+		    label: 'Force Windows into Monitor''s Bounds'
+		    name: 'CheckBox2'
+		    activeHelpKey: forceWindowsIntoMonitorBounds
+		    model: forceWindowsIntoMonitorBounds
+		    translateLabel: true
+		    extent: (Point 435 22)
+		  )
+		 (ViewSpec
+		    name: 'SeparatingSpace3'
+		    extent: (Point 435 4)
+		  )
+		 (DividerSpec
+		    name: 'Separator2'
+		    extent: (Point 435 3)
+		  )
+		 (ViewSpec
+		    name: 'SeparatingSpace4'
+		    extent: (Point 435 3)
+		  )
+		 (CheckBoxSpec
+		    label: 'MouseWheel Focus Follows Mouse'
+		    name: 'mouseWheelFocusFollowsMouse'
+		    enableChannel: mouseWheelFocusFollowsMouseEnabled
+		    model: mouseWheelFocusFollowsMouse
+		    translateLabel: true
+		    extent: (Point 435 22)
+		  )
+		 (CheckBoxSpec
+		    label: 'CTRL-MouseWheel is Zoom'
+		    name: 'CheckBox1'
+		    model: allowMouseWheelZoom
+		    translateLabel: true
+		    extent: (Point 435 22)
+		  )
+		 (ViewSpec
+		    name: 'SeparatingSpace5'
+		    extent: (Point 435 4)
+		  )
+		 (DividerSpec
+		    name: 'Separator3'
+		    extent: (Point 435 4)
+		  )
+		 (ViewSpec
+		    name: 'SeparatingSpace6'
+		    extent: (Point 435 3)
+		  )
+		 (CheckBoxSpec
+		    label: 'Select on Right-Button-Press'
+		    name: 'selectOnRightClick'
+		    model: selectOnRightClick
+		    translateLabel: true
+		    extent: (Point 435 21)
+		  )
+		 (CheckBoxSpec
+		    label: 'Menu on Right-Button-Release'
+		    name: 'showRightButtonMenuOnRelease'
+		    model: showRightButtonMenuOnRelease
+		    translateLabel: true
+		    extent: (Point 435 21)
+		  )
+		 (ViewSpec
+		    name: 'SeparatingSpace7'
+		    extent: (Point 435 4)
+		  )
+		 (DividerSpec
+		    name: 'Separator4'
+		    extent: (Point 435 4)
+		  )
+		 (ViewSpec
+		    name: 'SeparatingSpace8'
+		    extent: (Point 435 4)
+		  )
+		 (ViewSpec
+		    name: 'Box1'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Label'
+			  name: 'Label1'
+			  layout: (LayoutFrame 0 0 0 0 170 0 17 0)
+			  translateLabel: true
+			  labelChannel: formatHostNameWindowLabel
+			  adjust: right
+			  useDefaultExtent: true
+			)
+		       (LabelSpec
+			  label: 'Label'
+			  name: 'Label2'
+			  layout: (LayoutFrame 0 0.3 30 0 0 0.6 0 1)
+			  translateLabel: true
+			  labelChannel: formatHostNameWindowLabel1
+			  adjust: left
+			)
+		       (LabelSpec
+			  label: 'Label'
+			  name: 'Label3'
+			  layout: (LayoutFrame 0 0.6 30 0 0 1 0 1)
+			  translateLabel: true
+			  labelChannel: formatHostNameWindowLabel2
+			  adjust: left
+			)
+		       )
+
+		    )
+		    extent: (Point 435 92)
+		  )
+		 (ViewSpec
+		    name: 'WindowLabelBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Window Label Format'
+			  name: 'hostNameInLabelHolder'
+			  layout: (LayoutFrame 0 0 -22 1 216 0 0 1)
+			  model: hostNameInLabelHolder
+			  translateLabel: true
+			)
+		       (InputFieldSpec
+			  name: 'hostNameInLabelEntryField'
+			  layout: (LayoutFrame 218 0 -22 1 -5 1 0 1)
+			  enableChannel: hostNameInLabelHolder
+			  model: newWindowLabelFormat
+			  immediateAccept: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 435 30)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::MiscDisplaySettingsAppl methodsFor:'actions'!
 
 aspectsFromUserPreferences
     ^ #(
-        beepEnabled
-        focusFollowsMouse
-        mouseWheelFocusFollowsMouse 
-        showRightButtonMenuOnRelease
-        selectOnRightClick
-        allowMouseWheelZoom
-        forceWindowsIntoMonitorBounds
+	beepEnabled
+	focusFollowsMouse
+	mouseWheelFocusFollowsMouse
+	showRightButtonMenuOnRelease
+	selectOnRightClick
+	allowMouseWheelZoom
+	forceWindowsIntoMonitorBounds
     )
 
     "Modified: / 22-10-2010 / 14:25:54 / cg"
 !
 
 basicReadSettings
-    self 
-        readAspects:(self aspectsFromUserPreferences)
-        from:currentUserPrefs.
+    self
+	readAspects:(self aspectsFromUserPreferences)
+	from:currentUserPrefs.
 
     self newWindowLabelFormat value:StandardSystemView windowLabelFormat.
     self hostNameInLabelHolder value:StandardSystemView includeHostNameInLabel.
@@ -8801,30 +8951,30 @@
 
     currentScreen := Screen current.
 
-    (self hostNameInLabelHolder value ~= StandardSystemView includeHostNameInLabel 
-    or:[self newWindowLabelFormat value ~= StandardSystemView windowLabelFormat]) ifTrue:[ 
-        StandardSystemView includeHostNameInLabel:self hostNameInLabelHolder value.
-        self newWindowLabelFormat value notNil ifTrue:[
-            StandardSystemView windowLabelFormat:self newWindowLabelFormat value
-        ].
-
-        Screen allScreens do:[:aDisplay |
-            aDisplay allViewsDo:[:aView |
-                |l|
-
-                aView isTopView ifTrue:[
-                    l := aView label.
-                    l notNil ifTrue:[
-                        aView label:(l , ' '); label:l.  "/ force a change
-                    ]
-                ]
-            ]
-        ]
-    ].
-
-    self 
-        writeAspects:(self aspectsFromUserPreferences)
-        to:currentUserPrefs.
+    (self hostNameInLabelHolder value ~= StandardSystemView includeHostNameInLabel
+    or:[self newWindowLabelFormat value ~= StandardSystemView windowLabelFormat]) ifTrue:[
+	StandardSystemView includeHostNameInLabel:self hostNameInLabelHolder value.
+	self newWindowLabelFormat value notNil ifTrue:[
+	    StandardSystemView windowLabelFormat:self newWindowLabelFormat value
+	].
+
+	Screen allScreens do:[:aDisplay |
+	    aDisplay allViewsDo:[:aView |
+		|l|
+
+		aView isTopView ifTrue:[
+		    l := aView label.
+		    l notNil ifTrue:[
+			aView label:(l , ' '); label:l.  "/ force a change
+		    ]
+		]
+	    ]
+	]
+    ].
+
+    self
+	writeAspects:(self aspectsFromUserPreferences)
+	to:currentUserPrefs.
 
     StandardSystemView returnFocusWhenClosingModalBoxes:self returnFocus value.
     StandardSystemView takeFocusWhenMapped:self takeFocus value.
@@ -8838,38 +8988,39 @@
 formatHostNameinWindowLabels
     |newFormat|
 
-    newFormat := Dialog 
-                request:'Define the Format of Window Labels:\\  %1 - Label\  %2 - Hostname\  %3 - Username\  %4 - ProcessId\' 
-                        withCRs
-                initialAnswer:newWindowLabelFormat.
+    newFormat := Dialog
+		request:'Define the Format of Window Labels:\\  %1 - Label\  %2 - Hostname\  %3 - Username\  %4 - ProcessId\'
+			withCRs
+		initialAnswer:newWindowLabelFormat.
     newFormat size > 0 ifTrue:[
-        newWindowLabelFormat := newFormat.
-        self updateModifiedChannel
+	newWindowLabelFormat := newFormat.
+	self updateModifiedChannel
     ]
 ! !
 
+
 !AbstractSettingsApplication::MiscDisplaySettingsAppl methodsFor:'aspects'!
 
 activateOnClick
     activateOnClick isNil ifTrue:[
-        activateOnClick := true asValue.
-        activateOnClick onChangeSend:#updateModifiedChannel to:self
+	activateOnClick := true asValue.
+	activateOnClick onChangeSend:#updateModifiedChannel to:self
     ].
     ^ activateOnClick.
 !
 
 allowMouseWheelZoom
     allowMouseWheelZoom isNil ifTrue:[
-        allowMouseWheelZoom := true asValue.
-        allowMouseWheelZoom onChangeSend:#updateModifiedChannel to:self
+	allowMouseWheelZoom := true asValue.
+	allowMouseWheelZoom onChangeSend:#updateModifiedChannel to:self
     ].
     ^ allowMouseWheelZoom.
 !
 
 beepEnabled
     beepEnabled isNil ifTrue:[
-        beepEnabled := true asValue.
-        beepEnabled onChangeSend:#updateModifiedChannel to:self
+	beepEnabled := true asValue.
+	beepEnabled onChangeSend:#updateModifiedChannel to:self
     ].
     ^ beepEnabled.
 !
@@ -8884,16 +9035,16 @@
 
 focusFollowsMouse
     focusFollowsMouse isNil ifTrue:[
-        focusFollowsMouse := true asValue.
-        focusFollowsMouse onChangeSend:#updateModifiedChannel to:self
+	focusFollowsMouse := true asValue.
+	focusFollowsMouse onChangeSend:#updateModifiedChannel to:self
     ].
     ^ focusFollowsMouse.
 !
 
 forceWindowsIntoMonitorBounds
     forceWindowsIntoMonitorBounds isNil ifTrue:[
-        forceWindowsIntoMonitorBounds := true asValue.
-        forceWindowsIntoMonitorBounds onChangeSend:#updateModifiedChannel to:self
+	forceWindowsIntoMonitorBounds := true asValue.
+	forceWindowsIntoMonitorBounds onChangeSend:#updateModifiedChannel to:self
     ].
     ^ forceWindowsIntoMonitorBounds.
 
@@ -8902,8 +9053,8 @@
 
 formatHostNameWindowLabel
     formatHostNameWindowLabel isNil ifTrue:[
-        formatHostNameWindowLabel := 
-            (resources string:'Window Label Format:').
+	formatHostNameWindowLabel :=
+	    (resources string:'Window Label Format:').
     ].
     ^ formatHostNameWindowLabel.
 
@@ -8913,11 +9064,11 @@
 
 formatHostNameWindowLabel1
     formatHostNameWindowLabel1 isNil ifTrue:[
-        formatHostNameWindowLabel1 := 
-            (resources string:
+	formatHostNameWindowLabel1 :=
+	    (resources string:
 '%1 - Label
-%2 - Hostname 
-%3 - Username')  
+%2 - Hostname
+%3 - Username')
     ].
     ^ formatHostNameWindowLabel1.
 
@@ -8927,8 +9078,8 @@
 
 formatHostNameWindowLabel2
     formatHostNameWindowLabel2 isNil ifTrue:[
-        formatHostNameWindowLabel2 := 
-            (resources string:
+	formatHostNameWindowLabel2 :=
+	    (resources string:
 '%4 - ProcessId
 %5 - TOP-Directory
 %6 - TOP-Path').
@@ -8941,29 +9092,29 @@
 
 hostNameInLabelHolder
     hostNameInLabelHolder isNil ifTrue:[
-        hostNameInLabelHolder := true asValue.
-        hostNameInLabelHolder onChangeSend:#updateModifiedChannel to:self
+	hostNameInLabelHolder := true asValue.
+	hostNameInLabelHolder onChangeSend:#updateModifiedChannel to:self
     ].
     ^ hostNameInLabelHolder.
 !
 
 mouseWheelFocusFollowsMouse
     mouseWheelFocusFollowsMouse isNil ifTrue:[
-        mouseWheelFocusFollowsMouse := true asValue.
-        mouseWheelFocusFollowsMouse onChangeSend:#updateModifiedChannel to:self
+	mouseWheelFocusFollowsMouse := true asValue.
+	mouseWheelFocusFollowsMouse onChangeSend:#updateModifiedChannel to:self
     ].
     ^ mouseWheelFocusFollowsMouse.
 !
 
 mouseWheelFocusFollowsMouseEnabled
     ^ BlockValue
-        forLogicalNot:(self focusFollowsMouse).
+	forLogicalNot:(self focusFollowsMouse).
 !
 
 newWindowLabelFormat
     newWindowLabelFormat isNil ifTrue:[
-        newWindowLabelFormat := true asValue.
-        newWindowLabelFormat onChangeSend:#updateModifiedChannel to:self
+	newWindowLabelFormat := true asValue.
+	newWindowLabelFormat onChangeSend:#updateModifiedChannel to:self
     ].
     ^ newWindowLabelFormat.
 
@@ -8972,56 +9123,58 @@
 
 returnFocus
     returnFocus isNil ifTrue:[
-        returnFocus := true asValue.
-        returnFocus onChangeSend:#updateModifiedChannel to:self
+	returnFocus := true asValue.
+	returnFocus onChangeSend:#updateModifiedChannel to:self
     ].
     ^ returnFocus.
 !
 
 selectOnRightClick
     selectOnRightClick isNil ifTrue:[
-        selectOnRightClick := true asValue.
-        selectOnRightClick onChangeSend:#updateModifiedChannel to:self
+	selectOnRightClick := true asValue.
+	selectOnRightClick onChangeSend:#updateModifiedChannel to:self
     ].
     ^ selectOnRightClick.
 !
 
 showAccelerators
     showAccelerators isNil ifTrue:[
-        showAccelerators := true asValue.
-        showAccelerators onChangeSend:#updateModifiedChannel to:self
+	showAccelerators := true asValue.
+	showAccelerators onChangeSend:#updateModifiedChannel to:self
     ].
     ^ showAccelerators.
 !
 
 showRightButtonMenuOnRelease
     showRightButtonMenuOnRelease isNil ifTrue:[
-        showRightButtonMenuOnRelease := true asValue.
-        showRightButtonMenuOnRelease onChangeSend:#updateModifiedChannel to:self
+	showRightButtonMenuOnRelease := true asValue.
+	showRightButtonMenuOnRelease onChangeSend:#updateModifiedChannel to:self
     ].
     ^ showRightButtonMenuOnRelease.
 !
 
 takeFocus
     takeFocus isNil ifTrue:[
-        takeFocus := true asValue.
-        takeFocus onChangeSend:#updateModifiedChannel to:self
+	takeFocus := true asValue.
+	takeFocus onChangeSend:#updateModifiedChannel to:self
     ].
     ^ takeFocus.
 ! !
 
+
 !AbstractSettingsApplication::MiscDisplaySettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/miscSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::MiscDisplaySettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
      (self
-        hasChangedAspectIn:(self aspectsFromUserPreferences)
-        asComparedTo:currentUserPrefs) ifTrue:[^ true].
+	hasChangedAspectIn:(self aspectsFromUserPreferences)
+	asComparedTo:currentUserPrefs) ifTrue:[^ true].
 
     self newWindowLabelFormat value ~= StandardSystemView windowLabelFormat ifTrue:[^ true].
     self hostNameInLabelHolder value ~= StandardSystemView includeHostNameInLabel ifTrue:[^ true].
@@ -9032,6 +9185,7 @@
     ^ false
 ! !
 
+
 !AbstractSettingsApplication::OsiSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -9040,6 +9194,7 @@
     ^ AbstractSettingsApplication::MiscCommunicationSettingsAppl defaultIcon.
 ! !
 
+
 !AbstractSettingsApplication::OsiSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -9057,209 +9212,210 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'OSI Protocols Settings'
-          name: 'OSI Protocols Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 600 550)
-        )
-        component: 
+	  label: 'OSI Protocols Settings'
+	  name: 'OSI Protocols Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 600 550)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel2'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (LabelSpec
-                    label: 'ACSE'
-                    name: 'Label1'
-                    translateLabel: true
-                    extent: (Point 600 22)
-                  )
-                 (ViewSpec
-                    name: 'Box1a'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Log Errors'
-                          name: 'CheckBox1'
-                          layout: (LayoutFrame 25 0 0 0 -2 0.33 22 0)
-                          enableChannel: osiACSEPresent
-                          model: osiACSEErrorLogging
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 27)
-                  )
-                 (ViewSpec
-                    name: 'Box1b'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Log Connections'
-                          name: 'CheckBox10'
-                          layout: (LayoutFrame 25 0 0 0 -2 0.66 22 0)
-                          enableChannel: osiACSEPresent
-                          model: osiACSEConnectionLogging
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 26)
-                  )
-                 (ViewSpec
-                    name: 'Box1c'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Log Data Transfer'
-                          name: 'CheckBox14'
-                          layout: (LayoutFrame 25 0 0 0 -2 1 22 0)
-                          enableChannel: osiACSEPresent
-                          model: osiACSEDataLogging
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 26)
-                  )
-                 (DividerSpec
-                    name: 'Separator1'
-                    extent: (Point 600 4)
-                  )
-                 (LabelSpec
-                    label: 'ROSE'
-                    name: 'Label2'
-                    translateLabel: true
-                    extent: (Point 600 22)
-                  )
-                 (ViewSpec
-                    name: 'Box4a'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Log Errors'
-                          name: 'CheckBox4'
-                          layout: (LayoutFrame 25 0 0 0 -2 0.33 22 0)
-                          enableChannel: osiROSEPresent
-                          model: osiROSEErrorLogging
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 25)
-                  )
-                 (ViewSpec
-                    name: 'Box4b'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Log Invoactions'
-                          name: 'CheckBox16'
-                          layout: (LayoutFrame 25 0 0 0 -2 0.66 22 0)
-                          enableChannel: osiROSEPresent
-                          model: osiROSEInvokationLogging
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 25)
-                  )
-                 (ViewSpec
-                    name: 'Box4c'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Log Responses'
-                          name: 'CheckBox20'
-                          layout: (LayoutFrame 25 0 0 0 -2 1 22 0)
-                          enableChannel: osiROSEPresent
-                          model: osiROSEResponseLogging
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 25)
-                  )
-                 (DividerSpec
-                    name: 'Separator2'
-                    extent: (Point 600 3)
-                  )
-                 (LabelSpec
-                    label: 'CMISE'
-                    name: 'Label3'
-                    translateLabel: true
-                    extent: (Point 600 22)
-                  )
-                 (ViewSpec
-                    name: 'Box7a'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Log Errors'
-                          name: 'CheckBox7'
-                          layout: (LayoutFrame 25 0 0 0 -2 0.33 22 0)
-                          enableChannel: osiCMISEPresent
-                          model: osiCMISEErrorLogging
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 22)
-                  )
-                 (ViewSpec
-                    name: 'Box7b'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Log Messages'
-                          name: 'CheckBox22'
-                          layout: (LayoutFrame 25 0 0 0 -2 0.66 22 0)
-                          enableChannel: osiCMISEPresent
-                          model: osiCMISEMessageLogging
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 22)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel2'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (LabelSpec
+		    label: 'ACSE'
+		    name: 'Label1'
+		    translateLabel: true
+		    extent: (Point 600 22)
+		  )
+		 (ViewSpec
+		    name: 'Box1a'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Log Errors'
+			  name: 'CheckBox1'
+			  layout: (LayoutFrame 25 0 0 0 -2 0.33 22 0)
+			  enableChannel: osiACSEPresent
+			  model: osiACSEErrorLogging
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 27)
+		  )
+		 (ViewSpec
+		    name: 'Box1b'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Log Connections'
+			  name: 'CheckBox10'
+			  layout: (LayoutFrame 25 0 0 0 -2 0.66 22 0)
+			  enableChannel: osiACSEPresent
+			  model: osiACSEConnectionLogging
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 26)
+		  )
+		 (ViewSpec
+		    name: 'Box1c'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Log Data Transfer'
+			  name: 'CheckBox14'
+			  layout: (LayoutFrame 25 0 0 0 -2 1 22 0)
+			  enableChannel: osiACSEPresent
+			  model: osiACSEDataLogging
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 26)
+		  )
+		 (DividerSpec
+		    name: 'Separator1'
+		    extent: (Point 600 4)
+		  )
+		 (LabelSpec
+		    label: 'ROSE'
+		    name: 'Label2'
+		    translateLabel: true
+		    extent: (Point 600 22)
+		  )
+		 (ViewSpec
+		    name: 'Box4a'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Log Errors'
+			  name: 'CheckBox4'
+			  layout: (LayoutFrame 25 0 0 0 -2 0.33 22 0)
+			  enableChannel: osiROSEPresent
+			  model: osiROSEErrorLogging
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 25)
+		  )
+		 (ViewSpec
+		    name: 'Box4b'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Log Invoactions'
+			  name: 'CheckBox16'
+			  layout: (LayoutFrame 25 0 0 0 -2 0.66 22 0)
+			  enableChannel: osiROSEPresent
+			  model: osiROSEInvokationLogging
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 25)
+		  )
+		 (ViewSpec
+		    name: 'Box4c'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Log Responses'
+			  name: 'CheckBox20'
+			  layout: (LayoutFrame 25 0 0 0 -2 1 22 0)
+			  enableChannel: osiROSEPresent
+			  model: osiROSEResponseLogging
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 25)
+		  )
+		 (DividerSpec
+		    name: 'Separator2'
+		    extent: (Point 600 3)
+		  )
+		 (LabelSpec
+		    label: 'CMISE'
+		    name: 'Label3'
+		    translateLabel: true
+		    extent: (Point 600 22)
+		  )
+		 (ViewSpec
+		    name: 'Box7a'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Log Errors'
+			  name: 'CheckBox7'
+			  layout: (LayoutFrame 25 0 0 0 -2 0.33 22 0)
+			  enableChannel: osiCMISEPresent
+			  model: osiCMISEErrorLogging
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 22)
+		  )
+		 (ViewSpec
+		    name: 'Box7b'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Log Messages'
+			  name: 'CheckBox22'
+			  layout: (LayoutFrame 25 0 0 0 -2 0.66 22 0)
+			  enableChannel: osiCMISEPresent
+			  model: osiCMISEMessageLogging
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 22)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::OsiSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
@@ -9267,44 +9423,45 @@
     self osiROSEPresent value:(OSI::ROSE notNil and:[OSI::ROSE isLoaded]).
     self osiCMISEPresent value:(OSI::CMISE notNil and:[OSI::CMISE isLoaded]).
     self osiACSEPresent value ifTrue:[
-        self osiACSEErrorLogging value:OSI::ACSE errorLogging.
-        self osiACSEConnectionLogging value:OSI::ACSE connectionLogging.
-        self osiACSEDataLogging value:OSI::ACSE dataLogging
+	self osiACSEErrorLogging value:OSI::ACSE errorLogging.
+	self osiACSEConnectionLogging value:OSI::ACSE connectionLogging.
+	self osiACSEDataLogging value:OSI::ACSE dataLogging
     ].
     self osiROSEPresent value ifTrue:[
-        self osiROSEErrorLogging value:OSI::ROSE errorLogging.
-        self osiROSEInvokationLogging value:OSI::ROSE invocationLogging.
-        self osiROSEResponseLogging value:OSI::ROSE responseLogging
+	self osiROSEErrorLogging value:OSI::ROSE errorLogging.
+	self osiROSEInvokationLogging value:OSI::ROSE invocationLogging.
+	self osiROSEResponseLogging value:OSI::ROSE responseLogging
     ].
     self osiCMISEPresent value ifTrue:[
-        self osiCMISEErrorLogging value:OSI::CMISE errorLogging.
-        self osiCMISEMessageLogging value:OSI::CMISE messageLogging
+	self osiCMISEErrorLogging value:OSI::CMISE errorLogging.
+	self osiCMISEMessageLogging value:OSI::CMISE messageLogging
     ].
 !
 
 basicSaveSettings
 
     self osiACSEPresent value ifTrue:[
-        OSI::ACSE errorLogging:self osiACSEErrorLogging value.
-        OSI::ACSE connectionLogging:self osiACSEConnectionLogging value.
-        OSI::ACSE dataLogging:self osiACSEDataLogging value.
+	OSI::ACSE errorLogging:self osiACSEErrorLogging value.
+	OSI::ACSE connectionLogging:self osiACSEConnectionLogging value.
+	OSI::ACSE dataLogging:self osiACSEDataLogging value.
     ].
     self osiROSEPresent value ifTrue:[
-        OSI::ROSE errorLogging:self osiROSEErrorLogging value.
-        OSI::ROSE invocationLogging:self osiROSEInvokationLogging value.
-        OSI::ROSE responseLogging:self osiROSEResponseLogging value.
+	OSI::ROSE errorLogging:self osiROSEErrorLogging value.
+	OSI::ROSE invocationLogging:self osiROSEInvokationLogging value.
+	OSI::ROSE responseLogging:self osiROSEResponseLogging value.
     ].
     self osiCMISEPresent value ifTrue:[
-        OSI::CMISE errorLogging:self osiCMISEErrorLogging value.
-        OSI::CMISE messageLogging:self osiCMISEMessageLogging value.
-    ].
-! !
+	OSI::CMISE errorLogging:self osiCMISEErrorLogging value.
+	OSI::CMISE messageLogging:self osiCMISEMessageLogging value.
+    ].
+! !
+
 
 !AbstractSettingsApplication::OsiSettingsAppl methodsFor:'aspects'!
 
 osiACSEConnectionLogging
     osiACSEConnectionLogging isNil ifTrue:[
-        osiACSEConnectionLogging := true asValue.
+	osiACSEConnectionLogging := true asValue.
     ].
     ^ osiACSEConnectionLogging.
 !
@@ -9312,56 +9469,56 @@
 osiACSEDataLogging
 
     osiACSEDataLogging isNil ifTrue:[
-        osiACSEDataLogging := true asValue.
+	osiACSEDataLogging := true asValue.
     ].
     ^ osiACSEDataLogging.
 !
 
 osiACSEErrorLogging
     osiACSEErrorLogging isNil ifTrue:[
-        osiACSEErrorLogging := true asValue.
+	osiACSEErrorLogging := true asValue.
     ].
     ^ osiACSEErrorLogging.
 !
 
 osiACSEPresent
     osiACSEPresent isNil ifTrue:[
-        osiACSEPresent := true asValue.
+	osiACSEPresent := true asValue.
     ].
     ^ osiACSEPresent.
 !
 
 osiCMISEErrorLogging
     osiCMISEErrorLogging isNil ifTrue:[
-        osiCMISEErrorLogging := true asValue.
+	osiCMISEErrorLogging := true asValue.
     ].
     ^ osiCMISEErrorLogging.
 !
 
 osiCMISEMessageLogging
     osiCMISEMessageLogging isNil ifTrue:[
-        osiCMISEMessageLogging := true asValue.
+	osiCMISEMessageLogging := true asValue.
     ].
     ^ osiCMISEMessageLogging.
 !
 
 osiCMISEPresent
     osiCMISEPresent isNil ifTrue:[
-        osiCMISEPresent := true asValue.
+	osiCMISEPresent := true asValue.
     ].
     ^ osiCMISEPresent.
 !
 
 osiROSEErrorLogging
     osiROSEErrorLogging isNil ifTrue:[
-        osiROSEErrorLogging := true asValue.
+	osiROSEErrorLogging := true asValue.
     ].
     ^ osiROSEErrorLogging.
 !
 
 osiROSEInvokationLogging
     osiROSEInvokationLogging isNil ifTrue:[
-        osiROSEInvokationLogging := true asValue.
+	osiROSEInvokationLogging := true asValue.
     ].
     ^ osiROSEInvokationLogging.
 !
@@ -9369,7 +9526,7 @@
 osiROSEPresent
 
     osiROSEPresent isNil ifTrue:[
-        osiROSEPresent := true asValue.
+	osiROSEPresent := true asValue.
     ].
     ^ osiROSEPresent.
 !
@@ -9377,34 +9534,37 @@
 osiROSEResponseLogging
 
     osiROSEResponseLogging isNil ifTrue:[
-        osiROSEResponseLogging := true asValue.
+	osiROSEResponseLogging := true asValue.
     ].
     ^ osiROSEResponseLogging.
 ! !
 
+
 !AbstractSettingsApplication::OsiSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/communicationsSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::OsiSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
 
     ^ ((
-        (self osiACSEPresent value and:[
-        self osiACSEErrorLogging value ~= OSI::ACSE errorLogging or:[
-        self osiACSEConnectionLogging value ~= OSI::ACSE connectionLogging or:[
-        self osiACSEDataLogging value ~= OSI::ACSE dataLogging]]]) or:[
-        self osiROSEPresent value and:[
-            self osiROSEErrorLogging value ~= OSI::ROSE errorLogging or:[
-            self osiROSEInvokationLogging value ~= OSI::ROSE invocationLogging or:[
-            self osiROSEResponseLogging value ~= OSI::ROSE responseLogging]]]]) or:[
-        (self osiCMISEPresent value) and:[
-        self osiCMISEErrorLogging value ~= OSI::CMISE errorLogging or:[
-        self osiCMISEMessageLogging value ~= OSI::CMISE messageLogging]]])
-! !
+	(self osiACSEPresent value and:[
+	self osiACSEErrorLogging value ~= OSI::ACSE errorLogging or:[
+	self osiACSEConnectionLogging value ~= OSI::ACSE connectionLogging or:[
+	self osiACSEDataLogging value ~= OSI::ACSE dataLogging]]]) or:[
+	self osiROSEPresent value and:[
+	    self osiROSEErrorLogging value ~= OSI::ROSE errorLogging or:[
+	    self osiROSEInvokationLogging value ~= OSI::ROSE invocationLogging or:[
+	    self osiROSEResponseLogging value ~= OSI::ROSE responseLogging]]]]) or:[
+	(self osiCMISEPresent value) and:[
+	self osiCMISEErrorLogging value ~= OSI::CMISE errorLogging or:[
+	self osiCMISEMessageLogging value ~= OSI::CMISE messageLogging]]])
+! !
+
 
 !AbstractSettingsApplication::PrinterSettingsAppl class methodsFor:'image specs'!
 
@@ -9414,6 +9574,7 @@
     ^ ToolbarIconLibrary printerIcon
 ! !
 
+
 !AbstractSettingsApplication::PrinterSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -9431,329 +9592,330 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Printer Settings'
-          name: 'Printer Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 616 385)
-        )
-        component: 
+	  label: 'Printer Settings'
+	  name: 'Printer Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 616 385)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel1'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (ViewSpec
-                    name: 'PrinterSelectBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Printer Type:'
-                          name: 'PrinterTypeLabel'
-                          layout: (LayoutFrame 0 0 5 0 181 0 27 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (ComboListSpec
-                          name: 'PrinterTypeComboList'
-                          layout: (LayoutFrame 183 0 5 0 -5 1 27 0)
-                          model: printerTypeSelection
-                          comboList: printerType
-                          useIndex: true
-                        )
-                       (LabelSpec
-                          label: 'Print Command:'
-                          name: 'PrinterCommandLabel'
-                          layout: (LayoutFrame 0 0 31 0 181 0 53 0)
-                          visibilityChannel: printerIsDrivenByCommand
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (ComboBoxSpec
-                          name: 'CommandComboBox'
-                          layout: (LayoutFrame 183 0 31 0 -5 1 53 0)
-                          visibilityChannel: printerIsDrivenByCommand
-                          enableChannel: printCommandEnabled
-                          model: printCommand
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: false
-                          comboList: printCommandList
-                          useIndex: false
-                        )
-                       (LabelSpec
-                          label: 'Print to File:'
-                          name: 'PrinterFileLabel'
-                          layout: (LayoutFrame 0 0 57 0 181 0 79 0)
-                          visibilityChannel: printerSupportsPrintingToFile
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (FilenameInputFieldSpec
-                          name: 'PrinterFileEntryField'
-                          layout: (LayoutFrame 183 0 57 0 -5 1 79 0)
-                          visibilityChannel: printerSupportsPrintingToFile
-                          model: printFilename
-                          immediateAccept: true
-                          acceptOnLeave: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: false
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 616 84)
-                  )
-                 (ViewSpec
-                    name: 'FormatBox'
-                    visibilityChannel: supportsPageFormatSetting
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (DividerSpec
-                          name: 'Separator1'
-                          layout: (LayoutFrame 0 0 0 0 0 1 3 0)
-                        )
-                       (LabelSpec
-                          label: 'Page Format:'
-                          name: 'PageFormatLabel'
-                          layout: (LayoutFrame 0 0 7 0 181 0 29 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (PopUpListSpec
-                          label: 'PopUp List'
-                          name: 'PageFormatPopUpList'
-                          layout: (LayoutFrame 183 0 7 0 333 0 29 0)
-                          tabable: true
-                          model: pageFormat
-                          enableChannel: enableFormat
-                          menu: pageFormatList
-                        )
-                       (CheckBoxSpec
-                          label: 'Landscape'
-                          name: 'LandscapeCheckBox'
-                          layout: (LayoutFrame 380 0 7 0 -5 1 29 0)
-                          enableChannel: enablelandscape
-                          model: landscape
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 616 30)
-                  )
-                 (ViewSpec
-                    name: 'MarginBox'
-                    visibilityChannel: supportsMarginSetting
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (DividerSpec
-                          name: 'Separator5'
-                          layout: (LayoutFrame 0 0 0 0 0 1 3 0)
-                        )
-                       (VerticalPanelViewSpec
-                          name: 'VerticalPanel2'
-                          layout: (LayoutFrame 0 0.0 4 0.0 0 1.0 4 1.0)
-                          horizontalLayout: fit
-                          verticalLayout: center
-                          horizontalSpace: 3
-                          verticalSpace: 3
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (ViewSpec
-                                name: 'Box1'
-                                component: 
-                               (SpecCollection
-                                  collection: (
-                                   (LabelSpec
-                                      label: 'Top Margin:'
-                                      name: 'TopMarginLabel'
-                                      layout: (LayoutFrame 0 0 0 0 181 0 21 0)
-                                      translateLabel: true
-                                      adjust: right
-                                    )
-                                   (InputFieldSpec
-                                      name: 'TopMarginEntryField'
-                                      layout: (LayoutFrame 183 0 0 0 283 0 21 0)
-                                      enableChannel: enableMargins
-                                      model: topMargin
-                                      type: numberOrNil
-                                      acceptOnReturn: true
-                                      acceptOnTab: true
-                                      acceptOnLostFocus: true
-                                      acceptOnPointerLeave: true
-                                    )
-                                   (PopUpListSpec
-                                      label: 'PopUp List'
-                                      name: 'PopUpList2'
-                                      layout: (LayoutFrame -155 1 0 0 -5 1 21 0)
-                                      tabable: true
-                                      model: selectedUnit
-                                      menu: unitList
-                                      useIndex: true
-                                    )
-                                   )
-                                 
-                                )
-                                extent: (Point 616 24)
-                              )
-                             (ViewSpec
-                                name: 'Box2'
-                                component: 
-                               (SpecCollection
-                                  collection: (
-                                   (LabelSpec
-                                      label: 'Left Margin:'
-                                      name: 'LeftMarginLabel'
-                                      layout: (LayoutFrame 0 0 0 0 181 0 21 0)
-                                      translateLabel: true
-                                      adjust: right
-                                    )
-                                   (InputFieldSpec
-                                      name: 'LeftMarginEntryField'
-                                      layout: (LayoutFrame 183 0 0 0 283 0 21 0)
-                                      enableChannel: enableMargins
-                                      model: leftMargin
-                                      type: numberOrNil
-                                      acceptOnReturn: true
-                                      acceptOnTab: true
-                                      acceptOnLostFocus: true
-                                      acceptOnPointerLeave: true
-                                    )
-                                   )
-                                 
-                                )
-                                extent: (Point 616 24)
-                              )
-                             (ViewSpec
-                                name: 'Box3'
-                                component: 
-                               (SpecCollection
-                                  collection: (
-                                   (LabelSpec
-                                      label: 'Right Margin:'
-                                      name: 'RightMarginLabel'
-                                      layout: (LayoutFrame 0 0 0 0 181 0 21 0)
-                                      translateLabel: true
-                                      adjust: right
-                                    )
-                                   (InputFieldSpec
-                                      name: 'RightMarginEntryField'
-                                      layout: (LayoutFrame 183 0 0 0 283 0 21 0)
-                                      enableChannel: enableMargins
-                                      model: rightMargin
-                                      type: numberOrNil
-                                      acceptOnReturn: true
-                                      acceptOnTab: true
-                                      acceptOnLostFocus: true
-                                      acceptOnPointerLeave: true
-                                    )
-                                   )
-                                 
-                                )
-                                extent: (Point 616 24)
-                              )
-                             (ViewSpec
-                                name: 'Box4'
-                                component: 
-                               (SpecCollection
-                                  collection: (
-                                   (LabelSpec
-                                      label: 'Bottom Margin:'
-                                      name: 'BottomMarginLabel'
-                                      layout: (LayoutFrame 0 0 0 0 181 0 21 0)
-                                      translateLabel: true
-                                      adjust: right
-                                    )
-                                   (InputFieldSpec
-                                      name: 'BottomMarginEntryField'
-                                      layout: (LayoutFrame 183 0 0 0 283 0 21 0)
-                                      enableChannel: enableMargins
-                                      model: bottomMargin
-                                      type: numberOrNil
-                                      acceptOnReturn: true
-                                      acceptOnTab: true
-                                      acceptOnLostFocus: true
-                                      acceptOnPointerLeave: true
-                                    )
-                                   )
-                                 
-                                )
-                                extent: (Point 616 24)
-                              )
-                             )
-                           
-                          )
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 616 100)
-                  )
-                 (ViewSpec
-                    name: 'ColorBox'
-                    visibilityChannel: supportsColorSetting
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (DividerSpec
-                          name: 'Separator6'
-                          layout: (LayoutFrame 0 0 0 0 0 1 3 0)
-                        )
-                       (CheckBoxSpec
-                          label: 'Color Printer'
-                          name: 'ColorPrinterCheckBox'
-                          layout: (LayoutFrame 183 0 4 0 782 0 25 0)
-                          enableChannel: enableColorBox
-                          model: supportsColor
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 616 27)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel1'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (ViewSpec
+		    name: 'PrinterSelectBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Printer Type:'
+			  name: 'PrinterTypeLabel'
+			  layout: (LayoutFrame 0 0 5 0 181 0 27 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (ComboListSpec
+			  name: 'PrinterTypeComboList'
+			  layout: (LayoutFrame 183 0 5 0 -5 1 27 0)
+			  model: printerTypeSelection
+			  comboList: printerType
+			  useIndex: true
+			)
+		       (LabelSpec
+			  label: 'Print Command:'
+			  name: 'PrinterCommandLabel'
+			  layout: (LayoutFrame 0 0 31 0 181 0 53 0)
+			  visibilityChannel: printerIsDrivenByCommand
+			  translateLabel: true
+			  adjust: right
+			)
+		       (ComboBoxSpec
+			  name: 'CommandComboBox'
+			  layout: (LayoutFrame 183 0 31 0 -5 1 53 0)
+			  visibilityChannel: printerIsDrivenByCommand
+			  enableChannel: printCommandEnabled
+			  model: printCommand
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: false
+			  comboList: printCommandList
+			  useIndex: false
+			)
+		       (LabelSpec
+			  label: 'Print to File:'
+			  name: 'PrinterFileLabel'
+			  layout: (LayoutFrame 0 0 57 0 181 0 79 0)
+			  visibilityChannel: printerSupportsPrintingToFile
+			  translateLabel: true
+			  adjust: right
+			)
+		       (FilenameInputFieldSpec
+			  name: 'PrinterFileEntryField'
+			  layout: (LayoutFrame 183 0 57 0 -5 1 79 0)
+			  visibilityChannel: printerSupportsPrintingToFile
+			  model: printFilename
+			  immediateAccept: true
+			  acceptOnLeave: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: false
+			)
+		       )
+
+		    )
+		    extent: (Point 616 84)
+		  )
+		 (ViewSpec
+		    name: 'FormatBox'
+		    visibilityChannel: supportsPageFormatSetting
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (DividerSpec
+			  name: 'Separator1'
+			  layout: (LayoutFrame 0 0 0 0 0 1 3 0)
+			)
+		       (LabelSpec
+			  label: 'Page Format:'
+			  name: 'PageFormatLabel'
+			  layout: (LayoutFrame 0 0 7 0 181 0 29 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (PopUpListSpec
+			  label: 'PopUp List'
+			  name: 'PageFormatPopUpList'
+			  layout: (LayoutFrame 183 0 7 0 333 0 29 0)
+			  tabable: true
+			  model: pageFormat
+			  enableChannel: enableFormat
+			  menu: pageFormatList
+			)
+		       (CheckBoxSpec
+			  label: 'Landscape'
+			  name: 'LandscapeCheckBox'
+			  layout: (LayoutFrame 380 0 7 0 -5 1 29 0)
+			  enableChannel: enablelandscape
+			  model: landscape
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 616 30)
+		  )
+		 (ViewSpec
+		    name: 'MarginBox'
+		    visibilityChannel: supportsMarginSetting
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (DividerSpec
+			  name: 'Separator5'
+			  layout: (LayoutFrame 0 0 0 0 0 1 3 0)
+			)
+		       (VerticalPanelViewSpec
+			  name: 'VerticalPanel2'
+			  layout: (LayoutFrame 0 0.0 4 0.0 0 1.0 4 1.0)
+			  horizontalLayout: fit
+			  verticalLayout: center
+			  horizontalSpace: 3
+			  verticalSpace: 3
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (ViewSpec
+				name: 'Box1'
+				component:
+			       (SpecCollection
+				  collection: (
+				   (LabelSpec
+				      label: 'Top Margin:'
+				      name: 'TopMarginLabel'
+				      layout: (LayoutFrame 0 0 0 0 181 0 21 0)
+				      translateLabel: true
+				      adjust: right
+				    )
+				   (InputFieldSpec
+				      name: 'TopMarginEntryField'
+				      layout: (LayoutFrame 183 0 0 0 283 0 21 0)
+				      enableChannel: enableMargins
+				      model: topMargin
+				      type: numberOrNil
+				      acceptOnReturn: true
+				      acceptOnTab: true
+				      acceptOnLostFocus: true
+				      acceptOnPointerLeave: true
+				    )
+				   (PopUpListSpec
+				      label: 'PopUp List'
+				      name: 'PopUpList2'
+				      layout: (LayoutFrame -155 1 0 0 -5 1 21 0)
+				      tabable: true
+				      model: selectedUnit
+				      menu: unitList
+				      useIndex: true
+				    )
+				   )
+
+				)
+				extent: (Point 616 24)
+			      )
+			     (ViewSpec
+				name: 'Box2'
+				component:
+			       (SpecCollection
+				  collection: (
+				   (LabelSpec
+				      label: 'Left Margin:'
+				      name: 'LeftMarginLabel'
+				      layout: (LayoutFrame 0 0 0 0 181 0 21 0)
+				      translateLabel: true
+				      adjust: right
+				    )
+				   (InputFieldSpec
+				      name: 'LeftMarginEntryField'
+				      layout: (LayoutFrame 183 0 0 0 283 0 21 0)
+				      enableChannel: enableMargins
+				      model: leftMargin
+				      type: numberOrNil
+				      acceptOnReturn: true
+				      acceptOnTab: true
+				      acceptOnLostFocus: true
+				      acceptOnPointerLeave: true
+				    )
+				   )
+
+				)
+				extent: (Point 616 24)
+			      )
+			     (ViewSpec
+				name: 'Box3'
+				component:
+			       (SpecCollection
+				  collection: (
+				   (LabelSpec
+				      label: 'Right Margin:'
+				      name: 'RightMarginLabel'
+				      layout: (LayoutFrame 0 0 0 0 181 0 21 0)
+				      translateLabel: true
+				      adjust: right
+				    )
+				   (InputFieldSpec
+				      name: 'RightMarginEntryField'
+				      layout: (LayoutFrame 183 0 0 0 283 0 21 0)
+				      enableChannel: enableMargins
+				      model: rightMargin
+				      type: numberOrNil
+				      acceptOnReturn: true
+				      acceptOnTab: true
+				      acceptOnLostFocus: true
+				      acceptOnPointerLeave: true
+				    )
+				   )
+
+				)
+				extent: (Point 616 24)
+			      )
+			     (ViewSpec
+				name: 'Box4'
+				component:
+			       (SpecCollection
+				  collection: (
+				   (LabelSpec
+				      label: 'Bottom Margin:'
+				      name: 'BottomMarginLabel'
+				      layout: (LayoutFrame 0 0 0 0 181 0 21 0)
+				      translateLabel: true
+				      adjust: right
+				    )
+				   (InputFieldSpec
+				      name: 'BottomMarginEntryField'
+				      layout: (LayoutFrame 183 0 0 0 283 0 21 0)
+				      enableChannel: enableMargins
+				      model: bottomMargin
+				      type: numberOrNil
+				      acceptOnReturn: true
+				      acceptOnTab: true
+				      acceptOnLostFocus: true
+				      acceptOnPointerLeave: true
+				    )
+				   )
+
+				)
+				extent: (Point 616 24)
+			      )
+			     )
+
+			  )
+			)
+		       )
+
+		    )
+		    extent: (Point 616 100)
+		  )
+		 (ViewSpec
+		    name: 'ColorBox'
+		    visibilityChannel: supportsColorSetting
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (DividerSpec
+			  name: 'Separator6'
+			  layout: (LayoutFrame 0 0 0 0 0 1 3 0)
+			)
+		       (CheckBoxSpec
+			  label: 'Color Printer'
+			  name: 'ColorPrinterCheckBox'
+			  layout: (LayoutFrame 183 0 4 0 782 0 25 0)
+			  enableChannel: enableColorBox
+			  model: supportsColor
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 616 27)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::PrinterSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
     Printer notNil ifTrue:[
-        self 
-            readAspects:
-                #( 
-                    topMargin
-                    bottomMargin
-                    leftMargin
-                    rightMargin
-                    landscape
-                    printCommand
-                    printFilename
-                    supportsColor
-                )
-            from:Printer.
+	self
+	    readAspects:
+		#(
+		    topMargin
+		    bottomMargin
+		    leftMargin
+		    rightMargin
+		    landscape
+		    printCommand
+		    printFilename
+		    supportsColor
+		)
+	    from:Printer.
     ].
 
     self printerTypeSelection value:(self possiblePrinters identityIndexOf:Printer ifAbsent:1).
@@ -9771,33 +9933,34 @@
     Printer printFilename:(printFilename value isEmptyOrNil ifTrue:[nil] ifFalse:[printFilename value]).
 
     Printer supportsPageSizes ifTrue:[
-        Printer pageFormat:(self pageFormat value).
-        Printer landscape:(self landscape value).
+	Printer pageFormat:(self pageFormat value).
+	Printer landscape:(self landscape value).
     ].
     Printer supportsMargins ifTrue:[
-        | unit |
-        self selectedUnit value == 2 ifTrue:[
-            unit := #mm
-        ] ifFalse:[
-            unit := #inch
-        ].
-        Printer topMargin:(UnitConverter convert:(self topMargin value) from:unit to:#inch).
-        Printer leftMargin:(UnitConverter convert:(self leftMargin value) from:unit to:#inch).
-        Printer rightMargin:(UnitConverter convert:(self rightMargin value) from:unit to:#inch).
-        Printer bottomMargin:(UnitConverter convert:(self bottomMargin value) from:unit to:#inch).
+	| unit |
+	self selectedUnit value == 2 ifTrue:[
+	    unit := #mm
+	] ifFalse:[
+	    unit := #inch
+	].
+	Printer topMargin:(UnitConverter convert:(self topMargin value) from:unit to:#inch).
+	Printer leftMargin:(UnitConverter convert:(self leftMargin value) from:unit to:#inch).
+	Printer rightMargin:(UnitConverter convert:(self rightMargin value) from:unit to:#inch).
+	Printer bottomMargin:(UnitConverter convert:(self bottomMargin value) from:unit to:#inch).
     ].
     Printer supportsPostscript ifTrue:[
-        Printer supportsColor:self supportsColor value.
-    ].
-! !
+	Printer supportsColor:self supportsColor value.
+    ].
+! !
+
 
 !AbstractSettingsApplication::PrinterSettingsAppl methodsFor:'aspects'!
 
 bottomMargin
 
     bottomMargin isNil ifTrue:[
-        bottomMargin := Printer bottomMargin asValue.
-        bottomMargin onChangeSend:#updateModifiedChannel to:self
+	bottomMargin := Printer bottomMargin asValue.
+	bottomMargin onChangeSend:#updateModifiedChannel to:self
     ].
     ^ bottomMargin.
 !
@@ -9805,7 +9968,7 @@
 enableColorBox
 
     enableColorBox isNil ifTrue:[
-        enableColorBox := true asValue.
+	enableColorBox := true asValue.
     ].
     ^ enableColorBox.
 !
@@ -9813,7 +9976,7 @@
 enableFormat
 
     enableFormat isNil ifTrue:[
-        enableFormat := true asValue.
+	enableFormat := true asValue.
     ].
     ^ enableFormat.
 !
@@ -9821,7 +9984,7 @@
 enableMargins
 
     enableMargins isNil ifTrue:[
-        enableMargins := true asValue.
+	enableMargins := true asValue.
     ].
     ^ enableMargins.
 !
@@ -9829,7 +9992,7 @@
 enablelandscape
 
     enablelandscape isNil ifTrue:[
-        enablelandscape := true asValue.
+	enablelandscape := true asValue.
     ].
     ^ enablelandscape.
 !
@@ -9837,8 +10000,8 @@
 landscape
 
     landscape isNil ifTrue:[
-        landscape := (Printer isNil ifTrue:[ false ] ifFalse:[ Printer landscape])  asValue.
-        landscape onChangeSend:#updateModifiedChannel to:self
+	landscape := (Printer isNil ifTrue:[ false ] ifFalse:[ Printer landscape])  asValue.
+	landscape onChangeSend:#updateModifiedChannel to:self
     ].
     ^ landscape.
 
@@ -9848,8 +10011,8 @@
 leftMargin
 
     leftMargin isNil ifTrue:[
-        leftMargin := Printer leftMargin asValue.
-        leftMargin onChangeSend:#updateModifiedChannel to:self
+	leftMargin := Printer leftMargin asValue.
+	leftMargin onChangeSend:#updateModifiedChannel to:self
     ].
     ^ leftMargin.
 !
@@ -9857,15 +10020,15 @@
 pageFormat
 
     pageFormat isNil ifTrue:[
-        self pageFormatList notEmpty ifTrue:[
-            | index |
-            (index := self pageFormatList indexOf:#a4) ~~ 0 ifTrue:[
-                pageFormat := index asValue.
-            ] ifFalse:[
-                pageFormat := 1 asValue.
-            ]
-        ].
-        pageFormat onChangeSend:#updateModifiedChannel to:self
+	self pageFormatList notEmpty ifTrue:[
+	    | index |
+	    (index := self pageFormatList indexOf:#a4) ~~ 0 ifTrue:[
+		pageFormat := index asValue.
+	    ] ifFalse:[
+		pageFormat := 1 asValue.
+	    ]
+	].
+	pageFormat onChangeSend:#updateModifiedChannel to:self
     ].
     ^ pageFormat.
 !
@@ -9873,7 +10036,7 @@
 pageFormatList
 
     pageFormatList isNil ifTrue:[
-        pageFormatList := (Printer isNil ifTrue:[ #() ] ifFalse: [Printer defaultPageFormats]) asList.
+	pageFormatList := (Printer isNil ifTrue:[ #() ] ifFalse: [Printer defaultPageFormats]) asList.
     ].
     ^ pageFormatList.
 
@@ -9883,16 +10046,16 @@
 printCommand
 
     printCommand isNil ifTrue:[
-        printCommand := Printer printCommand asValue.
-        printCommand onChangeSend:#updateModifiedChannel to:self
+	printCommand := Printer printCommand asValue.
+	printCommand onChangeSend:#updateModifiedChannel to:self
     ].
     ^ printCommand.
 !
 
 printCommandEnabled
-    ^ BlockValue 
-        with:[:m | m isEmptyOrNil]
-        argument:(self printFilename).
+    ^ BlockValue
+	with:[:m | m isEmptyOrNil]
+	argument:(self printFilename).
 
     "Modified: / 08-03-2007 / 23:02:40 / cg"
 !
@@ -9900,15 +10063,15 @@
 printCommandList
 
     printCommandList isNil ifTrue:[
-        printCommandList := self commandList asList.
+	printCommandList := self commandList asList.
     ].
     ^ printCommandList.
 !
 
 printFilename
     printFilename isNil ifTrue:[
-        printFilename := (Printer isNil ifTrue:[''] ifFalse:[Printer printFilename ? '']) asValue.
-        printFilename onChangeSend:#updateModifiedChannel to:self
+	printFilename := (Printer isNil ifTrue:[''] ifFalse:[Printer printFilename ? '']) asValue.
+	printFilename onChangeSend:#updateModifiedChannel to:self
     ].
     ^ printFilename.
 
@@ -9917,19 +10080,19 @@
 
 printerIsDrivenByCommand
     printerIsDrivenByCommand isNil ifTrue:[
-        printerIsDrivenByCommand := BlockValue
-            with:[:m | 
-                |printer|
-
-                printer := self possiblePrinters at:m value ifAbsent:nil.
-                printer notNil ifTrue:[
-                    printer isDrivenByCommand
-                ] ifFalse:[
-                    self breakPoint:#expecco. 
-                    false
-                ]
-            ] 
-            argument:self printerTypeSelection.
+	printerIsDrivenByCommand := BlockValue
+	    with:[:m |
+		|printer|
+
+		printer := self possiblePrinters at:m value ifAbsent:nil.
+		printer notNil ifTrue:[
+		    printer isDrivenByCommand
+		] ifFalse:[
+		    self breakPoint:#expecco.
+		    false
+		]
+	    ]
+	    argument:self printerTypeSelection.
     ].
     ^ printerIsDrivenByCommand.
 
@@ -9939,9 +10102,9 @@
 
 printerSupportsPrintingToFile
     printerSupportsPrintingToFile isNil ifTrue:[
-        printerSupportsPrintingToFile := BlockValue
-                                        with:[:m | (self possiblePrinters at:m) supportsPrintingToFile ] 
-                                        argument:self printerTypeSelection.
+	printerSupportsPrintingToFile := BlockValue
+					with:[:m | (self possiblePrinters at:m) supportsPrintingToFile ]
+					argument:self printerTypeSelection.
     ].
     ^ printerSupportsPrintingToFile.
 
@@ -9951,8 +10114,8 @@
 
 printerType
     printerType isNil ifTrue:[
-        printerType := (self possiblePrinters collect:[:cls | cls printerTypeName]) asList.
-        printerType onChangeSend:#updateModifiedChannel to:self
+	printerType := (self possiblePrinters collect:[:cls | cls printerTypeName]) asList.
+	printerType onChangeSend:#updateModifiedChannel to:self
     ].
     ^ printerType.
 
@@ -9963,16 +10126,16 @@
     |printerIndex|
 
     printerTypeSelection isNil ifTrue:[
-        printerIndex := self possiblePrinters identityIndexOf:Printer.
-        printerIndex == 0 ifTrue:[
-           self possiblePrinters isEmptyOrNil ifTrue:[self error:'no printer'].
-           printerIndex := 1.
-        ].
-        printerTypeSelection := printerIndex asValue.
-
-        printerTypeSelection addDependent:self.
-        printerTypeSelection changed.
-        printerTypeSelection onChangeSend:#updateModifiedChannel to:self
+	printerIndex := self possiblePrinters identityIndexOf:Printer.
+	printerIndex == 0 ifTrue:[
+	   self possiblePrinters isEmptyOrNil ifTrue:[self error:'no printer'].
+	   printerIndex := 1.
+	].
+	printerTypeSelection := printerIndex asValue.
+
+	printerTypeSelection addDependent:self.
+	printerTypeSelection changed.
+	printerTypeSelection onChangeSend:#updateModifiedChannel to:self
     ].
     ^ printerTypeSelection.
 
@@ -9982,8 +10145,8 @@
 rightMargin
 
     rightMargin isNil ifTrue:[
-        rightMargin := Printer rightMargin asValue.
-        rightMargin onChangeSend:#updateModifiedChannel to:self
+	rightMargin := Printer rightMargin asValue.
+	rightMargin onChangeSend:#updateModifiedChannel to:self
     ].
     ^ rightMargin.
 !
@@ -9991,10 +10154,10 @@
 selectedUnit
 
     selectedUnit isNil ifTrue:[
-        selectedUnit := 1 asValue.
-        selectedUnit addDependent:self.
-        selectedUnit changed.
-        selectedUnit onChangeSend:#updateModifiedChannel to:self
+	selectedUnit := 1 asValue.
+	selectedUnit addDependent:self.
+	selectedUnit changed.
+	selectedUnit onChangeSend:#updateModifiedChannel to:self
     ].
     ^ selectedUnit.
 !
@@ -10002,8 +10165,8 @@
 supportsColor
 
     supportsColor isNil ifTrue:[
-        supportsColor := (Printer notNil and:[Printer supportsColor]) asValue.
-        supportsColor onChangeSend:#updateModifiedChannel to:self
+	supportsColor := (Printer notNil and:[Printer supportsColor]) asValue.
+	supportsColor onChangeSend:#updateModifiedChannel to:self
     ].
     ^ supportsColor.
 
@@ -10012,9 +10175,9 @@
 
 supportsColorSetting
     supportsColorSetting isNil ifTrue:[
-        supportsColorSetting := BlockValue
-                                        with:[:m | (self possiblePrinters at:m) supportsColor ] 
-                                        argument:self printerTypeSelection.
+	supportsColorSetting := BlockValue
+					with:[:m | (self possiblePrinters at:m) supportsColor ]
+					argument:self printerTypeSelection.
     ].
     ^ supportsColorSetting.
 
@@ -10024,9 +10187,9 @@
 
 supportsMarginSetting
     supportsMarginSetting isNil ifTrue:[
-        supportsMarginSetting := BlockValue
-                                        with:[:m | (self possiblePrinters at:m) supportsMargins ] 
-                                        argument:self printerTypeSelection.
+	supportsMarginSetting := BlockValue
+					with:[:m | (self possiblePrinters at:m) supportsMargins ]
+					argument:self printerTypeSelection.
     ].
     ^ supportsMarginSetting.
 
@@ -10036,9 +10199,9 @@
 
 supportsPageFormatSetting
     supportsPageFormatSetting isNil ifTrue:[
-        supportsPageFormatSetting := BlockValue
-                                        with:[:m | (self possiblePrinters at:m) supportsPageSizes ] 
-                                        argument:self printerTypeSelection.
+	supportsPageFormatSetting := BlockValue
+					with:[:m | (self possiblePrinters at:m) supportsPageSizes ]
+					argument:self printerTypeSelection.
     ].
     ^ supportsPageFormatSetting.
 
@@ -10049,8 +10212,8 @@
 topMargin
 
     topMargin isNil ifTrue:[
-        topMargin := (Printer isNil ifTrue:[ 0 ] ifFalse:[ Printer topMargin ]) asValue.
-        topMargin onChangeSend:#updateModifiedChannel to:self
+	topMargin := (Printer isNil ifTrue:[ 0 ] ifFalse:[ Printer topMargin ]) asValue.
+	topMargin onChangeSend:#updateModifiedChannel to:self
     ].
     ^ topMargin.
 
@@ -10060,23 +10223,24 @@
 unitList
 
     unitList isNil ifTrue:[
-        unitList := #('inch' 'mm') asList.
+	unitList := #('inch' 'mm') asList.
     ].
     ^ unitList.
 ! !
 
+
 !AbstractSettingsApplication::PrinterSettingsAppl methodsFor:'change & update'!
 
 printerTypeSelectionChanged
     | p hasPageSize hasMargins|
 
     self printerType selectionIndex ~~ 0 ifTrue:[
-        p := self possiblePrinters at:(self printerType selectionIndex).
-        hasPageSize := p supportsPageSizes. 
-        hasMargins := p supportsMargins. 
+	p := self possiblePrinters at:(self printerType selectionIndex).
+	hasPageSize := p supportsPageSizes.
+	hasMargins := p supportsMargins.
     ] ifFalse:[
-        hasPageSize := false.
-        hasMargins := false.
+	hasPageSize := false.
+	hasMargins := false.
     ].
 !
 
@@ -10084,26 +10248,26 @@
     | p hasPageSize hasMargins unit printerSupportsPostscript|
 
     self printerTypeSelection value ~~ 0 ifTrue:[
-        p := self possiblePrinters at:(self printerTypeSelection value).
-        hasPageSize := p supportsPageSizes. 
-        hasMargins := p supportsMargins. 
+	p := self possiblePrinters at:(self printerTypeSelection value).
+	hasPageSize := p supportsPageSizes.
+	hasMargins := p supportsMargins.
     ] ifFalse:[
-        hasPageSize := false.
-        hasMargins := false.
+	hasPageSize := false.
+	hasMargins := false.
     ].
     self enablelandscape value:hasPageSize.
     self enableFormat value:hasPageSize.
     hasPageSize ifTrue:[
-        self pageFormat value:(p pageFormat).
-        self landscape value:(p landscape).
-    ] ifFalse:[ 
+	self pageFormat value:(p pageFormat).
+	self landscape value:(p landscape).
+    ] ifFalse:[
        self landscape value:false.
     ].
     hasMargins ifTrue:[
        self selectedUnit value == 2 ifTrue:[
-           unit := #mm
+	   unit := #mm
        ] ifFalse:[
-           unit := #inch
+	   unit := #inch
        ].
 
        self topMargin value:(UnitConverter convert:p topMargin from:#inch to:unit).
@@ -10111,26 +10275,26 @@
        self rightMargin value:(UnitConverter convert:p rightMargin from:#inch to:unit).
        self bottomMargin value:(UnitConverter convert:p bottomMargin from:#inch to:unit).
 
-    ] ifFalse:[ 
+    ] ifFalse:[
     ].
     self enableMargins value:hasMargins.
 
-    p notNil ifTrue:[ 
-        | newCommandList |
-        newCommandList := p defaultCommands.
-        newCommandList notNil ifTrue:[
-            self printCommandList contents:(newCommandList asList).
-            self printCommandList changed.
-        ].
-        self printCommand value:(p printCommand).
-        self printFilename value:(p printFilename ? '').
+    p notNil ifTrue:[
+	| newCommandList |
+	newCommandList := p defaultCommands.
+	newCommandList notNil ifTrue:[
+	    self printCommandList contents:(newCommandList asList).
+	    self printCommandList changed.
+	].
+	self printCommand value:(p printCommand).
+	self printFilename value:(p printFilename ? '').
     ].
     printerSupportsPostscript := p notNil and:[p supportsPostscript].
     self enableColorBox value:printerSupportsPostscript.
     printerSupportsPostscript ifFalse:[
-        self supportsColor value:false
+	self supportsColor value:false
     ] ifTrue:[
-        self supportsColor value:(Printer supportsColor).
+	self supportsColor value:(Printer supportsColor).
     ]
 
     "Modified: / 07-08-2006 / 15:24:06 / fm"
@@ -10141,33 +10305,35 @@
 
 update:something with:aParameter from:changedObject
     (changedObject == self selectedUnit or:[changedObject == self printerTypeSelection]) ifTrue:[
-        self printerTypeSelectionOrUnitListChanged.
-        ^ self.
+	self printerTypeSelectionOrUnitListChanged.
+	^ self.
     ].
 
     super update:something with:aParameter from:changedObject
 ! !
 
+
 !AbstractSettingsApplication::PrinterSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/printerSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::PrinterSettingsAppl methodsFor:'queries'!
 
 commandList
     commandList isNil ifTrue:[
-        commandList := resources string:'PRINT_COMMANDS' default:nil.
-        commandList isNil ifTrue:[
-            commandList := PrinterStream defaultCommands.
-            commandList isNil ifTrue:[
-                commandList := #('lpr' 'lp').
-            ].
-            (commandList includes:self printCommand value) ifFalse:[
-                commandList := commandList copyWith:self printCommand value.
-            ].
-        ].
+	commandList := resources string:'PRINT_COMMANDS' default:nil.
+	commandList isNil ifTrue:[
+	    commandList := PrinterStream defaultCommands.
+	    commandList isNil ifTrue:[
+		commandList := #('lpr' 'lp').
+	    ].
+	    (commandList includes:self printCommand value) ifFalse:[
+		commandList := commandList copyWith:self printCommand value.
+	    ].
+	].
     ].
     ^ commandList
 !
@@ -10178,9 +10344,9 @@
     Printer isNil ifTrue:[^ false].
 
     self selectedUnit value == 2 ifTrue:[
-        unit := #mm
+	unit := #mm
     ] ifFalse:[
-        unit := #inch
+	unit := #inch
     ].
     printer := self possiblePrinters at:(self printerTypeSelection value).
 
@@ -10190,17 +10356,17 @@
     (Printer printFilename ? '') ~= (self printFilename value ? '') ifTrue:[^ true].
 
     Printer supportsPageSizes ifTrue:[
-        Printer pageFormat ~= self pageFormat value ifTrue:[^ true].
-        Printer landscape ~= (self landscape value) ifTrue:[^ true].
+	Printer pageFormat ~= self pageFormat value ifTrue:[^ true].
+	Printer landscape ~= (self landscape value) ifTrue:[^ true].
     ].
     Printer supportsMargins ifTrue:[
-        Printer topMargin ~= ((UnitConverter convert:(self topMargin value asFloat) from:unit to:#inch) asFloat) ifTrue:[^ true].
-        Printer leftMargin ~= ((UnitConverter convert:(self leftMargin value asFloat) from:unit to:#inch) asFloat) ifTrue:[^ true].
-        Printer rightMargin ~= ((UnitConverter convert:(self rightMargin value asFloat) from:unit to:#inch) asFloat) ifTrue:[^ true].
-        Printer bottomMargin ~= ((UnitConverter convert:(self bottomMargin value asFloat) from:unit to:#inch) asFloat) ifTrue:[^ true].
+	Printer topMargin ~= ((UnitConverter convert:(self topMargin value asFloat) from:unit to:#inch) asFloat) ifTrue:[^ true].
+	Printer leftMargin ~= ((UnitConverter convert:(self leftMargin value asFloat) from:unit to:#inch) asFloat) ifTrue:[^ true].
+	Printer rightMargin ~= ((UnitConverter convert:(self rightMargin value asFloat) from:unit to:#inch) asFloat) ifTrue:[^ true].
+	Printer bottomMargin ~= ((UnitConverter convert:(self bottomMargin value asFloat) from:unit to:#inch) asFloat) ifTrue:[^ true].
     ].
     Printer supportsPostscript ifTrue:[
-        Printer supportsColor ~= self supportsColor value ifTrue:[^ true].
+	Printer supportsColor ~= self supportsColor value ifTrue:[^ true].
     ].
     ^ false
 
@@ -10209,11 +10375,12 @@
 
 possiblePrinters
     possiblePrinters isNil ifTrue:[
-        possiblePrinters := PrinterStream withAllSubclasses asArray.
+	possiblePrinters := PrinterStream withAllSubclasses asArray.
     ].
     ^ possiblePrinters
 ! !
 
+
 !AbstractSettingsApplication::ProcessorSchedulerSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -10232,13 +10399,14 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::ProcessorSchedulerSettingsAppl class defaultIcon'
-        ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::ProcessorSchedulerSettingsAppl class defaultIcon'
+	ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@@@@@@@@@@@@@@@ADQ@@@@@@@@@@DQBL2QD@@@@@@@DH"D3D"I@@@@@@DHQDSLQDRP@@@@DHQDQDQDQD$@@@DHQDQDQDQDQI@@@P!!DQDQDQDQD$@@AB
 DQDQDQLQDRP@ABDQDQDQLQDQD$@DHQDQDSLQDQDRP@P!!DQDQL1DQDQI@ABDQDQDQLQDQD$@@P!!DQDQDSDQD$@@ABDQDQDQD1DRP@@DHQDQDQDQLQI@@@ABDQ
 DQDQDQI@@@@@P!!DQDQDQI@@@@@@DH"DQD"I@@@@@@@ADP"H$Q@@@@@@@@@@DQD@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255 128 128 128 0 128 128 192 192 192]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@G @@?<@A?>@C??@G?? O??0O??0O??0_??8_??8_??8_??8O??0O??0O??0G?? C??@A?>@@?<@@G @@@@@') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::ProcessorSchedulerSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -10256,64 +10424,65 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Processor and Scheduler Settings'
-          name: 'Processor and Scheduler Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 14 46 614 366)
-        )
-        component: 
+	  label: 'Processor and Scheduler Settings'
+	  name: 'Processor and Scheduler Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 14 46 614 366)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel2'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: topSpace
-              horizontalSpace: 3
-              verticalSpace: 5
-              component: 
-             (SpecCollection
-                collection: (
-                 (CheckBoxSpec
-                    label: 'Preemptive Scheduling'
-                    name: 'CheckBox11'
-                    model: preemptive
-                    translateLabel: true
-                    extent: (Point 600 22)
-                  )
-                 (ViewSpec
-                    name: 'Box2'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Dynamic Priorities'
-                          name: 'CheckBox12'
-                          layout: (LayoutFrame 30 0.0 0 0 0 1.0 22 0)
-                          enableChannel: preemptive
-                          model: dynamicPrios
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 23)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel2'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fit
+	      verticalLayout: topSpace
+	      horizontalSpace: 3
+	      verticalSpace: 5
+	      component:
+	     (SpecCollection
+		collection: (
+		 (CheckBoxSpec
+		    label: 'Preemptive Scheduling'
+		    name: 'CheckBox11'
+		    model: preemptive
+		    translateLabel: true
+		    extent: (Point 600 22)
+		  )
+		 (ViewSpec
+		    name: 'Box2'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Dynamic Priorities'
+			  name: 'CheckBox12'
+			  layout: (LayoutFrame 30 0.0 0 0 0 1.0 22 0)
+			  enableChannel: preemptive
+			  model: dynamicPrios
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 23)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::ProcessorSchedulerSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
@@ -10324,41 +10493,44 @@
 basicSaveSettings
 
     Processor isTimeSlicing ~~ self preemptive value ifTrue:[
-        self preemptive value ifTrue:[
-            Processor startTimeSlicing
-        ] ifFalse:[
-            Processor stopTimeSlicing
-        ]
+	self preemptive value ifTrue:[
+	    Processor startTimeSlicing
+	] ifFalse:[
+	    Processor stopTimeSlicing
+	]
     ].
     Processor supportDynamicPriorities ~~ self dynamicPrios value ifTrue:[
-        Processor supportDynamicPriorities:self dynamicPrios value
-    ].
-! !
+	Processor supportDynamicPriorities:self dynamicPrios value
+    ].
+! !
+
 
 !AbstractSettingsApplication::ProcessorSchedulerSettingsAppl methodsFor:'aspects'!
 
 dynamicPrios
     dynamicPrios isNil ifTrue:[
-        dynamicPrios := true asValue.
-        dynamicPrios onChangeSend:#updateModifiedChannel to:self.
+	dynamicPrios := true asValue.
+	dynamicPrios onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ dynamicPrios.
 !
 
 preemptive
     preemptive isNil ifTrue:[
-        preemptive := true asValue.
-        preemptive onChangeSend:#updateModifiedChannel to:self.
+	preemptive := true asValue.
+	preemptive onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ preemptive.
 ! !
 
+
 !AbstractSettingsApplication::ProcessorSchedulerSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/miscSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::ProcessorSchedulerSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -10367,6 +10539,7 @@
     ^ false
 ! !
 
+
 !AbstractSettingsApplication::RDoItServerSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -10385,13 +10558,14 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::RDoItServerSettingsAppl class defaultIcon'
-        ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::RDoItServerSettingsAppl class defaultIcon'
+	ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&Y&Y&Y&Y&Y3@@@BY&Y&Y&Y&Y''L@@@I$[]7_]7]6,1P@@&QL3L>:1GZ3E@@BY83L3L>D]+LT@@I
 ''#L3L38Q6,1P@@&[L3L8 @]7''E@@BYE3NH (@@_LT@@I$WNBBDAH L1P@@&Q]8P$IB"@3E@@BY4W $ B$@CLT@@L3L $!!H@$"@1P@@3L2DJB DJHCE@@@@UV
 !!B D @A%T@@@@@BBP$IH @@@@@@@@HPHHB"@@@@@@@@@@@!!H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 64 80 96 240 240 0 80 112 112 240 240 240 64 64 64 48 64 80 64 96 96 128 128 0 128 128 128 48 80 80 80 96 96 112 112 112 64 80 80 80 96 112]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@G??0G??0G??8G??8G??8G??8G??8G??8G??8G??8G??8G??8G??8A??8@O?@@O?@@G>@@A0@@@@@') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::RDoItServerSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -10409,331 +10583,332 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'RDoIt Server Settings'
-          name: 'RDoIt Server Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 600 550)
-        )
-        component: 
+	  label: 'RDoIt Server Settings'
+	  name: 'RDoIt Server Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 600 550)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (FramedBoxSpec
-              label: 'RDoIt'
-              name: 'RDoItFramedBox'
-              layout: (LayoutFrame 0 0 0 0 0 1 219 0)
-              labelPosition: topLeft
-              translateLabel: true
-              component: 
-             (SpecCollection
-                collection: (
-                 (VerticalPanelViewSpec
-                    name: 'VerticalPanel2'
-                    layout: (LayoutFrame 0 0.0 5 0.0 0 1.0 0 1.0)
-                    horizontalLayout: fit
-                    verticalLayout: top
-                    horizontalSpace: 0
-                    verticalSpace: 0
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ViewSpec
-                          name: 'Box1'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Remote doits enabled'
-                                name: 'CheckBox1'
-                                layout: (LayoutFrame 0 0 0 0 -5 1 22 0)
-                                enableChannel: hasRDoitServerClass
-                                model: rDoitsEnabled
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 566 25)
-                        )
-                       (ViewSpec
-                          name: 'Box2'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (LabelSpec
-                                label: 'Port/Path:'
-                                name: 'Label2'
-                                layout: (LayoutFrame 0 0 0 0 150 0 22 0)
-                                translateLabel: true
-                                adjust: right
-                              )
-                             (InputFieldSpec
-                                name: 'EntryField1'
-                                layout: (LayoutFrame 150 0 0 0 -5 1 22 0)
-                                enableChannel: rDoitsEnabled
-                                model: rDoitServerPortOrPath
-                                acceptOnReturn: true
-                                acceptOnTab: true
-                                acceptOnLostFocus: true
-                                acceptOnPointerLeave: true
-                              )
-                             (LabelSpec
-                                label: 'Port# for Tcp Socket; Path for Unix Domain Socket (Unix only).'
-                                name: 'Label3'
-                                layout: (LayoutFrame 150 0 28 0 596 0 50 0)
-                                translateLabel: true
-                                adjust: left
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 566 60)
-                        )
-                       (ViewSpec
-                          name: 'Box13'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Local Connections Only'
-                                name: 'CheckBox10'
-                                layout: (LayoutFrame 150 0 0 0 -5 1 22 0)
-                                enableChannel: rDoitsEnabled
-                                model: rDoitEnabledOnlyViaLocalConnection
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 566 25)
-                        )
-                       (ViewSpec
-                          name: 'Box3'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Log errors'
-                                name: 'CheckBox2'
-                                layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
-                                enableChannel: rDoitsEnabled
-                                model: rDoitErrorLogging
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 566 25)
-                        )
-                       (ViewSpec
-                          name: 'Box4'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Log requests'
-                                name: 'CheckBox3'
-                                layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
-                                enableChannel: rDoitsEnabled
-                                model: rDoitLogging
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 566 24)
-                        )
-                       (ViewSpec
-                          name: 'Box5'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Debug errors'
-                                name: 'CheckBox4'
-                                layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
-                                enableChannel: rDoitsEnabled
-                                model: rDoitErrorDebugging
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 566 23)
-                        )
-                       )
-                     
-                    )
-                  )
-                 )
-               
-              )
-            )
-           (FramedBoxSpec
-              label: 'JavaScript-Scripting via Telnet'
-              name: 'ScriptingFramedBox'
-              layout: (LayoutFrame 0 0 218 0 0 1 433 0)
-              labelPosition: topLeft
-              translateLabel: true
-              component: 
-             (SpecCollection
-                collection: (
-                 (VerticalPanelViewSpec
-                    name: 'VerticalPanel3'
-                    layout: (LayoutFrame 0 0.0 5 0.0 0 1.0 0 1.0)
-                    horizontalLayout: fit
-                    verticalLayout: top
-                    horizontalSpace: 0
-                    verticalSpace: 0
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ViewSpec
-                          name: 'Box6'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'JavaScript-Scripting enabled'
-                                name: 'CheckBox5'
-                                layout: (LayoutFrame 0 0 0 0 -5 1 22 0)
-                                enableChannel: hasScriptingServerClass
-                                model: scriptingEnabled
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 566 25)
-                        )
-                       (ViewSpec
-                          name: 'Box12'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (LabelSpec
-                                label: 'Port:'
-                                name: 'Label4'
-                                layout: (LayoutFrame 0 0 0 0 150 0 22 0)
-                                translateLabel: true
-                                adjust: right
-                              )
-                             (InputFieldSpec
-                                name: 'EntryField2'
-                                layout: (LayoutFrame 150 0 0 0 -5 1 22 0)
-                                enableChannel: rDoitsEnabled
-                                model: scriptingServerPortOrPath
-                                isReadOnly: true
-                                acceptOnReturn: true
-                                acceptOnTab: true
-                                acceptOnLostFocus: true
-                                acceptOnPointerLeave: true
-                              )
-                             (LabelSpec
-                                label: 'Port# for Tcp Socket; Path for Unix Domain Socket (Unix only).'
-                                name: 'Label5'
-                                layout: (LayoutFrame 150 0 28 0 596 0 50 0)
-                                initiallyInvisible: true
-                                translateLabel: true
-                                adjust: left
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 566 60)
-                        )
-                       (ViewSpec
-                          name: 'Box11'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Local Connections Only'
-                                name: 'CheckBox9'
-                                layout: (LayoutFrame 150 0 0 0 -5 1 22 0)
-                                enableChannel: scriptingEnabled
-                                model: scriptingEnabledOnlyViaLocalConnection
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 566 25)
-                        )
-                       (ViewSpec
-                          name: 'Box8'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Log errors'
-                                name: 'CheckBox6'
-                                layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
-                                enableChannel: scriptingEnabled
-                                model: scriptingErrorLogging
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 566 25)
-                        )
-                       (ViewSpec
-                          name: 'Box9'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Log requests'
-                                name: 'CheckBox7'
-                                layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
-                                enableChannel: scriptingEnabled
-                                model: scriptingLogging
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 566 24)
-                        )
-                       (ViewSpec
-                          name: 'Box10'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Debug errors'
-                                name: 'CheckBox8'
-                                layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
-                                enableChannel: scriptingEnabled
-                                model: scriptingErrorDebugging
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 566 23)
-                        )
-                       )
-                     
-                    )
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (FramedBoxSpec
+	      label: 'RDoIt'
+	      name: 'RDoItFramedBox'
+	      layout: (LayoutFrame 0 0 0 0 0 1 219 0)
+	      labelPosition: topLeft
+	      translateLabel: true
+	      component:
+	     (SpecCollection
+		collection: (
+		 (VerticalPanelViewSpec
+		    name: 'VerticalPanel2'
+		    layout: (LayoutFrame 0 0.0 5 0.0 0 1.0 0 1.0)
+		    horizontalLayout: fit
+		    verticalLayout: top
+		    horizontalSpace: 0
+		    verticalSpace: 0
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (ViewSpec
+			  name: 'Box1'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Remote doits enabled'
+				name: 'CheckBox1'
+				layout: (LayoutFrame 0 0 0 0 -5 1 22 0)
+				enableChannel: hasRDoitServerClass
+				model: rDoitsEnabled
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 566 25)
+			)
+		       (ViewSpec
+			  name: 'Box2'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (LabelSpec
+				label: 'Port/Path:'
+				name: 'Label2'
+				layout: (LayoutFrame 0 0 0 0 150 0 22 0)
+				translateLabel: true
+				adjust: right
+			      )
+			     (InputFieldSpec
+				name: 'EntryField1'
+				layout: (LayoutFrame 150 0 0 0 -5 1 22 0)
+				enableChannel: rDoitsEnabled
+				model: rDoitServerPortOrPath
+				acceptOnReturn: true
+				acceptOnTab: true
+				acceptOnLostFocus: true
+				acceptOnPointerLeave: true
+			      )
+			     (LabelSpec
+				label: 'Port# for Tcp Socket; Path for Unix Domain Socket (Unix only).'
+				name: 'Label3'
+				layout: (LayoutFrame 150 0 28 0 596 0 50 0)
+				translateLabel: true
+				adjust: left
+			      )
+			     )
+
+			  )
+			  extent: (Point 566 60)
+			)
+		       (ViewSpec
+			  name: 'Box13'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Local Connections Only'
+				name: 'CheckBox10'
+				layout: (LayoutFrame 150 0 0 0 -5 1 22 0)
+				enableChannel: rDoitsEnabled
+				model: rDoitEnabledOnlyViaLocalConnection
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 566 25)
+			)
+		       (ViewSpec
+			  name: 'Box3'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Log errors'
+				name: 'CheckBox2'
+				layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
+				enableChannel: rDoitsEnabled
+				model: rDoitErrorLogging
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 566 25)
+			)
+		       (ViewSpec
+			  name: 'Box4'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Log requests'
+				name: 'CheckBox3'
+				layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
+				enableChannel: rDoitsEnabled
+				model: rDoitLogging
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 566 24)
+			)
+		       (ViewSpec
+			  name: 'Box5'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Debug errors'
+				name: 'CheckBox4'
+				layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
+				enableChannel: rDoitsEnabled
+				model: rDoitErrorDebugging
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 566 23)
+			)
+		       )
+
+		    )
+		  )
+		 )
+
+	      )
+	    )
+	   (FramedBoxSpec
+	      label: 'JavaScript-Scripting via Telnet'
+	      name: 'ScriptingFramedBox'
+	      layout: (LayoutFrame 0 0 218 0 0 1 433 0)
+	      labelPosition: topLeft
+	      translateLabel: true
+	      component:
+	     (SpecCollection
+		collection: (
+		 (VerticalPanelViewSpec
+		    name: 'VerticalPanel3'
+		    layout: (LayoutFrame 0 0.0 5 0.0 0 1.0 0 1.0)
+		    horizontalLayout: fit
+		    verticalLayout: top
+		    horizontalSpace: 0
+		    verticalSpace: 0
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (ViewSpec
+			  name: 'Box6'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'JavaScript-Scripting enabled'
+				name: 'CheckBox5'
+				layout: (LayoutFrame 0 0 0 0 -5 1 22 0)
+				enableChannel: hasScriptingServerClass
+				model: scriptingEnabled
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 566 25)
+			)
+		       (ViewSpec
+			  name: 'Box12'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (LabelSpec
+				label: 'Port:'
+				name: 'Label4'
+				layout: (LayoutFrame 0 0 0 0 150 0 22 0)
+				translateLabel: true
+				adjust: right
+			      )
+			     (InputFieldSpec
+				name: 'EntryField2'
+				layout: (LayoutFrame 150 0 0 0 -5 1 22 0)
+				enableChannel: rDoitsEnabled
+				model: scriptingServerPortOrPath
+				isReadOnly: true
+				acceptOnReturn: true
+				acceptOnTab: true
+				acceptOnLostFocus: true
+				acceptOnPointerLeave: true
+			      )
+			     (LabelSpec
+				label: 'Port# for Tcp Socket; Path for Unix Domain Socket (Unix only).'
+				name: 'Label5'
+				layout: (LayoutFrame 150 0 28 0 596 0 50 0)
+				initiallyInvisible: true
+				translateLabel: true
+				adjust: left
+			      )
+			     )
+
+			  )
+			  extent: (Point 566 60)
+			)
+		       (ViewSpec
+			  name: 'Box11'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Local Connections Only'
+				name: 'CheckBox9'
+				layout: (LayoutFrame 150 0 0 0 -5 1 22 0)
+				enableChannel: scriptingEnabled
+				model: scriptingEnabledOnlyViaLocalConnection
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 566 25)
+			)
+		       (ViewSpec
+			  name: 'Box8'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Log errors'
+				name: 'CheckBox6'
+				layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
+				enableChannel: scriptingEnabled
+				model: scriptingErrorLogging
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 566 25)
+			)
+		       (ViewSpec
+			  name: 'Box9'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Log requests'
+				name: 'CheckBox7'
+				layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
+				enableChannel: scriptingEnabled
+				model: scriptingLogging
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 566 24)
+			)
+		       (ViewSpec
+			  name: 'Box10'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Debug errors'
+				name: 'CheckBox8'
+				layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
+				enableChannel: scriptingEnabled
+				model: scriptingErrorDebugging
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 566 23)
+			)
+		       )
+
+		    )
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 
     "Modified: / 20-05-2010 / 12:15:22 / cg"
 ! !
 
+
 !AbstractSettingsApplication::RDoItServerSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
@@ -10743,7 +10918,7 @@
      scriptingErrorLogging scriptingErrorDebugging|
 
     rDoitsEnabled := false.
-    rDoitLogging := false. 
+    rDoitLogging := false.
     rDoitErrorLogging := false.
     rDoitErrorDebugging := false.
     rDoitServerPortOrPath := ''.
@@ -10753,21 +10928,21 @@
     scriptingEnabledOnlyViaLocalConnection := true.
 
     (self hasRDoitServer and:[RDoItServer isLoaded]) ifTrue:[
-        rDoitsEnabled := RDoItServer serverRunning.
-        rDoitEnabledOnlyViaLocalConnection := RDoItServer localConnectionsOnly.
-        rDoitLogging := RDoItServer isLogging.
-        rDoitErrorLogging := RDoItServer isErrorLogging.
-        rDoitErrorDebugging := RDoItServer isErrorCatching not.
-        rDoitServerPortOrPath := RDoItServer defaultPortNumberOrPath asString.
-    ].
-
-    (STXScriptingServer notNil 
+	rDoitsEnabled := RDoItServer serverRunning.
+	rDoitEnabledOnlyViaLocalConnection := RDoItServer localConnectionsOnly.
+	rDoitLogging := RDoItServer isLogging.
+	rDoitErrorLogging := RDoItServer isErrorLogging.
+	rDoitErrorDebugging := RDoItServer isErrorCatching not.
+	rDoitServerPortOrPath := RDoItServer defaultPortNumberOrPath asString.
+    ].
+
+    (STXScriptingServer notNil
     and:[ STXScriptingServer isLoaded ]) ifTrue:[
-        scriptingEnabled := STXScriptingServer serverRunning.
-        scriptingEnabledOnlyViaLocalConnection := STXScriptingServer localConnectionsOnly.
-        scriptingLogging := STXScriptingServer isLogging.
-        scriptingErrorLogging := STXScriptingServer isErrorLogging.
-        scriptingErrorDebugging := STXScriptingServer isErrorDebugging.
+	scriptingEnabled := STXScriptingServer serverRunning.
+	scriptingEnabledOnlyViaLocalConnection := STXScriptingServer localConnectionsOnly.
+	scriptingLogging := STXScriptingServer isLogging.
+	scriptingErrorLogging := STXScriptingServer isErrorLogging.
+	scriptingErrorDebugging := STXScriptingServer isErrorDebugging.
     ].
 
     self rDoitsEnabled value:rDoitsEnabled.
@@ -10791,46 +10966,46 @@
     portOrPath := self getPortNumberOrPath.
 
     self hasRDoitServerClass ifTrue:[
-        RDoItServer defaultPortNumberOrPath:portOrPath.
-        RDoItServer logging:self rDoitLogging value.
-        RDoItServer errorLogging:self rDoitErrorLogging value.
-        RDoItServer errorCatching:(self rDoitErrorDebugging value not).
-        RDoItServer localConnectionsOnly:(self rDoitEnabledOnlyViaLocalConnection value).
-        shouldRun := self rDoitsEnabled value.
-        shouldRun ~~ RDoItServer serverRunning ifTrue:[
-            shouldRun ifFalse:[
-                RDoItServer stop
-            ] ifTrue:[
-                RDoItServer start.
-                "/ must wait a bit; give it a chance to
-                "/ really start (before checking)
-                Delay waitForSeconds:1.
-                RDoItServer serverRunning ifFalse:[
-                    self warn:'RDoit startup failed (see stderr).'
-                ]
-            ]
-        ].
+	RDoItServer defaultPortNumberOrPath:portOrPath.
+	RDoItServer logging:self rDoitLogging value.
+	RDoItServer errorLogging:self rDoitErrorLogging value.
+	RDoItServer errorCatching:(self rDoitErrorDebugging value not).
+	RDoItServer localConnectionsOnly:(self rDoitEnabledOnlyViaLocalConnection value).
+	shouldRun := self rDoitsEnabled value.
+	shouldRun ~~ RDoItServer serverRunning ifTrue:[
+	    shouldRun ifFalse:[
+		RDoItServer stop
+	    ] ifTrue:[
+		RDoItServer start.
+		"/ must wait a bit; give it a chance to
+		"/ really start (before checking)
+		Delay waitForSeconds:1.
+		RDoItServer serverRunning ifFalse:[
+		    self warn:'RDoit startup failed (see stderr).'
+		]
+	    ]
+	].
     ].
 
     self hasScriptingServerClass ifTrue:[
-        STXScriptingServer logging:self scriptingLogging value.
-        STXScriptingServer errorLogging:self scriptingErrorLogging value.
-        STXScriptingServer errorDebugging:(self scriptingErrorDebugging value).
-        STXScriptingServer localConnectionsOnly:(self scriptingEnabledOnlyViaLocalConnection value).
-        shouldRun := self scriptingEnabled value.
-        shouldRun ~~ STXScriptingServer serverRunning ifTrue:[
-            shouldRun ifFalse:[
-                STXScriptingServer stop
-            ] ifTrue:[
-                STXScriptingServer start.
-                "/ must wait a bit; give it a chance to
-                "/ really start (before checking)
-                Delay waitForSeconds:1.
-                STXScriptingServer serverRunning ifFalse:[
-                    self warn:'STXScripting startup failed (see stderr).'
-                ]
-            ]
-        ].
+	STXScriptingServer logging:self scriptingLogging value.
+	STXScriptingServer errorLogging:self scriptingErrorLogging value.
+	STXScriptingServer errorDebugging:(self scriptingErrorDebugging value).
+	STXScriptingServer localConnectionsOnly:(self scriptingEnabledOnlyViaLocalConnection value).
+	shouldRun := self scriptingEnabled value.
+	shouldRun ~~ STXScriptingServer serverRunning ifTrue:[
+	    shouldRun ifFalse:[
+		STXScriptingServer stop
+	    ] ifTrue:[
+		STXScriptingServer start.
+		"/ must wait a bit; give it a chance to
+		"/ really start (before checking)
+		Delay waitForSeconds:1.
+		STXScriptingServer serverRunning ifFalse:[
+		    self warn:'STXScripting startup failed (see stderr).'
+		]
+	    ]
+	].
     ].
 
     "Modified: / 20-05-2010 / 14:50:44 / cg"
@@ -10841,21 +11016,22 @@
 
     portOrPath := self rDoitServerPortOrPath value.
     portOrPath isNumber ifFalse:[
-        "a numeric string means it is a TCP port number"
-        nrOrNil := Integer readFrom:portOrPath onError:nil.
-        nrOrNil notNil ifTrue:[
-            portOrPath := nrOrNil.
-        ]
+	"a numeric string means it is a TCP port number"
+	nrOrNil := Integer readFrom:portOrPath onError:nil.
+	nrOrNil notNil ifTrue:[
+	    portOrPath := nrOrNil.
+	]
     ].
     ^ portOrPath
 ! !
 
+
 !AbstractSettingsApplication::RDoItServerSettingsAppl methodsFor:'aspects'!
 
 rDoitEnabledOnlyViaLocalConnection
     rDoitEnabledOnlyViaLocalConnection isNil ifTrue:[
-        rDoitEnabledOnlyViaLocalConnection := true asValue.
-        rDoitEnabledOnlyViaLocalConnection onChangeSend:#updateModifiedChannel to:self
+	rDoitEnabledOnlyViaLocalConnection := true asValue.
+	rDoitEnabledOnlyViaLocalConnection onChangeSend:#updateModifiedChannel to:self
     ].
     ^ rDoitEnabledOnlyViaLocalConnection.
 
@@ -10864,32 +11040,32 @@
 
 rDoitErrorDebugging
     rDoitErrorDebugging isNil ifTrue:[
-        rDoitErrorDebugging := true asValue.
-        rDoitErrorDebugging onChangeSend:#updateModifiedChannel to:self
+	rDoitErrorDebugging := true asValue.
+	rDoitErrorDebugging onChangeSend:#updateModifiedChannel to:self
     ].
     ^ rDoitErrorDebugging.
 !
 
 rDoitErrorLogging
     rDoitErrorLogging isNil ifTrue:[
-        rDoitErrorLogging := true asValue.
-        rDoitErrorLogging onChangeSend:#updateModifiedChannel to:self
+	rDoitErrorLogging := true asValue.
+	rDoitErrorLogging onChangeSend:#updateModifiedChannel to:self
     ].
     ^ rDoitErrorLogging.
 !
 
 rDoitLogging
     rDoitLogging isNil ifTrue:[
-        rDoitLogging := true asValue.
-        rDoitLogging onChangeSend:#updateModifiedChannel to:self
+	rDoitLogging := true asValue.
+	rDoitLogging onChangeSend:#updateModifiedChannel to:self
     ].
     ^ rDoitLogging.
 !
 
 rDoitOnlyViaLocalConnection
     rDoitOnlyViaLocalConnection isNil ifTrue:[
-        rDoitOnlyViaLocalConnection := true asValue.
-        rDoitOnlyViaLocalConnection onChangeSend:#updateModifiedChannel to:self
+	rDoitOnlyViaLocalConnection := true asValue.
+	rDoitOnlyViaLocalConnection onChangeSend:#updateModifiedChannel to:self
     ].
     ^ rDoitOnlyViaLocalConnection.
 
@@ -10898,56 +11074,56 @@
 
 rDoitServerPortOrPath
     rDoitServerPortOrPath isNil ifTrue:[
-        rDoitServerPortOrPath := nil asValue.
-        rDoitServerPortOrPath onChangeSend:#updateModifiedChannel to:self
+	rDoitServerPortOrPath := nil asValue.
+	rDoitServerPortOrPath onChangeSend:#updateModifiedChannel to:self
     ].
     ^ rDoitServerPortOrPath.
 !
 
 rDoitsEnabled
     rDoitsEnabled isNil ifTrue:[
-        rDoitsEnabled := true asValue.
-        rDoitsEnabled onChangeSend:#rDoitsEnabledChanged to:self
+	rDoitsEnabled := true asValue.
+	rDoitsEnabled onChangeSend:#rDoitsEnabledChanged to:self
     ].
     ^ rDoitsEnabled.
 !
 
 scriptingEnabled
     scriptingEnabled isNil ifTrue:[
-        scriptingEnabled := false asValue.
-        scriptingEnabled onChangeSend:#updateModifiedChannel to:self
+	scriptingEnabled := false asValue.
+	scriptingEnabled onChangeSend:#updateModifiedChannel to:self
     ].
     ^ scriptingEnabled.
 !
 
 scriptingEnabledOnlyViaLocalConnection
     scriptingEnabledOnlyViaLocalConnection isNil ifTrue:[
-        scriptingEnabledOnlyViaLocalConnection := true asValue.
-        scriptingEnabledOnlyViaLocalConnection onChangeSend:#updateModifiedChannel to:self
+	scriptingEnabledOnlyViaLocalConnection := true asValue.
+	scriptingEnabledOnlyViaLocalConnection onChangeSend:#updateModifiedChannel to:self
     ].
     ^ scriptingEnabledOnlyViaLocalConnection.
 !
 
 scriptingErrorDebugging
     scriptingErrorDebugging isNil ifTrue:[
-        scriptingErrorDebugging := true asValue.
-        scriptingErrorDebugging onChangeSend:#updateModifiedChannel to:self
+	scriptingErrorDebugging := true asValue.
+	scriptingErrorDebugging onChangeSend:#updateModifiedChannel to:self
     ].
     ^ scriptingErrorDebugging.
 !
 
 scriptingErrorLogging
     scriptingErrorLogging isNil ifTrue:[
-        scriptingErrorLogging := true asValue.
-        scriptingErrorLogging onChangeSend:#updateModifiedChannel to:self
+	scriptingErrorLogging := true asValue.
+	scriptingErrorLogging onChangeSend:#updateModifiedChannel to:self
     ].
     ^ scriptingErrorLogging.
 !
 
 scriptingLogging
     scriptingLogging isNil ifTrue:[
-        scriptingLogging := true asValue.
-        scriptingLogging onChangeSend:#updateModifiedChannel to:self
+	scriptingLogging := true asValue.
+	scriptingLogging onChangeSend:#updateModifiedChannel to:self
     ].
     ^ scriptingLogging.
 !
@@ -10963,9 +11139,9 @@
     "*** (and replace this comment by something more useful ;-)"
 
     scriptingServerPortOrPath isNil ifTrue:[
-        STXScriptingServer notNil ifTrue:[
-            scriptingServerPortOrPath := STXScriptingServer defaultPortNumber asValue.
-        ].
+	STXScriptingServer notNil ifTrue:[
+	    scriptingServerPortOrPath := STXScriptingServer defaultPortNumber asValue.
+	].
 "/ if your app needs to be notified of changes, uncomment one of the lines below:
 "/       scriptingServerPortOrPath addDependent:self.
 "/       scriptingServerPortOrPath onChangeSend:#scriptingServerPortOrPathChanged to:self.
@@ -10973,24 +11149,27 @@
     ^ scriptingServerPortOrPath.
 ! !
 
+
 !AbstractSettingsApplication::RDoItServerSettingsAppl methodsFor:'change & update'!
 
 rDoitsEnabledChanged
     self updateModifiedChannel.
     self rDoitsEnabled value ifTrue:[
-        RDoItServer autoload.
-        rDoitServerPortOrPath value isEmptyOrNil ifTrue:[
-            rDoitServerPortOrPath value:(RDoItServer defaultPortNumberOrPath asString)
-        ]
+	RDoItServer autoload.
+	rDoitServerPortOrPath value isEmptyOrNil ifTrue:[
+	    rDoitServerPortOrPath value:(RDoItServer defaultPortNumberOrPath asString)
+	]
     ]
 ! !
 
+
 !AbstractSettingsApplication::RDoItServerSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/communicationsSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::RDoItServerSettingsAppl methodsFor:'queries'!
 
 hasRDoitServer
@@ -11011,29 +11190,30 @@
 
 hasUnsavedChanges
     (self hasRDoitServer and:[RDoItServer isLoaded]) ifTrue:[
-        self rDoitsEnabled value ~= RDoItServer serverRunning ifTrue:[^ true].
-        RDoItServer serverRunning ifTrue:[
-            self rDoitLogging value ~= RDoItServer isLogging ifTrue:[^ true].
-            self rDoitErrorLogging value ~= RDoItServer isErrorLogging ifTrue:[^ true].
-            self rDoitErrorDebugging value ~= RDoItServer isErrorCatching not ifTrue:[^ true].
-            self getPortNumberOrPath ~= RDoItServer defaultPortNumberOrPath ifTrue:[^ true].
-            self rDoitEnabledOnlyViaLocalConnection value ~= RDoItServer localConnectionsOnly ifTrue:[^ true].
-        ]
+	self rDoitsEnabled value ~= RDoItServer serverRunning ifTrue:[^ true].
+	RDoItServer serverRunning ifTrue:[
+	    self rDoitLogging value ~= RDoItServer isLogging ifTrue:[^ true].
+	    self rDoitErrorLogging value ~= RDoItServer isErrorLogging ifTrue:[^ true].
+	    self rDoitErrorDebugging value ~= RDoItServer isErrorCatching not ifTrue:[^ true].
+	    self getPortNumberOrPath ~= RDoItServer defaultPortNumberOrPath ifTrue:[^ true].
+	    self rDoitEnabledOnlyViaLocalConnection value ~= RDoItServer localConnectionsOnly ifTrue:[^ true].
+	]
     ].
     (self hasScriptingServer and:[STXScriptingServer isLoaded]) ifTrue:[
-        self scriptingEnabled value ~= STXScriptingServer serverRunning ifTrue:[^ true].
-        STXScriptingServer serverRunning ifTrue:[
-            self scriptingLogging value ~= STXScriptingServer isLogging ifTrue:[^ true].
-            self scriptingErrorLogging value ~= STXScriptingServer isErrorLogging ifTrue:[^ true].
-            self scriptingErrorDebugging value ~= STXScriptingServer isErrorDebugging ifTrue:[^ true].
-            self scriptingEnabledOnlyViaLocalConnection value ~= STXScriptingServer localConnectionsOnly ifTrue:[^ true].
-        ]
+	self scriptingEnabled value ~= STXScriptingServer serverRunning ifTrue:[^ true].
+	STXScriptingServer serverRunning ifTrue:[
+	    self scriptingLogging value ~= STXScriptingServer isLogging ifTrue:[^ true].
+	    self scriptingErrorLogging value ~= STXScriptingServer isErrorLogging ifTrue:[^ true].
+	    self scriptingErrorDebugging value ~= STXScriptingServer isErrorDebugging ifTrue:[^ true].
+	    self scriptingEnabledOnlyViaLocalConnection value ~= STXScriptingServer localConnectionsOnly ifTrue:[^ true].
+	]
     ].
     ^ false
 
     "Modified: / 20-05-2010 / 14:48:52 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SQLServerSettingsAppl class methodsFor:'image specs'!
 
 dbIcon1
@@ -11052,8 +11232,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::SQLServerSettingsAppl class dbIcon1'
-        ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::SQLServerSettingsAppl class dbIcon1'
+	ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 H"H"H @@@@@@@@@@@@@@@@@@@@@"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@"H"H"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BH"@@@@@@@@@@@@J"(*J"(*@@@@
 @@@@@BH"@@@@@@@@J"(*@@@@@@@@J"(*@@@@H"H"@@@@@B(*@@@@@@@@@@@@@@@@J"("H"H"@@@@J @@@@@@@@@@@@@@@@@@@@@*H"H"@BH@H"(*@@@@@@@@
 @@@@@@@@J"("H"H"@BH(H" $J"(*J @@@@@*J"(*H"H"H"H"@BH(H" $ABTJIB(*J"("H"H"H"H"H"H"@BH(H" $ABT%IBP(JBH"H"H"H"H"H"H"@@@(J" $
@@ -11079,8 +11259,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:'Object class dbIcon2'
-        ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:'Object class dbIcon2'
+	ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 @@@@@@@@@@@@@@@@@@@@!!!!"O_@T>@@@@@@@@@@@@@@@@@@@@@E8=X(!!#T!!0-X@D@@@@@@@@@@@@@@@@@NVTLL@.HK%MTZQEH@@@@@@@@@@@@@@@@V2<LCC@K
 "GTIT15UV @@@@@@@@@@@@@@R"$<F&P0B8]ONGECQ @@@@@@@@@@@@@@I!!,_]"2ARPH%J&!!8V@@@@@@@@@@@@@@@_1-EI61''PFFC!!F!!&V@@@@@@@@@@@@@@@
@@ -11097,6 +11277,7 @@
     ^ self dbIcon2.
 ! !
 
+
 !AbstractSettingsApplication::SQLServerSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -11114,203 +11295,204 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'SQL Server Settings'
-          name: 'SQL Server Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 600 550)
-        )
-        component: 
+	  label: 'SQL Server Settings'
+	  name: 'SQL Server Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 600 550)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel2'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (ViewSpec
-                    name: 'EnableBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'SQL Server Enabled'
-                          name: 'EnableCheckBox'
-                          layout: (LayoutFrame 5 0 0 0 -5 1 22 0)
-                          enableChannel: hasSQLServerClass
-                          model: sqlServerEnabled
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 25)
-                  )
-                 (ViewSpec
-                    name: 'PortBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'MySQL Port:'
-                          name: 'Label2'
-                          layout: (LayoutFrame 5 0 0 0 150 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField1'
-                          layout: (LayoutFrame 150 0 0 0 -5 1 22 0)
-                          enableChannel: sqlServerEnabled
-                          model: sqlServerPort
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: 'MySQL Port-Number (ODBC)'
-                          name: 'Label3'
-                          layout: (LayoutFrame 150 0 28 0 596 0 50 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 72)
-                  )
-                 (ViewSpec
-                    name: 'LogErrorsBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Log Errors'
-                          name: 'ErrorLoggingCheckBox'
-                          layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
-                          enableChannel: sqlServerEnabled
-                          model: sqlErrorLogging
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 25)
-                  )
-                 (ViewSpec
-                    name: 'LogDataBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Log Data'
-                          name: 'LogDataCheckBox'
-                          layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
-                          enableChannel: sqlServerEnabled
-                          model: sqlDataLogging
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 23)
-                  )
-                 (ViewSpec
-                    name: 'LogRequestsBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Log Requests'
-                          name: 'LogRequestsCheckBox'
-                          layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
-                          enableChannel: sqlServerEnabled
-                          model: sqlLogging
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 24)
-                  )
-                 (ViewSpec
-                    name: 'LogSQLBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Log SQL'
-                          name: 'CheckBox1'
-                          layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
-                          enableChannel: sqlServerEnabled
-                          model: sqlStatementLogging
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 24)
-                  )
-                 (ViewSpec
-                    name: 'DebugErrorsBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Debug Errors'
-                          name: 'DebugErrorsCheckBox'
-                          layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
-                          enableChannel: sqlServerEnabled
-                          model: sqlErrorDebugging
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 23)
-                  )
-                 (ViewSpec
-                    name: 'Box1'
-                    extent: (Point 600 10)
-                  )
-                 (ViewSpec
-                    name: 'EnableSmalltalkBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Virtual Smalltalk Tables Enabled'
-                          name: 'EnableSmalltalkCheckBox'
-                          layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
-                          enableChannel: sqlServerEnabled
-                          model: sqlSmalltalkServerEnabled
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 24)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel2'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (ViewSpec
+		    name: 'EnableBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'SQL Server Enabled'
+			  name: 'EnableCheckBox'
+			  layout: (LayoutFrame 5 0 0 0 -5 1 22 0)
+			  enableChannel: hasSQLServerClass
+			  model: sqlServerEnabled
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 25)
+		  )
+		 (ViewSpec
+		    name: 'PortBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'MySQL Port:'
+			  name: 'Label2'
+			  layout: (LayoutFrame 5 0 0 0 150 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'EntryField1'
+			  layout: (LayoutFrame 150 0 0 0 -5 1 22 0)
+			  enableChannel: sqlServerEnabled
+			  model: sqlServerPort
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: 'MySQL Port-Number (ODBC)'
+			  name: 'Label3'
+			  layout: (LayoutFrame 150 0 28 0 596 0 50 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       )
+
+		    )
+		    extent: (Point 600 72)
+		  )
+		 (ViewSpec
+		    name: 'LogErrorsBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Log Errors'
+			  name: 'ErrorLoggingCheckBox'
+			  layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
+			  enableChannel: sqlServerEnabled
+			  model: sqlErrorLogging
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 25)
+		  )
+		 (ViewSpec
+		    name: 'LogDataBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Log Data'
+			  name: 'LogDataCheckBox'
+			  layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
+			  enableChannel: sqlServerEnabled
+			  model: sqlDataLogging
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 23)
+		  )
+		 (ViewSpec
+		    name: 'LogRequestsBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Log Requests'
+			  name: 'LogRequestsCheckBox'
+			  layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
+			  enableChannel: sqlServerEnabled
+			  model: sqlLogging
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 24)
+		  )
+		 (ViewSpec
+		    name: 'LogSQLBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Log SQL'
+			  name: 'CheckBox1'
+			  layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
+			  enableChannel: sqlServerEnabled
+			  model: sqlStatementLogging
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 24)
+		  )
+		 (ViewSpec
+		    name: 'DebugErrorsBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Debug Errors'
+			  name: 'DebugErrorsCheckBox'
+			  layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
+			  enableChannel: sqlServerEnabled
+			  model: sqlErrorDebugging
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 23)
+		  )
+		 (ViewSpec
+		    name: 'Box1'
+		    extent: (Point 600 10)
+		  )
+		 (ViewSpec
+		    name: 'EnableSmalltalkBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Virtual Smalltalk Tables Enabled'
+			  name: 'EnableSmalltalkCheckBox'
+			  layout: (LayoutFrame 25 0 0 0 -5 1 22 0)
+			  enableChannel: sqlServerEnabled
+			  model: sqlSmalltalkServerEnabled
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 24)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::SQLServerSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
@@ -11318,23 +11500,23 @@
 
     sqlServerClass := self sqlServerClass.
     (sqlServerClass notNil and:[sqlServerClass isLoaded]) ifTrue:[
-        self sqlServerEnabled value:sqlServerClass serverRunning.
-        self sqlSmalltalkServerEnabled value:sqlServerClass isSmalltalkServerEnabled.
-        self sqlLogging value:sqlServerClass isLogging.
-        self sqlStatementLogging value:sqlServerClass isSQLLogging.
-        self sqlErrorLogging value:sqlServerClass isErrorLogging.
-        self sqlDataLogging value:sqlServerClass isDataLogging.
-        self sqlErrorDebugging value:sqlServerClass isErrorCatching not.
-        self sqlServerPort value:sqlServerClass defaultPort
+	self sqlServerEnabled value:sqlServerClass serverRunning.
+	self sqlSmalltalkServerEnabled value:sqlServerClass isSmalltalkServerEnabled.
+	self sqlLogging value:sqlServerClass isLogging.
+	self sqlStatementLogging value:sqlServerClass isSQLLogging.
+	self sqlErrorLogging value:sqlServerClass isErrorLogging.
+	self sqlDataLogging value:sqlServerClass isDataLogging.
+	self sqlErrorDebugging value:sqlServerClass isErrorCatching not.
+	self sqlServerPort value:sqlServerClass defaultPort
     ] ifFalse:[
-        self sqlServerEnabled value:false.
-        self sqlSmalltalkServerEnabled value:false.
-        self sqlLogging value:false.
-        self sqlStatementLogging value:false.
-        self sqlErrorLogging value:false.
-        self sqlDataLogging value:false.
-        self sqlErrorDebugging value:false.
-        self sqlServerPort value:nil
+	self sqlServerEnabled value:false.
+	self sqlSmalltalkServerEnabled value:false.
+	self sqlLogging value:false.
+	self sqlStatementLogging value:false.
+	self sqlErrorLogging value:false.
+	self sqlDataLogging value:false.
+	self sqlErrorDebugging value:false.
+	self sqlServerPort value:nil
     ].
 
     "Modified: / 25-01-2007 / 17:40:53 / cg"
@@ -11347,7 +11529,7 @@
 
     port := self sqlServerPort value.
     port isNumber ifFalse:[
-        port := port asInteger.
+	port := port asInteger.
     ].
 
     sqlServerClass defaultPort:port.
@@ -11360,96 +11542,98 @@
 
     shouldRun := self sqlServerEnabled value.
     shouldRun ~~ sqlServerClass serverRunning ifTrue:[
-        shouldRun ifFalse:[
-            sqlServerClass stop
-        ] ifTrue:[
-            sqlServerClass start.
-            "/ must wait a bit; give it a chance to
-            "/ really start (before checking)
-            Delay waitForSeconds:1.
-            sqlServerClass serverRunning ifFalse:[
-                self warn:'SQLServer startup failed (see stderr).'
-            ]
-        ]
+	shouldRun ifFalse:[
+	    sqlServerClass stop
+	] ifTrue:[
+	    sqlServerClass start.
+	    "/ must wait a bit; give it a chance to
+	    "/ really start (before checking)
+	    Delay waitForSeconds:1.
+	    sqlServerClass serverRunning ifFalse:[
+		self warn:'SQLServer startup failed (see stderr).'
+	    ]
+	]
     ].
 
     "Modified: / 25-01-2007 / 17:41:20 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SQLServerSettingsAppl methodsFor:'aspects'!
 
 sqlDataLogging
     sqlDataLogging isNil ifTrue:[
-        sqlDataLogging := true asValue.
-        sqlDataLogging onChangeSend:#updateModifiedChannel to:self
+	sqlDataLogging := true asValue.
+	sqlDataLogging onChangeSend:#updateModifiedChannel to:self
     ].
     ^ sqlDataLogging.
 !
 
 sqlErrorDebugging
     sqlErrorDebugging isNil ifTrue:[
-        sqlErrorDebugging := true asValue.
-        sqlErrorDebugging onChangeSend:#updateModifiedChannel to:self
+	sqlErrorDebugging := true asValue.
+	sqlErrorDebugging onChangeSend:#updateModifiedChannel to:self
     ].
     ^ sqlErrorDebugging.
 !
 
 sqlErrorLogging
     sqlErrorLogging isNil ifTrue:[
-        sqlErrorLogging := true asValue.
-        sqlErrorLogging onChangeSend:#updateModifiedChannel to:self
+	sqlErrorLogging := true asValue.
+	sqlErrorLogging onChangeSend:#updateModifiedChannel to:self
     ].
     ^ sqlErrorLogging.
 !
 
 sqlLogging
     sqlLogging isNil ifTrue:[
-        sqlLogging := true asValue.
-        sqlLogging onChangeSend:#updateModifiedChannel to:self
+	sqlLogging := true asValue.
+	sqlLogging onChangeSend:#updateModifiedChannel to:self
     ].
     ^ sqlLogging.
 !
 
 sqlServerEnabled
     sqlServerEnabled isNil ifTrue:[
-        sqlServerEnabled := true asValue.
-        sqlServerEnabled onChangeSend:#sqlServerEnabledChanged to:self
+	sqlServerEnabled := true asValue.
+	sqlServerEnabled onChangeSend:#sqlServerEnabledChanged to:self
     ].
     ^ sqlServerEnabled.
 !
 
 sqlServerPort
     sqlServerPort isNil ifTrue:[
-        sqlServerPort := ValueHolder new.
-        sqlServerPort onChangeSend:#updateModifiedChannel to:self
+	sqlServerPort := ValueHolder new.
+	sqlServerPort onChangeSend:#updateModifiedChannel to:self
     ].
     ^ sqlServerPort.
 !
 
 sqlSmalltalkServerEnabled
     sqlSmalltalkServerEnabled isNil ifTrue:[
-        sqlSmalltalkServerEnabled := true asValue.
-        sqlSmalltalkServerEnabled onChangeSend:#sqlSmalltalkServerEnabledChanged to:self
+	sqlSmalltalkServerEnabled := true asValue.
+	sqlSmalltalkServerEnabled onChangeSend:#sqlSmalltalkServerEnabledChanged to:self
     ].
     ^ sqlSmalltalkServerEnabled.
 !
 
 sqlStatementLogging
     sqlStatementLogging isNil ifTrue:[
-        sqlStatementLogging := true asValue.
-        sqlStatementLogging onChangeSend:#updateModifiedChannel to:self
+	sqlStatementLogging := true asValue.
+	sqlStatementLogging onChangeSend:#updateModifiedChannel to:self
     ].
     ^ sqlStatementLogging.
 ! !
 
+
 !AbstractSettingsApplication::SQLServerSettingsAppl methodsFor:'change & update'!
 
 sqlServerEnabledChanged
     self updateModifiedChannel.
     self sqlServerEnabled value ifTrue:[
-        sqlServerPort value isEmptyOrNil ifTrue:[
-            sqlServerPort value:(self sqlServerClass defaultPort)
-        ]
+	sqlServerPort value isEmptyOrNil ifTrue:[
+	    sqlServerPort value:(self sqlServerClass defaultPort)
+	]
     ]
 
     "Modified: / 25-01-2007 / 17:46:07 / cg"
@@ -11458,20 +11642,22 @@
 sqlSmalltalkServerEnabledChanged
     self updateModifiedChannel.
     self sqlSmalltalkServerEnabled value ifTrue:[
-        sqlServerPort value isEmptyOrNil ifTrue:[
-            sqlServerPort value:(self sqlServerClass defaultPort)
-        ]
+	sqlServerPort value isEmptyOrNil ifTrue:[
+	    sqlServerPort value:(self sqlServerClass defaultPort)
+	]
     ]
 
     "Modified: / 25-01-2007 / 17:40:03 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SQLServerSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/communicationsSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::SQLServerSettingsAppl methodsFor:'queries'!
 
 hasSQLServerClass
@@ -11488,13 +11674,13 @@
 
     self sqlServerEnabled value ~= sqlServerClass serverRunning ifTrue:[^ true].
     sqlServerClass serverRunning ifTrue:[
-        self sqlSmalltalkServerEnabled value ~= sqlServerClass isSmalltalkServerEnabled ifTrue:[^ true].
-        self sqlLogging value ~= sqlServerClass isLogging ifTrue:[^ true].
-        self sqlStatementLogging value ~= sqlServerClass isSQLLogging ifTrue:[^ true].
-        self sqlErrorLogging value ~= sqlServerClass isErrorLogging ifTrue:[^ true].
-        self sqlDataLogging value ~= sqlServerClass isDataLogging ifTrue:[^ true].
-        self sqlErrorDebugging value ~= sqlServerClass isErrorCatching not ifTrue:[^ true].
-        self sqlServerPort value ~= sqlServerClass defaultPort ifTrue:[^ true].
+	self sqlSmalltalkServerEnabled value ~= sqlServerClass isSmalltalkServerEnabled ifTrue:[^ true].
+	self sqlLogging value ~= sqlServerClass isLogging ifTrue:[^ true].
+	self sqlStatementLogging value ~= sqlServerClass isSQLLogging ifTrue:[^ true].
+	self sqlErrorLogging value ~= sqlServerClass isErrorLogging ifTrue:[^ true].
+	self sqlDataLogging value ~= sqlServerClass isDataLogging ifTrue:[^ true].
+	self sqlErrorDebugging value ~= sqlServerClass isErrorCatching not ifTrue:[^ true].
+	self sqlServerPort value ~= sqlServerClass defaultPort ifTrue:[^ true].
     ].
     ^ false
 
@@ -11507,6 +11693,7 @@
     "Created: / 25-01-2007 / 17:29:59 / cg"
 ! !
 
+
 !AbstractSettingsApplication::STCCompilerSettingsAppl class methodsFor:'defaults'!
 
 stcCompilationOptions
@@ -11518,6 +11705,7 @@
     ^ #('primitive code only' 'never')
 ! !
 
+
 !AbstractSettingsApplication::STCCompilerSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -11544,8 +11732,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::STCCompilerSettingsAppl class defaultIcon1'
-        ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[2]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::STCCompilerSettingsAppl class defaultIcon1'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[2]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@@@C??????@CUUUUUW@CZ(J@B''@CZ""(*''CCZ"*(*''@CV(J(*WKCV*"(*W@CU""()WJCU(J()W@CUZ**%W@CUZ**%WACUV(JUW@CUV""UWDCUU")UWI
 CUU")UWICUUR%UWJCUUR!!UWACUUTEUW@CUUUUUW@C??????@@@@@@@@B') ; colorMapFromArray:#[0 0 0 255 255 255 255 189 23 127 127 127]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8O??8@@@@') ; yourself); yourself]
 !
@@ -11566,8 +11754,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::STCCompilerSettingsAppl class defaultIcon2'
-        ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::STCCompilerSettingsAppl class defaultIcon2'
+	ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 A@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PD@0LDA@PDA@PDA@PDA@PDA@PD
 A@PDA@LCA PCA@P@@@@@@@@@@@@@@@@@@@@D@0PFA PCA@PC@0@@@@@@@@@@@@@C@0@D@0PFAPTD@0LDA L@@@@@@@@@@@LFA@LCA@TEAPTEA@PE@PL@@@@@
 @@@@@@LAAPPDAPTEAPTEAPTF@0@@@@@@@@@@@@@CA TEAPTEA DFAPTD@0@@@@@@@@@@@@@CA@TEA DF@0LAA TEA@LC@@@@@@@@@0LDAPTF@PLC@ HC@PTE
@@ -11593,8 +11781,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::STCCompilerSettingsAppl class defaultIcon3'
-        ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::STCCompilerSettingsAppl class defaultIcon3'
+	ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 A@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PC@0PDA@PD
 A@PDA@PDA@PDA@PDA@PDA@LDA LDA@PDA@PDA@PDA@PDA@PD@0LDA@LDA LDA@LCA@PDA@PDA@PDA@PCA PC@0PEAPPC@0PF@0PDA@PDA@PDA@PC@PTDA@TE
 APTDA@TA@0PDA@PDA@PDA@PD@0XEAPTEAPTEAPXCA@PDA@PDA@PDA@PD@0PEAPXAA XEAPPCA@PDA@PDA@PDA@LCA@TEA DC@0DFAPTD@0LDA@PDA@PD@0PD
@@ -11620,8 +11808,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:'AbstractSettingsApplication::STCCompilerSettingsAppl class defaultIcon4'
-        ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:'AbstractSettingsApplication::STCCompilerSettingsAppl class defaultIcon4'
+	ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 A@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PDA@PC@0PDA@PD
 A@PDA@PDA@PDA@PDA@PDA@LDA LDA@PDA@PDA@PDA@PDA@PD@0LDA@LDA LDA@LCA@PDA@PDA@PDA@PCA PC@0PEAPPC@0PF@0PDA@PDA@PDA@PC@PTDA@TE
 APTDA@TA@0PDA@PDA@PDA@PD@0XEAPTEAPTEAPXCA@PDA@PDA@PDA@PD@0PEAPXAA XEAPPCA@PDA@PDA@PDA@LCA@TEA DC@0DFAPTD@0LDA@PDA@PD@0PD
@@ -11631,6 +11819,7 @@
 @@LC@@LCA@PD@0PDA@PC@0PDA@PDA@PDA@PDA@PDA@PC@0PD') ; colorMapFromArray:#[255 189 23 127 127 127 236 233 216 0 0 0 255 255 255 194 194 194 161 161 165]; mask:((Depth1Image new) width: 24; height: 24; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@A @@C0@@33@A?? A?? @??@@??@C??0G??8G??8C??0@??@@??@A?? A?? @33@LC0LHA DP@@BH6[DL@@L') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::STCCompilerSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -11648,454 +11837,455 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'STC Compiler Settings'
-          name: 'STC Compiler Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 600 602)
-        )
-        component: 
+	  label: 'STC Compiler Settings'
+	  name: 'STC Compiler Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 600 602)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel2'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 3
-              verticalSpace: 0
-              component: 
-             (SpecCollection
-                collection: (
-                 (ViewSpec
-                    name: 'SeparatingBox12'
-                    extent: (Point 600 4)
-                  )
-                 (ViewSpec
-                    name: 'Box1'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          name: 'Label14'
-                          layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-                          translateLabel: true
-                          labelChannel: helpText
-                          adjust: left
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 90)
-                  )
-                 (ViewSpec
-                    name: 'STCCompilationBox11'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'STC Compilation to Machine Code:'
-                          name: 'Label11'
-                          layout: (LayoutFrame 0 0 0 0 200 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (PopUpListSpec
-                          label: 'PopUp List'
-                          name: 'StcCompilation'
-                          layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
-                          tabable: true
-                          model: stcCompilationSelection
-                          enableChannel: canLoadBinaries
-                          menu: stcCompilationList
-                          useIndex: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 29)
-                  )
-                 (ViewSpec
-                    name: 'STCCommandBox1'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'STC Command:'
-                          name: 'Label1'
-                          layout: (LayoutFrame 0 0 0 0 200 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField1'
-                          layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
-                          enableChannel: canLoadBinaries
-                          model: stc
-                          acceptOnLeave: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'STCOptionsBox2'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'STC Options:'
-                          name: 'Label2'
-                          layout: (LayoutFrame 0 0 0 0 200 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField2'
-                          layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
-                          enableChannel: canLoadBinaries
-                          model: stcOptions
-                          acceptOnLeave: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'Box2'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Keep Intermediate C File:'
-                          name: 'Label15'
-                          layout: (LayoutFrame 0 0 0 0 200 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (CheckToggleSpec
-                          name: 'CheckToggle1'
-                          layout: (LayoutOrigin 203 0 4 0)
-                          model: stcKeepCIntermediate
-                          isTriggerOnDown: true
-                          showLamp: false
-                          lampColor: (Color 100.0 100.0 0.0)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'CCCommandBox3'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'CC Command:'
-                          name: 'Label3'
-                          layout: (LayoutFrame 0 0 0 0 200 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField3'
-                          layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
-                          enableChannel: canLoadBinaries
-                          model: cc
-                          acceptOnLeave: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'CCOptionsBox4'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'CC Options:'
-                          name: 'Label4'
-                          layout: (LayoutFrame 0 0 0 0 200 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField4'
-                          layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
-                          enableChannel: canLoadBinaries
-                          model: ccOptions
-                          acceptOnLeave: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'IncludeDirectoriesBox5'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Include Directories:'
-                          name: 'Label5'
-                          layout: (LayoutFrame 0 0 0 0 200 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField5'
-                          layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
-                          enableChannel: canLoadBinaries
-                          model: stcIncludes
-                          acceptOnLeave: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'STCDefinesBox6'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Defines:'
-                          name: 'Label6'
-                          layout: (LayoutFrame 0 0 0 0 200 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField6'
-                          layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
-                          enableChannel: canLoadBinaries
-                          model: stcDefines
-                          acceptOnLeave: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'LinkCommandBox7'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Link Command:'
-                          name: 'Label7'
-                          layout: (LayoutFrame 0 0 0 0 200 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField7'
-                          layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
-                          enableChannel: canLoadBinaries
-                          model: linkCommand
-                          acceptOnLeave: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'LinkArgumentsBox8'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Link Arguments:'
-                          name: 'Label8'
-                          layout: (LayoutFrame 0 0 0 0 200 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField8'
-                          layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
-                          enableChannel: canLoadBinaries
-                          model: linkArgs
-                          acceptOnLeave: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'LinkSharedArgumentsBox1'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Link Shared Arguments:'
-                          name: 'Label12'
-                          layout: (LayoutFrame 0 0 0 0 200 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField11'
-                          layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
-                          enableChannel: canLoadBinaries
-                          model: linkSharedArgs
-                          acceptOnLeave: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'CLibrariesBox9'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'C-Libraries:'
-                          name: 'Label9'
-                          layout: (LayoutFrame 0 0 0 0 200 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField9'
-                          layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
-                          enableChannel: canLoadBinaries
-                          model: stcLibraries
-                          acceptOnLeave: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'STCLibraryPathBox10'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'STC Library Path:'
-                          name: 'Label10'
-                          layout: (LayoutFrame 0 0 0 0 200 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField10'
-                          layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
-                          enableChannel: enableStcLibraryPath
-                          model: stcLibraryPath
-                          acceptOnLeave: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 (ViewSpec
-                    name: 'MakeCommandBox'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Make Command:'
-                          name: 'Label13'
-                          layout: (LayoutFrame 0 0 0 0 200 0 22 0)
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField12'
-                          layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
-                          model: makeCommand
-                          acceptOnLeave: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 600 30)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel2'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 0
+	      component:
+	     (SpecCollection
+		collection: (
+		 (ViewSpec
+		    name: 'SeparatingBox12'
+		    extent: (Point 600 4)
+		  )
+		 (ViewSpec
+		    name: 'Box1'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  name: 'Label14'
+			  layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+			  translateLabel: true
+			  labelChannel: helpText
+			  adjust: left
+			)
+		       )
+
+		    )
+		    extent: (Point 600 90)
+		  )
+		 (ViewSpec
+		    name: 'STCCompilationBox11'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'STC Compilation to Machine Code:'
+			  name: 'Label11'
+			  layout: (LayoutFrame 0 0 0 0 200 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (PopUpListSpec
+			  label: 'PopUp List'
+			  name: 'StcCompilation'
+			  layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
+			  tabable: true
+			  model: stcCompilationSelection
+			  enableChannel: canLoadBinaries
+			  menu: stcCompilationList
+			  useIndex: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 29)
+		  )
+		 (ViewSpec
+		    name: 'STCCommandBox1'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'STC Command:'
+			  name: 'Label1'
+			  layout: (LayoutFrame 0 0 0 0 200 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'EntryField1'
+			  layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
+			  enableChannel: canLoadBinaries
+			  model: stc
+			  acceptOnLeave: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'STCOptionsBox2'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'STC Options:'
+			  name: 'Label2'
+			  layout: (LayoutFrame 0 0 0 0 200 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'EntryField2'
+			  layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
+			  enableChannel: canLoadBinaries
+			  model: stcOptions
+			  acceptOnLeave: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'Box2'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Keep Intermediate C File:'
+			  name: 'Label15'
+			  layout: (LayoutFrame 0 0 0 0 200 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (CheckToggleSpec
+			  name: 'CheckToggle1'
+			  layout: (LayoutOrigin 203 0 4 0)
+			  model: stcKeepCIntermediate
+			  isTriggerOnDown: true
+			  showLamp: false
+			  lampColor: (Color 100.0 100.0 0.0)
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'CCCommandBox3'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'CC Command:'
+			  name: 'Label3'
+			  layout: (LayoutFrame 0 0 0 0 200 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'EntryField3'
+			  layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
+			  enableChannel: canLoadBinaries
+			  model: cc
+			  acceptOnLeave: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'CCOptionsBox4'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'CC Options:'
+			  name: 'Label4'
+			  layout: (LayoutFrame 0 0 0 0 200 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'EntryField4'
+			  layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
+			  enableChannel: canLoadBinaries
+			  model: ccOptions
+			  acceptOnLeave: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'IncludeDirectoriesBox5'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Include Directories:'
+			  name: 'Label5'
+			  layout: (LayoutFrame 0 0 0 0 200 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'EntryField5'
+			  layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
+			  enableChannel: canLoadBinaries
+			  model: stcIncludes
+			  acceptOnLeave: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'STCDefinesBox6'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Defines:'
+			  name: 'Label6'
+			  layout: (LayoutFrame 0 0 0 0 200 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'EntryField6'
+			  layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
+			  enableChannel: canLoadBinaries
+			  model: stcDefines
+			  acceptOnLeave: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'LinkCommandBox7'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Link Command:'
+			  name: 'Label7'
+			  layout: (LayoutFrame 0 0 0 0 200 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'EntryField7'
+			  layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
+			  enableChannel: canLoadBinaries
+			  model: linkCommand
+			  acceptOnLeave: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'LinkArgumentsBox8'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Link Arguments:'
+			  name: 'Label8'
+			  layout: (LayoutFrame 0 0 0 0 200 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'EntryField8'
+			  layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
+			  enableChannel: canLoadBinaries
+			  model: linkArgs
+			  acceptOnLeave: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'LinkSharedArgumentsBox1'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Link Shared Arguments:'
+			  name: 'Label12'
+			  layout: (LayoutFrame 0 0 0 0 200 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'EntryField11'
+			  layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
+			  enableChannel: canLoadBinaries
+			  model: linkSharedArgs
+			  acceptOnLeave: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'CLibrariesBox9'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'C-Libraries:'
+			  name: 'Label9'
+			  layout: (LayoutFrame 0 0 0 0 200 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'EntryField9'
+			  layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
+			  enableChannel: canLoadBinaries
+			  model: stcLibraries
+			  acceptOnLeave: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'STCLibraryPathBox10'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'STC Library Path:'
+			  name: 'Label10'
+			  layout: (LayoutFrame 0 0 0 0 200 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'EntryField10'
+			  layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
+			  enableChannel: enableStcLibraryPath
+			  model: stcLibraryPath
+			  acceptOnLeave: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 (ViewSpec
+		    name: 'MakeCommandBox'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Make Command:'
+			  name: 'Label13'
+			  layout: (LayoutFrame 0 0 0 0 200 0 22 0)
+			  translateLabel: true
+			  adjust: right
+			)
+		       (InputFieldSpec
+			  name: 'EntryField12'
+			  layout: (LayoutFrame 201 0 0 0 -5 1 22 0)
+			  model: makeCommand
+			  acceptOnLeave: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  acceptOnPointerLeave: true
+			)
+		       )
+
+		    )
+		    extent: (Point 600 30)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::STCCompilerSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
     |t|
 
-    self canLoadBinaries 
-        value:(ObjectFileLoader notNil and:[ObjectFileLoader canLoadObjectFiles]).
+    self canLoadBinaries
+	value:(ObjectFileLoader notNil and:[ObjectFileLoader canLoadObjectFiles]).
 
     self stcIncludes value:ParserFlags stcCompilationIncludes.
     self stcDefines value:ParserFlags stcCompilationDefines.
@@ -12111,15 +12301,15 @@
     self linkSharedArgs value:ParserFlags linkSharedArgs.
 
     (t := ParserFlags searchedLibraries) notNil ifTrue:[
-        self stcLibraries value:(String fromStringCollection:t separatedBy:' ')
+	self stcLibraries value:(String fromStringCollection:t separatedBy:' ')
     ].
     (t := ParserFlags libPath) notNil ifTrue:[
-        self stcLibraryPath value:t
-    ].
-
-    self stcCompilationSelection value:(self class stcCompilationOptions 
-             indexOf:(ParserFlags stcCompilation)
-             ifAbsent:1).
+	self stcLibraryPath value:t
+    ].
+
+    self stcCompilationSelection value:(self class stcCompilationOptions
+	     indexOf:(ParserFlags stcCompilation)
+	     ifAbsent:1).
 
     "Modified: / 09-08-2006 / 18:49:38 / fm"
     "Modified: / 16-09-2011 / 18:45:15 / cg"
@@ -12137,28 +12327,29 @@
     ParserFlags makeCommand:self makeCommand value.
 
     self stc value ~= ParserFlags stcPath ifTrue:[
-        ParserFlags stcPath:self stc value
+	ParserFlags stcPath:self stc value
     ].
     ParserFlags linkCommand:self linkCommand value.
     ParserFlags linkArgs:self linkArgs value.
     ParserFlags linkSharedArgs:self linkSharedArgs value.
     self stcLibraries value notNil ifTrue:[
-        ParserFlags searchedLibraries:(self stcLibraries value asCollectionOfWords).
+	ParserFlags searchedLibraries:(self stcLibraries value asCollectionOfWords).
     ].
     stcLibraryPath notNil ifTrue:[
-        ParserFlags libPath:(self stcLibraryPath value).
+	ParserFlags libPath:(self stcLibraryPath value).
     ].
 
     "Modified: / 09-08-2006 / 19:33:10 / fm"
     "Modified: / 16-09-2011 / 18:45:28 / cg"
 ! !
 
+
 !AbstractSettingsApplication::STCCompilerSettingsAppl methodsFor:'aspects'!
 
 canLoadBinaries
 
     canLoadBinaries isNil ifTrue:[
-        canLoadBinaries := (ObjectFileLoader notNil and:[ObjectFileLoader canLoadObjectFiles]) asValue.
+	canLoadBinaries := (ObjectFileLoader notNil and:[ObjectFileLoader canLoadObjectFiles]) asValue.
     ].
     ^ canLoadBinaries.
 !
@@ -12166,8 +12357,8 @@
 cc
 
     cc isNil ifTrue:[
-        cc := ValueHolder new.
-        cc onChangeSend:#updateModifiedChannel to:self.
+	cc := ValueHolder new.
+	cc onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ cc.
 !
@@ -12175,8 +12366,8 @@
 ccOptions
 
     ccOptions isNil ifTrue:[
-        ccOptions := ValueHolder new.
-        ccOptions onChangeSend:#updateModifiedChannel to:self.
+	ccOptions := ValueHolder new.
+	ccOptions onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ ccOptions.
 !
@@ -12189,8 +12380,8 @@
 linkArgs
 
     linkArgs isNil ifTrue:[
-        linkArgs := ValueHolder new.
-        linkArgs onChangeSend:#updateModifiedChannel to:self.
+	linkArgs := ValueHolder new.
+	linkArgs onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ linkArgs.
 !
@@ -12198,8 +12389,8 @@
 linkCommand
 
     linkCommand isNil ifTrue:[
-        linkCommand := ValueHolder new.
-        linkCommand onChangeSend:#updateModifiedChannel to:self.
+	linkCommand := ValueHolder new.
+	linkCommand onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ linkCommand.
 !
@@ -12207,8 +12398,8 @@
 linkSharedArgs
 
     linkSharedArgs isNil ifTrue:[
-        linkSharedArgs := ValueHolder new.
-        linkSharedArgs onChangeSend:#updateModifiedChannel to:self.
+	linkSharedArgs := ValueHolder new.
+	linkSharedArgs onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ linkSharedArgs.
 !
@@ -12216,8 +12407,8 @@
 makeCommand
 
     makeCommand isNil ifTrue:[
-        makeCommand := ValueHolder new.
-        makeCommand onChangeSend:#updateModifiedChannel to:self.
+	makeCommand := ValueHolder new.
+	makeCommand onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ makeCommand.
 
@@ -12227,8 +12418,8 @@
 stc
 
     stc isNil ifTrue:[
-        stc := ValueHolder new.
-        stc onChangeSend:#updateModifiedChannel to:self.
+	stc := ValueHolder new.
+	stc onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ stc.
 !
@@ -12236,7 +12427,7 @@
 stcCompilationList
 
     stcCompilationList isNil ifTrue:[
-        stcCompilationList := (resources array:(self class stcCompilationStrings)) asList.
+	stcCompilationList := (resources array:(self class stcCompilationStrings)) asList.
     ].
     ^ stcCompilationList.
 !
@@ -12244,8 +12435,8 @@
 stcCompilationSelection
 
     stcCompilationSelection isNil ifTrue:[
-        stcCompilationSelection := (self class stcCompilationOptions indexOf:(ParserFlags stcCompilation) ifAbsent:1) asValue.
-        stcCompilationSelection onChangeSend:#updateModifiedChannel to:self.
+	stcCompilationSelection := (self class stcCompilationOptions indexOf:(ParserFlags stcCompilation) ifAbsent:1) asValue.
+	stcCompilationSelection onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ stcCompilationSelection.
 !
@@ -12253,8 +12444,8 @@
 stcDefines
 
     stcDefines isNil ifTrue:[
-        stcDefines := ValueHolder new.
-        stcDefines onChangeSend:#updateModifiedChannel to:self.
+	stcDefines := ValueHolder new.
+	stcDefines onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ stcDefines.
 !
@@ -12262,16 +12453,16 @@
 stcIncludes
 
     stcIncludes isNil ifTrue:[
-        stcIncludes := ValueHolder new.
-        stcIncludes onChangeSend:#updateModifiedChannel to:self.
+	stcIncludes := ValueHolder new.
+	stcIncludes onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ stcIncludes.
 !
 
 stcKeepCIntermediate
     stcKeepCIntermediate isNil ifTrue:[
-        stcKeepCIntermediate := false asValue.
-        stcKeepCIntermediate onChangeSend:#updateModifiedChannel to:self.
+	stcKeepCIntermediate := false asValue.
+	stcKeepCIntermediate onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ stcKeepCIntermediate.
 
@@ -12281,8 +12472,8 @@
 stcLibraries
 
     stcLibraries isNil ifTrue:[
-        stcLibraries := ValueHolder new.
-        stcLibraries onChangeSend:#updateModifiedChannel to:self.
+	stcLibraries := ValueHolder new.
+	stcLibraries onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ stcLibraries.
 !
@@ -12290,8 +12481,8 @@
 stcLibraryPath
 
     stcLibraryPath isNil ifTrue:[
-        stcLibraryPath := ValueHolder new.
-        stcLibraryPath onChangeSend:#updateModifiedChannel to:self.
+	stcLibraryPath := ValueHolder new.
+	stcLibraryPath onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ stcLibraryPath.
 !
@@ -12299,12 +12490,13 @@
 stcOptions
 
     stcOptions isNil ifTrue:[
-        stcOptions := ValueHolder new.
-        stcOptions onChangeSend:#updateModifiedChannel to:self.
+	stcOptions := ValueHolder new.
+	stcOptions onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ stcOptions.
 ! !
 
+
 !AbstractSettingsApplication::STCCompilerSettingsAppl methodsFor:'help'!
 
 helpFilename
@@ -12320,6 +12512,7 @@
     "Created: / 16-09-2011 / 18:18:32 / cg"
 ! !
 
+
 !AbstractSettingsApplication::STCCompilerSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -12339,11 +12532,11 @@
     ((ParserFlags linkCommand) ~= self linkCommand value) ifTrue:[^ true].
     ((ParserFlags linkArgs) ~= self linkArgs value) ifTrue:[^ true].
     ((ParserFlags linkSharedArgs) ~= self linkSharedArgs value) ifTrue:[^ true].
-     (ParserFlags libPath ~= self stcLibraryPath value) ifTrue:[^ true]. 
+     (ParserFlags libPath ~= self stcLibraryPath value) ifTrue:[^ true].
 
     searchedLibs := ParserFlags searchedLibraries.
     searchedLibs notNil ifTrue:[
-        (String fromStringCollection:searchedLibs separatedBy:' ') ~= self stcLibraries value ifTrue:[^ true].
+	(String fromStringCollection:searchedLibs separatedBy:' ') ~= self stcLibraries value ifTrue:[^ true].
     ].
     ^ false.
 
@@ -12351,6 +12544,7 @@
     "Modified: / 16-09-2011 / 18:42:00 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeFormatSettingsAppl class methodsFor:'defaults'!
 
 exampleText
@@ -12366,37 +12560,38 @@
     self at:index put:methodArg.        "/ a two arg message
     self from:1 to:index put:methodArg. "/ a three arg message
     methodArg ifTrue:[
-        Transcript showCR:''hello''.      "/ condition
+	Transcript showCR:''hello''.      "/ condition
     ].
     methodArg ifTrue:[
-        Transcript showCR:''hello''.      "/ condition
+	Transcript showCR:''hello''.      "/ condition
     ] ifFalse:[
-        Transcript showCR:''world''.      
+	Transcript showCR:''world''.
     ].
     [methodArg] whileTrue:[
-        Transcript showCR:''hello''.      "/ looping
+	Transcript showCR:''hello''.      "/ looping
     ].
     [self aVeryLongConditionBlock and:[self toMakeBlockLonger]] whileTrue:[
-        Transcript showCR:''hello''.      "/ long blocks
+	Transcript showCR:''hello''.      "/ long blocks
     ].
     methodArg do:[:element |
-        Transcript showCR:''hello''.      "/ looping
+	Transcript showCR:''hello''.      "/ looping
     ].
     1 to:methodArg size do:[:index |
-        Transcript showCR:''hello''.      "/ looping
+	Transcript showCR:''hello''.      "/ looping
     ].
     methodArg keysAndValuesDo:[:index |
-        Transcript showCR:''hello''.      "/ looping
-    ].
-    Object errorSignal handle:[:ex |      
-        ex return                         
+	Transcript showCR:''hello''.      "/ looping
+    ].
+    Object errorSignal handle:[:ex |
+	ex return
     ] do:[                                "/ exception handling
-        self someAction                   "/ blocks
+	self someAction                   "/ blocks
     ].
     ^ self.
 '.
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeFormatSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -12415,13 +12610,14 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:'AbstractSettingsApplication::SourceCodeFormatSettingsAppl class defaultIcon'
-        ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:'AbstractSettingsApplication::SourceCodeFormatSettingsAppl class defaultIcon'
+	ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 ***************("H"H"H"H"H"Z**"EUUUUUUUUUY @*HV*)UUUUUUU&@B(!!ZUUUUUUUUVX@J"E)UUUUUUUUY @*HV*)UUUUUUU&@B(!!UUUV****%VX@J"E
 UUUUUUUUUY @*HUUUU****)U&@B(!!UUUUUUUUUVXB*"EUUUZ****UY J*HUUUUUUUUUURJ*(!!UUUV****%UH**"EUUUUUUUUUT"**HV*)UUUUUUURJ*(!!UV%
 UUUUUUUH**"EUZUUUUUUUT"**HV*)UUUUUUURJ*(!!UUUUUUUUUUH**"TQDQDQDQDQD"**("H"H"H"H"H"J(b') ; colorMapFromArray:#[240 160 80 192 80 0 64 0 0 240 208 160 0 0 0 240 240 240 192 192 192 240 128 0 208 208 208 48 48 48 160 160 160]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@_?? _??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0_??0O??0') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeFormatSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -12439,294 +12635,295 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Code Format Settings'
-          name: 'Code Format Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 604 676)
-        )
-        component: 
+	  label: 'Code Format Settings'
+	  name: 'Code Format Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 604 676)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel3'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: topSpace
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (VerticalPanelViewSpec
-                    name: 'VerticalPanel1'
-                    horizontalLayout: fit
-                    verticalLayout: bottom
-                    horizontalSpace: 3
-                    verticalSpace: 3
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ViewSpec
-                          name: 'Box1'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Space around Temporaries'
-                                name: 'CheckBox3'
-                                layout: (LayoutFrame 0 0 0 0 250 0 22 0)
-                                model: spaceAroundTemporaries
-                                translateLabel: true
-                              )
-                             (CheckBoxSpec
-                                label: 'Blank line after local Var Declaration'
-                                name: 'CheckBox4'
-                                layout: (LayoutFrame 250 0 0 0 0 1 22 0)
-                                model: emptyLineAfterTemporaries
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 604 22)
-                        )
-                       (ViewSpec
-                          name: 'Box11'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Space after ''^'''
-                                name: 'CheckBox5'
-                                layout: (LayoutFrame 0 0 0 0 250 0 22 0)
-                                model: spaceAfterReturnToken
-                                translateLabel: true
-                              )
-                             (CheckBoxSpec
-                                label: 'Space after '':'' in Keywords'
-                                name: 'CheckBox6'
-                                layout: (LayoutFrame 250 0 0 0 -5 1 22 0)
-                                model: spaceAfterKeywordSelector
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 604 22)
-                        )
-                       (ViewSpec
-                          name: 'Box15'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Space after ''['''
-                                name: 'CheckBox9'
-                                layout: (LayoutFrame 0 0 0 0 250 0 22 0)
-                                model: spaceAfterBlockStart
-                                translateLabel: true
-                              )
-                             (CheckBoxSpec
-                                label: 'Space before '']'''
-                                name: 'CheckBox10'
-                                layout: (LayoutFrame 250 0 0 0 -5 1 22 0)
-                                model: spaceBeforeBlockEnd
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 604 22)
-                        )
-                       (ViewSpec
-                          name: 'Box12'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'C-Style Blocks'
-                                name: 'CheckBox8'
-                                layout: (LayoutFrame 0 0 0 0 250 0 22 0)
-                                model: cStyleBlocks
-                                translateLabel: true
-                              )
-                             (CheckBoxSpec
-                                label: 'Block Args on new Line'
-                                name: 'CheckBox7'
-                                layout: (LayoutFrame 250 0 0 0 -5 1 22 0)
-                                model: blockArgumentsOnNewLine
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 604 22)
-                        )
-                       (ViewSpec
-                          name: 'Box13'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (LabelSpec
-                                label: 'Indent:'
-                                name: 'Label1'
-                                layout: (LayoutFrame 0 0 0 0 250 0 22 0)
-                                translateLabel: true
-                                adjust: right
-                              )
-                             (InputFieldSpec
-                                name: 'EntryField1'
-                                layout: (LayoutFrame 253 0 0 0 300 0 22 0)
-                                model: tabIndent
-                                type: number
-                                acceptOnReturn: true
-                                acceptOnTab: true
-                                acceptOnLostFocus: true
-                                acceptOnPointerLeave: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 604 30)
-                        )
-                       (ViewSpec
-                          name: 'Box16'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (LabelSpec
-                                label: 'Max Length for Single Line Blocks:'
-                                name: 'Label5'
-                                layout: (LayoutFrame 0 0 0 0 250 0 22 0)
-                                translateLabel: true
-                                adjust: right
-                              )
-                             (InputFieldSpec
-                                name: 'EntryField4'
-                                layout: (LayoutFrame 253 0 0 0 300 0 22 0)
-                                model: maxLengthForSingleLineBlocks
-                                type: number
-                                acceptOnReturn: true
-                                acceptOnTab: true
-                                acceptOnLostFocus: true
-                                acceptOnPointerLeave: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 604 29)
-                        )
-                       (HorizontalPanelViewSpec
-                          name: 'HorizontalPanel1'
-                          horizontalLayout: fitSpace
-                          verticalLayout: bottom
-                          horizontalSpace: 3
-                          verticalSpace: 3
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (ActionButtonSpec
-                                label: 'Reset to ST/X Default'
-                                name: 'Button1'
-                                translateLabel: true
-                                tabable: true
-                                model: resetToStxDefault
-                                extent: (Point 297 22)
-                              )
-                             (ActionButtonSpec
-                                label: 'Reset to RefactoryBrowser Default'
-                                name: 'Button2'
-                                translateLabel: true
-                                tabable: true
-                                model: resetToRBDefault
-                                extent: (Point 298 22)
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 604 30)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 604 180)
-                  )
-                 (ViewSpec
-                    name: 'SpacingBox1'
-                    extent: (Point 604 10)
-                  )
-                 (ViewSpec
-                    name: 'Box14'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Sample Output:'
-                          name: 'Label3'
-                          layout: (LayoutFrame 0 0 0 0 0 1 22 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (TextEditorSpec
-                          name: 'TextEditor3'
-                          layout: (LayoutFrame 0 0 22 0 0 1 300 0)
-                          model: editorText
-                          hasHorizontalScrollBar: true
-                          hasVerticalScrollBar: true
-                          isReadOnly: true
-                          postBuildCallback: postBuildTextEditor:
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 604 300)
-                  )
-                 (ViewSpec
-                    name: 'SpacingBox2'
-                    extent: (Point 604 10)
-                  )
-                 (CheckBoxSpec
-                    label: 'Auto Format'
-                    name: 'CheckBox2'
-                    model: autoFormat
-                    translateLabel: true
-                    extent: (Point 604 22)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel3'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fit
+	      verticalLayout: topSpace
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (VerticalPanelViewSpec
+		    name: 'VerticalPanel1'
+		    horizontalLayout: fit
+		    verticalLayout: bottom
+		    horizontalSpace: 3
+		    verticalSpace: 3
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (ViewSpec
+			  name: 'Box1'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Space around Temporaries'
+				name: 'CheckBox3'
+				layout: (LayoutFrame 0 0 0 0 250 0 22 0)
+				model: spaceAroundTemporaries
+				translateLabel: true
+			      )
+			     (CheckBoxSpec
+				label: 'Blank line after local Var Declaration'
+				name: 'CheckBox4'
+				layout: (LayoutFrame 250 0 0 0 0 1 22 0)
+				model: emptyLineAfterTemporaries
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 604 22)
+			)
+		       (ViewSpec
+			  name: 'Box11'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Space after ''^'''
+				name: 'CheckBox5'
+				layout: (LayoutFrame 0 0 0 0 250 0 22 0)
+				model: spaceAfterReturnToken
+				translateLabel: true
+			      )
+			     (CheckBoxSpec
+				label: 'Space after '':'' in Keywords'
+				name: 'CheckBox6'
+				layout: (LayoutFrame 250 0 0 0 -5 1 22 0)
+				model: spaceAfterKeywordSelector
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 604 22)
+			)
+		       (ViewSpec
+			  name: 'Box15'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Space after ''['''
+				name: 'CheckBox9'
+				layout: (LayoutFrame 0 0 0 0 250 0 22 0)
+				model: spaceAfterBlockStart
+				translateLabel: true
+			      )
+			     (CheckBoxSpec
+				label: 'Space before '']'''
+				name: 'CheckBox10'
+				layout: (LayoutFrame 250 0 0 0 -5 1 22 0)
+				model: spaceBeforeBlockEnd
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 604 22)
+			)
+		       (ViewSpec
+			  name: 'Box12'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'C-Style Blocks'
+				name: 'CheckBox8'
+				layout: (LayoutFrame 0 0 0 0 250 0 22 0)
+				model: cStyleBlocks
+				translateLabel: true
+			      )
+			     (CheckBoxSpec
+				label: 'Block Args on new Line'
+				name: 'CheckBox7'
+				layout: (LayoutFrame 250 0 0 0 -5 1 22 0)
+				model: blockArgumentsOnNewLine
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 604 22)
+			)
+		       (ViewSpec
+			  name: 'Box13'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (LabelSpec
+				label: 'Indent:'
+				name: 'Label1'
+				layout: (LayoutFrame 0 0 0 0 250 0 22 0)
+				translateLabel: true
+				adjust: right
+			      )
+			     (InputFieldSpec
+				name: 'EntryField1'
+				layout: (LayoutFrame 253 0 0 0 300 0 22 0)
+				model: tabIndent
+				type: number
+				acceptOnReturn: true
+				acceptOnTab: true
+				acceptOnLostFocus: true
+				acceptOnPointerLeave: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 604 30)
+			)
+		       (ViewSpec
+			  name: 'Box16'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (LabelSpec
+				label: 'Max Length for Single Line Blocks:'
+				name: 'Label5'
+				layout: (LayoutFrame 0 0 0 0 250 0 22 0)
+				translateLabel: true
+				adjust: right
+			      )
+			     (InputFieldSpec
+				name: 'EntryField4'
+				layout: (LayoutFrame 253 0 0 0 300 0 22 0)
+				model: maxLengthForSingleLineBlocks
+				type: number
+				acceptOnReturn: true
+				acceptOnTab: true
+				acceptOnLostFocus: true
+				acceptOnPointerLeave: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 604 29)
+			)
+		       (HorizontalPanelViewSpec
+			  name: 'HorizontalPanel1'
+			  horizontalLayout: fitSpace
+			  verticalLayout: bottom
+			  horizontalSpace: 3
+			  verticalSpace: 3
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (ActionButtonSpec
+				label: 'Reset to ST/X Default'
+				name: 'Button1'
+				translateLabel: true
+				tabable: true
+				model: resetToStxDefault
+				extent: (Point 297 22)
+			      )
+			     (ActionButtonSpec
+				label: 'Reset to RefactoryBrowser Default'
+				name: 'Button2'
+				translateLabel: true
+				tabable: true
+				model: resetToRBDefault
+				extent: (Point 298 22)
+			      )
+			     )
+
+			  )
+			  extent: (Point 604 30)
+			)
+		       )
+
+		    )
+		    extent: (Point 604 180)
+		  )
+		 (ViewSpec
+		    name: 'SpacingBox1'
+		    extent: (Point 604 10)
+		  )
+		 (ViewSpec
+		    name: 'Box14'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Sample Output:'
+			  name: 'Label3'
+			  layout: (LayoutFrame 0 0 0 0 0 1 22 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       (TextEditorSpec
+			  name: 'TextEditor3'
+			  layout: (LayoutFrame 0 0 22 0 0 1 300 0)
+			  model: editorText
+			  hasHorizontalScrollBar: true
+			  hasVerticalScrollBar: true
+			  isReadOnly: true
+			  postBuildCallback: postBuildTextEditor:
+			)
+		       )
+
+		    )
+		    extent: (Point 604 300)
+		  )
+		 (ViewSpec
+		    name: 'SpacingBox2'
+		    extent: (Point 604 10)
+		  )
+		 (CheckBoxSpec
+		    label: 'Auto Format'
+		    name: 'CheckBox2'
+		    model: autoFormat
+		    translateLabel: true
+		    extent: (Point 604 22)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeFormatSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
     reformatLocked := true.
 
-    self 
-        readAspects:
-            #( 
-                tabIndent
-                spaceAroundTemporaries
-                emptyLineAfterTemporaries
-                spaceAfterReturnToken
-                spaceAfterKeywordSelector
-                spaceAfterBlockStart
-                spaceBeforeBlockEnd
-                cStyleBlocks
-                blockArgumentsOnNewLine
-                maxLengthForSingleLineBlocks
-            )
-        from:RBFormatter.
+    self
+	readAspects:
+	    #(
+		tabIndent
+		spaceAroundTemporaries
+		emptyLineAfterTemporaries
+		spaceAfterReturnToken
+		spaceAfterKeywordSelector
+		spaceAfterBlockStart
+		spaceBeforeBlockEnd
+		cStyleBlocks
+		blockArgumentsOnNewLine
+		maxLengthForSingleLineBlocks
+	    )
+	from:RBFormatter.
 
     self autoFormat value:currentUserPrefs autoFormatting.
     self updateModifiedChannel.
@@ -12747,17 +12944,17 @@
     currentUserPrefs at:#'formatter.cStyleBlocks' put:self cStyleBlocks value.
     currentUserPrefs at:#'formatter.blockArgumentsOnNewLine' put:self blockArgumentsOnNewLine value.
     currentUserPrefs at:#'formatter.maxLengthForSingleLineBlocks' put:self maxLengthForSingleLineBlocks value.
-    RBFormatter 
-        tabIndent:self tabIndent value;
-        spaceAroundTemporaries:self spaceAroundTemporaries value;
-        emptyLineAfterTemporaries:self emptyLineAfterTemporaries value;
-        spaceAfterReturnToken:self spaceAfterReturnToken value;
-        spaceAfterKeywordSelector:self spaceAfterKeywordSelector value;
-        spaceAfterBlockStart:self spaceAfterBlockStart value;
-        spaceBeforeBlockEnd:self spaceBeforeBlockEnd value;
-        cStyleBlocks:self cStyleBlocks value;
-        blockArgumentsOnNewLine:self blockArgumentsOnNewLine value;
-        maxLengthForSingleLineBlocks:self maxLengthForSingleLineBlocks value asInteger.
+    RBFormatter
+	tabIndent:self tabIndent value;
+	spaceAroundTemporaries:self spaceAroundTemporaries value;
+	emptyLineAfterTemporaries:self emptyLineAfterTemporaries value;
+	spaceAfterReturnToken:self spaceAfterReturnToken value;
+	spaceAfterKeywordSelector:self spaceAfterKeywordSelector value;
+	spaceAfterBlockStart:self spaceAfterBlockStart value;
+	spaceBeforeBlockEnd:self spaceBeforeBlockEnd value;
+	cStyleBlocks:self cStyleBlocks value;
+	blockArgumentsOnNewLine:self blockArgumentsOnNewLine value;
+	maxLengthForSingleLineBlocks:self maxLengthForSingleLineBlocks value asInteger.
 !
 
 reformat
@@ -12768,33 +12965,33 @@
      s_spaceAfterBlockStart s_spaceBeforeBlockEnd|
 
     reformatLocked ifFalse:[
-        "/
-        "/ temporary change the RBFormatters settings ...
-        "/
-        s_tabIndent := RBFormatter tabIndent.
-        s_spaceAroundTemporaries := RBFormatter spaceAroundTemporaries.
-        s_emptyLineAfterTemporaries := RBFormatter emptyLineAfterTemporaries.
-        s_spaceAfterReturnToken := RBFormatter spaceAfterReturnToken.
-        s_spaceAfterKeywordSelector := RBFormatter spaceAfterKeywordSelector.
-        s_spaceAfterBlockStart := RBFormatter spaceAfterBlockStart.
-        s_spaceBeforeBlockEnd := RBFormatter spaceBeforeBlockEnd.
-        s_cStyleBlocks := RBFormatter cStyleBlocks.
-        s_blockArgumentsOnNewLine := RBFormatter blockArgumentsOnNewLine.
-        s_maxLengthForSingleLineBlocks := RBFormatter maxLengthForSingleLineBlocks.
-
-        RBFormatter 
-            tabIndent:self tabIndent value;
-            spaceAroundTemporaries:self spaceAroundTemporaries value;
-            emptyLineAfterTemporaries:self emptyLineAfterTemporaries value;
-            spaceAfterReturnToken:self spaceAfterReturnToken value;
-            spaceAfterKeywordSelector:self spaceAfterKeywordSelector value;
-            spaceAfterBlockStart:self spaceAfterBlockStart value;
-            spaceBeforeBlockEnd:self spaceBeforeBlockEnd value;
-            cStyleBlocks:self cStyleBlocks value;
-            blockArgumentsOnNewLine:self blockArgumentsOnNewLine value;
-            maxLengthForSingleLineBlocks:self maxLengthForSingleLineBlocks value.
-
-"/        tree := RBParser 
+	"/
+	"/ temporary change the RBFormatters settings ...
+	"/
+	s_tabIndent := RBFormatter tabIndent.
+	s_spaceAroundTemporaries := RBFormatter spaceAroundTemporaries.
+	s_emptyLineAfterTemporaries := RBFormatter emptyLineAfterTemporaries.
+	s_spaceAfterReturnToken := RBFormatter spaceAfterReturnToken.
+	s_spaceAfterKeywordSelector := RBFormatter spaceAfterKeywordSelector.
+	s_spaceAfterBlockStart := RBFormatter spaceAfterBlockStart.
+	s_spaceBeforeBlockEnd := RBFormatter spaceBeforeBlockEnd.
+	s_cStyleBlocks := RBFormatter cStyleBlocks.
+	s_blockArgumentsOnNewLine := RBFormatter blockArgumentsOnNewLine.
+	s_maxLengthForSingleLineBlocks := RBFormatter maxLengthForSingleLineBlocks.
+
+	RBFormatter
+	    tabIndent:self tabIndent value;
+	    spaceAroundTemporaries:self spaceAroundTemporaries value;
+	    emptyLineAfterTemporaries:self emptyLineAfterTemporaries value;
+	    spaceAfterReturnToken:self spaceAfterReturnToken value;
+	    spaceAfterKeywordSelector:self spaceAfterKeywordSelector value;
+	    spaceAfterBlockStart:self spaceAfterBlockStart value;
+	    spaceBeforeBlockEnd:self spaceBeforeBlockEnd value;
+	    cStyleBlocks:self cStyleBlocks value;
+	    blockArgumentsOnNewLine:self blockArgumentsOnNewLine value;
+	    maxLengthForSingleLineBlocks:self maxLengthForSingleLineBlocks value.
+
+"/        tree := RBParser
 "/                    parseMethod:self class exampleText
 "/                    onError: [:aString :position | nil].
 "/        tree do:[:node |
@@ -12803,19 +13000,19 @@
 "/            ]
 "/        ].
 "/        self editorText value:tree printString.
-        self editorText value:(RBFormatter format:(self class exampleText)).
-
-        RBFormatter 
-            tabIndent:s_tabIndent;
-            spaceAroundTemporaries:s_spaceAroundTemporaries;
-            emptyLineAfterTemporaries:s_emptyLineAfterTemporaries;
-            spaceAfterReturnToken:s_spaceAfterReturnToken;
-            spaceAfterKeywordSelector:s_spaceAfterKeywordSelector;
-            spaceAfterBlockStart:s_spaceAfterBlockStart;
-            spaceBeforeBlockEnd:s_spaceBeforeBlockEnd;
-            cStyleBlocks:s_cStyleBlocks;
-            blockArgumentsOnNewLine:s_blockArgumentsOnNewLine;
-            maxLengthForSingleLineBlocks:s_maxLengthForSingleLineBlocks.
+	self editorText value:(RBFormatter format:(self class exampleText)).
+
+	RBFormatter
+	    tabIndent:s_tabIndent;
+	    spaceAroundTemporaries:s_spaceAroundTemporaries;
+	    emptyLineAfterTemporaries:s_emptyLineAfterTemporaries;
+	    spaceAfterReturnToken:s_spaceAfterReturnToken;
+	    spaceAfterKeywordSelector:s_spaceAfterKeywordSelector;
+	    spaceAfterBlockStart:s_spaceAfterBlockStart;
+	    spaceBeforeBlockEnd:s_spaceBeforeBlockEnd;
+	    cStyleBlocks:s_cStyleBlocks;
+	    blockArgumentsOnNewLine:s_blockArgumentsOnNewLine;
+	    maxLengthForSingleLineBlocks:s_maxLengthForSingleLineBlocks.
       ].
 !
 
@@ -12853,13 +13050,14 @@
     self reformat.
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeFormatSettingsAppl methodsFor:'aspects'!
 
 autoFormat
 
     autoFormat isNil ifTrue:[
-        autoFormat := currentUserPrefs autoFormatting asValue.
-        autoFormat onChangeSend:#updateModifiedChannel to:self
+	autoFormat := currentUserPrefs autoFormatting asValue.
+	autoFormat onChangeSend:#updateModifiedChannel to:self
     ].
     ^ autoFormat.
 !
@@ -12867,8 +13065,8 @@
 blockArgumentsOnNewLine
 
     blockArgumentsOnNewLine isNil ifTrue:[
-        blockArgumentsOnNewLine := true asValue.
-        blockArgumentsOnNewLine addDependent:self.
+	blockArgumentsOnNewLine := true asValue.
+	blockArgumentsOnNewLine addDependent:self.
     ].
     ^ blockArgumentsOnNewLine.
 !
@@ -12876,8 +13074,8 @@
 cStyleBlocks
 
     cStyleBlocks isNil ifTrue:[
-        cStyleBlocks := true asValue.
-        cStyleBlocks addDependent:self.
+	cStyleBlocks := true asValue.
+	cStyleBlocks addDependent:self.
     ].
     ^ cStyleBlocks.
 !
@@ -12885,7 +13083,7 @@
 editorText
 
     editorText isNil ifTrue:[
-        editorText := ValueHolder new.
+	editorText := ValueHolder new.
     ].
     ^ editorText.
 !
@@ -12893,8 +13091,8 @@
 emptyLineAfterTemporaries
 
     emptyLineAfterTemporaries isNil ifTrue:[
-        emptyLineAfterTemporaries := true asValue.
-        emptyLineAfterTemporaries addDependent:self.
+	emptyLineAfterTemporaries := true asValue.
+	emptyLineAfterTemporaries addDependent:self.
     ].
     ^ emptyLineAfterTemporaries.
 !
@@ -12902,8 +13100,8 @@
 maxLengthForSingleLineBlocks
 
     maxLengthForSingleLineBlocks isNil ifTrue:[
-        maxLengthForSingleLineBlocks := ValueHolder new.
-        maxLengthForSingleLineBlocks addDependent:self.
+	maxLengthForSingleLineBlocks := ValueHolder new.
+	maxLengthForSingleLineBlocks addDependent:self.
     ].
     ^ maxLengthForSingleLineBlocks.
 !
@@ -12911,8 +13109,8 @@
 spaceAfterBlockStart
 
     spaceAfterBlockStart isNil ifTrue:[
-        spaceAfterBlockStart := true asValue.
-        spaceAfterBlockStart addDependent:self.
+	spaceAfterBlockStart := true asValue.
+	spaceAfterBlockStart addDependent:self.
     ].
     ^ spaceAfterBlockStart.
 !
@@ -12920,8 +13118,8 @@
 spaceAfterKeywordSelector
 
     spaceAfterKeywordSelector isNil ifTrue:[
-        spaceAfterKeywordSelector := true asValue.
-        spaceAfterKeywordSelector addDependent:self.
+	spaceAfterKeywordSelector := true asValue.
+	spaceAfterKeywordSelector addDependent:self.
     ].
     ^ spaceAfterKeywordSelector.
 !
@@ -12929,8 +13127,8 @@
 spaceAfterReturnToken
 
     spaceAfterReturnToken isNil ifTrue:[
-        spaceAfterReturnToken := true asValue.
-        spaceAfterReturnToken addDependent:self.
+	spaceAfterReturnToken := true asValue.
+	spaceAfterReturnToken addDependent:self.
     ].
     ^ spaceAfterReturnToken.
 !
@@ -12938,8 +13136,8 @@
 spaceAroundTemporaries
 
     spaceAroundTemporaries isNil ifTrue:[
-        spaceAroundTemporaries := true asValue.
-        spaceAroundTemporaries addDependent:self.
+	spaceAroundTemporaries := true asValue.
+	spaceAroundTemporaries addDependent:self.
     ].
     ^ spaceAroundTemporaries.
 !
@@ -12947,8 +13145,8 @@
 spaceBeforeBlockEnd
 
     spaceBeforeBlockEnd isNil ifTrue:[
-        spaceBeforeBlockEnd := true asValue.
-        spaceBeforeBlockEnd addDependent:self.
+	spaceBeforeBlockEnd := true asValue.
+	spaceBeforeBlockEnd addDependent:self.
     ].
     ^ spaceBeforeBlockEnd.
 !
@@ -12956,35 +13154,37 @@
 tabIndent
 
     tabIndent isNil ifTrue:[
-        tabIndent := ValueHolder new.
-        tabIndent addDependent:self.
+	tabIndent := ValueHolder new.
+	tabIndent addDependent:self.
     ].
     ^ tabIndent.
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeFormatSettingsAppl methodsFor:'change & update'!
 
-update:something with:aParameter from:changedObject 
-    (changedObject == self blockArgumentsOnNewLine 
-    or:[ changedObject == self cStyleBlocks 
-    or:[ changedObject == self emptyLineAfterTemporaries 
-    or:[ changedObject == self maxLengthForSingleLineBlocks 
-    or:[ changedObject == self spaceAfterKeywordSelector 
-    or:[ changedObject == self spaceAfterReturnToken 
-    or:[ changedObject == self spaceAfterBlockStart 
-    or:[ changedObject == self spaceBeforeBlockEnd 
-    or:[ changedObject == self spaceAroundTemporaries 
-    or:[ changedObject == self tabIndent]]]]]]]]]) 
+update:something with:aParameter from:changedObject
+    (changedObject == self blockArgumentsOnNewLine
+    or:[ changedObject == self cStyleBlocks
+    or:[ changedObject == self emptyLineAfterTemporaries
+    or:[ changedObject == self maxLengthForSingleLineBlocks
+    or:[ changedObject == self spaceAfterKeywordSelector
+    or:[ changedObject == self spaceAfterReturnToken
+    or:[ changedObject == self spaceAfterBlockStart
+    or:[ changedObject == self spaceBeforeBlockEnd
+    or:[ changedObject == self spaceAroundTemporaries
+    or:[ changedObject == self tabIndent]]]]]]]]])
     ifTrue:[
-        self updateModifiedChannel.
-        self reformat.
-        ^ self
-    ].
-    super 
-        update:something
-        with:aParameter
-        from:changedObject
-! !
+	self updateModifiedChannel.
+	self reformat.
+	^ self
+    ].
+    super
+	update:something
+	with:aParameter
+	from:changedObject
+! !
+
 
 !AbstractSettingsApplication::SourceCodeFormatSettingsAppl methodsFor:'help'!
 
@@ -12992,15 +13192,16 @@
     ^ 'Launcher/sourceFormatSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeFormatSettingsAppl methodsFor:'initialization & release'!
 
 initialize
     super initialize.
     RBFormatter isNil ifTrue:[
-        ^ self warn:'Sorry, no RBFormatter class'
+	^ self warn:'Sorry, no RBFormatter class'
     ].
     RBFormatter isLoaded ifFalse:[
-        WindowGroup activeGroup withWaitCursorDo:[RBFormatter autoload]
+	WindowGroup activeGroup withWaitCursorDo:[RBFormatter autoload]
     ].
     reformatLocked := false.
 !
@@ -13011,30 +13212,32 @@
     scrollWhenUpdating:nil.
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeFormatSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
     self autoFormat value ~= currentUserPrefs autoFormatting ? false ifTrue:[^ true].
 
     (self
-        hasChangedAspectIn:
-            #(
-                tabIndent
-                spaceAroundTemporaries
-                emptyLineAfterTemporaries
-                spaceAfterReturnToken
-                spaceAfterKeywordSelector
-                spaceAfterBlockStart
-                spaceBeforeBlockEnd
-                cStyleBlocks
-                blockArgumentsOnNewLine
-                maxLengthForSingleLineBlocks
-            )
-        asComparedTo:RBFormatter) ifTrue:[^ true].
+	hasChangedAspectIn:
+	    #(
+		tabIndent
+		spaceAroundTemporaries
+		emptyLineAfterTemporaries
+		spaceAfterReturnToken
+		spaceAfterKeywordSelector
+		spaceAfterBlockStart
+		spaceBeforeBlockEnd
+		cStyleBlocks
+		blockArgumentsOnNewLine
+		maxLengthForSingleLineBlocks
+	    )
+	asComparedTo:RBFormatter) ifTrue:[^ true].
 
     ^ false
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl class methodsFor:'documentation'!
 
 documentation
@@ -13046,6 +13249,7 @@
 "
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl class methodsFor:'help specs'!
 
 helpSpec
@@ -13056,7 +13260,7 @@
      the UIHelpTool may not be able to read the specification."
 
     "
-     UIHelpTool openOnClass:AbstractSettingsApplication::SourceCodeManagementSettingsAppl    
+     UIHelpTool openOnClass:AbstractSettingsApplication::SourceCodeManagementSettingsAppl
     "
 
     <resource: #help>
@@ -13119,6 +13323,7 @@
     "Modified: / 09-08-2012 / 09:41:28 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -13137,8 +13342,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::SourceCodeManagementSettingsAppl class defaultIcon'
-        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::SourceCodeManagementSettingsAppl class defaultIcon'
+	ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@@@@@@A@PHB@0P@@@@@@@@@@@@@@@@@@@HEA \HA $JB0HD@@@@@@@@@@@@@@HLA04NC0HD@@L@@ P@@@@@@@@@@@@ED@ NDP@@@@@@@@@D@@@@@@@@
 @@@BA \FAPP@@@@@@@@@@@P@@@@@@@@@AQ@RC0@@@@@@@@@@@@@@@@@@@@@@@@TGA!!DD@@@@@@@@@@@@@@@@@@@D@PDIA08OA@@@@@@@@@@@@@@@@@@@AP S
 A0XIBPXGC0P@@@@@@@@@@@@@@@@ECAPLBPXOAP@@@@@@EQX@@@@@@@@@@@TIE@XOAP@@@@@@EQ\XE @@@@@@@@@@AP$OAP@@@@@@FQ\ZE!! V@@@@@@@@@@@E
@@ -13147,6 +13352,7 @@
 EQXVE @@@@@@@@@@@@@@@@@@@@@@@A(Z@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 32 64 0 0 64 0 32 32 0 0 32 0 32 96 32 96 192 128 192 224 192 160 224 160 32 128 64 64 96 64 64 96 32 32 160 64 160 224 192 64 160 96 32 128 32 224 224 224 64 128 64 160 192 160 224 224 192 32 160 96 160 160 160 64 64 64 96 96 96 128 128 128 192 192 192 32 32 32 32 64 32]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@O8@@?>@A??@A?C C<@0C8@PC8@@??@@??F@_>O@O<_ G8?0C1?8A#?<@C?<@@_@H@_@L@?@GC>@C?>@A?<@@_0@') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -13164,380 +13370,381 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Source Code Manager Settings'
-          name: 'Source Code Manager Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 659 554)
-        )
-        component: 
+	  label: 'Source Code Manager Settings'
+	  name: 'Source Code Manager Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 659 554)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel2'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: topSpace
-              horizontalSpace: 3
-              verticalSpace: 20
-              component: 
-             (SpecCollection
-                collection: (
-                 (VerticalPanelViewSpec
-                    name: 'VerticalPanel3'
-                    horizontalLayout: fit
-                    verticalLayout: top
-                    horizontalSpace: 3
-                    verticalSpace: 4
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ViewSpec
-                          name: 'Box3'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Sourcecode Management'
-                                name: 'SourcecodeManagementCheckBox'
-                                layout: (LayoutFrame 5 0 5 0.0 256 0 27 0)
-                                activeHelpKey: useManager
-                                model: useManager
-                                translateLabel: true
-                              )
-                             (ComboListSpec
-                                name: 'ComboList1'
-                                layout: (LayoutFrame -151 1 5 0 -5 1 27 0)
-                                activeHelpKey: defaultManagerType
-                                visibilityChannel: moreThanOneManagerTypesAvailable
-                                enableChannel: useManager
-                                model: selectedManagerTypeIndexHolder
-                                comboList: availableManagerTypeNames
-                                useIndex: true
-                              )
-                             (LabelSpec
-                                label: 'Default Repository Type:'
-                                name: 'Label14'
-                                layout: (LayoutFrame -347 1 5 0 -154 1 27 0)
-                                activeHelpKey: defaultManagerType
-                                translateLabel: true
-                                adjust: right
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 659 30)
-                        )
-                       (FramedBoxSpec
-                          label: 'Per Package Settings'
-                          name: 'PerPackageConfiguration'
-                          activeHelpKey: perPackageConfiguration
-                          labelPosition: topLeft
-                          translateLabel: true
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (VerticalPanelViewSpec
-                                name: 'RepositoryConfigurations'
-                                layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-                                activeHelpKey: perPackageConfiguration
-                                horizontalLayout: fit
-                                verticalLayout: bottomFit
-                                horizontalSpace: 3
-                                verticalSpace: 3
-                                component: 
-                               (SpecCollection
-                                  collection: (
-                                   (ViewSpec
-                                      name: 'RepositoryConfigurationListBox'
-                                      activeHelpKey: perPackageConfiguration
-                                      component: 
-                                     (SpecCollection
-                                        collection: (
-                                         (DataSetSpec
-                                            name: 'RepositoryConfigurationList'
-                                            layout: (LayoutFrame 0 0 0 0 -85 1 0 1)
-                                            enableChannel: useManager
-                                            model: selectedManagerPerMatchingModuleHolder
-                                            hasHorizontalScrollBar: true
-                                            hasVerticalScrollBar: true
-                                            dataList: managerPerMatchingModule
-                                            columnHolder: managerPerMatchingModuleColumns
-                                            beDependentOfRows: true
-                                          )
-                                         (VerticalPanelViewSpec
-                                            name: 'Buttons1'
-                                            layout: (LayoutFrame -80 1 0 0 0 1 -22 1)
-                                            horizontalLayout: fit
-                                            verticalLayout: top
-                                            horizontalSpace: 5
-                                            verticalSpace: 3
-                                            component: 
-                                           (SpecCollection
-                                              collection: (
-                                               (ActionButtonSpec
-                                                  label: 'Add...'
-                                                  name: 'ButtonAdd'
-                                                  activeHelpKey: addPerPackageManager
-                                                  translateLabel: true
-                                                  model: actionAdd
-                                                  extent: (Point 80 22)
-                                                )
-                                               (ActionButtonSpec
-                                                  label: 'Edit...'
-                                                  name: 'ButtonEdit'
-                                                  activeHelpKey: editPerPackageManager
-                                                  translateLabel: true
-                                                  model: actionEdit
-                                                  enableChannel: canRemoveManagerPerPackageEntry
-                                                  extent: (Point 80 22)
-                                                )
-                                               (ActionButtonSpec
-                                                  label: 'Move Up'
-                                                  name: 'ButtonModeUp'
-                                                  activeHelpKey: moveManagerUp
-                                                  translateLabel: true
-                                                  model: actionMoveUp
-                                                  enableChannel: canMoveUp
-                                                  extent: (Point 80 22)
-                                                )
-                                               (ActionButtonSpec
-                                                  label: 'Move Down'
-                                                  name: 'ButtonModeDown'
-                                                  activeHelpKey: moveManagerDown
-                                                  translateLabel: true
-                                                  model: actionMoveDown
-                                                  enableChannel: canMoveDown
-                                                  extent: (Point 80 22)
-                                                )
-                                               (LabelSpec
-                                                  name: 'SpacingLabel'
-                                                  translateLabel: true
-                                                  extent: (Point 80 22)
-                                                )
-                                               (ActionButtonSpec
-                                                  label: 'Remove'
-                                                  name: 'ButtonRemove'
-                                                  activeHelpKey: removePerPackageManager
-                                                  translateLabel: true
-                                                  model: actionRemove
-                                                  enableChannel: canRemoveManagerPerPackageEntry
-                                                  extent: (Point 80 22)
-                                                )
-                                               )
-                                             
-                                            )
-                                          )
-                                         (ActionButtonSpec
-                                            label: 'Test'
-                                            name: 'Button2'
-                                            layout: (LayoutFrame -80 1 -22 1 0 1 0 1)
-                                            activeHelpKey: checkPerPackageManager
-                                            translateLabel: true
-                                            model: actionTest
-                                          )
-                                         )
-                                       
-                                      )
-                                      extent: (Point 625 266)
-                                    )
-                                   )
-                                 
-                                )
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 659 300)
-                        )
-                       (FramedBoxSpec
-                          label: 'Source Cache'
-                          name: 'SourceCacheBox'
-                          activeHelpKey: sourceCache
-                          labelPosition: topLeft
-                          translateLabel: true
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (ViewSpec
-                                name: 'SourceCacheDirBox'
-                                layout: (LayoutFrame 0 0 0 0 0 1 30 0)
-                                component: 
-                               (SpecCollection
-                                  collection: (
-                                   (FilenameInputFieldSpec
-                                      name: 'FilenameEntryField1'
-                                      layout: (LayoutFrame 64 0.25 0 0 0 1 22 0)
-                                      enableChannel: useManager
-                                      model: sourceCacheDir
-                                      immediateAccept: false
-                                      acceptOnReturn: true
-                                      acceptOnTab: true
-                                      acceptOnLostFocus: true
-                                      acceptOnPointerLeave: true
-                                    )
-                                   (LabelSpec
-                                      label: 'Source Cache Dir:'
-                                      name: 'SourceCacheDirLabel'
-                                      layout: (LayoutFrame 0 0.0 0 0 60 0.25 22 0)
-                                      translateLabel: true
-                                      adjust: right
-                                    )
-                                   )
-                                 
-                                )
-                              )
-                             (HorizontalPanelViewSpec
-                                name: 'CacheActionsHorizontalPanel'
-                                layout: (LayoutFrame 0 0 -25 1 0 1 0 1)
-                                horizontalLayout: right
-                                verticalLayout: center
-                                horizontalSpace: 3
-                                verticalSpace: 3
-                                component: 
-                               (SpecCollection
-                                  collection: (
-                                   (ActionButtonSpec
-                                      label: 'Browse Cache'
-                                      name: 'Button1'
-                                      activeHelpKey: browseSourceCache
-                                      translateLabel: true
-                                      tabable: true
-                                      model: browseSourceCache
-                                      enableChannel: useManager
-                                      extent: (Point 171 22)
-                                    )
-                                   (ViewSpec
-                                      name: 'Box4'
-                                      extent: (Point 20 10)
-                                    )
-                                   (ActionButtonSpec
-                                      label: 'Flush Cache now'
-                                      name: 'FlushCacheNowButton'
-                                      activeHelpKey: flushSourceCache
-                                      translateLabel: true
-                                      tabable: true
-                                      model: flushSourceCache
-                                      enableChannel: useManager
-                                      extent: (Point 171 22)
-                                    )
-                                   (ActionButtonSpec
-                                      label: 'Condense Cache now'
-                                      name: 'CondenseCacheNowButton'
-                                      activeHelpKey: condenseSourceCache
-                                      translateLabel: true
-                                      tabable: true
-                                      model: condenseSourceCache
-                                      enableChannel: useManager
-                                      extent: (Point 171 22)
-                                    )
-                                   )
-                                 
-                                )
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 659 95)
-                        )
-                       (ViewSpec
-                          name: 'UseLocalSourceBox'
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'If Present, Use Local Source (Suppress Checkout)'
-                                name: 'CheckBox4'
-                                layout: (LayoutFrame 30 0 0 0 -5 1 23 0)
-                                activeHelpKey: useLocalSources
-                                enableChannel: useManager
-                                model: localSourceFirst
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 659 22)
-                        )
-                       (ViewSpec
-                          name: 'KeepMethodSourceBox'
-                          activeHelpKey: keepMethodSourceInImage
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Keep Method Source (In Image)'
-                                name: 'CheckBox7'
-                                layout: (LayoutFrame 30 0 0 0 -5 1 23 0)
-                                activeHelpKey: keepMethodSourceInImage
-                                enableChannel: useManager
-                                model: keepMethodSource
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 659 22)
-                        )
-                       (ViewSpec
-                          name: 'CheckForHaltSendsBox'
-                          activeHelpKey: checkClassesWhenCheckingIn
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Check for halt/error-Sends when Checking in'
-                                name: 'CheckBox5'
-                                layout: (LayoutFrame 30 0 0 0 -5 1 23 0)
-                                activeHelpKey: checkClassesWhenCheckingIn
-                                enableChannel: useManager
-                                model: checkClassesWhenCheckingIn
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 659 22)
-                        )
-                       (ViewSpec
-                          name: 'VerboseBox'
-                          activeHelpKey: verboseSourceCodeAccess
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'Verbose (Trace Operations on Transcript)'
-                                name: 'CheckBox6'
-                                layout: (LayoutFrame 30 0 0 0 -5 1 23 0)
-                                activeHelpKey: verboseSourceCodeAccess
-                                enableChannel: useManager
-                                model: verboseSourceCodeAccess
-                                translateLabel: true
-                              )
-                             )
-                           
-                          )
-                          extent: (Point 659 22)
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 659 768)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel2'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fit
+	      verticalLayout: topSpace
+	      horizontalSpace: 3
+	      verticalSpace: 20
+	      component:
+	     (SpecCollection
+		collection: (
+		 (VerticalPanelViewSpec
+		    name: 'VerticalPanel3'
+		    horizontalLayout: fit
+		    verticalLayout: top
+		    horizontalSpace: 3
+		    verticalSpace: 4
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (ViewSpec
+			  name: 'Box3'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Sourcecode Management'
+				name: 'SourcecodeManagementCheckBox'
+				layout: (LayoutFrame 5 0 5 0.0 256 0 27 0)
+				activeHelpKey: useManager
+				model: useManager
+				translateLabel: true
+			      )
+			     (ComboListSpec
+				name: 'ComboList1'
+				layout: (LayoutFrame -151 1 5 0 -5 1 27 0)
+				activeHelpKey: defaultManagerType
+				visibilityChannel: moreThanOneManagerTypesAvailable
+				enableChannel: useManager
+				model: selectedManagerTypeIndexHolder
+				comboList: availableManagerTypeNames
+				useIndex: true
+			      )
+			     (LabelSpec
+				label: 'Default Repository Type:'
+				name: 'Label14'
+				layout: (LayoutFrame -347 1 5 0 -154 1 27 0)
+				activeHelpKey: defaultManagerType
+				translateLabel: true
+				adjust: right
+			      )
+			     )
+
+			  )
+			  extent: (Point 659 30)
+			)
+		       (FramedBoxSpec
+			  label: 'Per Package Settings'
+			  name: 'PerPackageConfiguration'
+			  activeHelpKey: perPackageConfiguration
+			  labelPosition: topLeft
+			  translateLabel: true
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (VerticalPanelViewSpec
+				name: 'RepositoryConfigurations'
+				layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+				activeHelpKey: perPackageConfiguration
+				horizontalLayout: fit
+				verticalLayout: bottomFit
+				horizontalSpace: 3
+				verticalSpace: 3
+				component:
+			       (SpecCollection
+				  collection: (
+				   (ViewSpec
+				      name: 'RepositoryConfigurationListBox'
+				      activeHelpKey: perPackageConfiguration
+				      component:
+				     (SpecCollection
+					collection: (
+					 (DataSetSpec
+					    name: 'RepositoryConfigurationList'
+					    layout: (LayoutFrame 0 0 0 0 -85 1 0 1)
+					    enableChannel: useManager
+					    model: selectedManagerPerMatchingModuleHolder
+					    hasHorizontalScrollBar: true
+					    hasVerticalScrollBar: true
+					    dataList: managerPerMatchingModule
+					    columnHolder: managerPerMatchingModuleColumns
+					    beDependentOfRows: true
+					  )
+					 (VerticalPanelViewSpec
+					    name: 'Buttons1'
+					    layout: (LayoutFrame -80 1 0 0 0 1 -22 1)
+					    horizontalLayout: fit
+					    verticalLayout: top
+					    horizontalSpace: 5
+					    verticalSpace: 3
+					    component:
+					   (SpecCollection
+					      collection: (
+					       (ActionButtonSpec
+						  label: 'Add...'
+						  name: 'ButtonAdd'
+						  activeHelpKey: addPerPackageManager
+						  translateLabel: true
+						  model: actionAdd
+						  extent: (Point 80 22)
+						)
+					       (ActionButtonSpec
+						  label: 'Edit...'
+						  name: 'ButtonEdit'
+						  activeHelpKey: editPerPackageManager
+						  translateLabel: true
+						  model: actionEdit
+						  enableChannel: canRemoveManagerPerPackageEntry
+						  extent: (Point 80 22)
+						)
+					       (ActionButtonSpec
+						  label: 'Move Up'
+						  name: 'ButtonModeUp'
+						  activeHelpKey: moveManagerUp
+						  translateLabel: true
+						  model: actionMoveUp
+						  enableChannel: canMoveUp
+						  extent: (Point 80 22)
+						)
+					       (ActionButtonSpec
+						  label: 'Move Down'
+						  name: 'ButtonModeDown'
+						  activeHelpKey: moveManagerDown
+						  translateLabel: true
+						  model: actionMoveDown
+						  enableChannel: canMoveDown
+						  extent: (Point 80 22)
+						)
+					       (LabelSpec
+						  name: 'SpacingLabel'
+						  translateLabel: true
+						  extent: (Point 80 22)
+						)
+					       (ActionButtonSpec
+						  label: 'Remove'
+						  name: 'ButtonRemove'
+						  activeHelpKey: removePerPackageManager
+						  translateLabel: true
+						  model: actionRemove
+						  enableChannel: canRemoveManagerPerPackageEntry
+						  extent: (Point 80 22)
+						)
+					       )
+
+					    )
+					  )
+					 (ActionButtonSpec
+					    label: 'Test'
+					    name: 'Button2'
+					    layout: (LayoutFrame -80 1 -22 1 0 1 0 1)
+					    activeHelpKey: checkPerPackageManager
+					    translateLabel: true
+					    model: actionTest
+					  )
+					 )
+
+				      )
+				      extent: (Point 625 266)
+				    )
+				   )
+
+				)
+			      )
+			     )
+
+			  )
+			  extent: (Point 659 300)
+			)
+		       (FramedBoxSpec
+			  label: 'Source Cache'
+			  name: 'SourceCacheBox'
+			  activeHelpKey: sourceCache
+			  labelPosition: topLeft
+			  translateLabel: true
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (ViewSpec
+				name: 'SourceCacheDirBox'
+				layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+				component:
+			       (SpecCollection
+				  collection: (
+				   (FilenameInputFieldSpec
+				      name: 'FilenameEntryField1'
+				      layout: (LayoutFrame 64 0.25 0 0 0 1 22 0)
+				      enableChannel: useManager
+				      model: sourceCacheDir
+				      immediateAccept: false
+				      acceptOnReturn: true
+				      acceptOnTab: true
+				      acceptOnLostFocus: true
+				      acceptOnPointerLeave: true
+				    )
+				   (LabelSpec
+				      label: 'Source Cache Dir:'
+				      name: 'SourceCacheDirLabel'
+				      layout: (LayoutFrame 0 0.0 0 0 60 0.25 22 0)
+				      translateLabel: true
+				      adjust: right
+				    )
+				   )
+
+				)
+			      )
+			     (HorizontalPanelViewSpec
+				name: 'CacheActionsHorizontalPanel'
+				layout: (LayoutFrame 0 0 -25 1 0 1 0 1)
+				horizontalLayout: right
+				verticalLayout: center
+				horizontalSpace: 3
+				verticalSpace: 3
+				component:
+			       (SpecCollection
+				  collection: (
+				   (ActionButtonSpec
+				      label: 'Browse Cache'
+				      name: 'Button1'
+				      activeHelpKey: browseSourceCache
+				      translateLabel: true
+				      tabable: true
+				      model: browseSourceCache
+				      enableChannel: useManager
+				      extent: (Point 171 22)
+				    )
+				   (ViewSpec
+				      name: 'Box4'
+				      extent: (Point 20 10)
+				    )
+				   (ActionButtonSpec
+				      label: 'Flush Cache now'
+				      name: 'FlushCacheNowButton'
+				      activeHelpKey: flushSourceCache
+				      translateLabel: true
+				      tabable: true
+				      model: flushSourceCache
+				      enableChannel: useManager
+				      extent: (Point 171 22)
+				    )
+				   (ActionButtonSpec
+				      label: 'Condense Cache now'
+				      name: 'CondenseCacheNowButton'
+				      activeHelpKey: condenseSourceCache
+				      translateLabel: true
+				      tabable: true
+				      model: condenseSourceCache
+				      enableChannel: useManager
+				      extent: (Point 171 22)
+				    )
+				   )
+
+				)
+			      )
+			     )
+
+			  )
+			  extent: (Point 659 95)
+			)
+		       (ViewSpec
+			  name: 'UseLocalSourceBox'
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'If Present, Use Local Source (Suppress Checkout)'
+				name: 'CheckBox4'
+				layout: (LayoutFrame 30 0 0 0 -5 1 23 0)
+				activeHelpKey: useLocalSources
+				enableChannel: useManager
+				model: localSourceFirst
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 659 22)
+			)
+		       (ViewSpec
+			  name: 'KeepMethodSourceBox'
+			  activeHelpKey: keepMethodSourceInImage
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Keep Method Source (In Image)'
+				name: 'CheckBox7'
+				layout: (LayoutFrame 30 0 0 0 -5 1 23 0)
+				activeHelpKey: keepMethodSourceInImage
+				enableChannel: useManager
+				model: keepMethodSource
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 659 22)
+			)
+		       (ViewSpec
+			  name: 'CheckForHaltSendsBox'
+			  activeHelpKey: checkClassesWhenCheckingIn
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Check for halt/error-Sends when Checking in'
+				name: 'CheckBox5'
+				layout: (LayoutFrame 30 0 0 0 -5 1 23 0)
+				activeHelpKey: checkClassesWhenCheckingIn
+				enableChannel: useManager
+				model: checkClassesWhenCheckingIn
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 659 22)
+			)
+		       (ViewSpec
+			  name: 'VerboseBox'
+			  activeHelpKey: verboseSourceCodeAccess
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'Verbose (Trace Operations on Transcript)'
+				name: 'CheckBox6'
+				layout: (LayoutFrame 30 0 0 0 -5 1 23 0)
+				activeHelpKey: verboseSourceCodeAccess
+				enableChannel: useManager
+				model: verboseSourceCodeAccess
+				translateLabel: true
+			      )
+			     )
+
+			  )
+			  extent: (Point 659 22)
+			)
+		       )
+
+		    )
+		    extent: (Point 659 768)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl class methodsFor:'tableColumns specs'!
 
 managerPerMatchingModuleColumns
@@ -13555,26 +13762,27 @@
 
     ^#(
       (DataSetColumnSpec
-         label: 'Module (PackageID Match)'
-         labelButtonType: Button
-         width: 0.5
-         model: displayStringForPackage
-         menuFromApplication: false
-         writeSelector: package:
-         canSelect: false
+	 label: 'Module (PackageID Match)'
+	 labelButtonType: Button
+	 width: 0.5
+	 model: displayStringForPackage
+	 menuFromApplication: false
+	 writeSelector: package:
+	 canSelect: false
        )
       (DataSetColumnSpec
-         label: 'Repository Type'
-         labelButtonType: Button
-         width: 0.5
-         model: displayStringForManagerTypeName
-         menuFromApplication: false
-         writeSelector: manager:
-         canSelect: false
+	 label: 'Repository Type'
+	 labelButtonType: Button
+	 width: 0.5
+	 model: displayStringForManagerTypeName
+	 menuFromApplication: false
+	 writeSelector: manager:
+	 canSelect: false
        )
       )
-    
-! !
+
+! !
+
 
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl methodsFor:'accessing'!
 
@@ -13583,6 +13791,7 @@
     ^ Smalltalk at:#SourceCodeManager
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl methodsFor:'actions'!
 
 actionAdd
@@ -13592,18 +13801,18 @@
     dlg open ifFalse:[ ^ self ].
     package := dlg package.
     mgr := dlg manager.
-    oldEntry := managerPerMatchingModule 
-                detect:[:entry | entry package = package and:[ entry manager = mgr ] ]
-                ifNone:nil.
-    oldEntry notNil 
-        ifTrue:
-            [ oldEntry manager:mgr.
-            managerPerMatchingModule changed.
-            idx := managerPerMatchingModule indexOf:oldEntry. ]
-        ifFalse:
-            [ managerPerMatchingModule 
-                add:(AbstractSourceCodeManager::PackageAndManager package:package manager:mgr).
-            idx := managerPerMatchingModule size. ].
+    oldEntry := managerPerMatchingModule
+		detect:[:entry | entry package = package and:[ entry manager = mgr ] ]
+		ifNone:nil.
+    oldEntry notNil
+	ifTrue:
+	    [ oldEntry manager:mgr.
+	    managerPerMatchingModule changed.
+	    idx := managerPerMatchingModule indexOf:oldEntry. ]
+	ifFalse:
+	    [ managerPerMatchingModule
+		add:(AbstractSourceCodeManager::PackageAndManager package:package manager:mgr).
+	    idx := managerPerMatchingModule size. ].
     selectedManagerPerMatchingModuleHolder value:idx.
 
     "Created: / 18-04-2011 / 19:30:46 / cg"
@@ -13616,16 +13825,17 @@
 
     | entry dlg |
     entry := managerPerMatchingModule at: selectedManagerPerMatchingModuleHolder value.
-    dlg := PerModuleManagerSettingDialog new.    
+    dlg := PerModuleManagerSettingDialog new.
     dlg package: entry package.
     dlg manager: entry manager.
     dlg open ifTrue:[
-        entry package: dlg package.
-        entry manager: dlg manager.
-        entry changed.
+	entry package: dlg package.
+	entry manager: dlg manager.
+	entry changed.
+	self updateModifiedChannel.
     ]
 
-    "Modified: / 09-07-2011 / 16:04:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 29-03-2012 / 11:53:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 actionMoveDown
@@ -13657,11 +13867,11 @@
 
     idx := self selectedManagerPerMatchingModuleHolder value.
     managerPerMatchingModule removeIndex:idx.
-    managerPerMatchingModule size >= idx 
-        ifTrue:[ selectedManagerPerMatchingModuleHolder value:idx. ]
-        ifFalse:
-            [ managerPerMatchingModule size >= (idx - 1) 
-                ifTrue:[ selectedManagerPerMatchingModuleHolder value:idx - 1. ]. ].
+    managerPerMatchingModule size >= idx
+	ifTrue:[ selectedManagerPerMatchingModuleHolder value:idx. ]
+	ifFalse:
+	    [ managerPerMatchingModule size >= (idx - 1)
+		ifTrue:[ selectedManagerPerMatchingModuleHolder value:idx - 1. ]. ].
 
     "Created: / 18-04-2011 / 20:56:46 / cg"
 !
@@ -13676,7 +13886,7 @@
 
 addModule:module withData:data
     (self listOfModules includes:module) ifFalse:[
-        self listOfModules add:module; sort.
+	self listOfModules add:module; sort.
     ].
     rootsPerModule at:module put:data.
 
@@ -13692,30 +13902,30 @@
     self keepMethodSource value:(currentUserPrefs keepMethodSourceCode).
 
     self hasManager ifTrue:[
-        self useManager value:(manager := Smalltalk at:#SourceCodeManager) notNil.
-        self localSourceFirst value:Class tryLocalSourceFirst.
-        self sourceCacheDir value:(AbstractSourceCodeManager cacheDirectoryName).
-
-        manager notNil ifTrue:[
-            manager forgetDisabledModules.
-        ].
+	self useManager value:(manager := Smalltalk at:#SourceCodeManager) notNil.
+	self localSourceFirst value:Class tryLocalSourceFirst.
+	self sourceCacheDir value:(AbstractSourceCodeManager cacheDirectoryName).
+
+	manager notNil ifTrue:[
+	    manager forgetDisabledModules.
+	].
     ] ifFalse:[
-        self useManager value:false.
-        self localSourceFirst value:false.
+	self useManager value:false.
+	self localSourceFirst value:false.
     ].
 
     self managerPerMatchingModule removeAll.
     AbstractSourceCodeManager managerPerMatchingModuleDefinitions do:[:each |
-        self managerPerMatchingModule add: each copy
+	self managerPerMatchingModule add: each copy
     ].
 
     self availableManagers do:[:eachManager |
-        |infoPerModule|
-
-        infoPerModule := eachManager repositoryInfoPerModule.
-        infoPerModule keysAndValuesDo:[:module :info | 
-            rootsPerModule at:module put:(Array with:eachManager with:info).
-        ].
+	|infoPerModule|
+
+	infoPerModule := eachManager repositoryInfoPerModule.
+	infoPerModule keysAndValuesDo:[:module :info |
+	    rootsPerModule at:module put:(Array with:eachManager with:info).
+	].
     ].
 
     self updateSelectedManager.
@@ -13723,8 +13933,8 @@
     self checkClassesWhenCheckingIn value:(currentUserPrefs at:#checkClassesWhenCheckingIn ifAbsent:true).
 
     rootsPerModule notNil ifTrue:[
-        self listOfModules removeAll.
-        listOfModules addAll:rootsPerModule keys asList.
+	self listOfModules removeAll.
+	listOfModules addAll:rootsPerModule keys asList.
     ].
 "/    self selectedPerModuleRootChanged.
 
@@ -13741,63 +13951,63 @@
     currentUserPrefs keepMethodSourceCode:(self keepMethodSource value).
 
     (self hasManager and:[self useManager value]) ifTrue:[
-        manager ~~ self selectedManager ifTrue:[
-            manager := nil.
-        ].
-
-        manager isNil ifTrue:[
-            manager := self selectedManager.
-            manager isNil ifTrue:[
-                manager := self availableManagers first.
-            ].
-        ].
-        Smalltalk at:#SourceCodeManager put:manager.
-
-        manager notNil ifTrue:[
-            | nm fn|
-
-            nm := self sourceCacheDir value.
-            nm notEmptyOrNil ifTrue:[
-                (fn := nm asFilename) exists ifFalse:[
-                    (self confirm:('CVS cache directory ''' , nm , ''' does not exist\create ?' withCRs)) ifTrue:[
-                        fn recursiveMakeDirectory; 
-                           makeReadableForAll;
-                           makeWritableForAll;
-                           makeExecutableForAll.
-                    ]
-                ].
-                (fn isDirectory
-                and:[fn isReadable
-                and:[fn isWritable]]) ifTrue:[
-                    AbstractSourceCodeManager cacheDirectoryName:nm.
-                ] ifFalse:[
-                    self warn:'Invalid sourceCache directory.'
-                ]
-            ].
-        ].
-
-        AbstractSourceCodeManager 
-            managerPerMatchingModuleDefinitions:
-                managerPerMatchingModule asOrderedCollection.
-
-        self availableManagers do:[:eachManager |
-            |infoPerModule|
-
-            modules := rootsPerModule select:[:entry | entry first == eachManager].
-            infoPerModule := Dictionary new.
-            modules keysAndValuesDo:[:module :entry | 
-                entry first == eachManager ifTrue:[
-                    infoPerModule at:module put:(entry second).
-                ].
-            ].
-            eachManager repositoryInfoPerModule:infoPerModule.
-        ].
-
-        self sourceCacheDir value:(AbstractSourceCodeManager cacheDirectoryName).
-
-        DebugView newDebugger. "/ ???
+	manager ~~ self selectedManager ifTrue:[
+	    manager := nil.
+	].
+
+	manager isNil ifTrue:[
+	    manager := self selectedManager.
+	    manager isNil ifTrue:[
+		manager := self availableManagers first.
+	    ].
+	].
+	Smalltalk at:#SourceCodeManager put:manager.
+
+	manager notNil ifTrue:[
+	    | nm fn|
+
+	    nm := self sourceCacheDir value.
+	    nm notEmptyOrNil ifTrue:[
+		(fn := nm asFilename) exists ifFalse:[
+		    (self confirm:('CVS cache directory ''' , nm , ''' does not exist\create ?' withCRs)) ifTrue:[
+			fn recursiveMakeDirectory;
+			   makeReadableForAll;
+			   makeWritableForAll;
+			   makeExecutableForAll.
+		    ]
+		].
+		(fn isDirectory
+		and:[fn isReadable
+		and:[fn isWritable]]) ifTrue:[
+		    AbstractSourceCodeManager cacheDirectoryName:nm.
+		] ifFalse:[
+		    self warn:'Invalid sourceCache directory.'
+		]
+	    ].
+	].
+
+	AbstractSourceCodeManager
+	    managerPerMatchingModuleDefinitions:
+		managerPerMatchingModule asOrderedCollection.
+
+	self availableManagers do:[:eachManager |
+	    |infoPerModule|
+
+	    modules := rootsPerModule select:[:entry | entry first == eachManager].
+	    infoPerModule := Dictionary new.
+	    modules keysAndValuesDo:[:module :entry |
+		entry first == eachManager ifTrue:[
+		    infoPerModule at:module put:(entry second).
+		].
+	    ].
+	    eachManager repositoryInfoPerModule:infoPerModule.
+	].
+
+	self sourceCacheDir value:(AbstractSourceCodeManager cacheDirectoryName).
+
+	DebugView newDebugger. "/ ???
     ] ifFalse:[
-        Smalltalk at:#SourceCodeManager put:nil
+	Smalltalk at:#SourceCodeManager put:nil
     ].
 
     self acceptChannel value.
@@ -13810,7 +14020,7 @@
     <resource: #uiCallback>
 
     UserPreferences current fileBrowserClass openOn:
-        self sourceCacheDir value
+	self sourceCacheDir value
 
     "Modified: / 12-10-2011 / 11:11:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -13832,7 +14042,7 @@
 
     |module|
 
-    acceptChannel value:true.    
+    acceptChannel value:true.
     module := self perModuleRootModule value.
     self listOfModules remove:module ifAbsent:nil.
     rootsPerModule removeKey:module ifAbsent:nil.
@@ -13846,19 +14056,20 @@
    AbstractLauncherApplication::LauncherDialogs cvsConfigurationDialog.
    manager := (Smalltalk at:#SourceCodeManager).
    manager notNil ifTrue:[
-        repositoryHolder value: manager repositoryName.
-        sourceCacheDir value:(AbstractSourceCodeManager cacheDirectoryName).
+	repositoryHolder value: manager repositoryName.
+	sourceCacheDir value:(AbstractSourceCodeManager cacheDirectoryName).
    ].
 
     "Modified: / 16-08-2006 / 11:07:51 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl methodsFor:'aspects'!
 
 acceptChannel
 
     acceptChannel isNil ifTrue:[
-        acceptChannel := TriggerValue new.
+	acceptChannel := TriggerValue new.
     ].
     ^ acceptChannel.
 !
@@ -13871,13 +14082,13 @@
 
 availableManagers
     availableManagers isNil ifTrue:[
-        availableManagers := AbstractSourceCodeManager availableManagers copy.
-        availableManagers := availableManagers sort:[:a :b | a managerTypeName asLowercase < b managerTypeName asLowercase].
+	availableManagers := AbstractSourceCodeManager availableManagers copy.
+	availableManagers := availableManagers sort:[:a :b | a managerTypeName asLowercase < b managerTypeName asLowercase].
     ].
     ^ availableManagers.
 
     "
-     self basicNew availableManagers   
+     self basicNew availableManagers
     "
 
     "Created: / 16-08-2006 / 11:01:10 / cg"
@@ -13886,12 +14097,12 @@
 
 canMoveDown
     ^ BlockValue
-        with:
-            [:sel | 
-            sel notNil 
-                and:[sel ~~ 0 
-                    and:[sel ~~ managerPerMatchingModule size]]]
-        argument:(self selectedManagerPerMatchingModuleHolder)
+	with:
+	    [:sel |
+	    sel notNil
+		and:[sel ~~ 0
+		    and:[sel ~~ managerPerMatchingModule size]]]
+	argument:(self selectedManagerPerMatchingModuleHolder)
 
     "Created: / 18-04-2011 / 20:52:48 / cg"
     "Created: / 09-07-2011 / 14:18:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -13899,11 +14110,11 @@
 
 canMoveUp
     ^ BlockValue
-        with:
-            [:sel | 
-            sel notNil 
-                and:[sel > 1]]
-        argument:(self selectedManagerPerMatchingModuleHolder)
+	with:
+	    [:sel |
+	    sel notNil
+		and:[sel > 1]]
+	argument:(self selectedManagerPerMatchingModuleHolder)
 
     "Created: / 18-04-2011 / 20:52:48 / cg"
     "Created: / 09-07-2011 / 14:18:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -13911,9 +14122,9 @@
 
 canRemoveManagerPerPackageEntry
     ^ BlockValue
-        with:[:sel :use | sel notNil and:[sel ~~ 0 and:[use]] ] 
-        argument:(self selectedManagerPerMatchingModuleHolder)
-        argument:(self useManager)
+	with:[:sel :use | sel notNil and:[sel ~~ 0 and:[use]] ]
+	argument:(self selectedManagerPerMatchingModuleHolder)
+	argument:(self useManager)
 
     "Created: / 18-04-2011 / 20:52:48 / cg"
 !
@@ -13921,8 +14132,8 @@
 checkClassesWhenCheckingIn
 
     checkClassesWhenCheckingIn isNil ifTrue:[
-        checkClassesWhenCheckingIn := (currentUserPrefs at:#checkClassesWhenCheckingIn ifAbsent:true) asValue.
-        checkClassesWhenCheckingIn onChangeSend:#updateModifiedChannel to:self
+	checkClassesWhenCheckingIn := (currentUserPrefs at:#checkClassesWhenCheckingIn ifAbsent:true) asValue.
+	checkClassesWhenCheckingIn onChangeSend:#updateModifiedChannel to:self
     ].
     ^ checkClassesWhenCheckingIn.
 !
@@ -13930,8 +14141,8 @@
 keepMethodSource
 
     keepMethodSource isNil ifTrue:[
-        keepMethodSource := ValueHolder new.
-        keepMethodSource onChangeSend:#updateModifiedChannel to:self
+	keepMethodSource := ValueHolder new.
+	keepMethodSource onChangeSend:#updateModifiedChannel to:self
     ].
     ^ keepMethodSource.
 !
@@ -13939,11 +14150,11 @@
 listOfModules
 
     listOfModules isNil ifTrue:[
-        rootsPerModule notNil ifTrue:[
-            listOfModules := rootsPerModule keys asList.
-        ].
-        listOfModules sort.
-        listOfModules onChangeSend:#updateModifiedChannel to:self
+	rootsPerModule notNil ifTrue:[
+	    listOfModules := rootsPerModule keys asList.
+	].
+	listOfModules sort.
+	listOfModules onChangeSend:#updateModifiedChannel to:self
     ].
     ^ listOfModules.
 !
@@ -13951,16 +14162,16 @@
 localSourceFirst
 
     localSourceFirst isNil ifTrue:[
-        localSourceFirst := ValueHolder new.
-        localSourceFirst onChangeSend:#updateModifiedChannel to:self
+	localSourceFirst := ValueHolder new.
+	localSourceFirst onChangeSend:#updateModifiedChannel to:self
     ].
     ^ localSourceFirst.
 !
 
 managerIsCVSSourceCodeManager
     managerIsCVSSourceCodeManager isNil ifTrue:[
-        managerIsCVSSourceCodeManager := (SourceCodeManager notNil and:
-                                         [SourceCodeManager isCVS]) asValue.
+	managerIsCVSSourceCodeManager := (SourceCodeManager notNil and:
+					 [SourceCodeManager isCVS]) asValue.
     ].
     ^ managerIsCVSSourceCodeManager.
 
@@ -13969,8 +14180,8 @@
 
 managerIsSmallTeamSourceCodeManager
     managerIsSmallTeamSourceCodeManager isNil ifTrue:[
-        managerIsSmallTeamSourceCodeManager := (SourceCodeManager notNil and:
-                                         [SourceCodeManager isSmallTeam]) asValue.
+	managerIsSmallTeamSourceCodeManager := (SourceCodeManager notNil and:
+					 [SourceCodeManager isSmallTeam]) asValue.
     ].
     ^ managerIsSmallTeamSourceCodeManager.
 
@@ -13979,8 +14190,8 @@
 
 managerIsStoreSourceCodeManager
     managerIsStoreSourceCodeManager isNil ifTrue:[
-        managerIsStoreSourceCodeManager := (SourceCodeManager notNil and:
-                                         [SourceCodeManager isStore]) asValue.
+	managerIsStoreSourceCodeManager := (SourceCodeManager notNil and:
+					 [SourceCodeManager isStore]) asValue.
     ].
     ^ managerIsStoreSourceCodeManager.
 
@@ -13989,8 +14200,8 @@
 
 managerPerMatchingModule
     managerPerMatchingModule isNil ifTrue:[
-        managerPerMatchingModule := List new.
-        managerPerMatchingModule onChangeSend:#updateModifiedChannel to:self
+	managerPerMatchingModule := List new.
+	managerPerMatchingModule onChangeSend:#updateModifiedChannel to:self
     ].
     ^ managerPerMatchingModule.
 
@@ -13999,7 +14210,7 @@
 
 managerTypeIndexToAddHolder
     managerTypeIndexToAddHolder isNil ifTrue:[
-        managerTypeIndexToAddHolder := ValueHolder new.
+	managerTypeIndexToAddHolder := ValueHolder new.
     ].
     ^ managerTypeIndexToAddHolder.
 
@@ -14008,7 +14219,7 @@
 
 managerTypeToAddHolder
     managerTypeToAddHolder isNil ifTrue:[
-        managerTypeToAddHolder := ValueHolder new.
+	managerTypeToAddHolder := ValueHolder new.
     ].
     ^ managerTypeToAddHolder.
 
@@ -14023,7 +14234,7 @@
 
 packageToAddHolder
     packageToAddHolder isNil ifTrue:[
-        packageToAddHolder := ValueHolder new.
+	packageToAddHolder := ValueHolder new.
     ].
     ^ packageToAddHolder.
 
@@ -14033,23 +14244,23 @@
 perModuleFieldsEnableHolder
 
     perModuleFieldsEnableHolder isNil ifTrue:[
-        perModuleFieldsEnableHolder := true asValue.
-        perModuleFieldsEnableHolder addDependent:self.
+	perModuleFieldsEnableHolder := true asValue.
+	perModuleFieldsEnableHolder addDependent:self.
     ].
     ^ perModuleFieldsEnableHolder.
 !
 
 perModuleRoot
     perModuleRoot isNil ifTrue:[
-        perModuleRoot := ValueHolder new.
-        perModuleRoot addDependent:self.
+	perModuleRoot := ValueHolder new.
+	perModuleRoot addDependent:self.
     ].
     ^ perModuleRoot.
 !
 
 perModuleRootModule
     perModuleRootModule isNil ifTrue:[
-        perModuleRootModule := ValueHolder new.
+	perModuleRootModule := ValueHolder new.
     ].
     ^ perModuleRootModule.
 !
@@ -14057,7 +14268,7 @@
 removeEnabled
 
     removeEnabled isNil ifTrue:[
-        removeEnabled := false asValue.
+	removeEnabled := false asValue.
     ].
     ^ removeEnabled.
 !
@@ -14066,7 +14277,7 @@
     |idx|
 
     self availableManagers size == 1 ifTrue:[
-        ^ self availableManagers first
+	^ self availableManagers first
     ].
 
     idx := self selectedManagerTypeIndexHolder value.
@@ -14078,8 +14289,8 @@
 
 selectedManagerPerMatchingModuleHolder
     selectedManagerPerMatchingModuleHolder isNil ifTrue:[
-        selectedManagerPerMatchingModuleHolder := nil asValue.
-        selectedManagerPerMatchingModuleHolder addDependent:self.
+	selectedManagerPerMatchingModuleHolder := nil asValue.
+	selectedManagerPerMatchingModuleHolder addDependent:self.
     ].
     ^ selectedManagerPerMatchingModuleHolder.
 
@@ -14090,16 +14301,16 @@
     |selectedManager|
 
     selectedManagerTypeIndexHolder isNil ifTrue:[
-        selectedManagerTypeIndexHolder := nil asValue.
-        selectedManagerTypeIndexHolder onChangeEvaluate:[
-            selectedManager := self selectedManager.
-            self managerIsCVSSourceCodeManager value:( selectedManager notNil and:[ selectedManager isCVS] ).
-            self managerIsStoreSourceCodeManager value:( selectedManager notNil and:[ selectedManager isStore] ).
-            self managerIsSmallTeamSourceCodeManager value:( selectedManager notNil and:[ selectedManager isSmallTeam] ).
-            self updateModifiedChannel
-        ].
-
-        self updateSelectedManager.
+	selectedManagerTypeIndexHolder := nil asValue.
+	selectedManagerTypeIndexHolder onChangeEvaluate:[
+	    selectedManager := self selectedManager.
+	    self managerIsCVSSourceCodeManager value:( selectedManager notNil and:[ selectedManager isCVS] ).
+	    self managerIsStoreSourceCodeManager value:( selectedManager notNil and:[ selectedManager isStore] ).
+	    self managerIsSmallTeamSourceCodeManager value:( selectedManager notNil and:[ selectedManager isSmallTeam] ).
+	    self updateModifiedChannel
+	].
+
+	self updateSelectedManager.
     ].
     ^ selectedManagerTypeIndexHolder.
 
@@ -14109,59 +14320,60 @@
 
 selectedPerModuleRoot
     selectedPerModuleRoot isNil ifTrue:[
-        selectedPerModuleRoot := ValueHolder new.
-        selectedPerModuleRoot addDependent:self.
+	selectedPerModuleRoot := ValueHolder new.
+	selectedPerModuleRoot addDependent:self.
     ].
     ^ selectedPerModuleRoot.
 !
 
 sourceCacheDir
     sourceCacheDir isNil ifTrue:[
-        sourceCacheDir := ValueHolder new.
-        sourceCacheDir onChangeSend:#updateModifiedChannel to:self
+	sourceCacheDir := ValueHolder new.
+	sourceCacheDir onChangeSend:#updateModifiedChannel to:self
     ].
     ^ sourceCacheDir.
 !
 
 useManager
     useManager isNil ifTrue:[
-        useManager := ValueHolder new.
-        useManager onChangeSend:#updateModifiedChannel to:self
+	useManager := ValueHolder new.
+	useManager onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useManager.
 !
 
 verboseSourceCodeAccess
     verboseSourceCodeAccess isNil ifTrue:[
-        verboseSourceCodeAccess := false asValue.
-        verboseSourceCodeAccess onChangeSend:#updateModifiedChannel to:self
+	verboseSourceCodeAccess := false asValue.
+	verboseSourceCodeAccess onChangeSend:#updateModifiedChannel to:self
     ].
     ^ verboseSourceCodeAccess.
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl methodsFor:'change & update'!
 
 selectedPerModuleRootChanged
     |module entry|
 
-    self acceptChannel value:true.    
+    self acceptChannel value:true.
     module := self selectedPerModuleRoot value.
-    module isNil ifTrue:[ 
-        self removeEnabled value:false.
-        self perModuleRootModule value:' '.
-        self perModuleRoot value:''.
-        ^ self
-    ].
-
-    entry := rootsPerModule at:module ifAbsent:#().    
+    module isNil ifTrue:[
+	self removeEnabled value:false.
+	self perModuleRootModule value:' '.
+	self perModuleRoot value:''.
+	^ self
+    ].
+
+    entry := rootsPerModule at:module ifAbsent:#().
     (entry first = CVSSourceCodeManager) ifTrue:[
-        self removeEnabled value:true.
-        self perModuleRootModule value:module.
-        self perModuleRoot value:(entry at:2).
+	self removeEnabled value:true.
+	self perModuleRootModule value:module.
+	self perModuleRoot value:(entry at:2).
     ] ifFalse:[
-        self removeEnabled value:false.
-        self perModuleRootModule value:module , ' ',('<<use ',entry first managerTypeName,'>>') allBold.
-        self perModuleRoot value:''.
+	self removeEnabled value:false.
+	self perModuleRootModule value:module , ' ',('<<use ',entry first managerTypeName,'>>') allBold.
+	self perModuleRoot value:''.
     ].
 !
 
@@ -14176,44 +14388,44 @@
     nm isEmptyOrNil ifTrue:[^ self].
 
     (fn := nm asFilename) exists ifFalse:[
-        (self confirm:(resources 
-                            stringWithCRs:'SourceCache directory "%1" does not exist.\Create ?'
-                            with:nm)
-        ) ifFalse:[
-            self sourceCacheDir value:previousDir.
-            ^ self.
-        ].
-        fn 
-            recursiveMakeDirectory; 
-            makeReadableForAll;
-            makeWritableForAll;
-            makeExecutableForAll.
-        ^ self.
+	(self confirm:(resources
+			    stringWithCRs:'SourceCache directory "%1" does not exist.\Create ?'
+			    with:nm)
+	) ifFalse:[
+	    self sourceCacheDir value:previousDir.
+	    ^ self.
+	].
+	fn
+	    recursiveMakeDirectory;
+	    makeReadableForAll;
+	    makeWritableForAll;
+	    makeExecutableForAll.
+	^ self.
     ].
 
     (fn isDirectory) ifFalse:[
-        self warn:(resources 
-                            stringWithCRs:'Not a directory: "%1"'
-                            with:nm).
-        self sourceCacheDir value:previousDir.
-        ^ self.
+	self warn:(resources
+			    stringWithCRs:'Not a directory: "%1"'
+			    with:nm).
+	self sourceCacheDir value:previousDir.
+	^ self.
     ].
 
     (fn isReadable and:[fn isWritable]) ifFalse:[
-        (self confirm:(resources 
-                            stringWithCRs:'SourceCache directory "%1" is not both readable and writable.\Change ?'
-                            with:nm)
-        ) ifFalse:[
-            self sourceCacheDir value:previousDir.
-            ^ self.
-        ].
-        fn
-            makeReadableForAll;
-            makeWritableForAll;
-            makeExecutableForAll.
+	(self confirm:(resources
+			    stringWithCRs:'SourceCache directory "%1" is not both readable and writable.\Change ?'
+			    with:nm)
+	) ifFalse:[
+	    self sourceCacheDir value:previousDir.
+	    ^ self.
+	].
+	fn
+	    makeReadableForAll;
+	    makeWritableForAll;
+	    makeExecutableForAll.
     ].
 "/    (fn isReadableForAll and:[fn isWritableForAll]) ifFalse:[
-"/        (self confirm:(resources 
+"/        (self confirm:(resources
 "/                            stringWithCRs:'SourceCache directory "%1" is not both readable and writable for other users.\Change ?'
 "/                            with:nm)
 "/        ) ifTrue:[
@@ -14229,19 +14441,19 @@
     |idx entry|
 
     changedObject == sourceCacheDir ifTrue:[
-        self sourceDirChanged.
-        self updateModifiedChannel.
-        ^ self
+	self sourceDirChanged.
+	self updateModifiedChannel.
+	^ self
     ].
 
     changedObject == selectedManagerPerMatchingModuleHolder ifTrue:[
-        idx := changedObject value.
-        (idx notNil and:[idx ~~ 0]) ifTrue:[
-            entry := self managerPerMatchingModule at:idx.
-            self packageToAddHolder value:(entry package).
-            self managerTypeToAddHolder value:(entry managerTypeName).
-        ].
-        ^ self.
+	idx := changedObject value.
+	(idx notNil and:[idx ~~ 0]) ifTrue:[
+	    entry := self managerPerMatchingModule at:idx.
+	    self packageToAddHolder value:(entry package).
+	    self managerTypeToAddHolder value:(entry managerTypeName).
+	].
+	^ self.
     ].
 
     super update:something with:aParameter from:changedObject
@@ -14255,13 +14467,14 @@
 
     selectedManagerTypeIndex := self availableManagers indexOf:SourceCodeManager.
     selectedManagerTypeIndex == 0 ifTrue:[
-        self availableManagers size == 1 ifTrue:[
-            selectedManagerTypeIndex := 1.
-        ].
+	self availableManagers size == 1 ifTrue:[
+	    selectedManagerTypeIndex := 1.
+	].
     ].
     self selectedManagerTypeIndexHolder value:selectedManagerTypeIndex.
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl methodsFor:'help'!
 
 helpFilename
@@ -14270,6 +14483,7 @@
     "Modified: / 04-07-2011 / 17:22:39 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl methodsFor:'initialization & release'!
 
 initialize
@@ -14287,13 +14501,13 @@
     rootsPerModule := Dictionary new.
 
     self availableManagers do:[:eachManager |
-        eachManager repositoryInfoPerModule 
-            keysAndValuesDo:[:module :info |
-                module withoutSeparators ~= module ifTrue:[
-                    self halt:'should not happen any longer'
-                ].
-                rootsPerModule at:module put:(Array with:eachManager with:info)
-            ].
+	eachManager repositoryInfoPerModule
+	    keysAndValuesDo:[:module :info |
+		module withoutSeparators ~= module ifTrue:[
+		    self halt:'should not happen any longer'
+		].
+		rootsPerModule at:module put:(Array with:eachManager with:info)
+	    ].
     ].
 
     super initialize.
@@ -14301,6 +14515,7 @@
     "Modified: / 18-04-2011 / 19:37:38 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl methodsFor:'queries'!
 
 cvsRootFromCVSRootFileOrNil
@@ -14308,10 +14523,10 @@
 
     cvsDir := 'CVS' asFilename.
     cvsDir isDirectory ifTrue:[
-        cvsRootFile := cvsDir construct:'Root'.
-        cvsRootFile isReadable ifTrue:[
-            cvsRoot := cvsRootFile contents firstIfEmpty:nil.
-        ].
+	cvsRootFile := cvsDir construct:'Root'.
+	cvsRootFile isReadable ifTrue:[
+	    cvsRoot := cvsRootFile contents firstIfEmpty:nil.
+	].
     ].
     ^ cvsRoot
 !
@@ -14330,31 +14545,31 @@
     (Class tryLocalSourceFirst ~= self localSourceFirst value) ifTrue:[^ true].
     ((self selectedManager cacheDirectoryName ? '') ~= (self sourceCacheDir value ? '')) ifTrue:[^ true].
 
-    ((currentUserPrefs at:#checkClassesWhenCheckingIn ifAbsent:true) ~= self checkClassesWhenCheckingIn value)  
-        ifTrue:[^ true].
-
-    ((currentUserPrefs keepMethodSourceCode) ~= self keepMethodSource value)  
-        ifTrue:[^ true].
+    ((currentUserPrefs at:#checkClassesWhenCheckingIn ifAbsent:true) ~= self checkClassesWhenCheckingIn value)
+	ifTrue:[^ true].
+
+    ((currentUserPrefs keepMethodSourceCode) ~= self keepMethodSource value)
+	ifTrue:[^ true].
 
     ((AbstractSourceCodeManager managerPerMatchingModuleDefinitions)
-        ~= (self managerPerMatchingModule asOrderedCollection)) ifTrue:[^ true].
+	~= (self managerPerMatchingModule asOrderedCollection)) ifTrue:[^ true].
 
     (AbstractSourceCodeManager verboseSourceCodeAccess
-        ~= self verboseSourceCodeAccess value) ifTrue:[^ true].
+	~= self verboseSourceCodeAccess value) ifTrue:[^ true].
 
     self availableManagers do:[:mgr |
-        |modules|
-
-        modules := rootsPerModule select:[:entry | entry first == mgr].
-
-        mgr repositoryInfoPerModule keysAndValuesDo:[:module :info |
-            ((modules includesKey:module) and:[info = (modules at:module) second])
-            ifFalse:[^ true].
-        ].
-        modules keysAndValuesDo:[:module :info|
-            ((mgr repositoryInfoPerModule includesKey:module) and:[(mgr repositoryInfoPerModule at:module) = info second])
-            ifFalse:[^ true].
-        ].
+	|modules|
+
+	modules := rootsPerModule select:[:entry | entry first == mgr].
+
+	mgr repositoryInfoPerModule keysAndValuesDo:[:module :info |
+	    ((modules includesKey:module) and:[info = (modules at:module) second])
+	    ifFalse:[^ true].
+	].
+	modules keysAndValuesDo:[:module :info|
+	    ((mgr repositoryInfoPerModule includesKey:module) and:[(mgr repositoryInfoPerModule at:module) = info second])
+	    ifFalse:[^ true].
+	].
     ].
 
     ^ false
@@ -14363,6 +14578,7 @@
     "Modified: / 27-07-2012 / 12:35:40 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl::PerModuleManagerSettingDialog class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -14373,7 +14589,7 @@
      the UIHelpTool may not be able to read the specification."
 
     "
-     UIHelpTool openOnClass:AbstractSettingsApplication::SourceCodeManagementSettingsAppl::PerModuleManagerSettingDialog    
+     UIHelpTool openOnClass:AbstractSettingsApplication::SourceCodeManagementSettingsAppl::PerModuleManagerSettingDialog
     "
 
     <resource: #help>
@@ -14391,6 +14607,7 @@
     "Created: / 01-12-2011 / 19:52:19 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl::PerModuleManagerSettingDialog class methodsFor:'interface specs'!
 
 windowSpec
@@ -14408,98 +14625,99 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Per Module Source Code Manager'
-          name: 'Per Module Source Code Manager'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 581 98)
-        )
-        component: 
+	  label: 'Per Module Source Code Manager'
+	  name: 'Per Module Source Code Manager'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 581 98)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (ViewSpec
-              name: 'Content'
-              layout: (LayoutFrame 0 0 0 0 0 1 -30 1)
-              component: 
-             (SpecCollection
-                collection: (
-                 (ComboBoxSpec
-                    name: 'ComboBox1'
-                    layout: (LayoutFrame 184 0 9 0 -9 1 31 0)
-                    activeHelpKey: packageMatchPattern
-                    enableChannel: useManager
-                    model: packageHolder
-                    comboList: samplePackageList
-                  )
-                 (LabelSpec
-                    label: 'Package ID (Matchpattern):'
-                    name: 'Label15'
-                    layout: (LayoutFrame 9 0 9 0 178 0 31 0)
-                    activeHelpKey: packageMatchPattern
-                    translateLabel: true
-                    adjust: right
-                  )
-                 (LabelSpec
-                    label: 'Manager:'
-                    name: 'Label16'
-                    layout: (LayoutFrame 9 0 37 0 178 0 59 0)
-                    activeHelpKey: manager
-                    translateLabel: true
-                    adjust: right
-                  )
-                 (ComboListSpec
-                    name: 'ComboList2'
-                    layout: (LayoutFrame 184 0 39 0 -9 1 61 0)
-                    activeHelpKey: manager
-                    model: managerNameHolder
-                    comboList: availableManagerTypeNames
-                    useIndex: false
-                    hidePullDownMenuButton: true
-                  )
-                 )
-               
-              )
-            )
-           (HorizontalPanelViewSpec
-              name: 'Buttons'
-              layout: (LayoutFrame 0 0 -30 1 0 1 0 1)
-              horizontalLayout: fit
-              verticalLayout: center
-              horizontalSpace: 3
-              verticalSpace: 3
-              reverseOrderIfOKAtLeft: true
-              component: 
-             (SpecCollection
-                collection: (
-                 (ActionButtonSpec
-                    label: 'Cancel'
-                    name: 'Button2'
-                    translateLabel: true
-                    model: doCancel
-                    extent: (Point 289 22)
-                  )
-                 (ActionButtonSpec
-                    label: 'OK'
-                    name: 'Button1'
-                    translateLabel: true
-                    model: doAccept
-                    enableChannel: doAcceptEnabled
-                    extent: (Point 289 22)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (ViewSpec
+	      name: 'Content'
+	      layout: (LayoutFrame 0 0 0 0 0 1 -30 1)
+	      component:
+	     (SpecCollection
+		collection: (
+		 (ComboBoxSpec
+		    name: 'ComboBox1'
+		    layout: (LayoutFrame 184 0 9 0 -9 1 31 0)
+		    activeHelpKey: packageMatchPattern
+		    enableChannel: useManager
+		    model: packageHolder
+		    comboList: samplePackageList
+		  )
+		 (LabelSpec
+		    label: 'Package ID (Matchpattern):'
+		    name: 'Label15'
+		    layout: (LayoutFrame 9 0 9 0 178 0 31 0)
+		    activeHelpKey: packageMatchPattern
+		    translateLabel: true
+		    adjust: right
+		  )
+		 (LabelSpec
+		    label: 'Manager:'
+		    name: 'Label16'
+		    layout: (LayoutFrame 9 0 37 0 178 0 59 0)
+		    activeHelpKey: manager
+		    translateLabel: true
+		    adjust: right
+		  )
+		 (ComboListSpec
+		    name: 'ComboList2'
+		    layout: (LayoutFrame 184 0 39 0 -9 1 61 0)
+		    activeHelpKey: manager
+		    model: managerNameHolder
+		    comboList: availableManagerTypeNames
+		    useIndex: false
+		    hidePullDownMenuButton: true
+		  )
+		 )
+
+	      )
+	    )
+	   (HorizontalPanelViewSpec
+	      name: 'Buttons'
+	      layout: (LayoutFrame 0 0 -30 1 0 1 0 1)
+	      horizontalLayout: fit
+	      verticalLayout: center
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      reverseOrderIfOKAtLeft: true
+	      component:
+	     (SpecCollection
+		collection: (
+		 (ActionButtonSpec
+		    label: 'Cancel'
+		    name: 'Button2'
+		    translateLabel: true
+		    model: doCancel
+		    extent: (Point 289 22)
+		  )
+		 (ActionButtonSpec
+		    label: 'OK'
+		    name: 'Button1'
+		    translateLabel: true
+		    model: doAccept
+		    enableChannel: doAcceptEnabled
+		    extent: (Point 289 22)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl::PerModuleManagerSettingDialog methodsFor:'accessing'!
 
 manager
@@ -14533,6 +14751,7 @@
     "Created: / 09-07-2011 / 13:02:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !AbstractSettingsApplication::SourceCodeManagementSettingsAppl::PerModuleManagerSettingDialog methodsFor:'aspects'!
 
 availableManagerTypeNames
@@ -14543,13 +14762,13 @@
 
 availableManagers
     availableManagers isNil ifTrue:[
-        availableManagers := AbstractSourceCodeManager availableManagers copy.
-        availableManagers := availableManagers sort:[:a :b | a managerTypeName asLowercase < b managerTypeName asLowercase].
+	availableManagers := AbstractSourceCodeManager availableManagers copy.
+	availableManagers := availableManagers sort:[:a :b | a managerTypeName asLowercase < b managerTypeName asLowercase].
     ].
     ^ availableManagers.
 
     "
-     self basicNew availableManagers   
+     self basicNew availableManagers
     "
 
     "Created: / 16-08-2006 / 11:01:10 / cg"
@@ -14562,14 +14781,14 @@
     |holder|
 
     (holder := builder bindingAt:#doAcceptEnabled) isNil ifTrue:[
-        holder := BlockValue 
-            with:
-                [:package :manager|
-                package value notEmptyOrNil  and:[manager value notNil]]
-            argument: self packageHolder
-            argument: self managerHolder.
-
-        builder aspectAt:#doAcceptEnabled put:holder.
+	holder := BlockValue
+	    with:
+		[:package :manager|
+		package value notEmptyOrNil  and:[manager value notNil]]
+	    argument: self packageHolder
+	    argument: self managerHolder.
+
+	builder aspectAt:#doAcceptEnabled put:holder.
     ].
     ^ holder.
 
@@ -14580,7 +14799,7 @@
     <resource: #uiAspect>
 
     managerNameHolder isNil ifTrue:[
-        managerNameHolder := ValueHolder new.
+	managerNameHolder := ValueHolder new.
     ].
     ^ managerNameHolder.
 
@@ -14591,7 +14810,7 @@
     <resource: #uiAspect>
 
     managerNameHolder isNil ifTrue:[
-        managerNameHolder := ValueHolder new.
+	managerNameHolder := ValueHolder new.
     ].
     ^ managerNameHolder.
 
@@ -14603,7 +14822,7 @@
     <resource: #uiAspect>
 
     packageHolder isNil ifTrue:[
-        packageHolder := ValueHolder new.
+	packageHolder := ValueHolder new.
     ].
     ^ packageHolder.
 
@@ -14615,9 +14834,9 @@
 
     |modules|
 
-    modules := Smalltalk allProjectIDs 
-                collect:[:packageId | packageId asPackageId module ]
-                as:Set.
+    modules := Smalltalk allProjectIDs
+		collect:[:packageId | packageId asPackageId module ]
+		as:Set.
 
     modules remove:(PackageId noProjectID) ifAbsent:[].
     modules := modules collect:[:packageId | packageId , ':*' ].
@@ -14627,25 +14846,27 @@
     "Modified: / 13-03-2012 / 13:12:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !AbstractSettingsApplication::StyleSettingsAppl class methodsFor:'defaults'!
 
 standardStyles
 
     ^  #(
-        'decWindows'
-        'iris' 
-        'motif' 
-        'mswindows95' 
-        'mswindowsXP' 
-        'mswindowsVista' 
-        "/ 'next' 
-        "/ 'normal'
-        "/ 'os2' 
-        'sgmotif' 
-        "/ 'st80' 
+	'decWindows'
+	'iris'
+	'motif'
+	'mswindows95'
+	'mswindowsXP'
+	'mswindowsVista'
+	"/ 'next'
+	"/ 'normal'
+	"/ 'os2'
+	'sgmotif'
+	"/ 'st80'
        )
 ! !
 
+
 !AbstractSettingsApplication::StyleSettingsAppl class methodsFor:'image specs'!
 
 closePreviewButtonImage
@@ -14668,8 +14889,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:'AbstractSettingsApplication::MiscDisplaySettingsAppl class defaultIcon'
-        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:'AbstractSettingsApplication::MiscDisplaySettingsAppl class defaultIcon'
+	ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@@@@@@@@@0L@@@@@@@@@@@@@@@@@@@@@@@@@@0_GQT@@@@@@@@@@@@@@@@@@@@@@@0\GQ4ZEP@@@@@@@@@@@@@@@@@@@@0[GQ4ZF!!TU@@@@@@@@@@@@
 @@@@@AL[G!!8ZF!!\WEQT@@@@@@@@@@@@@@AL[G!!8^G!! WE1TUEP@@@@@@@@@@@AL[G!!8^G!!8^EQ\XEQTU@@@@@@@@@AL[G!!8^G!!8^G!!8TEQTTE@0@@@@@@AL[
 G!!8^G!!8^G!!8^G!!PTEAPTC@@@@@@@D18^G!!8^G!!8^G!!8^EAPTEAPQ@@HB@ HB@ HB@ HB@ HB@ HTEAPS@@@B@!!0YB (IB@XFAPP\FQ$BG!!PS@@@@@ H\FP(J
@@ -14678,6 +14899,7 @@
 F1,[F1,S@@@@@@@@D1LSD1LSD1LSD1LSD1LSD0@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 0 80 112 0 80 128 0 96 128 0 96 144 0 112 144 0 112 160 16 112 144 16 128 160 16 128 176 16 144 192 32 80 80 32 96 80 32 96 96 48 112 112 48 128 112 48 128 128 64 96 96 64 144 128 80 80 80 112 112 0 128 128 0 128 128 128 160 160 0 176 176 0 192 192 192 208 208 0 224 224 224 240 240 240 255 255 129 255 255 193 255 255 225]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@C@@@G @@O0@@_8@@?<@A?>@C??@G?? O??0G??8???0??? ???@??>@??<@??<@??<@??<@??<@??<@??<@??<@') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::StyleSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -14695,150 +14917,151 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'ViewStyle Selection'
-          name: 'ViewStyle Selection'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 562 661)
-        )
-        component: 
+	  label: 'ViewStyle Selection'
+	  name: 'ViewStyle Selection'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 562 661)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VariableVerticalPanelSpec
-              name: 'VariableVerticalPanel1'
-              layout: (LayoutFrame 0 0.0 0 0 0 1.0 -35 1)
-              component: 
-             (SpecCollection
-                collection: (
-                 (ViewSpec
-                    name: 'Box1'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (TextEditorSpec
-                          name: 'TextEditor1'
-                          layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-                          style: (FontDescription arial medium roman 9)
-                          model: noticeLabelHolder
-                          hasHorizontalScrollBar: true
-                          hasVerticalScrollBar: true
-                          isReadOnly: true
-                          hasKeyboardFocusInitially: false
-                          viewClassName: 'TextView'
-                          postBuildCallback: postBuildHelpLabel:
-                        )
-                       )
-                     
-                    )
-                  )
-                 (ViewSpec
-                    name: 'Box2'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (VerticalPanelViewSpec
-                          name: 'VerticalPanel1'
-                          layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-                          horizontalLayout: fit
-                          verticalLayout: topFit
-                          horizontalSpace: 3
-                          verticalSpace: 3
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (CheckBoxSpec
-                                label: 'standard styles only'
-                                name: 'CheckBox1'
-                                model: showStandardStylesOnly
-                                translateLabel: true
-                                extent: (Point 562 35)
-                              )
-                             (SequenceViewSpec
-                                name: 'StyleList'
-                                model: selectedStyle
-                                hasHorizontalScrollBar: true
-                                hasVerticalScrollBar: true
-                                doubleClickSelector: doubleClickAt:
-                                useIndex: false
-                                sequenceList: styleList
-                                extent: (Point 562 353)
-                              )
-                             )
-                           
-                          )
-                        )
-                       )
-                     
-                    )
-                  )
-                 )
-               
-              )
-              handles: (Any 0.37 1.0)
-            )
-           (ViewSpec
-              name: 'Box3'
-              layout: (LayoutFrame 0 0 -35 1 0 1 0 1)
-              component: 
-             (SpecCollection
-                collection: (
-                 (LabelSpec
-                    label: 'Label'
-                    name: 'Label1'
-                    layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-                    translateLabel: true
-                    labelChannel: infoLabelHolder
-                    resizeForLabel: true
-                    adjust: left
-                  )
-                 (CheckBoxSpec
-                    label: 'Preview'
-                    name: 'CheckBox2'
-                    layout: (LayoutFrame 417 0 9 0 553 0 31 0)
-                    model: previewVisibleHolder
-                    translateLabel: true
-                  )
-                 )
-               
-              )
-            )
-           (LabelSpec
-              label: 'Preview'
-              name: 'PreviewLabel'
-              layout: (LayoutFrame 29 0 39 0 129 0 61 0)
-              level: 0
-              borderWidth: 1
-              visibilityChannel: previewVisibleHolder
-              backgroundColor: (Color 86.999313344015 86.999313344015 86.999313344015)
-              translateLabel: true
-            )
-           (NonScrollableArbitraryComponentSpec
-              name: 'Preview'
-              layout: (LayoutFrame 27 0 63 0 444 0 240 0)
-              level: 1
-              visibilityChannel: previewVisibleHolder
-              hasBorder: false
-              component: ImageView
-            )
-           (ActionButtonSpec
-              label: 'closePreviewButtonImage'
-              name: 'ClosePreviewButton'
-              layout: (LayoutFrame 423 0 41 0 443 0 63 0)
-              visibilityChannel: previewVisibleHolder
-              hasCharacterOrientedLabel: false
-              translateLabel: true
-              model: closePreview
-            )
-           )
-         
-        )
+	  collection: (
+	   (VariableVerticalPanelSpec
+	      name: 'VariableVerticalPanel1'
+	      layout: (LayoutFrame 0 0.0 0 0 0 1.0 -35 1)
+	      component:
+	     (SpecCollection
+		collection: (
+		 (ViewSpec
+		    name: 'Box1'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (TextEditorSpec
+			  name: 'TextEditor1'
+			  layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+			  style: (FontDescription arial medium roman 9)
+			  model: noticeLabelHolder
+			  hasHorizontalScrollBar: true
+			  hasVerticalScrollBar: true
+			  isReadOnly: true
+			  hasKeyboardFocusInitially: false
+			  viewClassName: 'TextView'
+			  postBuildCallback: postBuildHelpLabel:
+			)
+		       )
+
+		    )
+		  )
+		 (ViewSpec
+		    name: 'Box2'
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (VerticalPanelViewSpec
+			  name: 'VerticalPanel1'
+			  layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+			  horizontalLayout: fit
+			  verticalLayout: topFit
+			  horizontalSpace: 3
+			  verticalSpace: 3
+			  component:
+			 (SpecCollection
+			    collection: (
+			     (CheckBoxSpec
+				label: 'standard styles only'
+				name: 'CheckBox1'
+				model: showStandardStylesOnly
+				translateLabel: true
+				extent: (Point 562 35)
+			      )
+			     (SequenceViewSpec
+				name: 'StyleList'
+				model: selectedStyle
+				hasHorizontalScrollBar: true
+				hasVerticalScrollBar: true
+				doubleClickSelector: doubleClickAt:
+				useIndex: false
+				sequenceList: styleList
+				extent: (Point 562 353)
+			      )
+			     )
+
+			  )
+			)
+		       )
+
+		    )
+		  )
+		 )
+
+	      )
+	      handles: (Any 0.37 1.0)
+	    )
+	   (ViewSpec
+	      name: 'Box3'
+	      layout: (LayoutFrame 0 0 -35 1 0 1 0 1)
+	      component:
+	     (SpecCollection
+		collection: (
+		 (LabelSpec
+		    label: 'Label'
+		    name: 'Label1'
+		    layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+		    translateLabel: true
+		    labelChannel: infoLabelHolder
+		    resizeForLabel: true
+		    adjust: left
+		  )
+		 (CheckBoxSpec
+		    label: 'Preview'
+		    name: 'CheckBox2'
+		    layout: (LayoutFrame 417 0 9 0 553 0 31 0)
+		    model: previewVisibleHolder
+		    translateLabel: true
+		  )
+		 )
+
+	      )
+	    )
+	   (LabelSpec
+	      label: 'Preview'
+	      name: 'PreviewLabel'
+	      layout: (LayoutFrame 29 0 39 0 129 0 61 0)
+	      level: 0
+	      borderWidth: 1
+	      visibilityChannel: previewVisibleHolder
+	      backgroundColor: (Color 86.999313344015 86.999313344015 86.999313344015)
+	      translateLabel: true
+	    )
+	   (NonScrollableArbitraryComponentSpec
+	      name: 'Preview'
+	      layout: (LayoutFrame 27 0 63 0 444 0 240 0)
+	      level: 1
+	      visibilityChannel: previewVisibleHolder
+	      hasBorder: false
+	      component: ImageView
+	    )
+	   (ActionButtonSpec
+	      label: 'closePreviewButtonImage'
+	      name: 'ClosePreviewButton'
+	      layout: (LayoutFrame 423 0 41 0 443 0 63 0)
+	      visibilityChannel: previewVisibleHolder
+	      hasCharacterOrientedLabel: false
+	      translateLabel: true
+	      model: closePreview
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::StyleSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
@@ -14851,8 +15074,8 @@
     newStyle := self selectedStyle value.
 
     self withWaitCursorDo:[
-        Transcript showCR:'Change style to ' , newStyle , ' ...'.
-        View defaultStyle:newStyle asSymbol.
+	Transcript showCR:'Change style to ' , newStyle , ' ...'.
+	View defaultStyle:newStyle asSymbol.
     ].
     self reopenToolsAfterChangedViewStyleSetting.
 !
@@ -14866,12 +15089,13 @@
     self saveSettings.
 ! !
 
+
 !AbstractSettingsApplication::StyleSettingsAppl methodsFor:'aspects'!
 
 infoLabelHolder
 
     infoLabelHolder isNil ifTrue:[
-        infoLabelHolder := '' asValue.
+	infoLabelHolder := '' asValue.
     ].
     ^ infoLabelHolder.
 !
@@ -14879,7 +15103,7 @@
 noticeLabelHolder
 
     noticeLabelHolder isNil ifTrue:[
-        noticeLabelHolder := '' asValue.
+	noticeLabelHolder := '' asValue.
     ].
     ^ noticeLabelHolder.
 !
@@ -14887,8 +15111,8 @@
 previewVisibleHolder
 
     previewVisibleHolder isNil ifTrue:[
-        previewVisibleHolder := ValueHolder new.
-        previewVisibleHolder onChangeSend:#changeInfoLabel to:self.
+	previewVisibleHolder := ValueHolder new.
+	previewVisibleHolder onChangeSend:#changeInfoLabel to:self.
     ].
     ^ previewVisibleHolder.
 !
@@ -14896,8 +15120,8 @@
 selectedStyle
 
     selectedStyle isNil ifTrue:[
-        selectedStyle := ValueHolder new.
-        selectedStyle addDependent:self.
+	selectedStyle := ValueHolder new.
+	selectedStyle addDependent:self.
     ].
     ^ selectedStyle.
 !
@@ -14905,8 +15129,8 @@
 showStandardStylesOnly
 
     showStandardStylesOnly isNil ifTrue:[
-        showStandardStylesOnly := true asValue.
-        showStandardStylesOnly addDependent:self.
+	showStandardStylesOnly := true asValue.
+	showStandardStylesOnly addDependent:self.
     ].
     ^ showStandardStylesOnly.
 !
@@ -14914,12 +15138,13 @@
 styleList
 
     styleList isNil ifTrue:[
-        styleList := List new.
-        styleList addDependent:self.
+	styleList := List new.
+	styleList addDependent:self.
     ].
     ^ styleList.
 ! !
 
+
 !AbstractSettingsApplication::StyleSettingsAppl methodsFor:'change & update'!
 
 changeInfoLabel
@@ -14928,50 +15153,50 @@
     comment := ''.
     nm := self selectedStyle value.
     nm notNil ifTrue:[
-        sheet := ViewStyle fromFile:(nm , '.style').
-        comment := (sheet at:#comment ifAbsent:'') withoutSeparators.
-        previewFile := sheet at:#previewFileName ifAbsent:nil.
+	sheet := ViewStyle fromFile:(nm , '.style').
+	comment := (sheet at:#comment ifAbsent:'') withoutSeparators.
+	previewFile := sheet at:#previewFileName ifAbsent:nil.
     ].
     comment := comment withCRs asStringCollection.
     comment size == 1 ifTrue:[
-        comment := comment first
+	comment := comment first
     ].
     self infoLabelHolder value:comment.
 
     self previewVisibleHolder value ifTrue:[
-        self builder notNil ifTrue:[
-            labelView := self componentAt:#PreviewLabel. 
-            labelView label:'Sorry - no preview available'.
-
-            imgView := (self componentAt:#Preview).
-            imgView image:nil.
-
-            previewFile notEmptyOrNil ifTrue:[
-                previewImage := Image fromFile:'../../doc/online/pictures' asFilename / previewFile.
-                previewImage notNil ifTrue:[
-                    labelView label:'Preview'.
-                    imgView adjust:#fitBig; image:previewImage.
-                ]
-            ].
-            labelView forceResizeHorizontally.     
-        ]
+	self builder notNil ifTrue:[
+	    labelView := self componentAt:#PreviewLabel.
+	    labelView label:'Sorry - no preview available'.
+
+	    imgView := (self componentAt:#Preview).
+	    imgView image:nil.
+
+	    previewFile notEmptyOrNil ifTrue:[
+		previewImage := Image fromFile:'../../doc/online/pictures' asFilename / previewFile.
+		previewImage notNil ifTrue:[
+		    labelView label:'Preview'.
+		    imgView adjust:#fitBig; image:previewImage.
+		]
+	    ].
+	    labelView forceResizeHorizontally.
+	]
     ]
 !
 
-update:something with:aParameter from:changedObject 
+update:something with:aParameter from:changedObject
     changedObject == self showStandardStylesOnly ifTrue:[
-        self updateList.
-        ^ self
+	self updateList.
+	^ self
     ].
     changedObject == self selectedStyle ifTrue:[
-        self changeInfoLabel.
-        self updateModifiedChannel.
-        ^ self
-    ].
-    super 
-        update:something
-        with:aParameter
-        from:changedObject
+	self changeInfoLabel.
+	self updateModifiedChannel.
+	^ self
+    ].
+    super
+	update:something
+	with:aParameter
+	from:changedObject
 !
 
 updateList
@@ -14982,11 +15207,11 @@
     listOfStyles := styleDirectoryContents select:[:aFileName | aFileName asFilename hasSuffix:'style'].
     listOfStyles := listOfStyles collect:[:aFileName | aFileName asFilename nameWithoutSuffix].
     Filename isCaseSensitive ifFalse:[
-        listOfStyles := listOfStyles collect:[:aStyleName | aStyleName asLowercase].
+	listOfStyles := listOfStyles collect:[:aStyleName | aStyleName asLowercase].
     ].
     listOfStyles remove:'generic' ifAbsent:nil; remove:'mswindows3' ifAbsent:nil.
     self showStandardStylesOnly value ifTrue:[
-        listOfStyles := listOfStyles select:[:aStyleName | self class standardStyles includes:aStyleName asLowercase].
+	listOfStyles := listOfStyles select:[:aStyleName | self class standardStyles includes:aStyleName asLowercase].
     ].
 
     listOfStyles sort.
@@ -14996,12 +15221,14 @@
     "Modified: / 07-11-2006 / 13:58:09 / cg"
 ! !
 
+
 !AbstractSettingsApplication::StyleSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/styleSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::StyleSettingsAppl methodsFor:'initialization & release'!
 
 commonPostBuild
@@ -15021,34 +15248,34 @@
 
     someRsrcFile := Smalltalk getSystemFileName:('resources' asFilename constructString:'normal.style').
     someRsrcFile isNil ifTrue:[
-        someRsrcFile := Smalltalk getResourceFileName:'normal.style' forPackage:'stx:libview'.
-        someRsrcFile isNil ifTrue:[
-            someRsrcFile := Smalltalk getResourceFileName:'styles/normal.style' forPackage:'stx:libview'.
-        ].
+	someRsrcFile := Smalltalk getResourceFileName:'normal.style' forPackage:'stx:libview'.
+	someRsrcFile isNil ifTrue:[
+	    someRsrcFile := Smalltalk getResourceFileName:'styles/normal.style' forPackage:'stx:libview'.
+	].
     ].
     someRsrcFile notNil ifTrue:[
-        resourceDir := someRsrcFile asFilename directoryName
+	resourceDir := someRsrcFile asFilename directoryName
     ] ifFalse:[
-        resourceDir := Smalltalk getSystemFileName:'resources'.
-        resourceDir isNil ifTrue:[
-            self warn:'no styles found (missing ''resources'' directory)'.
-            ^ self
-        ].
+	resourceDir := Smalltalk getSystemFileName:'resources'.
+	resourceDir isNil ifTrue:[
+	    self warn:'no styles found (missing ''resources'' directory)'.
+	    ^ self
+	].
     ].
 
     [
-        styleDirectoryContents := resourceDir asFilename directoryContents.
+	styleDirectoryContents := resourceDir asFilename directoryContents.
     ] on:FileStream openErrorSignal do:[:ex|
-        self warn:'no styles found (unaccessable ''resources'' directory)'.
-        ^ self
+	self warn:'no styles found (unaccessable ''resources'' directory)'.
+	^ self
     ].
 
     self updateList.
     (self class standardStyles includes:View defaultStyle asLowercase) ifFalse:[
-        self showStandardStylesOnly value:false
+	self showStandardStylesOnly value:false
     ].
     self selectedStyle value:(View defaultStyle).
-    self noticeLabelHolder value:(resources at:'STYLE_MSG' default:'Select a Style') withCRs.    
+    self noticeLabelHolder value:(resources at:'STYLE_MSG' default:'Select a Style') withCRs.
 !
 
 postBuildHelpLabel:aWidget
@@ -15056,6 +15283,7 @@
     aWidget scrolledView backgroundColor:self window viewBackground.
 ! !
 
+
 !AbstractSettingsApplication::StyleSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -15063,27 +15291,28 @@
     ^  (self selectedStyle value ~= View defaultStyle)
 ! !
 
+
 !AbstractSettingsApplication::SyntaxColorSettingsAppl class methodsFor:'defaults'!
 
 emphasisList
 
     ^ #(
-        #normal         
-        #underline       
-        #'red underline'  
-        #underwave 
-        #'red underwave' 
-        #bold   
-        #boldUnderline  
-        #'bold+red underline'
-        #boldUnderwave 
-        #'bold+red underwave'
-        #italic
-        #italicUnderline
-        #'italic+red underline'
-        #italicUnderwave 
-        #'italic+red underwave'
-        #reverse
+	#normal
+	#underline
+	#'red underline'
+	#underwave
+	#'red underwave'
+	#bold
+	#boldUnderline
+	#'bold+red underline'
+	#boldUnderwave
+	#'bold+red underwave'
+	#italic
+	#italicUnderline
+	#'italic+red underline'
+	#italicUnderwave
+	#'italic+red underwave'
+	#reverse
     )
 !
 
@@ -15114,25 +15343,26 @@
 fontList
 
     ^ #(
-        normal
-        underline
-        #'red underline'
-        underwave
-        #'red underwave'
-        bold
-        boldUnderline
-        #'bold+red underline'
-        boldUnderwave
-        #'bold+red underwave'
-        italic
-        italicUnderline
-        #'italic+red underline'
-        italicUnderwave
-        #'italic+red underwave'
-        reverse
+	normal
+	underline
+	#'red underline'
+	underwave
+	#'red underwave'
+	bold
+	boldUnderline
+	#'bold+red underline'
+	boldUnderwave
+	#'bold+red underwave'
+	italic
+	italicUnderline
+	#'italic+red underline'
+	italicUnderwave
+	#'italic+red underwave'
+	reverse
     )
 ! !
 
+
 !AbstractSettingsApplication::SyntaxColorSettingsAppl class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -15143,7 +15373,7 @@
      the UIHelpTool may not be able to read the specification."
 
     "
-     UIHelpTool openOnClass:AbstractSettingsApplication::SyntaxColorSettingsAppl    
+     UIHelpTool openOnClass:AbstractSettingsApplication::SyntaxColorSettingsAppl
     "
 
     <resource: #help>
@@ -15181,6 +15411,7 @@
     "Created: / 14-02-2012 / 10:44:21 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SyntaxColorSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -15199,13 +15430,14 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::SyntaxColorSettingsAppl class defaultIcon'
-        ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::SyntaxColorSettingsAppl class defaultIcon'
+	ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 DQDQDQDQDQDQDQDTQDQDQDQDQDQDPQQ@QDADQBP$QDP!!E@QDQ@QDIBQDP$DTADQDADQDQDQBPQPDQDPDQDQDQBQAE@QDQ@QDQDQDIDDTADQDADQDQDIDPQPD
 QDPDQDQDP$QAEDADPDQDQDP$QDDTQDQDQDQDQDQDPQQDADQDQDQDQDQAEDADQDQDQDQDQDDTPDQ@QDADQDQDPQP@A@PDA@Q@QDQAEDADA@PDADQDQDDTPDPD
 A@PDQDQDPQQ@QDADPDQ@QDQAEDQDQDQDQDQDQDDTMCP4MCP4QDQDPQQCP4MCP4MDQDQADQDQDQDQDQDQDQDb') ; colorMapFromArray:#[0 0 0 88 88 88 0 0 255 255 0 0 255 255 255]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<???<') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::SyntaxColorSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -15223,222 +15455,223 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Syntax Color Settings'
-          name: 'Syntax Color Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 695 609)
-        )
-        component: 
+	  label: 'Syntax Color Settings'
+	  name: 'Syntax Color Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 695 609)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel2'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fit
-              verticalLayout: topSpaceFit
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (CheckBoxSpec
-                    label: 'Syntax Coloring'
-                    name: 'CheckBox1'
-                    activeHelpKey: syntaxColoringEnabled
-                    model: syntaxColoring
-                    translateLabel: true
-                    extent: (Point 695 22)
-                  )
-                 (CheckBoxSpec
-                    label: 'Immediate Selector Check'
-                    name: 'ImmediateSelectorCheckBox'
-                    activeHelpKey: immediateSelectorCheck
-                    enableChannel: syntaxColoring
-                    model: fullSelectorCheck
-                    translateLabel: true
-                    extent: (Point 695 22)
-                  )
-                 (ViewSpec
-                    name: 'SpacingBox2'
-                    extent: (Point 695 10)
-                  )
-                 (LabelSpec
-                    label: 'Style:'
-                    name: 'Label5'
-                    activeHelpKey: individualStyleSetting
-                    translateLabel: true
-                    adjust: left
-                    extent: (Point 695 22)
-                  )
-                 (ViewSpec
-                    name: 'ElementSelectionBox'
-                    activeHelpKey: individualStyleSetting
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Element:'
-                          name: 'Label4'
-                          layout: (LayoutFrame 0 0 0 0 120 0 22 0)
-                          activeHelpKey: elementSelection
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (ComboListSpec
-                          name: 'ComboList3'
-                          layout: (LayoutFrame 140 0 0 0 0 1 22 0)
-                          enableChannel: syntaxColoring
-                          model: syntaxElementSelection
-                          comboList: syntaxElementList
-                          useIndex: false
-                          hidePullDownMenuButton: false
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 695 25)
-                  )
-                 (ViewSpec
-                    name: 'ColorBox'
-                    activeHelpKey: individualStyleSetting
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Color:'
-                          name: 'Label2'
-                          layout: (LayoutFrame 0 0 0 0 120 0 22 0)
-                          activeHelpKey: colorSelection
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (ColorMenuSpec
-                          name: 'ColorMenu2'
-                          layout: (LayoutFrame 140 0 0 0 0 1 25 0)
-                          enableChannel: syntaxColoring
-                          model: syntaxColor
-                          labelsAreColored: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 695 25)
-                  )
-                 (ViewSpec
-                    name: 'EmphasisBox'
-                    activeHelpKey: individualStyleSetting
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Emphasis:'
-                          name: 'Label1'
-                          layout: (LayoutFrame 0 0 0 0 120 0 22 0)
-                          activeHelpKey: emphasisSelection
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (ComboListSpec
-                          name: 'ComboList5'
-                          layout: (LayoutFrame 140 0 0 0 0 1 22 0)
-                          enableChannel: syntaxColoring
-                          model: syntaxEmphasisSelection
-                          comboList: syntaxEmphasisList
-                          useIndex: false
-                          hidePullDownMenuButton: false
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 695 25)
-                  )
-                 (ViewSpec
-                    name: 'ResetBox'
-                    activeHelpKey: commonStyleSetting
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ActionButtonSpec
-                          label: 'Reset To:'
-                          name: 'Button2'
-                          layout: (LayoutFrame 0 0 -28 1 150 0 -6 1)
-                          activeHelpKey: resetToCommonStyle
-                          translateLabel: true
-                          model: resetToColorScheme
-                          enableChannel: syntaxColoring
-                        )
-                       (ComboListSpec
-                          name: 'ComboList4'
-                          layout: (LayoutFrame 150 0 -28 1 0 1 -6 1)
-                          activeHelpKey: commonStyleSelection
-                          enableChannel: syntaxColoring
-                          model: resetListSelection
-                          comboList: resetList
-                          useIndex: false
-                          hidePullDownMenuButton: false
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 695 45)
-                  )
-                 (ViewSpec
-                    name: 'SpacingBox1'
-                    extent: (Point 695 10)
-                  )
-                 (LabelSpec
-                    label: 'Sample Output:'
-                    name: 'SampleLabel3'
-                    translateLabel: true
-                    adjust: left
-                    extent: (Point 695 22)
-                  )
-                 (TextEditorSpec
-                    name: 'TextEditor2'
-                    enableChannel: syntaxColoring
-                    model: coloredText
-                    hasHorizontalScrollBar: true
-                    hasVerticalScrollBar: true
-                    isReadOnly: true
-                    hasKeyboardFocusInitially: false
-                    extent: (Point 695 345)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel2'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fit
+	      verticalLayout: topSpaceFit
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (CheckBoxSpec
+		    label: 'Syntax Coloring'
+		    name: 'CheckBox1'
+		    activeHelpKey: syntaxColoringEnabled
+		    model: syntaxColoring
+		    translateLabel: true
+		    extent: (Point 695 22)
+		  )
+		 (CheckBoxSpec
+		    label: 'Immediate Selector Check'
+		    name: 'ImmediateSelectorCheckBox'
+		    activeHelpKey: immediateSelectorCheck
+		    enableChannel: syntaxColoring
+		    model: fullSelectorCheck
+		    translateLabel: true
+		    extent: (Point 695 22)
+		  )
+		 (ViewSpec
+		    name: 'SpacingBox2'
+		    extent: (Point 695 10)
+		  )
+		 (LabelSpec
+		    label: 'Style:'
+		    name: 'Label5'
+		    activeHelpKey: individualStyleSetting
+		    translateLabel: true
+		    adjust: left
+		    extent: (Point 695 22)
+		  )
+		 (ViewSpec
+		    name: 'ElementSelectionBox'
+		    activeHelpKey: individualStyleSetting
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Element:'
+			  name: 'Label4'
+			  layout: (LayoutFrame 0 0 0 0 120 0 22 0)
+			  activeHelpKey: elementSelection
+			  translateLabel: true
+			  adjust: right
+			)
+		       (ComboListSpec
+			  name: 'ComboList3'
+			  layout: (LayoutFrame 140 0 0 0 0 1 22 0)
+			  enableChannel: syntaxColoring
+			  model: syntaxElementSelection
+			  comboList: syntaxElementList
+			  useIndex: false
+			  hidePullDownMenuButton: false
+			)
+		       )
+
+		    )
+		    extent: (Point 695 25)
+		  )
+		 (ViewSpec
+		    name: 'ColorBox'
+		    activeHelpKey: individualStyleSetting
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Color:'
+			  name: 'Label2'
+			  layout: (LayoutFrame 0 0 0 0 120 0 22 0)
+			  activeHelpKey: colorSelection
+			  translateLabel: true
+			  adjust: right
+			)
+		       (ColorMenuSpec
+			  name: 'ColorMenu2'
+			  layout: (LayoutFrame 140 0 0 0 0 1 25 0)
+			  enableChannel: syntaxColoring
+			  model: syntaxColor
+			  labelsAreColored: true
+			)
+		       )
+
+		    )
+		    extent: (Point 695 25)
+		  )
+		 (ViewSpec
+		    name: 'EmphasisBox'
+		    activeHelpKey: individualStyleSetting
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (LabelSpec
+			  label: 'Emphasis:'
+			  name: 'Label1'
+			  layout: (LayoutFrame 0 0 0 0 120 0 22 0)
+			  activeHelpKey: emphasisSelection
+			  translateLabel: true
+			  adjust: right
+			)
+		       (ComboListSpec
+			  name: 'ComboList5'
+			  layout: (LayoutFrame 140 0 0 0 0 1 22 0)
+			  enableChannel: syntaxColoring
+			  model: syntaxEmphasisSelection
+			  comboList: syntaxEmphasisList
+			  useIndex: false
+			  hidePullDownMenuButton: false
+			)
+		       )
+
+		    )
+		    extent: (Point 695 25)
+		  )
+		 (ViewSpec
+		    name: 'ResetBox'
+		    activeHelpKey: commonStyleSetting
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (ActionButtonSpec
+			  label: 'Reset To:'
+			  name: 'Button2'
+			  layout: (LayoutFrame 0 0 -28 1 150 0 -6 1)
+			  activeHelpKey: resetToCommonStyle
+			  translateLabel: true
+			  model: resetToColorScheme
+			  enableChannel: syntaxColoring
+			)
+		       (ComboListSpec
+			  name: 'ComboList4'
+			  layout: (LayoutFrame 150 0 -28 1 0 1 -6 1)
+			  activeHelpKey: commonStyleSelection
+			  enableChannel: syntaxColoring
+			  model: resetListSelection
+			  comboList: resetList
+			  useIndex: false
+			  hidePullDownMenuButton: false
+			)
+		       )
+
+		    )
+		    extent: (Point 695 45)
+		  )
+		 (ViewSpec
+		    name: 'SpacingBox1'
+		    extent: (Point 695 10)
+		  )
+		 (LabelSpec
+		    label: 'Sample Output:'
+		    name: 'SampleLabel3'
+		    translateLabel: true
+		    adjust: left
+		    extent: (Point 695 22)
+		  )
+		 (TextEditorSpec
+		    name: 'TextEditor2'
+		    enableChannel: syntaxColoring
+		    model: coloredText
+		    hasHorizontalScrollBar: true
+		    hasVerticalScrollBar: true
+		    isReadOnly: true
+		    hasKeyboardFocusInitially: false
+		    extent: (Point 695 345)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::SyntaxColorSettingsAppl methodsFor:'actions'!
 
 basicReadSettings
     |colorList resetListLoc|
 
     oldUserPreferences notNil ifTrue:[
-        (UserPreferences reset; current) addAll:oldUserPreferences
-    ].
-
-    self 
-        readAspects:
-            #( 
-                syntaxColoring
-                fullSelectorCheck
-            )
-        from:currentUserPrefs.
+	(UserPreferences reset; current) addAll:oldUserPreferences
+    ].
+
+    self
+	readAspects:
+	    #(
+		syntaxColoring
+		fullSelectorCheck
+	    )
+	from:currentUserPrefs.
 
     oldUserPreferences := currentUserPrefs copy.
     colorList := UserPreferences syntaxColorNames.
-    resetListLoc := currentUserPrefs listOfPredefinedSyntaxColoringSchemes 
-                collect:[:entry | entry second].
+    resetListLoc := currentUserPrefs listOfPredefinedSyntaxColoringSchemes
+		collect:[:entry | entry second].
     self resetList value:resetListLoc.
     self resetListSelection value:resetListLoc first.
     self syntaxEmphasisList value:self class emphasisList.
@@ -15459,21 +15692,21 @@
     |text dummyClass|
 
     self syntaxColoring value ifTrue:[
-        Class withoutUpdatingChangesDo:[
-            dummyClass := Object 
-                            subclass:#DummyClass 
-                            instanceVariableNames:'instVar' 
-                            classVariableNames:'ClassVar' 
-                            poolDictionaries:'' 
-                            category:'' 
-                            inEnvironment:nil
-        ].
-        text := SyntaxHighlighter 
-                    formatMethod:self class exampleText 
-                    in:dummyClass
-                    using:currentUserPrefs.
+	Class withoutUpdatingChangesDo:[
+	    dummyClass := Object
+			    subclass:#DummyClass
+			    instanceVariableNames:'instVar'
+			    classVariableNames:'ClassVar'
+			    poolDictionaries:''
+			    category:''
+			    inEnvironment:nil
+	].
+	text := SyntaxHighlighter
+		    formatMethod:self class exampleText
+		    in:dummyClass
+		    using:currentUserPrefs.
     ] ifFalse:[
-        text := self class exampleText.
+	text := self class exampleText.
     ].
     self coloredText value:text
 
@@ -15491,12 +15724,13 @@
     "Modified (format): / 16-03-2012 / 10:32:02 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SyntaxColorSettingsAppl methodsFor:'aspects'!
 
 coloredText
 
     coloredText isNil ifTrue:[
-        coloredText := ValueHolder new.
+	coloredText := ValueHolder new.
     ].
     ^ coloredText.
 !
@@ -15504,8 +15738,8 @@
 fullSelectorCheck
 
     fullSelectorCheck isNil ifTrue:[
-        fullSelectorCheck := currentUserPrefs fullSelectorCheck asValue.
-        fullSelectorCheck onChangeSend:#updateModifiedChannel to:self
+	fullSelectorCheck := currentUserPrefs fullSelectorCheck asValue.
+	fullSelectorCheck onChangeSend:#updateModifiedChannel to:self
     ].
     ^ fullSelectorCheck.
 !
@@ -15513,7 +15747,7 @@
 resetList
 
     resetList isNil ifTrue:[
-        resetList := ValueHolder new.
+	resetList := ValueHolder new.
     ].
     ^ resetList.
 
@@ -15523,7 +15757,7 @@
 resetListSelection
 
     resetListSelection isNil ifTrue:[
-        resetListSelection := ValueHolder new.
+	resetListSelection := ValueHolder new.
     ].
     ^ resetListSelection.
 !
@@ -15531,8 +15765,8 @@
 syntaxColor
 
     syntaxColor isNil ifTrue:[
-        syntaxColor := ValueHolder new.
-        syntaxColor addDependent:self.
+	syntaxColor := ValueHolder new.
+	syntaxColor addDependent:self.
     ].
     ^ syntaxColor.
 !
@@ -15540,16 +15774,16 @@
 syntaxColoring
 
     syntaxColoring isNil ifTrue:[
-        syntaxColoring := true asValue.
-        syntaxColoring addDependent:self.
-        syntaxColoring onChangeSend:#updateModifiedChannel to:self.
+	syntaxColoring := true asValue.
+	syntaxColoring addDependent:self.
+	syntaxColoring onChangeSend:#updateModifiedChannel to:self.
     ].
     ^ syntaxColoring.
 !
 
 syntaxElementList
     syntaxElementList isNil ifTrue:[
-        syntaxElementList := ValueHolder new.
+	syntaxElementList := ValueHolder new.
     ].
     ^ syntaxElementList.
 
@@ -15559,8 +15793,8 @@
 syntaxElementSelection
 
     syntaxElementSelection isNil ifTrue:[
-        syntaxElementSelection := ValueHolder new.
-        syntaxElementSelection addDependent:self.
+	syntaxElementSelection := ValueHolder new.
+	syntaxElementSelection addDependent:self.
     ].
     ^ syntaxElementSelection.
 
@@ -15569,7 +15803,7 @@
 
 syntaxEmphasisList
     syntaxEmphasisList isNil ifTrue:[
-        syntaxEmphasisList := ValueHolder new.
+	syntaxEmphasisList := ValueHolder new.
     ].
     ^ syntaxEmphasisList.
 
@@ -15579,12 +15813,13 @@
 syntaxEmphasisSelection
 
     syntaxEmphasisSelection isNil ifTrue:[
-        syntaxEmphasisSelection := ValueHolder new.
-        syntaxEmphasisSelection addDependent:self.
+	syntaxEmphasisSelection := ValueHolder new.
+	syntaxEmphasisSelection addDependent:self.
     ].
     ^ syntaxEmphasisSelection.
 ! !
 
+
 !AbstractSettingsApplication::SyntaxColorSettingsAppl methodsFor:'change & update'!
 
 getEmphasis:anEmphasisOrSymbol
@@ -15620,31 +15855,33 @@
 
 update:something with:aParameter from:changedObject
     changedObject == self syntaxElementSelection ifTrue:[
-        self syntaxElementSelectionChanged.
-        ^ self.
+	self syntaxElementSelectionChanged.
+	^ self.
     ].
     changedObject == self syntaxColor ifTrue:[
-        self syntaxColorChanged.
-        ^ self.
+	self syntaxColorChanged.
+	^ self.
     ].
     changedObject == self syntaxEmphasisSelection ifTrue:[
-        self syntaxEmphasisSelectionChanged.
-        ^ self.
+	self syntaxEmphasisSelectionChanged.
+	^ self.
     ].
     changedObject == self syntaxColoring ifTrue:[
-        self recolor.
-        ^ self.
+	self recolor.
+	^ self.
     ].
 
     super update:something with:aParameter from:changedObject
 ! !
 
+
 !AbstractSettingsApplication::SyntaxColorSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/sourceSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::SyntaxColorSettingsAppl methodsFor:'initialization & release'!
 
 initialize
@@ -15652,8 +15889,8 @@
     super initialize.
 
     resetListDictionary := Dictionary new.
-    currentUserPrefs listOfPredefinedSyntaxColoringSchemes do:[:entry | 
-        resetListDictionary at:(entry at:1) put:(entry at:2)
+    currentUserPrefs listOfPredefinedSyntaxColoringSchemes do:[:entry |
+	resetListDictionary at:(entry at:1) put:(entry at:2)
     ].
 !
 
@@ -15661,52 +15898,53 @@
 
     emphasisDictionary := Dictionary new.
     self class emphasisList do:[ : entry |
-        entry == #'red underline' ifTrue:[
-            emphasisDictionary at:entry put:(Array with:#underline with:(#underlineColor->Color red)).
-            emphasisDictionary at:(Array with:#underline with:(#underlineColor->Color red)) put:entry.
-        ] ifFalse:[
-            entry == #'red underwave' ifTrue:[
-                emphasisDictionary at:entry put:(Array with:#underwave with:(#underlineColor->Color red)).
-                emphasisDictionary at:(Array with:#underwave with:(#underlineColor->Color red)) put:entry.
-            ] ifFalse:[
-                entry == #'bold+red underline' ifTrue:[
-                    emphasisDictionary at:entry put:(Array with:#bold with:#underline with:(#underlineColor->Color red)).
-                    emphasisDictionary at:(Array with:#bold with:#underline with:(#underlineColor->Color red)) put:entry.
-                ] ifFalse:[
-                    entry == #'bold+red underwave' ifTrue:[
-                        emphasisDictionary at:entry put:(Array with:#bold with:#underwave with:(#underlineColor->Color red)).
-                        emphasisDictionary at:(Array with:#bold with:#underwave with:(#underlineColor->Color red)) put:entry.
-                    ] ifFalse:[
-                        entry == #'italic+red underline' ifTrue:[
-                            emphasisDictionary at:entry put:(Array with:#italic with:#underline with:(#underlineColor->Color red)).
-                            emphasisDictionary at:(Array with:#italic with:#underline with:(#underlineColor->Color red)) put:entry.
-                        ] ifFalse:[
-                            entry == #'italic+red underwave' ifTrue:[
-                                emphasisDictionary at:entry put:(Array with:#italic with:#underwave with:(#underlineColor->Color red)).
-                                emphasisDictionary at:(Array with:#italic with:#underwave with:(#underlineColor->Color red)) put:entry.
-                            ] ifFalse:[
-                                emphasisDictionary at:entry put:entry
-                            ]
-                        ]
-                    ]
-                ]
-            ]
-        ]
+	entry == #'red underline' ifTrue:[
+	    emphasisDictionary at:entry put:(Array with:#underline with:(#underlineColor->Color red)).
+	    emphasisDictionary at:(Array with:#underline with:(#underlineColor->Color red)) put:entry.
+	] ifFalse:[
+	    entry == #'red underwave' ifTrue:[
+		emphasisDictionary at:entry put:(Array with:#underwave with:(#underlineColor->Color red)).
+		emphasisDictionary at:(Array with:#underwave with:(#underlineColor->Color red)) put:entry.
+	    ] ifFalse:[
+		entry == #'bold+red underline' ifTrue:[
+		    emphasisDictionary at:entry put:(Array with:#bold with:#underline with:(#underlineColor->Color red)).
+		    emphasisDictionary at:(Array with:#bold with:#underline with:(#underlineColor->Color red)) put:entry.
+		] ifFalse:[
+		    entry == #'bold+red underwave' ifTrue:[
+			emphasisDictionary at:entry put:(Array with:#bold with:#underwave with:(#underlineColor->Color red)).
+			emphasisDictionary at:(Array with:#bold with:#underwave with:(#underlineColor->Color red)) put:entry.
+		    ] ifFalse:[
+			entry == #'italic+red underline' ifTrue:[
+			    emphasisDictionary at:entry put:(Array with:#italic with:#underline with:(#underlineColor->Color red)).
+			    emphasisDictionary at:(Array with:#italic with:#underline with:(#underlineColor->Color red)) put:entry.
+			] ifFalse:[
+			    entry == #'italic+red underwave' ifTrue:[
+				emphasisDictionary at:entry put:(Array with:#italic with:#underwave with:(#underlineColor->Color red)).
+				emphasisDictionary at:(Array with:#italic with:#underwave with:(#underlineColor->Color red)) put:entry.
+			    ] ifFalse:[
+				emphasisDictionary at:entry put:entry
+			    ]
+			]
+		    ]
+		]
+	    ]
+	]
     ].
 !
 
 release
 
     oldUserPreferences notNil ifTrue:[
-        (UserPreferences reset; current) 
-            addAll:oldUserPreferences;
-            flyByHelpSettingChanged.    "/ reinstall
+	(UserPreferences reset; current)
+	    addAll:oldUserPreferences;
+	    flyByHelpSettingChanged.    "/ reinstall
     ].
     super release
 
     "Modified: / 14-02-2012 / 11:01:49 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SyntaxColorSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -15714,45 +15952,46 @@
 
     colorList := UserPreferences syntaxColorNames.
     colorList do:[:syntaxElement |
-        colorPerformer := (self syntaxColorSelectorForElement:syntaxElement).
-        emphasisPerformer := (self syntaxEmphasisSelectorForElement:syntaxElement).
-        ((oldUserPreferences perform:colorPerformer) ~= (currentUserPrefs perform:colorPerformer)) ifTrue:[
-            ^ true
-        ].
-        ((oldUserPreferences perform:emphasisPerformer) ~= (currentUserPrefs perform:emphasisPerformer)) ifTrue:[
-            ^ true
-        ].
-        syntaxElement
+	colorPerformer := (self syntaxColorSelectorForElement:syntaxElement).
+	emphasisPerformer := (self syntaxEmphasisSelectorForElement:syntaxElement).
+	((oldUserPreferences perform:colorPerformer) ~= (currentUserPrefs perform:colorPerformer)) ifTrue:[
+	    ^ true
+	].
+	((oldUserPreferences perform:emphasisPerformer) ~= (currentUserPrefs perform:emphasisPerformer)) ifTrue:[
+	    ^ true
+	].
+	syntaxElement
     ].
 
     (self
-        hasChangedAspectIn:
-            #(
-                syntaxColoring
-                fullSelectorCheck
-            )
-        asComparedTo:currentUserPrefs) ifTrue:[^ true].
+	hasChangedAspectIn:
+	    #(
+		syntaxColoring
+		fullSelectorCheck
+	    )
+	asComparedTo:currentUserPrefs) ifTrue:[^ true].
 
     ^ false
 !
 
 syntaxColorSelector
-    ^ (self syntaxColorSelectorForElement:self syntaxElementSelection value) 
+    ^ (self syntaxColorSelectorForElement:self syntaxElementSelection value)
 !
 
 syntaxColorSelectorForElement:aSyntaxElement
     ^ (aSyntaxElement replChar:$  withString: '') asLowercaseFirst asSymbol
 !
 
-syntaxEmphasisSelector 
-
-    ^ self syntaxEmphasisSelectorForElement:(self syntaxElementSelection value) 
-!
-
-syntaxEmphasisSelectorForElement:anEmElement 
-    ^ (((self syntaxColorSelectorForElement:anEmElement) readStream upToAll: 'Color'), 'Emphasis') 
-        asLowercaseFirst asSymbol
-! !
+syntaxEmphasisSelector
+
+    ^ self syntaxEmphasisSelectorForElement:(self syntaxElementSelection value)
+!
+
+syntaxEmphasisSelectorForElement:anEmElement
+    ^ (((self syntaxColorSelectorForElement:anEmElement) readStream upToAll: 'Color'), 'Emphasis')
+	asLowercaseFirst asSymbol
+! !
+
 
 !AbstractSettingsApplication::SystemBrowserSettingsAppl class methodsFor:'image specs'!
 
@@ -15764,6 +16003,7 @@
     "Modified: / 17-09-2007 / 11:35:15 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SystemBrowserSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -15960,10 +16200,11 @@
       )
 ! !
 
+
 !AbstractSettingsApplication::SystemBrowserSettingsAppl methodsFor:'actions'!
 
 aspects
-    ^ #( 
+    ^ #(
         "/ showAcceptCancelBarInBrowser
         useSearchBarInBrowser
         showMethodTemplate
@@ -15976,35 +16217,49 @@
         showLocalHistory
         useInPlaceSearchInBrowserLists
         sourceCodeManagementMenuLayout
+        confirmRefactorings
     )
 
     "Created: / 25-11-2011 / 15:09:28 / cg"
+    "Modified: / 04-04-2012 / 14:03:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 basicReadSettings
-    self 
-        readAspects:(self aspects)
-        from:currentUserPrefs.
+    self
+	readAspects:(self aspects)
+	from:currentUserPrefs.
 
     "Modified: / 06-10-2011 / 18:57:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 25-11-2011 / 15:09:39 / cg"
 !
 
 basicSaveSettings
-    self 
-        writeAspects:(self aspects)
-        to:currentUserPrefs.
+    self
+	writeAspects:(self aspects)
+	to:currentUserPrefs.
 
     "Modified: / 06-10-2011 / 18:57:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 25-11-2011 / 15:09:49 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SystemBrowserSettingsAppl methodsFor:'aspects'!
 
+confirmRefactorings
+
+    confirmRefactorings isNil ifTrue:[
+	confirmRefactorings := false asValue.
+	confirmRefactorings onChangeSend:#updateModifiedChannel to:self
+    ].
+    ^ confirmRefactorings.
+
+    "Created: / 07-06-2011 / 14:34:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 showAcceptCancelBarInBrowser
     showAcceptCancelBarInBrowser isNil ifTrue:[
-        showAcceptCancelBarInBrowser := false asValue.
-        showAcceptCancelBarInBrowser onChangeSend:#updateModifiedChannel to:self
+	showAcceptCancelBarInBrowser := false asValue.
+	showAcceptCancelBarInBrowser onChangeSend:#updateModifiedChannel to:self
     ].
     ^ showAcceptCancelBarInBrowser.
 !
@@ -16013,8 +16268,8 @@
     "return/create the 'showMethodTemplate' value holder (automatically generated)"
 
     showBookmarkBar isNil ifTrue:[
-        showBookmarkBar := ValueHolder new.
-        showBookmarkBar onChangeSend:#updateModifiedChannel to:self
+	showBookmarkBar := ValueHolder new.
+	showBookmarkBar onChangeSend:#updateModifiedChannel to:self
 
     ].
     ^ showBookmarkBar
@@ -16026,8 +16281,8 @@
     "return/create the 'showEmbeddedTestRunnerInBrowser' value holder (automatically generated)"
 
     showEmbeddedTestRunnerInBrowser isNil ifTrue:[
-        showEmbeddedTestRunnerInBrowser := ValueHolder new.
-        showEmbeddedTestRunnerInBrowser onChangeSend:#updateModifiedChannel to:self
+	showEmbeddedTestRunnerInBrowser := ValueHolder new.
+	showEmbeddedTestRunnerInBrowser onChangeSend:#updateModifiedChannel to:self
     ].
     ^ showEmbeddedTestRunnerInBrowser
 
@@ -16037,8 +16292,8 @@
 showGlobalHistory
 
     showGlobalHistory isNil ifTrue:[
-        showGlobalHistory := false asValue.
-        showGlobalHistory onChangeSend:#updateModifiedChannel to:self
+	showGlobalHistory := false asValue.
+	showGlobalHistory onChangeSend:#updateModifiedChannel to:self
     ].
     ^ showGlobalHistory.
 
@@ -16048,8 +16303,8 @@
 showLocalHistory
 
     showLocalHistory isNil ifTrue:[
-        showLocalHistory := false asValue.
-        showLocalHistory onChangeSend:#updateModifiedChannel to:self
+	showLocalHistory := false asValue.
+	showLocalHistory onChangeSend:#updateModifiedChannel to:self
     ].
     ^ showLocalHistory.
 
@@ -16060,8 +16315,8 @@
     "return/create the 'showMethodTemplate' value holder (automatically generated)"
 
     showMethodTemplate isNil ifTrue:[
-        showMethodTemplate := ValueHolder new.
-        showMethodTemplate onChangeSend:#updateModifiedChannel to:self
+	showMethodTemplate := ValueHolder new.
+	showMethodTemplate onChangeSend:#updateModifiedChannel to:self
 
     ].
     ^ showMethodTemplate
@@ -16072,8 +16327,8 @@
 sortAndIndentClassesByInheritance
 
     sortAndIndentClassesByInheritance isNil ifTrue:[
-        sortAndIndentClassesByInheritance := false asValue.
-        sortAndIndentClassesByInheritance onChangeSend:#updateModifiedChannel to:self
+	sortAndIndentClassesByInheritance := false asValue.
+	sortAndIndentClassesByInheritance onChangeSend:#updateModifiedChannel to:self
     ].
     ^ sortAndIndentClassesByInheritance.
 
@@ -16082,8 +16337,8 @@
 
 sourceCodeManagementMenuLayout
     sourceCodeManagementMenuLayout isNil ifTrue:[
-        sourceCodeManagementMenuLayout := #old asValue.
-        sourceCodeManagementMenuLayout onChangeSend:#updateModifiedChannel to:self
+	sourceCodeManagementMenuLayout := #old asValue.
+	sourceCodeManagementMenuLayout onChangeSend:#updateModifiedChannel to:self
     ].
     ^ sourceCodeManagementMenuLayout.
 
@@ -16094,8 +16349,8 @@
     "return/create the 'useCodeView2InTools' value holder (automatically generated)"
 
     useCodeView2InTools isNil ifTrue:[
-        useCodeView2InTools := ValueHolder new.
-        useCodeView2InTools onChangeSend:#updateModifiedChannel to:self
+	useCodeView2InTools := ValueHolder new.
+	useCodeView2InTools onChangeSend:#updateModifiedChannel to:self
 
     ].
     ^ useCodeView2InTools
@@ -16105,8 +16360,8 @@
 
 useInPlaceSearchInBrowserLists
     useInPlaceSearchInBrowserLists isNil ifTrue:[
-        useInPlaceSearchInBrowserLists := false asValue.
-        useInPlaceSearchInBrowserLists onChangeSend:#updateModifiedChannel to:self
+	useInPlaceSearchInBrowserLists := false asValue.
+	useInPlaceSearchInBrowserLists onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useInPlaceSearchInBrowserLists.
 
@@ -16118,8 +16373,8 @@
      (like in firefox). False if a dialog is to be opened."
 
     useSearchBarInBrowser isNil ifTrue:[
-        useSearchBarInBrowser := true asValue.
-        useSearchBarInBrowser onChangeSend:#updateModifiedChannel to:self
+	useSearchBarInBrowser := true asValue.
+	useSearchBarInBrowser onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useSearchBarInBrowser.
 !
@@ -16129,31 +16384,34 @@
      (like in firefox). False if a dialog is to be opened."
 
     webBrowserLikeLayout isNil ifTrue:[
-        webBrowserLikeLayout := false asValue.
-        webBrowserLikeLayout onChangeSend:#updateModifiedChannel to:self
+	webBrowserLikeLayout := false asValue.
+	webBrowserLikeLayout onChangeSend:#updateModifiedChannel to:self
     ].
     ^ webBrowserLikeLayout.
 
     "Created: / 07-06-2011 / 14:34:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !AbstractSettingsApplication::SystemBrowserSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/browserSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::SystemBrowserSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
     ^ self
-        hasChangedAspectIn:(self aspects)
-        asComparedTo:currentUserPrefs
+	hasChangedAspectIn:(self aspects)
+	asComparedTo:currentUserPrefs
 
     "Modified: / 06-10-2011 / 18:58:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 25-11-2011 / 15:23:47 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SystemMessageSettingsAppl class methodsFor:'help specs'!
 
 helpSpec
@@ -16164,7 +16422,7 @@
      the UIHelpTool may not be able to read the specification."
 
     "
-     UIHelpTool openOnClass:AbstractSettingsApplication::SystemMessageSettingsAppl    
+     UIHelpTool openOnClass:AbstractSettingsApplication::SystemMessageSettingsAppl
     "
 
     <resource: #help>
@@ -16180,6 +16438,7 @@
 )
 ! !
 
+
 !AbstractSettingsApplication::SystemMessageSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -16198,8 +16457,8 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::SystemMessageSettingsAppl class defaultIcon'
-        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::SystemMessageSettingsAppl class defaultIcon'
+	ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(8 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 @@@@@@@@@@@@@PDA@P@@@@@@@@@@@@@@@@@@@@@@@PHB@0D@@@@@@@@@@@@@@@@@@@@@@PHDAPLC@P@@@@@@@@@@@@@@@@@@@@DBA PGA0 @@@@@@@@@@@@@
 @@@@@@@A@ XDA0\H@@@@@@@@@@@@@@@@@@@@@PHIA@(J@@@@@@@@@@@@@@@@@@@@@@DAB00MCP@@@@@@@@@@@@@@@@@@@@@@@@DN@@@@@@@@@@@@@@@@@@@@
 @@@@@@@AC @@@@@@@@@@@@@@@@@@@@@@@@@@@P8@@@@@@@@@@@@@@@@@@@@@@@<OC0PNDA@@DQD@@@@@@@@@@@@@@@<RD1LTEQXVE1 XDP@@@@@@@@@@@@@O
@@ -16208,6 +16467,7 @@
 F!!(ZF!!(ZF@@@@@@@@@@@@@@ODQ0\H"H"H @@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 64 32 16 128 96 48 112 48 0 176 112 48 176 96 32 208 160 128 160 96 16 48 32 0 192 128 80 160 80 16 112 80 32 176 112 32 96 48 16 160 112 32 80 80 16 128 64 16 64 64 16 208 208 176 224 224 208 160 160 128 144 144 80 112 112 64 128 128 64 80 80 32 192 192 160 160 160 112 96 96 48 48 48 16 240 240 224 176 176 128 176 176 144 144 144 96 112 112 48 32 32 0]; mask:((ImageMask new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@G @@O @@_0@@_0@@_0@@_0@@_0@@G @@G @@G @@?<@A?>@A?>@A?>@A?>@A?>@A?>@A?>@G??@G??@G??@A?>@') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::SystemMessageSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -16225,190 +16485,191 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Messages Settings'
-          name: 'Messages Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 561 478)
-        )
-        component: 
+	  label: 'Messages Settings'
+	  name: 'Messages Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 561 478)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel2'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              horizontalLayout: fitSpace
-              verticalLayout: topSpace
-              horizontalSpace: 5
-              verticalSpace: 5
-              component: 
-             (SpecCollection
-                collection: (
-                 (FramedBoxSpec
-                    label: 'Info & Error Messages'
-                    name: 'FramedBox1'
-                    labelPosition: topLeft
-                    translateLabel: true
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'VM Info Messages'
-                          name: 'VMInfoMessages'
-                          layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
-                          model: vmInfo
-                          translateLabel: true
-                        )
-                       (CheckBoxSpec
-                          label: 'VM Error Messages'
-                          name: 'VMErrorMessages'
-                          layout: (LayoutFrame 5 0 30 0 -5 1 52 0)
-                          model: vmErrors
-                          translateLabel: true
-                        )
-                       (CheckBoxSpec
-                          label: 'Display Error Messages (Xlib, Xtlib, WinAPI ...)'
-                          name: 'DisplayErrorMessages'
-                          layout: (LayoutFrame 5 0 55 0 -5 1 77 0)
-                          model: displayErrors
-                          translateLabel: true
-                        )
-                       (CheckBoxSpec
-                          label: 'Other Info Messages'
-                          name: 'OtherInfoMessages'
-                          layout: (LayoutFrame 5 0 80 0 -5 1 102 0)
-                          model: classInfos
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 551 133)
-                  )
-                 (FramedBoxSpec
-                    label: 'Audible Bell'
-                    name: 'FramedBox3'
-                    labelPosition: topLeft
-                    translateLabel: true
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Beep Generally Enabled'
-                          name: 'beepEnabled'
-                          layout: (LayoutFrame 5 0 5 0 226 0 27 0)
-                          model: beepEnabled
-                          translateLabel: true
-                        )
-                       (CheckBoxSpec
-                          label: 'Beep in Editor'
-                          name: 'CheckBox7'
-                          layout: (LayoutFrame 40 0 30 0 300 0 52 0)
-                          enableChannel: beepEnabled
-                          model: beepInEditor
-                          translateLabel: true
-                        )
-                       (CheckBoxSpec
-                          label: 'Beep for Info Dialogs'
-                          name: 'CheckBox3'
-                          layout: (LayoutFrame 40 0 55 0 300 0 77 0)
-                          enableChannel: beepEnabled
-                          model: beepForInfoDialog
-                          translateLabel: true
-                        )
-                       (CheckBoxSpec
-                          label: 'Beep for Warning Dialogs'
-                          name: 'CheckBox4'
-                          layout: (LayoutFrame 40 0 80 0 300 0 102 0)
-                          enableChannel: beepEnabled
-                          model: beepForWarningDialog
-                          translateLabel: true
-                        )
-                       (CheckBoxSpec
-                          label: 'Beep for Error Dialogs'
-                          name: 'CheckBox5'
-                          layout: (LayoutFrame 40 0 105 0 300 0 127 0)
-                          enableChannel: beepEnabled
-                          model: beepForErrorDialog
-                          translateLabel: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 551 164)
-                  )
-                 (FramedBoxSpec
-                    label: 'Help'
-                    name: 'FramedBox4'
-                    labelPosition: topLeft
-                    translateLabel: true
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (CheckBoxSpec
-                          label: 'Tooltips (FlyBy Help)'
-                          name: 'CheckBox6'
-                          layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
-                          activeHelpKey: showToolTips
-                          model: flyByHelpActive
-                          translateLabel: true
-                        )
-                       (InputFieldSpec
-                          name: 'EntryField1'
-                          layout: (LayoutFrame -72 1 5 0 -16 1 27 0)
-                          enableChannel: flyByHelpActive
-                          model: toolTipAutoHideDelay
-                          type: timeDurationOrNil
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnPointerLeave: true
-                        )
-                       (LabelSpec
-                          label: 'Autohide after:'
-                          name: 'Label1'
-                          layout: (LayoutFrame -260 1 6 0 -76 1 28 0)
-                          activeHelpKey: toolTipAutoHideDelay
-                          translateLabel: true
-                          adjust: right
-                        )
-                       (LabelSpec
-                          label: '(s)'
-                          name: 'Label2'
-                          layout: (LayoutFrame -13 1 6 0 7 1 28 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 551 62)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel2'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      horizontalLayout: fitSpace
+	      verticalLayout: topSpace
+	      horizontalSpace: 5
+	      verticalSpace: 5
+	      component:
+	     (SpecCollection
+		collection: (
+		 (FramedBoxSpec
+		    label: 'Info & Error Messages'
+		    name: 'FramedBox1'
+		    labelPosition: topLeft
+		    translateLabel: true
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'VM Info Messages'
+			  name: 'VMInfoMessages'
+			  layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
+			  model: vmInfo
+			  translateLabel: true
+			)
+		       (CheckBoxSpec
+			  label: 'VM Error Messages'
+			  name: 'VMErrorMessages'
+			  layout: (LayoutFrame 5 0 30 0 -5 1 52 0)
+			  model: vmErrors
+			  translateLabel: true
+			)
+		       (CheckBoxSpec
+			  label: 'Display Error Messages (Xlib, Xtlib, WinAPI ...)'
+			  name: 'DisplayErrorMessages'
+			  layout: (LayoutFrame 5 0 55 0 -5 1 77 0)
+			  model: displayErrors
+			  translateLabel: true
+			)
+		       (CheckBoxSpec
+			  label: 'Other Info Messages'
+			  name: 'OtherInfoMessages'
+			  layout: (LayoutFrame 5 0 80 0 -5 1 102 0)
+			  model: classInfos
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 551 133)
+		  )
+		 (FramedBoxSpec
+		    label: 'Audible Bell'
+		    name: 'FramedBox3'
+		    labelPosition: topLeft
+		    translateLabel: true
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Beep Generally Enabled'
+			  name: 'beepEnabled'
+			  layout: (LayoutFrame 5 0 5 0 226 0 27 0)
+			  model: beepEnabled
+			  translateLabel: true
+			)
+		       (CheckBoxSpec
+			  label: 'Beep in Editor'
+			  name: 'CheckBox7'
+			  layout: (LayoutFrame 40 0 30 0 300 0 52 0)
+			  enableChannel: beepEnabled
+			  model: beepInEditor
+			  translateLabel: true
+			)
+		       (CheckBoxSpec
+			  label: 'Beep for Info Dialogs'
+			  name: 'CheckBox3'
+			  layout: (LayoutFrame 40 0 55 0 300 0 77 0)
+			  enableChannel: beepEnabled
+			  model: beepForInfoDialog
+			  translateLabel: true
+			)
+		       (CheckBoxSpec
+			  label: 'Beep for Warning Dialogs'
+			  name: 'CheckBox4'
+			  layout: (LayoutFrame 40 0 80 0 300 0 102 0)
+			  enableChannel: beepEnabled
+			  model: beepForWarningDialog
+			  translateLabel: true
+			)
+		       (CheckBoxSpec
+			  label: 'Beep for Error Dialogs'
+			  name: 'CheckBox5'
+			  layout: (LayoutFrame 40 0 105 0 300 0 127 0)
+			  enableChannel: beepEnabled
+			  model: beepForErrorDialog
+			  translateLabel: true
+			)
+		       )
+
+		    )
+		    extent: (Point 551 164)
+		  )
+		 (FramedBoxSpec
+		    label: 'Help'
+		    name: 'FramedBox4'
+		    labelPosition: topLeft
+		    translateLabel: true
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (CheckBoxSpec
+			  label: 'Tooltips (FlyBy Help)'
+			  name: 'CheckBox6'
+			  layout: (LayoutFrame 5 0 5 0 -5 1 27 0)
+			  activeHelpKey: showToolTips
+			  model: flyByHelpActive
+			  translateLabel: true
+			)
+		       (InputFieldSpec
+			  name: 'EntryField1'
+			  layout: (LayoutFrame -72 1 5 0 -16 1 27 0)
+			  enableChannel: flyByHelpActive
+			  model: toolTipAutoHideDelay
+			  type: timeDurationOrNil
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnPointerLeave: true
+			)
+		       (LabelSpec
+			  label: 'Autohide after:'
+			  name: 'Label1'
+			  layout: (LayoutFrame -260 1 6 0 -76 1 28 0)
+			  activeHelpKey: toolTipAutoHideDelay
+			  translateLabel: true
+			  adjust: right
+			)
+		       (LabelSpec
+			  label: '(s)'
+			  name: 'Label2'
+			  layout: (LayoutFrame -13 1 6 0 7 1 28 0)
+			  translateLabel: true
+			  adjust: left
+			)
+		       )
+
+		    )
+		    extent: (Point 551 62)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::SystemMessageSettingsAppl methodsFor:'actions'!
 
 aspects
-    ^ #( 
-                beepEnabled
-                beepInEditor
-                beepForInfoDialog
-                beepForWarningDialog
-                beepForErrorDialog
-                flyByHelpActive
-                toolTipAutoHideDelay
-            )
+    ^ #(
+		beepEnabled
+		beepInEditor
+		beepForInfoDialog
+		beepForWarningDialog
+		beepForErrorDialog
+		flyByHelpActive
+		toolTipAutoHideDelay
+	    )
 
     "Created: / 10-11-2010 / 12:07:42 / cg"
 !
@@ -16436,44 +16697,45 @@
     "Modified: / 10-11-2010 / 12:08:14 / cg"
 ! !
 
+
 !AbstractSettingsApplication::SystemMessageSettingsAppl methodsFor:'aspects'!
 
 beepEnabled
     beepEnabled isNil ifTrue:[
-        beepEnabled := true asValue.
-        beepEnabled onChangeSend:#updateModifiedChannel to:self
+	beepEnabled := true asValue.
+	beepEnabled onChangeSend:#updateModifiedChannel to:self
     ].
     ^ beepEnabled.
 !
 
 beepForErrorDialog
     beepForErrorDialog isNil ifTrue:[
-        beepForErrorDialog := currentUserPrefs beepForErrorDialog asValue.
-        beepForErrorDialog onChangeSend:#updateModifiedChannel to:self
+	beepForErrorDialog := currentUserPrefs beepForErrorDialog asValue.
+	beepForErrorDialog onChangeSend:#updateModifiedChannel to:self
     ].
     ^ beepForErrorDialog.
 !
 
 beepForInfoDialog
     beepForInfoDialog isNil ifTrue:[
-        beepForInfoDialog := currentUserPrefs beepForInfoDialog asValue.
-        beepForInfoDialog onChangeSend:#updateModifiedChannel to:self
+	beepForInfoDialog := currentUserPrefs beepForInfoDialog asValue.
+	beepForInfoDialog onChangeSend:#updateModifiedChannel to:self
     ].
     ^ beepForInfoDialog.
 !
 
 beepForWarningDialog
     beepForWarningDialog isNil ifTrue:[
-        beepForWarningDialog := currentUserPrefs beepForWarningDialog asValue.
-        beepForWarningDialog onChangeSend:#updateModifiedChannel to:self
+	beepForWarningDialog := currentUserPrefs beepForWarningDialog asValue.
+	beepForWarningDialog onChangeSend:#updateModifiedChannel to:self
     ].
     ^ beepForWarningDialog.
 !
 
 beepInEditor
     beepInEditor isNil ifTrue:[
-        beepInEditor := true asValue.
-        beepInEditor onChangeSend:#updateModifiedChannel to:self
+	beepInEditor := true asValue.
+	beepInEditor onChangeSend:#updateModifiedChannel to:self
     ].
     ^ beepInEditor.
 !
@@ -16481,8 +16743,8 @@
 changeFileName
 
     changeFileName isNil ifTrue:[
-        changeFileName := ObjectMemory nameForChanges asValue.
-        changeFileName onChangeSend:#updateModifiedChannel to:self
+	changeFileName := ObjectMemory nameForChanges asValue.
+	changeFileName onChangeSend:#updateModifiedChannel to:self
     ].
     ^ changeFileName.
 !
@@ -16490,8 +16752,8 @@
 classInfos
 
     classInfos isNil ifTrue:[
-        classInfos := Object infoPrinting asValue.
-        classInfos onChangeSend:#updateModifiedChannel to:self
+	classInfos := Object infoPrinting asValue.
+	classInfos onChangeSend:#updateModifiedChannel to:self
     ].
     ^ classInfos.
 !
@@ -16499,16 +16761,16 @@
 displayErrors
 
     displayErrors isNil ifTrue:[
-        displayErrors := DeviceWorkstation errorPrinting asValue.
-        displayErrors onChangeSend:#updateModifiedChannel to:self
+	displayErrors := DeviceWorkstation errorPrinting asValue.
+	displayErrors onChangeSend:#updateModifiedChannel to:self
     ].
     ^ displayErrors.
 !
 
 flyByHelpActive
     flyByHelp isNil ifTrue:[
-        flyByHelp := currentUserPrefs flyByHelpActive asValue.
-        flyByHelp onChangeSend:#updateModifiedChannel to:self
+	flyByHelp := currentUserPrefs flyByHelpActive asValue.
+	flyByHelp onChangeSend:#updateModifiedChannel to:self
     ].
     ^ flyByHelp.
 !
@@ -16516,16 +16778,16 @@
 logDoits
 
     logDoits isNil ifTrue:[
-        logDoits := Smalltalk logDoits asValue.
-        logDoits onChangeSend:#updateModifiedChannel to:self
+	logDoits := Smalltalk logDoits asValue.
+	logDoits onChangeSend:#updateModifiedChannel to:self
     ].
     ^ logDoits.
 !
 
 toolTipAutoHideDelay
     toolTipAutoHideDelay isNil ifTrue:[
-        toolTipAutoHideDelay := 10 seconds asValue.
-        toolTipAutoHideDelay onChangeSend:#updateModifiedChannel to:self
+	toolTipAutoHideDelay := 10 seconds asValue.
+	toolTipAutoHideDelay onChangeSend:#updateModifiedChannel to:self
     ].
     ^ toolTipAutoHideDelay.
 
@@ -16535,8 +16797,8 @@
 updChanges
 
     updChanges isNil ifTrue:[
-        updChanges := Class updatingChanges asValue.
-        updChanges onChangeSend:#updateModifiedChannel to:self
+	updChanges := Class updatingChanges asValue.
+	updChanges onChangeSend:#updateModifiedChannel to:self
     ].
     ^ updChanges.
 !
@@ -16544,8 +16806,8 @@
 vmErrors
 
     vmErrors isNil ifTrue:[
-        vmErrors := ObjectMemory debugPrinting asValue.
-        vmErrors onChangeSend:#updateModifiedChannel to:self
+	vmErrors := ObjectMemory debugPrinting asValue.
+	vmErrors onChangeSend:#updateModifiedChannel to:self
     ].
     ^ vmErrors.
 !
@@ -16553,18 +16815,20 @@
 vmInfo
 
     vmInfo isNil ifTrue:[
-        vmInfo := ObjectMemory infoPrinting asValue.
-        vmInfo onChangeSend:#updateModifiedChannel to:self
+	vmInfo := ObjectMemory infoPrinting asValue.
+	vmInfo onChangeSend:#updateModifiedChannel to:self
     ].
     ^ vmInfo.
 ! !
 
+
 !AbstractSettingsApplication::SystemMessageSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/messageSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::SystemMessageSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -16579,6 +16843,674 @@
     "Modified: / 10-11-2010 / 12:08:25 / cg"
 ! !
 
+
+!AbstractSettingsApplication::ToolboxSettingsAppl class methodsFor:'image specs'!
+
+defaultIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self defaultIcon inspect
+     ImageEditor openOnClass:self andSelector:#defaultIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+	constantNamed:'AbstractSettingsApplication::ToolboxSettingsAppl class defaultIcon'
+	ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@XFA (@@@@@@@@@@@@@@@@@@@@@@@@@@@DA@PDJA @@
+@@@@@@@@@@@@@@@@@@@@B DB@PDA@PX@@@@@@@@@@@@@@@@@@@@@@@DB@ HB@PX@@@@@@@@@@@@@A XFA XIB@ GA0XFA ,FA XF@@@@@@@FAPTEAPTEAPLC
+@0LC@0LC@0LCA @@@@@EAPTEAPTEAPLC@0LCA XC@0LC@0@@@@@EAPTEAPTEAPLC@0LC@PDH@0LC@0@@@@@FAPTEAPTEAPLC@0LC@PDG@0LCA @@@@@FAPTE
+APTEAPLC@0LC@PDH@0LCA @@@@@FAPTEAPTEAPLC@0LCA HC@0LCA @@@@@FAPTEAPTEAPLC@0LC@0LC@0LCA @@@@@FAPTEAPTEAPLC@0LC@0LC@0LCA @@
+@@@FAPTEAPTEAPLC@0LC@0LC@0LCA @@@@@FAPTEAPTEAPLC@0LC@0LC@0LCA @@@@@FAPTEAPTEAPLC@0LC@0LC@0XF@@@@@@@@A0TEAPTEAPLC@0LCB@XF
+@@@@@@@@@@@@@@@KA XI@0LGA ,@@@@@@@@@@@@@@@@@@@@@@@@@A@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[107 107 107 253 252 252 180 180 180 254 102 102 154 154 154 255 0 0 46 49 49 98 53 53 171 80 80 155 25 25 128 128 128 73 74 74]; mask:((Depth1Image new) width: 24; height: 24; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@C0@@C<@@G>@@G>@G??8O??<O??<O??<O??<O??<O??<O??<O??<O??<O??<O??8G??@A?0@@F@@@@@@@@@@@@@@') ; yourself); yourself]
+! !
+
+
+!AbstractSettingsApplication::ToolboxSettingsAppl class methodsFor:'interface specs'!
+
+developmentToolsSpec
+    "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:AbstractSettingsApplication::ToolboxSettingsAppl andSelector:#developmentToolsSpec
+     AbstractSettingsApplication::ToolboxSettingsAppl new openInterface:#developmentToolsSpec
+    "
+
+    <resource: #canvas>
+
+    ^
+     #(FullSpec
+	name: developmentToolsSpec
+	window:
+       (WindowSpec
+	  label: 'Development'
+	  name: 'Development'
+	  bounds: (Rectangle 0 0 674 614)
+	)
+	component:
+       (SpecCollection
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'DevToolsPanel'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      postBuildCallback: developmentToolSettingsInto:
+	    )
+	   )
+
+	)
+      )
+
+    "Modified: / 03-04-2012 / 10:51:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+miscToolsSpec
+    "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:AbstractSettingsApplication::ToolboxSettingsAppl andSelector:#developmentToolsSpec
+     AbstractSettingsApplication::ToolboxSettingsAppl new openInterface:#developmentToolsSpec
+    "
+
+    <resource: #canvas>
+
+    ^
+     #(FullSpec
+	name: miscToolsSpec
+	window:
+       (WindowSpec
+	  label: 'Other'
+	  name: 'Other'
+	  bounds: (Rectangle 0 0 674 614)
+	)
+	component:
+       (SpecCollection
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'DevToolsPanel'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      postBuildCallback: miscToolSettingsInto:
+	    )
+	   )
+
+	)
+      )
+
+    "Created: / 03-04-2012 / 10:51:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+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:AbstractSettingsApplication::ToolboxSettingsAppl andSelector:#windowSpec
+     AbstractSettingsApplication::ToolboxSettingsAppl new openInterface:#windowSpec
+     AbstractSettingsApplication::ToolboxSettingsAppl open
+    "
+
+    <resource: #canvas>
+
+    ^
+     #(FullSpec
+	name: windowSpec
+	window:
+       (WindowSpec
+	  label: 'Toolbox Settings'
+	  name: 'Toolbox Settings'
+	  bounds: (Rectangle 0 0 551 561)
+	)
+	component:
+       (SpecCollection
+	  collection: (
+	   (NoteBookViewSpec
+	      name: 'NoteBook'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      menu: notebookTabList
+	    )
+	   )
+
+	)
+      )
+! !
+
+
+!AbstractSettingsApplication::ToolboxSettingsAppl class methodsFor:'list specs'!
+
+notebookTabList
+    "This resource specification was automatically generated
+     by the TabListEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the TabListEditor may not be able to read the specification."
+
+    "
+     TabListEditor new openOnClass: self andSelector:#notebookTabList
+    "
+
+    <resource: #tabList>
+
+    ^     #(
+       (TabItem
+	  label: 'Development'
+	  minorKey: developmentToolsSpec
+	  createNewBuilder: false
+	)
+       (TabItem
+	  label: 'Miscelaneous'
+	  minorKey: miscToolsSpec
+	  createNewBuilder: false
+	)
+
+       )
+
+      collect:[:aTab| TabItem new fromLiteralArrayEncoding:aTab ]
+
+    "Modified: / 03-04-2012 / 10:52:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
+!AbstractSettingsApplication::ToolboxSettingsAppl methodsFor:'aspects'!
+
+aspects
+
+    ^#(
+	"Development"
+	changesBrowserClassName
+
+	"Misc"
+	fileBrowserClassName
+    )
+
+    "Created: / 14-02-2012 / 18:36:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changesBrowserClassName
+    <resource: #uiAspect>
+
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    changesBrowserClassName isNil ifTrue:[
+	changesBrowserClassName := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       changesBrowserClassName addDependent:self.
+      changesBrowserClassName onChangeSend:#updateModifiedChannel to:self.
+    ].
+    ^ changesBrowserClassName.
+
+    "Modified: / 14-02-2012 / 18:58:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileBrowserClassName
+    <resource: #uiAspect>
+
+    fileBrowserClassName isNil ifTrue:[
+	fileBrowserClassName := ValueHolder new.
+	fileBrowserClassName onChangeSend:#updateModifiedChannel to:self.
+    ].
+    ^ fileBrowserClassName.
+
+    "Modified: / 14-02-2012 / 18:58:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 03-04-2012 / 10:54:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+notebookTabList
+    "Generated by the TabListEditor"
+
+    |list|
+
+    (list := builder bindingAt:#notebookTabList) isNil ifTrue:[
+	builder aspectAt:#notebookTabList put:(list := self class notebookTabList).
+    ].
+    ^ list
+! !
+
+
+!AbstractSettingsApplication::ToolboxSettingsAppl methodsFor:'hooks'!
+
+developmentToolSettingsInto:panel
+
+    (self addClassToolSettingTo: panel)
+	label: 'Changes Browser';
+	classes:#(  #ChangesBrowser
+		    #NewChangesBrowser
+		    #Tools::ChangeSetBrowser2 );
+	labels: #(  'ChangesBrowser - default'
+		    'NewChangesBrowser - experimental, not maintained'
+		    'Tools::ChangeSetBrowser2 - experimental' );
+	model: self changesBrowserClassName
+
+    "Created: / 14-02-2012 / 16:20:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+miscToolSettingsInto:panel
+
+    (self addClassToolSettingTo: panel)
+	label: 'File Browser';
+	classes:#(  #FileBrowser
+		    #FileBrowserV2
+		    #FileBrowserV3 );
+	labels: #(  'FileBrowser'
+		    'FileBrowserV2 - default'
+		    'FileBrowserV3 - experimental' );
+	model: self fileBrowserClassName
+
+    "Created: / 03-04-2012 / 10:54:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
+!AbstractSettingsApplication::ToolboxSettingsAppl methodsFor:'private'!
+
+addClassToolSettingTo: panel
+
+    | model setting canvas |
+    canvas := ApplicationSubView new.
+    setting := ClassToolSetting new.
+    setting createBuilder.
+    setting model: model.
+    setting window: canvas.
+    canvas client: setting.
+    canvas height: 30.
+    panel addSubView: canvas.
+    ^setting
+
+    "Created: / 14-02-2012 / 18:56:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
+!AbstractSettingsApplication::ToolboxSettingsAppl methodsFor:'protocol'!
+
+basicReadSettings
+    "superclass AbstractSettingsApplication says that I am responsible to implement this method"
+
+    self readAspects: self aspects from: currentUserPrefs.
+
+    "Modified: / 14-02-2012 / 18:37:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+basicSaveSettings
+    "superclass AbstractSettingsApplication says that I am responsible to implement this method"
+
+    self writeAspects: self aspects to: currentUserPrefs
+
+    "Modified: / 14-02-2012 / 18:38:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+helpFilename
+    "subclasses must return the relative name of a helpFile
+     in the doc/online/<language>/help directory.
+     Or nil, if no help is available."
+
+    ^ self shouldImplement
+! !
+
+
+!AbstractSettingsApplication::ToolboxSettingsAppl methodsFor:'queries'!
+
+hasUnsavedChanges
+    "superclass AbstractSettingsApplication says that I am responsible to implement this method"
+
+    ^self hasChangedAspectIn: self aspects asComparedTo:currentUserPrefs
+
+    "Modified: / 14-02-2012 / 18:38:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
+!AbstractSettingsApplication::ToolboxSettingsAppl::ClassToolSetting 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:AbstractSettingsApplication::ToolboxSettingsAppl::ClassToolSetting andSelector:#windowSpec
+     AbstractSettingsApplication::ToolboxSettingsAppl::ClassToolSetting new openInterface:#windowSpec
+     AbstractSettingsApplication::ToolboxSettingsAppl::ClassToolSetting open
+    "
+
+    <resource: #canvas>
+
+    ^
+     #(FullSpec
+	name: windowSpec
+	window:
+       (WindowSpec
+	  label: 'ToolSetting'
+	  name: 'ToolSetting'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 431 60)
+	)
+	component:
+       (SpecCollection
+	  collection: (
+	   (LabelSpec
+	      label: 'Tool...'
+	      name: 'Label'
+	      layout: (LayoutFrame 0 0 0 0 150 0 30 0)
+	      translateLabel: true
+	      labelChannel: optionLabelHolder
+	      adjust: left
+	    )
+	   (PopUpListSpec
+	      label: 'Please select...'
+	      name: 'OptionList'
+	      layout: (LayoutFrame 150 0 3 0 0 1 27 0)
+	      model: optionSelectionHolder
+	      menu: optionLabelList
+	      useIndex: true
+	    )
+	   (InputFieldSpec
+	      name: 'EntryField1'
+	      layout: (LayoutFrame 150 0 33 0 0 1 56 0)
+	      visibilityChannel: optionCustomValueVisibleHolder
+	      backgroundChannel: optionCustomValueBackgroundHolder
+	      model: optionCustomValueHolder
+	      type: string
+	      immediateAccept: true
+	      acceptOnReturn: true
+	      acceptOnTab: true
+	      acceptOnPointerLeave: true
+	    )
+	   )
+
+	)
+      )
+! !
+
+
+!AbstractSettingsApplication::ToolboxSettingsAppl::ClassToolSetting methodsFor:'accessing'!
+
+classes: aCollection
+
+    optionValueList := aCollection.
+
+    "Created: / 14-02-2012 / 18:20:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+label: aString
+
+    self optionLabelHolder value: aString
+
+    "Created: / 14-02-2012 / 18:22:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+labels: aCollection
+
+    | labels |
+    labels := aCollection asOrderedCollection.
+    labels add: (self class resources at: 'Custom class') asText allItalic.
+    self optionLabelList value: labels.
+
+    "Created: / 14-02-2012 / 18:21:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+model: aValueHolder
+
+    self optionValueHolder: aValueHolder
+
+    "Created: / 14-02-2012 / 18:22:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
+!AbstractSettingsApplication::ToolboxSettingsAppl::ClassToolSetting methodsFor:'aspects'!
+
+optionCustomValueBackgroundHolder
+    <resource: #uiAspect>
+
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    optionCustomValueBackgroundHolder isNil ifTrue:[
+	optionCustomValueBackgroundHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       optionCustomValueBackgroundHolder addDependent:self.
+"/       optionCustomValueBackgroundHolder onChangeSend:#optionCustomValueBackgroundHolderChanged to:self.
+    ].
+    ^ optionCustomValueBackgroundHolder.
+!
+
+optionCustomValueBackgroundHolder:something
+    "set the 'optionCustomValueBackgroundHolder' value holder (automatically generated)"
+
+    optionCustomValueBackgroundHolder := something.
+!
+
+optionCustomValueHolder
+    <resource: #uiAspect>
+
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    optionCustomValueHolder isNil ifTrue:[
+	optionCustomValueHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+       optionCustomValueHolder addDependent:self.
+"/       optionCustomValueHolder onChangeSend:#optionCustomValueHolderChanged to:self.
+    ].
+    ^ optionCustomValueHolder.
+
+    "Modified: / 14-02-2012 / 18:18:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+optionCustomValueVisibleHolder
+    <resource: #uiAspect>
+
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    optionCustomValueVisibleHolder isNil ifTrue:[
+	optionCustomValueVisibleHolder := false asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+       optionCustomValueVisibleHolder addDependent:self.
+"/       optionCustomValueVisibleHolder onChangeSend:#optionCustomValueVisibleHolderChanged to:self.
+    ].
+    ^ optionCustomValueVisibleHolder.
+
+    "Modified: / 14-02-2012 / 18:27:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+optionLabelHolder
+    <resource: #uiAspect>
+
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    optionLabelHolder isNil ifTrue:[
+	optionLabelHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       optionLabelHolder addDependent:self.
+"/       optionLabelHolder onChangeSend:#optionLabelHolderChanged to:self.
+    ].
+    ^ optionLabelHolder.
+!
+
+optionLabelList
+    <resource: #uiAspect>
+
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    optionLabelList isNil ifTrue:[
+	optionLabelList := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       optionLabelList addDependent:self.
+"/       optionLabelList onChangeSend:#optionLabelListChanged to:self.
+    ].
+    ^ optionLabelList.
+!
+
+optionLabelList:something
+    "set the 'optionLabelList' value holder (automatically generated)"
+
+    optionLabelList := something.
+!
+
+optionSelectionHolder
+    <resource: #uiAspect>
+
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    optionSelectionHolder isNil ifTrue:[
+	optionSelectionHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+       optionSelectionHolder addDependent:self.
+"/       optionSelectionHolder onChangeSend:#optionSelectionHolderChanged to:self.
+    ].
+    ^ optionSelectionHolder.
+
+    "Modified: / 14-02-2012 / 18:26:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+optionSelectionHolder:something
+    "set the 'optionSelectionHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    optionSelectionHolder notNil ifTrue:[
+	oldValue := optionSelectionHolder value.
+	optionSelectionHolder removeDependent:self.
+    ].
+    optionSelectionHolder := something.
+    optionSelectionHolder notNil ifTrue:[
+	optionSelectionHolder addDependent:self.
+    ].
+    newValue := optionSelectionHolder value.
+    oldValue ~~ newValue ifTrue:[
+	self update:#value with:newValue from:optionSelectionHolder.
+    ].
+!
+
+optionValueHolder
+    "return/create the 'optionValueHolder' value holder (automatically generated)"
+
+    optionValueHolder isNil ifTrue:[
+	optionValueHolder := ValueHolder new.
+	optionValueHolder addDependent:self.
+    ].
+    ^ optionValueHolder
+!
+
+optionValueHolder:something
+    "set the 'optionValueHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    optionValueHolder notNil ifTrue:[
+	oldValue := optionValueHolder value.
+	optionValueHolder removeDependent:self.
+    ].
+    optionValueHolder := something.
+    optionValueHolder notNil ifTrue:[
+	optionValueHolder addDependent:self.
+    ].
+    newValue := optionValueHolder value.
+    oldValue ~~ newValue ifTrue:[
+	self update:#value with:newValue from:optionValueHolder.
+    ].
+! !
+
+
+!AbstractSettingsApplication::ToolboxSettingsAppl::ClassToolSetting methodsFor:'change & update'!
+
+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 == optionSelectionHolder ifTrue:[
+	| idx |
+
+	idx := self optionSelectionHolder value.
+	self optionCustomValueVisibleHolder value: (idx == optionLabelList value size).
+	idx <= optionValueList size ifTrue:[
+	    self optionValueHolder value: (optionValueList at: idx)
+	].
+	 ^ self.
+    ].
+    changedObject == optionCustomValueVisibleHolder ifTrue:[
+	self window notNil ifTrue:[
+	    optionCustomValueVisibleHolder value ifTrue:[
+		self window height: 60
+	    ] ifFalse:[
+		self window height: 30
+	    ]
+	]
+    ].
+
+    changedObject == optionValueHolder ifTrue:[
+	| idx |
+
+	self optionSelectionHolder value: ((optionValueList ? #()) indexOf: optionValueHolder value ifAbsent:[optionLabelList value size]).
+	self optionCustomValueHolder value: optionValueHolder value.
+
+    ].
+
+
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 14-02-2012 / 19:01:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
 !AbstractSettingsApplication::ToolsSettingsAppl class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -16589,7 +17521,7 @@
      the UIHelpTool may not be able to read the specification."
 
     "
-     UIHelpTool openOnClass:AbstractSettingsApplication::ToolsSettingsAppl    
+     UIHelpTool openOnClass:AbstractSettingsApplication::ToolsSettingsAppl
     "
 
     <resource: #help>
@@ -16627,6 +17559,7 @@
     "Modified: / 09-08-2012 / 09:34:41 / cg"
 ! !
 
+
 !AbstractSettingsApplication::ToolsSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -16645,13 +17578,14 @@
     <resource: #image>
 
     ^Icon
-        constantNamed:#'AbstractSettingsApplication::ToolsSettingsAppl class defaultIcon'
-        ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+	constantNamed:#'AbstractSettingsApplication::ToolsSettingsAppl class defaultIcon'
+	ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
 ******************************@@@@@@@@@@@@@J(@@@@@@@@@@@@@* @@@F(QD@@@@@B*@@@@B((QD@@@@J(@@@@@@JLQ@@@@* @B$@@@)CD@@@B*@@
 IC$J*SPP@@@J(@BH@4MCQADP@@* AR"HACQAFQD@B*@@H""H"HEG$Q@J(@@@H"H("HP9$@* @@@@@"H""HI@B*@@@@@@@@H""H@J(@@@@@@@@@H" @* @@@@
 @@@@@@H0B*@@@@@@@@@@@@@J(@@@@@@@@@@@@@* @@@@@@@@@@@@B*****************************(b') ; colorMapFromArray:#[0 0 0 160 160 160 240 240 240 224 224 224 48 48 48 128 128 128 208 208 208 112 112 112 192 192 192 96 96 96 176 176 176]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@?@@@?0@@_8@GO<@G3<@G?>@G??@G?? G?? C?? @?? @G? @@_ @@G @@A @@@@@@@@@@@@@@@@') ; yourself); yourself]
 ! !
 
+
 !AbstractSettingsApplication::ToolsSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -16669,29 +17603,29 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Tool Settings'
-          name: 'Tool Settings'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 607 786)
-        )
-        component: 
+	  label: 'Tool Settings'
+	  name: 'Tool Settings'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 607 786)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VerticalPanelViewSpec
-              name: 'VerticalPanel1'
-              layout: (LayoutFrame 0 0.0 0 0 0 1.0 451 0)
-              horizontalLayout: fit
-              verticalLayout: top
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
+	  collection: (
+	   (VerticalPanelViewSpec
+	      name: 'VerticalPanel1'
+	      layout: (LayoutFrame 0 0.0 0 0 0 1.0 451 0)
+	      horizontalLayout: fit
+	      verticalLayout: top
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
 "/                             (CheckBoxSpec
 "/                                label: 'Use the new Code Editor 2 (experimental)'
 "/                                name: 'UserCodeView2'
@@ -16699,221 +17633,222 @@
 "/                                translateLabel: true
 "/                                extent: (Point 607 25)
 "/                              )
-                 (CheckBoxSpec
-                    label: 'Use the New System Browser'
-                    name: 'NewSystemBrowser'
-                    activeHelpKey: useNewSystemBrowser
-                    visibilityChannel: false
-                    model: useNewSystemBrowser
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Use the New File Browser'
-                    name: 'NewFileBrowser'
-                    activeHelpKey: useNewFileBrowser
-                    visibilityChannel: false
-                    model: useNewFileBrowser
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Use the New VersionDiff Browser'
-                    name: 'VersionDiffBrowser'
-                    model: useNewVersionDiffBrowser
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Use the New FileTree File Dialog'
-                    name: 'UseNewFileDialogCheckBox'
-                    model: useNewFileDialog
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Use the New Settings Dialog'
-                    name: 'UseNewSettinsApplicationCheckBox'
-                    visibilityChannel: false
-                    model: useNewSettingsApplication
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Use the New Process Monitor'
-                    name: 'UseNewProcessMonitor'
-                    model: useProcessMonitorV2
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Use the New TestRunner2'
-                    name: 'CheckBox3'
-                    model: useTestRunner2
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Use the New Changes Browser for Changefiles (not yet recommended)'
-                    name: 'ChangesBrowser'
-                    model: useNewChangesBrowser
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Use the New ChangeSet Browser for Internal ChangeSets'
-                    name: 'CheckBox5'
-                    model: useNewChangeSetBrowser
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Use Hierarchical Inspector (not yet recommended)'
-                    name: 'HierarchicalInspector'
-                    activeHelpKey: useHierarchicalInspector
-                    model: useNewInspector
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Use the Smalltalk Document Viewer'
-                    name: 'UseSmalltalkDocumentViewer'
-                    activeHelpKey: useSmalltalkDocumentView
-                    model: useSmalltalkDocumentViewer
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (ViewSpec
-                    name: 'Box2'
-                    extent: (Point 607 20)
-                  )
-                 (CheckBoxSpec
-                    label: 'Show "Tip Of The Day" at Startup'
-                    name: 'CheckBox1'
-                    activeHelpKey: showDidYouKnowTips
-                    model: showTipOfTheDayAtStartup
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (CheckBoxSpec
-                    label: 'Show Clock in Launcher'
-                    name: 'Clock'
-                    activeHelpKey: showClockInLauncher
-                    model: showClockInLauncher
-                    translateLabel: true
-                    extent: (Point 607 25)
-                  )
-                 (ViewSpec
-                    name: 'Box3'
-                    extent: (Point 607 19)
-                  )
-                 (HorizontalPanelViewSpec
-                    name: 'HorizontalPanel1'
-                    horizontalLayout: left
-                    verticalLayout: center
-                    horizontalSpace: 3
-                    verticalSpace: 3
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ViewSpec
-                          name: 'Box4'
-                          extent: (Point 20 10)
-                        )
-                       (LabelSpec
-                          label: 'Transcript''s Buffer Size:'
-                          name: 'Label1'
-                          activeHelpKey: transcriptBufferSize
-                          translateLabel: true
-                          resizeForLabel: true
-                          adjust: right
-                          useDefaultExtent: true
-                        )
-                       (InputFieldSpec
-                          name: 'Transcripts Buffer Size'
-                          activeHelpKey: transcriptBufferSize
-                          model: transcriptBufferSize
-                          type: number
-                          immediateAccept: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          numChars: 8
-                          acceptOnPointerLeave: true
-                          extent: (Point 78 22)
-                        )
-                       (LabelSpec
-                          label: '(Lines)'
-                          name: 'Label2'
-                          activeHelpKey: transcriptBufferSize
-                          translateLabel: true
-                          resizeForLabel: true
-                          adjust: right
-                          useDefaultExtent: true
-                        )
-                       )
-                     
-                    )
-                    extent: (Point 607 35)
-                  )
-                 (CheckBoxSpec
-                    label: 'Autoraise Transcript'
-                    name: 'CheckBox2'
-                    activeHelpKey: autoRaiseTranscript
-                    model: autoRaiseTranscript
-                    translateLabel: true
-                    extent: (Point 607 24)
-                  )
-                 (CheckBoxSpec
-                    label: 'Eclipse Style Menus (where implemented)'
-                    name: 'CheckBox4'
-                    activeHelpKey: eclipseStyleMenus
-                    model: eclipseStyleMenus
-                    translateLabel: true
-                    extent: (Point 607 24)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+		 (CheckBoxSpec
+		    label: 'Use the New System Browser'
+		    name: 'NewSystemBrowser'
+		    activeHelpKey: useNewSystemBrowser
+		    visibilityChannel: false
+		    model: useNewSystemBrowser
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Use the New File Browser'
+		    name: 'NewFileBrowser'
+		    activeHelpKey: useNewFileBrowser
+		    visibilityChannel: false
+		    model: useNewFileBrowser
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Use the New VersionDiff Browser'
+		    name: 'VersionDiffBrowser'
+		    model: useNewVersionDiffBrowser
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Use the New FileTree File Dialog'
+		    name: 'UseNewFileDialogCheckBox'
+		    model: useNewFileDialog
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Use the New Settings Dialog'
+		    name: 'UseNewSettinsApplicationCheckBox'
+		    visibilityChannel: false
+		    model: useNewSettingsApplication
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Use the New Process Monitor'
+		    name: 'UseNewProcessMonitor'
+		    model: useProcessMonitorV2
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Use the New TestRunner2'
+		    name: 'CheckBox3'
+		    model: useTestRunner2
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Use the New Changes Browser for Changefiles (not yet recommended)'
+		    name: 'ChangesBrowser'
+		    model: useNewChangesBrowser
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Use the New ChangeSet Browser for Internal ChangeSets'
+		    name: 'CheckBox5'
+		    model: useNewChangeSetBrowser
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Use Hierarchical Inspector (not yet recommended)'
+		    name: 'HierarchicalInspector'
+		    activeHelpKey: useHierarchicalInspector
+		    model: useNewInspector
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Use the Smalltalk Document Viewer'
+		    name: 'UseSmalltalkDocumentViewer'
+		    activeHelpKey: useSmalltalkDocumentView
+		    model: useSmalltalkDocumentViewer
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (ViewSpec
+		    name: 'Box2'
+		    extent: (Point 607 20)
+		  )
+		 (CheckBoxSpec
+		    label: 'Show "Tip Of The Day" at Startup'
+		    name: 'CheckBox1'
+		    activeHelpKey: showDidYouKnowTips
+		    model: showTipOfTheDayAtStartup
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (CheckBoxSpec
+		    label: 'Show Clock in Launcher'
+		    name: 'Clock'
+		    activeHelpKey: showClockInLauncher
+		    model: showClockInLauncher
+		    translateLabel: true
+		    extent: (Point 607 25)
+		  )
+		 (ViewSpec
+		    name: 'Box3'
+		    extent: (Point 607 19)
+		  )
+		 (HorizontalPanelViewSpec
+		    name: 'HorizontalPanel1'
+		    horizontalLayout: left
+		    verticalLayout: center
+		    horizontalSpace: 3
+		    verticalSpace: 3
+		    component:
+		   (SpecCollection
+		      collection: (
+		       (ViewSpec
+			  name: 'Box4'
+			  extent: (Point 20 10)
+			)
+		       (LabelSpec
+			  label: 'Transcript''s Buffer Size:'
+			  name: 'Label1'
+			  activeHelpKey: transcriptBufferSize
+			  translateLabel: true
+			  resizeForLabel: true
+			  adjust: right
+			  useDefaultExtent: true
+			)
+		       (InputFieldSpec
+			  name: 'Transcripts Buffer Size'
+			  activeHelpKey: transcriptBufferSize
+			  model: transcriptBufferSize
+			  type: number
+			  immediateAccept: true
+			  acceptOnReturn: true
+			  acceptOnTab: true
+			  acceptOnLostFocus: true
+			  numChars: 8
+			  acceptOnPointerLeave: true
+			  extent: (Point 78 22)
+			)
+		       (LabelSpec
+			  label: '(Lines)'
+			  name: 'Label2'
+			  activeHelpKey: transcriptBufferSize
+			  translateLabel: true
+			  resizeForLabel: true
+			  adjust: right
+			  useDefaultExtent: true
+			)
+		       )
+
+		    )
+		    extent: (Point 607 35)
+		  )
+		 (CheckBoxSpec
+		    label: 'Autoraise Transcript'
+		    name: 'CheckBox2'
+		    activeHelpKey: autoRaiseTranscript
+		    model: autoRaiseTranscript
+		    translateLabel: true
+		    extent: (Point 607 24)
+		  )
+		 (CheckBoxSpec
+		    label: 'Eclipse Style Menus (where implemented)'
+		    name: 'CheckBox4'
+		    activeHelpKey: eclipseStyleMenus
+		    model: eclipseStyleMenus
+		    translateLabel: true
+		    extent: (Point 607 24)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !AbstractSettingsApplication::ToolsSettingsAppl methodsFor:'actions'!
 
 aspects
-    ^ #( 
-        #eclipseStyleMenus
-        #useTestRunner2
-        "/ #useCodeView2InTools
-        #useNewInspector
-        #useNewChangesBrowser
-        #useNewChangeSetBrowser
-        "/ #useNewSystemBrowser     -- no longer an option
-        #useNewVersionDiffBrowser
-        "/ #useNewFileBrowser       -- no longer an option
-        #useNewFileDialog
-        "/ #useNewSettingsApplication   -- no longer an option
-        #useProcessMonitorV2
-        #useSmalltalkDocumentViewer
-        #showClockInLauncher
-        #showTipOfTheDayAtStartup 
+    ^ #(
+	#eclipseStyleMenus
+	#useTestRunner2
+	"/ #useCodeView2InTools
+	#useNewInspector
+	#useNewChangesBrowser
+	#useNewChangeSetBrowser
+	"/ #useNewSystemBrowser     -- no longer an option
+	#useNewVersionDiffBrowser
+	"/ #useNewFileBrowser       -- no longer an option
+	#useNewFileDialog
+	"/ #useNewSettingsApplication   -- no longer an option
+	#useProcessMonitorV2
+	#useSmalltalkDocumentViewer
+	#showClockInLauncher
+	#showTipOfTheDayAtStartup
     )
 
     "Created: / 27-07-2012 / 20:48:18 / cg"
 !
 
 basicReadSettings
-    self 
-        readAspects: (self aspects)
-        from:currentUserPrefs.
+    self
+	readAspects: (self aspects)
+	from:currentUserPrefs.
 
     Transcript current isExternalStream ifFalse:[
-        self transcriptBufferSize value:Transcript current lineLimit.
-        self autoRaiseTranscript value:Transcript current autoRaise.
+	self transcriptBufferSize value:Transcript current lineLimit.
+	self autoRaiseTranscript value:Transcript current autoRaise.
     ].
 
     "Modified (format): / 27-07-2012 / 20:51:39 / cg"
@@ -16926,71 +17861,72 @@
 
     newSystemBrowserClass := Tools::NewSystemBrowser ? NewSystemBrowser.
 
-    self 
-        writeAspects:(self aspects)
-        to:currentUserPrefs.
+    self
+	writeAspects:(self aspects)
+	to:currentUserPrefs.
 
     currentUserPrefs useNewSettingsApplication ~= self useNewSettingsApplication value ifTrue:[
-        currentUserPrefs useNewSettingsApplication:self useNewSettingsApplication value.
+	currentUserPrefs useNewSettingsApplication:self useNewSettingsApplication value.
     ].
 
     currentUserPrefs useNewSystemBrowser ~= self useNewSystemBrowser value ifTrue:[
-        currentUserPrefs useNewSystemBrowser:self useNewSystemBrowser value.
-            (self useNewSystemBrowser value and:[newSystemBrowserClass isLoaded]) ifTrue:[
-                newSystemBrowserClass installInLauncher.
-            ] ifFalse:[
-                newSystemBrowserClass removeFromLauncher.
-            ].
-            reopenLauncher := true.
+	currentUserPrefs useNewSystemBrowser:self useNewSystemBrowser value.
+	    (self useNewSystemBrowser value and:[newSystemBrowserClass isLoaded]) ifTrue:[
+		newSystemBrowserClass installInLauncher.
+	    ] ifFalse:[
+		newSystemBrowserClass removeFromLauncher.
+	    ].
+	    reopenLauncher := true.
     ].
 
     (Smalltalk at:#FileBrowserV2) isBehavior ifTrue:[
-        currentUserPrefs useNewFileBrowser ~= self useNewFileBrowser value ifTrue:[
-            currentUserPrefs useNewFileBrowser:self useNewFileBrowser value.
-            (self useNewFileBrowser value and:[FileBrowserV2 isLoaded]) ifTrue:[
-                FileBrowserV2 installInLauncher.
-            ] ifFalse:[
-                FileBrowserV2 removeFromLauncher.
-            ].
-            reopenLauncher := true.
-        ]
+	currentUserPrefs useNewFileBrowser ~= self useNewFileBrowser value ifTrue:[
+	    currentUserPrefs useNewFileBrowser:self useNewFileBrowser value.
+	    (self useNewFileBrowser value and:[FileBrowserV2 isLoaded]) ifTrue:[
+		FileBrowserV2 installInLauncher.
+	    ] ifFalse:[
+		FileBrowserV2 removeFromLauncher.
+	    ].
+	    reopenLauncher := true.
+	]
     ].
 
     transcript := Transcript current.
     (transcript notNil and:[transcript isExternalStream not]) ifTrue:[
-        transcript lineLimit:self transcriptBufferSize value.
-        transcript autoRaise:self autoRaiseTranscript value.
-        launcher := transcript application.
+	transcript lineLimit:self transcriptBufferSize value.
+	transcript autoRaise:self autoRaiseTranscript value.
+	launcher := transcript application.
     ].
 
     showClock := self showClockInLauncher value.
     currentUserPrefs showClockInLauncher ~= showClock ifTrue:[
-        currentUserPrefs showClockInLauncher:showClock.
-        launcher notNil ifTrue:[
-            showClock ifTrue:[
-                launcher startClock
-            ] ifFalse:[
-                launcher stopClock
-            ]
-        ]
+	currentUserPrefs showClockInLauncher:showClock.
+	launcher notNil ifTrue:[
+	    showClock ifTrue:[
+		launcher startClock
+	    ] ifFalse:[
+		launcher stopClock
+	    ]
+	]
     ].
     Inspector := currentUserPrefs inspectorClassSetting.
 
     reopenLauncher ifTrue:[
-        launcher notNil ifTrue:[
-            launcher reopenLauncher.
-        ]
+	launcher notNil ifTrue:[
+	    launcher reopenLauncher.
+	]
     ].
 
     "Modified: / 27-07-2012 / 20:51:46 / cg"
 ! !
 
+
 !AbstractSettingsApplication::ToolsSettingsAppl methodsFor:'aspects'!
 
 autoRaiseTranscript
     autoRaiseTranscript isNil ifTrue:[
-        autoRaiseTranscript := false asValue.
-        autoRaiseTranscript onChangeSend:#updateModifiedChannel to:self
+	autoRaiseTranscript := false asValue.
+	autoRaiseTranscript onChangeSend:#updateModifiedChannel to:self
     ].
     ^ autoRaiseTranscript.
 
@@ -16999,8 +17935,8 @@
 
 eclipseStyleMenus
     eclipseStyleMenus isNil ifTrue:[
-        eclipseStyleMenus := false asValue.
-        eclipseStyleMenus onChangeSend:#updateModifiedChannel to:self
+	eclipseStyleMenus := false asValue.
+	eclipseStyleMenus onChangeSend:#updateModifiedChannel to:self
     ].
     ^ eclipseStyleMenus.
 
@@ -17010,8 +17946,8 @@
 
 showClockInLauncher
     showClockInLauncher isNil ifTrue:[
-        showClockInLauncher := false asValue.
-        showClockInLauncher onChangeSend:#updateModifiedChannel to:self
+	showClockInLauncher := false asValue.
+	showClockInLauncher onChangeSend:#updateModifiedChannel to:self
     ].
     ^ showClockInLauncher.
 
@@ -17020,8 +17956,8 @@
 
 showTipOfTheDayAtStartup
     showTipOfTheDayAtStartup isNil ifTrue:[
-        showTipOfTheDayAtStartup := false asValue.
-        showTipOfTheDayAtStartup onChangeSend:#updateModifiedChannel to:self
+	showTipOfTheDayAtStartup := false asValue.
+	showTipOfTheDayAtStartup onChangeSend:#updateModifiedChannel to:self
     ].
     ^ showTipOfTheDayAtStartup.
 
@@ -17030,16 +17966,16 @@
 
 transcriptBufferSize
     transcriptBufferSize isNil ifTrue:[
-        transcriptBufferSize := 600 asValue. "/ Transcript current lineLimit asValue.
-        transcriptBufferSize onChangeSend:#updateModifiedChannel to:self
+	transcriptBufferSize := 600 asValue. "/ Transcript current lineLimit asValue.
+	transcriptBufferSize onChangeSend:#updateModifiedChannel to:self
     ].
     ^ transcriptBufferSize.
 !
 
 useCodeView2InTools
     useCodeView2InTools isNil ifTrue:[
-        useCodeView2InTools := ValueHolder new.
-        useCodeView2InTools onChangeSend:#updateModifiedChannel to:self
+	useCodeView2InTools := ValueHolder new.
+	useCodeView2InTools onChangeSend:#updateModifiedChannel to:self
 
     ].
     ^ useCodeView2InTools
@@ -17049,8 +17985,8 @@
 
 useNewChangeSetBrowser
     useNewChangeSetBrowser isNil ifTrue:[
-        useNewChangeSetBrowser := false asValue.
-        useNewChangeSetBrowser onChangeSend:#updateModifiedChannel to:self
+	useNewChangeSetBrowser := false asValue.
+	useNewChangeSetBrowser onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useNewChangeSetBrowser.
 
@@ -17060,8 +17996,8 @@
 
 useNewChangesBrowser
     useNewChangesBrowser isNil ifTrue:[
-        useNewChangesBrowser := false asValue.
-        useNewChangesBrowser onChangeSend:#updateModifiedChannel to:self
+	useNewChangesBrowser := false asValue.
+	useNewChangesBrowser onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useNewChangesBrowser.
 
@@ -17070,8 +18006,8 @@
 
 useNewFileBrowser
     useNewFileBrowser isNil ifTrue:[
-        useNewFileBrowser := true asValue.
-        useNewFileBrowser onChangeSend:#updateModifiedChannel to:self
+	useNewFileBrowser := true asValue.
+	useNewFileBrowser onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useNewFileBrowser.
 
@@ -17080,16 +18016,16 @@
 
 useNewFileDialog
     useNewFileDialog isNil ifTrue:[
-        useNewFileDialog := true asValue.
-        useNewFileDialog onChangeSend:#updateModifiedChannel to:self
+	useNewFileDialog := true asValue.
+	useNewFileDialog onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useNewFileDialog.
 !
 
 useNewInspector
     useNewInspector isNil ifTrue:[
-        useNewInspector := false asValue.
-        useNewInspector onChangeSend:#updateModifiedChannel to:self
+	useNewInspector := false asValue.
+	useNewInspector onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useNewInspector.
 
@@ -17098,16 +18034,16 @@
 
 useNewSettingsApplication
     useNewSettingsApplication isNil ifTrue:[
-        useNewSettingsApplication := true asValue.
-        useNewSettingsApplication onChangeSend:#updateModifiedChannel to:self
+	useNewSettingsApplication := true asValue.
+	useNewSettingsApplication onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useNewSettingsApplication.
 !
 
 useNewSystemBrowser
     useNewSystemBrowser isNil ifTrue:[
-        useNewSystemBrowser := true asValue.
-        useNewSystemBrowser onChangeSend:#updateModifiedChannel to:self
+	useNewSystemBrowser := true asValue.
+	useNewSystemBrowser onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useNewSystemBrowser.
 
@@ -17116,8 +18052,8 @@
 
 useNewVersionDiffBrowser
     useNewVersionDiffBrowser isNil ifTrue:[
-        useNewVersionDiffBrowser := true asValue.
-        useNewVersionDiffBrowser onChangeSend:#updateModifiedChannel to:self
+	useNewVersionDiffBrowser := true asValue.
+	useNewVersionDiffBrowser onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useNewVersionDiffBrowser.
 
@@ -17126,8 +18062,8 @@
 
 useProcessMonitorV2
     useProcessMonitorV2 isNil ifTrue:[
-        useProcessMonitorV2 := true asValue.
-        useProcessMonitorV2 onChangeSend:#updateModifiedChannel to:self
+	useProcessMonitorV2 := true asValue.
+	useProcessMonitorV2 onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useProcessMonitorV2.
 
@@ -17136,8 +18072,8 @@
 
 useSmalltalkDocumentViewer
     useSmalltalkDocumentViewer isNil ifTrue:[
-        useSmalltalkDocumentViewer := nil asValue.
-        useSmalltalkDocumentViewer onChangeSend:#updateModifiedChannel to:self
+	useSmalltalkDocumentViewer := nil asValue.
+	useSmalltalkDocumentViewer onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useSmalltalkDocumentViewer.
 
@@ -17146,8 +18082,8 @@
 
 useTestRunner2
     useTestRunner2 isNil ifTrue:[
-        useTestRunner2 := true asValue.
-        useTestRunner2 onChangeSend:#updateModifiedChannel to:self
+	useTestRunner2 := true asValue.
+	useTestRunner2 onChangeSend:#updateModifiedChannel to:self
     ].
     ^ useTestRunner2.
 
@@ -17155,28 +18091,31 @@
     "Created: / 06-07-2011 / 13:52:33 / cg"
 ! !
 
+
 !AbstractSettingsApplication::ToolsSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/toolSettings.html'
 ! !
 
+
 !AbstractSettingsApplication::ToolsSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
     (self
-        hasChangedAspectIn:(self aspects)
-        asComparedTo:currentUserPrefs) ifTrue:[^ true].
+	hasChangedAspectIn:(self aspects)
+	asComparedTo:currentUserPrefs) ifTrue:[^ true].
 
     Transcript current isExternalStream ifFalse:[
-        (self transcriptBufferSize value  ~= Transcript current lineLimit) ifTrue:[^ true].
-        (self autoRaiseTranscript value  ~= Transcript current autoRaise) ifTrue:[^ true].
+	(self transcriptBufferSize value  ~= Transcript current lineLimit) ifTrue:[^ true].
+	(self autoRaiseTranscript value  ~= Transcript current autoRaise) ifTrue:[^ true].
     ].
     ^ false.
 
     "Modified: / 27-07-2012 / 20:51:56 / cg"
 ! !
 
+
 !AbstractSettingsApplication class methodsFor:'documentation'!
 
 version
@@ -17185,5 +18124,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/AbstractSettingsApplication.st,v 1.451 2013-01-07 15:44:36 stefan Exp $'
-! !
-
+!
+
+version_SVN
+    ^ '$Id: AbstractSettingsApplication.st 8074 2012-11-30 17:23:39Z vranyj1 $'
+! !
+
--- a/AbstractSourceCodeManagementSettingsAppl.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/AbstractSourceCodeManagementSettingsAppl.st	Wed Jan 30 11:15:09 2013 +0000
@@ -50,6 +50,7 @@
 "
 ! !
 
+
 !AbstractSourceCodeManagementSettingsAppl class methodsFor:'help specs'!
 
 helpSpec
@@ -78,6 +79,7 @@
     "Created: / 11-01-2012 / 15:38:11 / cg"
 ! !
 
+
 !AbstractSourceCodeManagementSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -128,6 +130,7 @@
 @@@@@@@VE @@@@@VE!!XVE!!X@@@@@@@@WE!!XV@@@@@@@a') ; colorMapFromArray:#[0 0 0 32 64 0 0 64 0 32 32 0 0 32 0 32 96 32 96 192 128 192 224 192 160 224 160 32 128 64 64 96 64 64 96 32 32 160 64 160 224 192 64 160 96 32 128 32 224 224 224 64 128 64 160 192 160 224 224 192 32 160 96 160 160 160 64 64 64 96 96 96 128 128 128 192 192 192 32 32 32 32 64 32]; mask:((ImageMask new) width: 11; height: 11; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C0@_ C!!@N@C< G''@L>@G8DF@O8@_@@@a') ; yourself); yourself]
 ! !
 
+
 !AbstractSourceCodeManagementSettingsAppl class methodsFor:'queries'!
 
 isAbstract
@@ -150,6 +153,7 @@
     "Created: / 19-04-2011 / 12:48:37 / cg"
 ! !
 
+
 !AbstractSourceCodeManagementSettingsAppl methodsFor:'actions'!
 
 condenseSourceCache
@@ -165,6 +169,7 @@
     "Modified: / 30-09-2011 / 13:33:47 / cg"
 ! !
 
+
 !AbstractSourceCodeManagementSettingsAppl methodsFor:'aspects'!
 
 acceptChannel
@@ -240,6 +245,7 @@
     ^ verboseSourceCodeAccess.
 ! !
 
+
 !AbstractSourceCodeManagementSettingsAppl class methodsFor:'documentation'!
 
 version
@@ -253,3 +259,4 @@
 version_SVN
     ^ '§Id§'
 ! !
+
--- a/AbstractVersionDiffBrowserItem.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/AbstractVersionDiffBrowserItem.st	Wed Jan 30 11:15:09 2013 +0000
@@ -9,8 +9,7 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
-
-
+"{ Package: 'stx:libtool' }"
 
 HierarchicalItem subclass:#AbstractVersionDiffBrowserItem
 	instanceVariableNames:''
@@ -154,5 +153,9 @@
 !AbstractVersionDiffBrowserItem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/AbstractVersionDiffBrowserItem.st,v 1.5 2000-02-18 14:09:49 cg Exp $'
+    ^ '$Id: AbstractVersionDiffBrowserItem.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+!
+
+version_SVN
+    ^ '$Id: AbstractVersionDiffBrowserItem.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/ApplicationBuilder.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ApplicationBuilder.st	Wed Jan 30 11:15:09 2013 +0000
@@ -9,9 +9,6 @@
  other person. No title to or ownership of the software is
  hereby transferred.
 "
-
-
-
 "{ Package: 'stx:libtool' }"
 
 ToolApplicationModel subclass:#ApplicationBuilder
@@ -1391,5 +1388,9 @@
 !ApplicationBuilder class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ApplicationBuilder.st,v 1.9 2006-09-05 16:45:14 cg Exp $'
+    ^ '$Id: ApplicationBuilder.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+!
+
+version_SVN
+    ^ '$Id: ApplicationBuilder.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/Bookmark.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Bookmark.st	Wed Jan 30 11:15:09 2013 +0000
@@ -481,10 +481,10 @@
 
 switchToBookmarkIn: application
 
-    application switchToClass: (Smalltalk at: className asSymbol) selector: nil updateHistory: false
+    application switchToClass: (Smalltalk at: className asSymbol) selector: nil updateHistory: true
 
     "Created: / 05-05-2011 / 23:49:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 30-06-2011 / 19:12:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 06-04-2012 / 10:59:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !Bookmark::Class methodsFor:'private'!
@@ -754,11 +754,11 @@
     application 
         switchToClass: (Smalltalk classNamed: className) 
         selector: selector 
-        updateHistory: false
+        updateHistory: true
 
     "Created: / 05-05-2011 / 23:49:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 23-05-2011 / 13:38:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 03-07-2011 / 23:11:03 / cg"
+    "Modified: / 06-04-2012 / 10:59:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !Bookmark::Method methodsFor:'private'!
@@ -900,9 +900,9 @@
 !Bookmark class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Bookmark.st,v 1.8 2011-11-29 10:20:58 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Bookmark.st,v 1.8 2011/11/29 10:20:58 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id§'
+    ^ '$Id: Bookmark.st 7973 2012-04-06 15:56:16Z vranyj1 $'
 ! !
--- a/BookmarkAddMenuBuilder.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/BookmarkAddMenuBuilder.st	Wed Jan 30 11:15:09 2013 +0000
@@ -104,9 +104,9 @@
 !BookmarkAddMenuBuilder class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/BookmarkAddMenuBuilder.st,v 1.2 2011-07-03 18:00:56 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/BookmarkAddMenuBuilder.st,v 1.2 2011/07/03 18:00:56 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id§'
-! !
+    ^ '$Id: BookmarkAddMenuBuilder.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
\ No newline at end of file
--- a/BookmarkBar.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/BookmarkBar.st	Wed Jan 30 11:15:09 2013 +0000
@@ -63,6 +63,7 @@
 "
 ! !
 
+
 !BookmarkBar class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -88,6 +89,7 @@
     "Created: / 03-07-2011 / 23:09:48 / cg"
 ! !
 
+
 !BookmarkBar class methodsFor:'interface specs'!
 
 windowSpec
@@ -151,6 +153,7 @@
       )
 ! !
 
+
 !BookmarkBar class methodsFor:'menu specs'!
 
 bookmarkMenu
@@ -190,6 +193,7 @@
       )
 ! !
 
+
 !BookmarkBar class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -210,6 +214,7 @@
 
 ! !
 
+
 !BookmarkBar methodsFor:'actions'!
 
 bookmark
@@ -231,6 +236,7 @@
     "Modified: / 02-06-2011 / 20:05:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BookmarkBar methodsFor:'aspects'!
 
 bookmarkButtonIconHolder
@@ -344,6 +350,7 @@
     "Modified: / 18-05-2011 / 18:57:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BookmarkBar methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
@@ -392,6 +399,7 @@
     "Modified: / 09-09-2012 / 13:07:51 / cg"
 ! !
 
+
 !BookmarkBar methodsFor:'hooks'!
 
 closeDownViews
@@ -423,6 +431,7 @@
     "Created: / 03-07-2011 / 23:08:01 / cg"
 ! !
 
+
 !BookmarkBar methodsFor:'initialization & release'!
 
 release
@@ -441,6 +450,7 @@
     "Created: / 15-03-2012 / 13:28:48 / Jan Vrany <jan.vrany.fit.cvut.cz>"
 ! !
 
+
 !BookmarkBar methodsFor:'menu'!
 
 bookmarkMenuAddSlice
@@ -450,6 +460,7 @@
     "Modified: / 08-07-2011 / 11:38:29 / cg"
 ! !
 
+
 !BookmarkBar methodsFor:'menu actions'!
 
 menuAddBookmark
@@ -480,6 +491,7 @@
     "Modified: / 02-06-2011 / 20:02:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BookmarkBar class methodsFor:'documentation'!
 
 version
@@ -493,3 +505,4 @@
 version_SVN
     ^ '§Id§'
 ! !
+
--- a/BookmarkEditor.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/BookmarkEditor.st	Wed Jan 30 11:15:09 2013 +0000
@@ -65,9 +65,9 @@
 !BookmarkEditor class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/BookmarkEditor.st,v 1.2 2011-07-03 18:00:45 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/BookmarkEditor.st,v 1.2 2011/07/03 18:00:45 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id§'
-! !
+    ^ '$Id: BookmarkEditor.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
\ No newline at end of file
--- a/BookmarkList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/BookmarkList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -27,7 +27,7 @@
 
 HierarchicalList subclass:#BookmarkList
 	instanceVariableNames:'fileName'
-	classVariableNames:'BrowserBookmarks WorkspaceBookmarks WebBookmarks'
+	classVariableNames:'BrowserBookmarks WorkspaceBookmarks WebBookmarks FileBookmarks'
 	poolDictionaries:''
 	category:'Interface-Bookmarks'
 !
@@ -62,6 +62,7 @@
 "
 ! !
 
+
 !BookmarkList class methodsFor:'instance creation'!
 
 decodeFromLiteralArray:anArray
@@ -127,8 +128,18 @@
     "Modified: / 18-11-2011 / 14:32:24 / cg"
 ! !
 
+
 !BookmarkList class methodsFor:'accessing'!
 
+forFileBrowser
+    FileBookmarks isNil ifTrue:[
+        self initializeFileBookmarks
+    ].
+    ^ FileBookmarks
+
+    "Created: / 04-04-2012 / 12:04:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 forSystemBrowser
 
     BrowserBookmarks isNil ifTrue:
@@ -156,6 +167,7 @@
     "Created: / 20-06-2011 / 22:11:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BookmarkList class methodsFor:'accessing - defaults'!
 
 defaultLabelForMyWorkspaces
@@ -172,6 +184,7 @@
     "Created: / 21-06-2011 / 08:35:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BookmarkList class methodsFor:'class initialization'!
 
 initializeBrowserBookmarks
@@ -192,6 +205,22 @@
     "Modified: / 29-11-2011 / 11:21:06 / cg"
 !
 
+initializeFileBookmarks
+
+    | file  |
+    file := Filename defaultDirectory / 'file-bookmarks.rc'.
+    FileBookmarks := self readFromFile: file onError:[nil].
+    FileBookmarks notNil ifTrue:[^self].    
+
+    file := Filename homeDirectory / '.smalltalk' / 'file-bookmarks.rc'.
+    FileBookmarks := self readFromFile: file onError:[nil].
+    FileBookmarks notNil ifTrue:[^self].    
+
+    FileBookmarks := self new fileName: file pathName.
+
+    "Created: / 04-04-2012 / 12:05:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 initializeWebBookmarks
 
     | file  |
@@ -240,6 +269,7 @@
     "Modified: / 29-11-2011 / 11:21:16 / cg"
 ! !
 
+
 !BookmarkList methodsFor:'accessing'!
 
 / label
@@ -257,6 +287,7 @@
     fileName := aString.
 ! !
 
+
 !BookmarkList methodsFor:'accessing - special folders'!
 
 myWorkspaces
@@ -270,6 +301,7 @@
     "Created: / 21-06-2011 / 08:53:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BookmarkList methodsFor:'change & update'!
 
 changed:aParameter with:anArgument
@@ -281,6 +313,7 @@
     "Modified: / 02-06-2011 / 13:35:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BookmarkList methodsFor:'collection protocol'!
 
 add: item 
@@ -307,6 +340,7 @@
     "Modified: / 23-05-2011 / 13:48:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BookmarkList methodsFor:'converting'!
 
 asMenu
@@ -333,6 +367,7 @@
     "Created: / 23-05-2011 / 14:23:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BookmarkList methodsFor:'initialization'!
 
 initialize
@@ -347,6 +382,7 @@
     "Modified: / 23-05-2011 / 13:56:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BookmarkList methodsFor:'loading / saving'!
 
 save
@@ -369,6 +405,7 @@
     "Created: / 23-05-2011 / 16:39:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BookmarkList methodsFor:'visiting'!
 
 acceptVisitor:aVisitor 
@@ -380,6 +417,7 @@
     ^ aVisitor visitBookmarkList:self
 ! !
 
+
 !BookmarkList class methodsFor:'documentation'!
 
 version_CVS
@@ -389,3 +427,4 @@
 version_SVN
     ^ '§Id§'
 ! !
+
--- a/BookmarkListEditor.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/BookmarkListEditor.st	Wed Jan 30 11:15:09 2013 +0000
@@ -517,9 +517,9 @@
 !BookmarkListEditor class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/BookmarkListEditor.st,v 1.3 2011-11-18 13:33:19 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/BookmarkListEditor.st,v 1.3 2011/11/18 13:33:19 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id§'
+    ^ '$Id: BookmarkListEditor.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/BookmarkMenuBuilder.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/BookmarkMenuBuilder.st	Wed Jan 30 11:15:09 2013 +0000
@@ -194,9 +194,9 @@
 !BookmarkMenuBuilder class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/BookmarkMenuBuilder.st,v 1.6 2011-11-29 10:21:54 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/BookmarkMenuBuilder.st,v 1.6 2011/11/29 10:21:54 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id§'
+    ^ '$Id: BookmarkMenuBuilder.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/BookmarkToolbarMenuBuilder.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/BookmarkToolbarMenuBuilder.st	Wed Jan 30 11:15:09 2013 +0000
@@ -85,9 +85,9 @@
 !BookmarkToolbarMenuBuilder class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/BookmarkToolbarMenuBuilder.st,v 1.2 2011-07-03 18:01:01 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/BookmarkToolbarMenuBuilder.st,v 1.2 2011/07/03 18:01:01 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id§'
-! !
+    ^ '$Id: BookmarkToolbarMenuBuilder.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
\ No newline at end of file
--- a/BookmarkVisitor.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/BookmarkVisitor.st	Wed Jan 30 11:15:09 2013 +0000
@@ -131,9 +131,9 @@
 !BookmarkVisitor class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/BookmarkVisitor.st,v 1.2 2011-07-03 18:00:43 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/BookmarkVisitor.st,v 1.2 2011/07/03 18:00:43 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id§'
-! !
+    ^ '$Id: BookmarkVisitor.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
\ No newline at end of file
--- a/BookmarksEditDialog.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/BookmarksEditDialog.st	Wed Jan 30 11:15:09 2013 +0000
@@ -645,9 +645,13 @@
 !BookmarksEditDialog class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/BookmarksEditDialog.st,v 1.10 2011-01-17 12:06:37 cg Exp $'
+    ^ '$Id: BookmarksEditDialog.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/BookmarksEditDialog.st,v 1.10 2011-01-17 12:06:37 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/BookmarksEditDialog.st,v 1.10 2011/01/17 12:06:37 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: BookmarksEditDialog.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/BrowserView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/BrowserView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -79,6 +79,7 @@
 "
 ! !
 
+
 !BrowserView class methodsFor:'initialization'!
 
 initialize
@@ -128,6 +129,7 @@
     "Modified: / 27.10.1997 / 17:34:25 / cg"
 ! !
 
+
 !BrowserView class methodsFor:'class history'!
 
 addToClassHistory:aClass selector:aSelector
@@ -140,6 +142,7 @@
     SystemBrowser checkClassHistory
 ! !
 
+
 !BrowserView class methodsFor:'cleanup'!
 
 lowSpaceCleanup
@@ -156,6 +159,7 @@
     Icons := DefaultIcon := nil.
 ! !
 
+
 !BrowserView class methodsFor:'defaults'!
 
 changeHistoryMaxSize
@@ -229,6 +233,7 @@
     "Created: / 29.10.1997 / 03:32:43 / cg"
 ! !
 
+
 !BrowserView class methodsFor:'interface specs'!
 
 methodFilterSpec
@@ -611,6 +616,7 @@
       )
 ! !
 
+
 !BrowserView class methodsFor:'menu specs'!
 
 menuSpec
@@ -1669,12 +1675,14 @@
       )
 ! !
 
+
 !BrowserView class methodsFor:'resources'!
 
 classResources
     ^ SystemBrowser classResources
 ! !
 
+
 !BrowserView methodsFor:'change & update'!
 
 delayedUpdate:something with:someArgument from:changedObject
@@ -2086,6 +2094,7 @@
     "Modified: 26.3.1997 / 18:29:51 / cg"
 ! !
 
+
 !BrowserView methodsFor:'class category list menu'!
 
 browserClone
@@ -2960,6 +2969,7 @@
     "Modified: / 10.4.1998 / 12:25:38 / cg"
 ! !
 
+
 !BrowserView methodsFor:'class category source administration'!
 
 classCategoryCheckinEach
@@ -3416,6 +3426,7 @@
     "Modified (format): / 29-09-2011 / 16:09:52 / cg"
 ! !
 
+
 !BrowserView methodsFor:'class category stuff'!
 
 checkClassCategorySelected
@@ -3700,6 +3711,7 @@
     "Modified: / 27.7.1998 / 10:56:50 / cg"
 ! !
 
+
 !BrowserView methodsFor:'class history'!
 
 changeHistoryMenu
@@ -3897,6 +3909,7 @@
     self class classHistory:savedHistory.
 ! !
 
+
 !BrowserView methodsFor:'class list menu'!
 
 classClassInstVars
@@ -5207,6 +5220,7 @@
     "Modified: 17.6.1997 / 13:32:40 / cg"
 ! !
 
+
 !BrowserView methodsFor:'class list source administration'!
 
 classCheckin
@@ -5756,6 +5770,7 @@
     "Modified: / 10.2.2000 / 14:14:09 / cg"
 ! !
 
+
 !BrowserView methodsFor:'class stuff'!
 
 allClasses
@@ -6931,6 +6946,7 @@
     "Modified: 10.1.1997 / 14:01:20 / cg"
 ! !
 
+
 !BrowserView methodsFor:'class-method list menu'!
 
 classMethodBrowse
@@ -7144,6 +7160,7 @@
     "Modified: / 7.8.1998 / 17:13:47 / cg"
 ! !
 
+
 !BrowserView methodsFor:'class-method stuff'!
 
 classFromClassMethodString:aString
@@ -7432,6 +7449,7 @@
     "Modified: / 17.10.1998 / 11:30:35 / cg"
 ! !
 
+
 !BrowserView methodsFor:'event handling'!
 
 handlesKeyPress:key inView:view
@@ -7534,6 +7552,7 @@
     "Modified: / 18.4.1998 / 15:56:36 / cg"
 ! !
 
+
 !BrowserView methodsFor:'help'!
 
 helpTextFor:aComponent
@@ -7555,6 +7574,7 @@
     "Modified: 28.6.1997 / 15:00:18 / cg"
 ! !
 
+
 !BrowserView methodsFor:'initialization & release'!
 
 autoSearch:aString
@@ -7741,6 +7761,7 @@
     "Modified: 18.8.1997 / 15:19:50 / cg"
 ! !
 
+
 !BrowserView methodsFor:'initialize subviews'!
 
 createClassListViewIn:frame
@@ -8311,6 +8332,7 @@
     "Modified: / 25.10.1997 / 19:27:40 / cg"
 ! !
 
+
 !BrowserView methodsFor:'method category list menu'!
 
 createAccessMethodsFor:aCollectionOfInstVarNames withChange:withChange
@@ -8852,6 +8874,7 @@
                                     ]
 ! !
 
+
 !BrowserView methodsFor:'method category stuff'!
 
 asBrowserList:aList
@@ -9098,6 +9121,7 @@
     "Modified: 18.8.1997 / 15:44:38 / cg"
 ! !
 
+
 !BrowserView methodsFor:'method list menu'!
 
 commonTraceHelperWith:aSelector
@@ -10523,6 +10547,7 @@
     "Modified: / 12.1.1998 / 19:16:22 / cg"
 ! !
 
+
 !BrowserView methodsFor:'method stuff'!
 
 checkMethodSelected
@@ -11066,6 +11091,7 @@
     "Modified: 30.7.1997 / 15:55:06 / cg"
 ! !
 
+
 !BrowserView methodsFor:'misc'!
 
 beep
@@ -11362,6 +11388,7 @@
     "Modified: / 10.2.2000 / 14:15:03 / cg"
 ! !
 
+
 !BrowserView methodsFor:'namespace menu'!
 
 nameSpaceCheckInEach
@@ -11514,6 +11541,7 @@
     "Modified: / 3.2.1999 / 20:18:13 / cg"
 ! !
 
+
 !BrowserView methodsFor:'namespace stuff'!
 
 changeNameSpaceTo:nsName
@@ -11699,6 +11727,7 @@
     "Created: 8.1.1997 / 10:54:03 / cg"
 ! !
 
+
 !BrowserView methodsFor:'private'!
 
 askAndBrowseMethodCategory:title action:aBlock
@@ -13250,6 +13279,7 @@
     "Created: 18.8.1997 / 15:41:52 / cg"
 ! !
 
+
 !BrowserView methodsFor:'private-defaults'!
 
 canvasIcon
@@ -13367,6 +13397,7 @@
     ^ self fetchIcon:#trace selector:#traceIcon
 ! !
 
+
 !BrowserView methodsFor:'private-queries'!
 
 hasClassCategorySelected
@@ -13490,6 +13521,7 @@
         and:[ variableListView selectionValue notNil ]]
 ! !
 
+
 !BrowserView methodsFor:'syntax coloring'!
 
 startSyntaxHighlightProcess
@@ -13677,6 +13709,7 @@
     "Modified: / 20.11.2001 / 00:38:09 / cg"
 ! !
 
+
 !BrowserView methodsFor:'unused'!
 
 listOfAllMethodCategoriesInHierarchy:aClass
@@ -13723,6 +13756,7 @@
     "Modified: 5.6.1996 / 11:42:12 / stefan"
 ! !
 
+
 !BrowserView methodsFor:'variable list menu'!
 
 allClassInstVarMods
@@ -14235,6 +14269,7 @@
     "Modified: 25.5.1996 / 12:26:07 / cg"
 ! !
 
+
 !BrowserView methodsFor:'variable stuff'!
 
 hilightEntryFor:entry
@@ -14546,10 +14581,16 @@
     "Modified: / 17.9.1998 / 13:45:02 / cg"
 ! !
 
+
 !BrowserView class methodsFor:'documentation'!
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/BrowserView.st,v 1.839 2012-09-09 12:58:33 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: BrowserView.st 8054 2012-09-13 09:15:20Z vranyj1 $'
 ! !
 
+
 BrowserView initialize!
--- a/CVSSourceCodeManagementSettingsAppl.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/CVSSourceCodeManagementSettingsAppl.st	Wed Jan 30 11:15:09 2013 +0000
@@ -47,6 +47,7 @@
 "
 ! !
 
+
 !CVSSourceCodeManagementSettingsAppl class methodsFor:'defaults'!
 
 defaultRepositoryName
@@ -56,6 +57,7 @@
     "Created: / 19-04-2011 / 11:00:11 / cg"
 ! !
 
+
 !CVSSourceCodeManagementSettingsAppl class methodsFor:'help specs'!
 
 helpSpec
@@ -162,6 +164,7 @@
     "Modified: / 09-08-2012 / 09:41:23 / cg"
 ! !
 
+
 !CVSSourceCodeManagementSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -224,6 +227,7 @@
 K"DZKR4ZHR8@@@@@@@@@@@@@@@@@@@@@@@@@E14@@@@@@@@@') ; colorMapFromArray:#[0 0 0 160 176 200 176 192 210 176 200 220 192 208 220 224 232 240 176 208 220 208 224 220 144 168 180 192 200 220 208 216 220 208 224 240 224 232 250 224 240 250 208 232 240 160 192 210 176 184 180 128 136 140 192 216 220 160 184 210 208 240 250 144 144 160 192 224 240 160 168 180 192 232 240 160 176 180 224 224 220 192 232 250 144 168 200 176 184 200 160 200 220 192 216 240 176 192 200 160 184 200 192 224 220 176 224 250 176 216 250 160 208 240 144 192 250 144 176 210 255 248 250 160 192 220 144 184 210 160 200 240 160 192 240 128 160 180 128 152 180 0 64 0 32 96 32 96 192 128 32 128 64 32 160 64 32 128 32 64 64 64 96 96 96 128 128 128 32 32 32 32 64 32]; mask:((Depth1Image new) width: 24; height: 24; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@X@@C?@@C?@@O?0@O?0@OG @_C8@_C8@OG @O?0@O?6@G??0C??0C??<GC?<GC18_''0>OO0>F_18@??<HO?<G=?0C8?0@@F@') ; yourself); yourself]
 ! !
 
+
 !CVSSourceCodeManagementSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -609,6 +613,7 @@
       )
 ! !
 
+
 !CVSSourceCodeManagementSettingsAppl class methodsFor:'queries'!
 
 managerClass
@@ -619,6 +624,7 @@
     "Created: / 19-04-2011 / 12:46:52 / cg"
 ! !
 
+
 !CVSSourceCodeManagementSettingsAppl methodsFor:'actions'!
 
 addModule:module withData:data
@@ -729,6 +735,7 @@
     "Modified (format): / 21-12-2011 / 14:25:29 / cg"
 ! !
 
+
 !CVSSourceCodeManagementSettingsAppl methodsFor:'actions - cvs'!
 
 addPerModuleRoot
@@ -812,6 +819,7 @@
     self cvsLogin:perModuleRoot value.
 ! !
 
+
 !CVSSourceCodeManagementSettingsAppl methodsFor:'aspects'!
 
 cvsCommandTimeoutHolder
@@ -922,6 +930,7 @@
     ^ selectedPerModuleRoot.
 ! !
 
+
 !CVSSourceCodeManagementSettingsAppl methodsFor:'change & update'!
 
 selectedPerModuleRootChanged
@@ -975,12 +984,14 @@
     self cvsLoginInModuleEnabled value:((perModuleRoot value ? '') startsWith:':pserver:').
 ! !
 
+
 !CVSSourceCodeManagementSettingsAppl methodsFor:'help'!
 
 helpFilename
     ^ 'Launcher/cvsSetup.html'
 ! !
 
+
 !CVSSourceCodeManagementSettingsAppl methodsFor:'initialization & release'!
 
 initialize
@@ -1005,6 +1016,7 @@
     "Modified: / 14-01-2012 / 20:28:00 / cg"
 ! !
 
+
 !CVSSourceCodeManagementSettingsAppl methodsFor:'queries'!
 
 cvsRootFromCVSRootFileOrNil
@@ -1060,6 +1072,7 @@
     "Modified: / 22-01-2012 / 11:25:53 / cg"
 ! !
 
+
 !CVSSourceCodeManagementSettingsAppl class methodsFor:'documentation'!
 
 version
@@ -1068,4 +1081,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/CVSSourceCodeManagementSettingsAppl.st,v 1.26 2012-10-15 18:46:00 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: CVSSourceCodeManagementSettingsAppl.st 8074 2012-11-30 17:23:39Z vranyj1 $'
 ! !
+
--- a/ChangeSetBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ChangeSetBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1035,9 +1035,9 @@
 !ChangeSetBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ChangeSetBrowser.st,v 1.56 2011-02-17 09:30:10 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ChangeSetBrowser.st,v 1.56 2011/02/17 09:30:10 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/ChangeSetBrowser.st,v 1.56 2011-02-17 09:30:10 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/ChangeSetBrowser.st,v 1.56 2011/02/17 09:30:10 cg Exp §'
 ! !
--- a/ChangesBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ChangesBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -104,6 +104,7 @@
 "
 ! !
 
+
 !ChangesBrowser class methodsFor:'instance creation'!
 
 new
@@ -137,6 +138,7 @@
     "Modified: / 18-07-2010 / 10:32:18 / cg"
 ! !
 
+
 !ChangesBrowser class methodsFor:'behavior'!
 
 autoSelectNext
@@ -146,6 +148,7 @@
     ^ true
 ! !
 
+
 !ChangesBrowser class methodsFor:'defaults'!
 
 defaultIcon
@@ -169,6 +172,7 @@
     "Created: / 27.9.1999 / 12:28:27 / cg"
 ! !
 
+
 !ChangesBrowser class methodsFor:'menu specs'!
 
 flyByHelpSpec
@@ -751,6 +755,7 @@
       )
 ! !
 
+
 !ChangesBrowser class methodsFor:'private-changeFile access'!
 
 readXMLChangesFrom:aStream inBackground:inBackground
@@ -789,6 +794,7 @@
     ^ set.
 ! !
 
+
 !ChangesBrowser class methodsFor:'utilities'!
 
 isXMLFile:aFilename
@@ -822,6 +828,7 @@
         )
 ! !
 
+
 !ChangesBrowser methodsFor:'aspects'!
 
 applyInOriginalNameSpace
@@ -965,6 +972,7 @@
     ^ updateChangeSet
 ! !
 
+
 !ChangesBrowser methodsFor:'compiler interface'!
 
 wantChangeLog
@@ -974,6 +982,7 @@
     ^ false
 ! !
 
+
 !ChangesBrowser methodsFor:'compiler interface-error handling'!
 
 correctableError:aString position:relPos to:relEndPos from:aCompiler
@@ -1075,6 +1084,7 @@
     ^ self
 ! !
 
+
 !ChangesBrowser methodsFor:'event handling'!
 
 handlesKeyPress:key inView:view
@@ -1134,6 +1144,7 @@
     "Modified: / 18.6.1998 / 22:15:36 / cg"
 ! !
 
+
 !ChangesBrowser methodsFor:'help'!
 
 showActivity:someMessage
@@ -1150,6 +1161,7 @@
     "Modified: 23.4.1996 / 21:39:36 / cg"
 ! !
 
+
 !ChangesBrowser methodsFor:'initialization & release'!
 
 autoCompareChanged
@@ -1613,6 +1625,7 @@
     "Modified: / 03-01-2012 / 15:23:13 / cg"
 ! !
 
+
 !ChangesBrowser methodsFor:'menu actions'!
 
 doApply
@@ -2997,6 +3010,7 @@
     ToolApplicationModel openAboutSTX
 ! !
 
+
 !ChangesBrowser methodsFor:'private'!
 
 autoSelect:changeNr
@@ -3479,6 +3493,7 @@
     self withSelectedChangesInOrder:nil do:aBlock
 ! !
 
+
 !ChangesBrowser methodsFor:'private-change access'!
 
 changeIsFollowupMethodChange:changeNr
@@ -4030,6 +4045,7 @@
     ^ aStream
 ! !
 
+
 !ChangesBrowser methodsFor:'private-changeFile access'!
 
 changeFileName:aFileName
@@ -4293,6 +4309,7 @@
     "Modified: / 27-07-2012 / 09:46:00 / cg"
 ! !
 
+
 !ChangesBrowser methodsFor:'private-user interaction ops'!
 
 appendChange:changeNr toFile:aFileNameOrFileNameString
@@ -5470,6 +5487,7 @@
     "Modified: / 05-03-2012 / 14:33:16 / cg"
 ! !
 
+
 !ChangesBrowser methodsFor:'termination'!
 
 askIfChangesAreToBeWrittenBack
@@ -5516,6 +5534,7 @@
     "Modified: / 3.8.1998 / 19:54:00 / cg"
 ! !
 
+
 !ChangesBrowser methodsFor:'user interaction'!
 
 askForSearch:msg initialAnswer:initial thenSearchUsing:searchBlock2 onCancel:cancelBlock
@@ -5787,6 +5806,7 @@
     "Created: / 03-01-2012 / 15:26:36 / cg"
 ! !
 
+
 !ChangesBrowser::ChangeFileReader methodsFor:'accessing'!
 
 autoCompare:something
@@ -5859,6 +5879,7 @@
     "Modified: / 06-10-2006 / 11:18:49 / cg"
 ! !
 
+
 !ChangesBrowser::ChangeFileReader methodsFor:'private'!
 
 contractClass:className selector:selector to:maxLen
@@ -5928,6 +5949,7 @@
     ^ browser nameSpaceForApply
 ! !
 
+
 !ChangesBrowser::ChangeFileReader methodsFor:'reading'!
 
 addHeaderLineForChangeType:changeType changeString:changeString changeDelta:changeDelta timeStampInfo:timeStampInfo
@@ -6456,6 +6478,7 @@
     "Modified: / 10-07-2010 / 10:58:08 / cg"
 ! !
 
+
 !ChangesBrowser class methodsFor:'documentation'!
 
 version
@@ -6464,4 +6487,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.433 2012-10-22 22:32:07 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: ChangesBrowser.st 8074 2012-11-30 17:23:39Z vranyj1 $'
 ! !
+
--- a/ClassInspectorView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ClassInspectorView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -78,5 +78,5 @@
 !ClassInspectorView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ClassInspectorView.st,v 1.11 2001-09-25 13:04:06 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ClassInspectorView.st,v 1.11 2001/09/25 13:04:06 cg Exp $'
 ! !
--- a/ClassItem.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ClassItem.st	Wed Jan 30 11:15:09 2013 +0000
@@ -262,5 +262,5 @@
 !ClassItem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ClassItem.st,v 1.8 2000-02-18 14:09:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ClassItem.st,v 1.8 2000/02/18 14:09:35 cg Exp $'
 ! !
--- a/ClassItemRoot.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ClassItemRoot.st	Wed Jan 30 11:15:09 2013 +0000
@@ -9,8 +9,7 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
-
-
+"{ Package: 'stx:libtool' }"
 
 AbstractVersionDiffBrowserItem subclass:#ClassItemRoot
 	instanceVariableNames:''
@@ -134,5 +133,9 @@
 !ClassItemRoot class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ClassItemRoot.st,v 1.6 2000-02-18 14:09:21 cg Exp $'
+    ^ '$Id: ClassItemRoot.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+!
+
+version_SVN
+    ^ '$Id: ClassItemRoot.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/ClassItemRootForRevision.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ClassItemRootForRevision.st	Wed Jan 30 11:15:09 2013 +0000
@@ -92,5 +92,5 @@
 !ClassItemRootForRevision class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ClassItemRootForRevision.st,v 1.3 2000-02-18 14:09:10 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ClassItemRootForRevision.st,v 1.3 2000/02/18 14:09:10 cg Exp $'
 ! !
--- a/ClassNameItem.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ClassNameItem.st	Wed Jan 30 11:15:09 2013 +0000
@@ -158,5 +158,5 @@
 !ClassNameItem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ClassNameItem.st,v 1.3 2000-02-18 14:08:58 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ClassNameItem.st,v 1.3 2000/02/18 14:08:58 cg Exp $'
 ! !
--- a/ClassRevisionTree.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ClassRevisionTree.st	Wed Jan 30 11:15:09 2013 +0000
@@ -470,5 +470,5 @@
 !ClassRevisionTree class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ClassRevisionTree.st,v 1.9 2000-02-18 14:08:48 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ClassRevisionTree.st,v 1.9 2000/02/18 14:08:48 cg Exp $'
 ! !
--- a/ClassVariablesInspectorView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ClassVariablesInspectorView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -63,5 +63,5 @@
 !ClassVariablesInspectorView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ClassVariablesInspectorView.st,v 1.2 2006-01-30 18:17:56 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ClassVariablesInspectorView.st,v 1.2 2006/01/30 18:17:56 cg Exp $'
 ! !
--- a/CodeGenerator.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/CodeGenerator.st	Wed Jan 30 11:15:09 2013 +0000
@@ -205,9 +205,9 @@
 !CodeGenerator class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/CodeGenerator.st,v 1.2 2011-07-03 13:41:45 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/CodeGenerator.st,v 1.2 2011/07/03 13:41:45 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: CodeGenerator.st 7567 2010-04-17 10:59:53Z vranyj1 §'
-! !
+    ^ '$Id: CodeGenerator.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
\ No newline at end of file
--- a/CodeGeneratorTests.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/CodeGeneratorTests.st	Wed Jan 30 11:15:09 2013 +0000
@@ -25,7 +25,7 @@
 "
 "{ Package: 'stx:libtool' }"
 
-nil subclass:#CodeGeneratorTests
+TestCase subclass:#CodeGeneratorTests
 	instanceVariableNames:'cg'
 	classVariableNames:''
 	poolDictionaries:''
@@ -177,9 +177,9 @@
 !CodeGeneratorTests class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/CodeGeneratorTests.st,v 1.2 2011-07-03 13:41:39 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/CodeGeneratorTests.st,v 1.2 2011/07/03 13:41:39 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: CodeGeneratorTests.st 7728 2011-05-05 23:02:13Z vranyj1 §'
+    ^ '$Id: CodeGeneratorTests.st 7728 2011-05-05 23:02:13Z vranyj1 $'
 ! !
--- a/CodeGeneratorTool.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/CodeGeneratorTool.st	Wed Jan 30 11:15:09 2013 +0000
@@ -49,12 +49,14 @@
 "
 ! !
 
+
 !CodeGeneratorTool class methodsFor:'instance creation'!
 
 new
     ^ self basicNew initialize.
 ! !
 
+
 !CodeGeneratorTool class methodsFor:'code generation'!
 
 createAccessMethodsFor:aCollectionOfVarNames in:aClass withChange:withChange asValueHolder:asValueHolder readersOnly:readersOnly writersOnly:writersOnly
@@ -225,6 +227,7 @@
     "
 ! !
 
+
 !CodeGeneratorTool class methodsFor:'code generation-basic'!
 
 createAccessMethodsFor:aCollectionOfVarNames in:aClass withChange:withChange asValueHolder:asValueHolder readersOnly:readersOnly writersOnly:writersOnly lazyInitialization:lazyInitialization
@@ -234,6 +237,7 @@
         createAccessMethodsFor:aCollectionOfVarNames in:aClass withChange:withChange asValueHolder:asValueHolder readersOnly:readersOnly writersOnly:writersOnly lazyInitialization:lazyInitialization
 ! !
 
+
 !CodeGeneratorTool class methodsFor:'code generation-individual methods'!
 
 createAcceptVisitorMethod:selector in:aClass
@@ -326,6 +330,7 @@
     "Modified (comment): / 21-08-2012 / 11:55:15 / cg"
 ! !
 
+
 !CodeGeneratorTool class methodsFor:'code generation-menus'!
 
 createActionMethodFor:aSelector in:aClass category:aCategory redefine:redefine
@@ -336,6 +341,7 @@
     self subclassResponsibility
 ! !
 
+
 !CodeGeneratorTool class methodsFor:'compilation'!
 
 compile:theCode forClass:aClass inCategory:cat 
@@ -345,6 +351,7 @@
     ^ self new compile:theCode forClass:aClass inCategory:cat
 ! !
 
+
 !CodeGeneratorTool class methodsFor:'defaults'!
 
 copyrightTemplate
@@ -380,6 +387,7 @@
     CopyrightTemplate := aString.
 ! !
 
+
 !CodeGeneratorTool class methodsFor:'interface specs'!
 
 initialMenuSpecForApplications
@@ -805,6 +813,7 @@
     "Modified: / 07-05-2010 / 14:21:55 / cg"
 ! !
 
+
 !CodeGeneratorTool class methodsFor:'private'!
 
 canUseRefactoringSupport
@@ -819,6 +828,7 @@
     self subclassResponsibility
 ! !
 
+
 !CodeGeneratorTool class methodsFor:'utilities'!
 
 missingRequiredProtocolFor:aClass
@@ -849,6 +859,7 @@
     "Modified: / 08-08-2011 / 18:44:58 / cg"
 ! !
 
+
 !CodeGeneratorTool methodsFor:'bulk changes'!
 
 addChange:aChange
@@ -861,8 +872,6 @@
      it might be better to let the generator decide (for example, if it does high-impact
      changes, as opposed to simple ones)"
 
-    | changes |
-
     compositeChangeCollector notNil ifTrue:[
         compositeChangeNesting := compositeChangeNesting - 1.
         compositeChangeNesting == 0 ifTrue:[
@@ -870,21 +879,17 @@
             compositeChangeCollector changesSize == 0 ifTrue:[
                 self information:'Nothing generated.'.
             ] ifFalse:[
-                (compositeChangeCollector shouldBeConfimed and:[self confirmChanges])
-                    ifFalse: [
-                        RefactoryChangeManager instance performChange: compositeChangeCollector
-                    ] ifTrue: [                        
-                        changes := ChangeSet with:compositeChangeCollector.
-                        "/ changes := Tools::ChangeSetBrowser2 confirmChanges:(ChangeSet with:compositeChangeCollector).
-                        changes do:[:chg | RefactoryChangeManager instance performChange: chg].
-                    ].
+                "JV@2012-04-04: Here used to be a code for confirming changes.
+                 The has moved to RefactoryChangeManager so all refactorings
+                 are also subject to confirmation (is enabled in UserPreferences)"
+                RefactoryChangeManager instance performChange: compositeChangeCollector
             ].
             compositeChangeCollector := nil.
         ]
     ]
 
-    "Modified: / 08-07-2011 / 11:03:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 02-08-2012 / 14:44:38 / cg"
+    "Modified (comment): / 04-08-2011 / 17:30:27 / cg"
+    "Modified (format): / 04-04-2012 / 16:35:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 startCollectChanges
@@ -897,6 +902,7 @@
     ]
 ! !
 
+
 !CodeGeneratorTool methodsFor:'code generation'!
 
 createAccessMethodsFor:aCollectionOfVarNames in:aClass withChange:withChange asValueHolder:asValueHolder readersOnly:readersOnly writersOnly:writersOnly
@@ -1323,6 +1329,7 @@
     self subclassResponsibility
 ! !
 
+
 !CodeGeneratorTool methodsFor:'code generation-basic'!
 
 createAccessMethodsFor:aCollectionOfVarNames in:aClass withChange:withChange asValueHolder:asValueHolder readersOnly:readersOnly writersOnly:writersOnly lazyInitialization:lazyInitialization
@@ -1341,6 +1348,7 @@
     self subclassResponsibility
 ! !
 
+
 !CodeGeneratorTool methodsFor:'code generation-individual methods'!
 
 createAcceptVisitorMethod:selector in:aClass
@@ -1451,6 +1459,7 @@
     self subclassResponsibility
 ! !
 
+
 !CodeGeneratorTool methodsFor:'code templates'!
 
 codeFor_classInitialize
@@ -1596,6 +1605,7 @@
     self subclassResponsibility
 ! !
 
+
 !CodeGeneratorTool methodsFor:'compilation'!
 
 compile:theCode forClass:aClass inCategory:cat 
@@ -1646,6 +1656,7 @@
     "Modified (format): / 21-01-2012 / 10:40:59 / cg"
 ! !
 
+
 !CodeGeneratorTool methodsFor:'initialization'!
 
 confirmChanges
@@ -1669,6 +1680,7 @@
     generateComments := userPreferences generateComments.
 ! !
 
+
 !CodeGeneratorTool methodsFor:'private'!
 
 canUseRefactoringSupport
@@ -1699,6 +1711,7 @@
     ].
 ! !
 
+
 !CodeGeneratorTool class methodsFor:'documentation'!
 
 version
@@ -1707,4 +1720,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/CodeGeneratorTool.st,v 1.100 2012-10-15 20:17:19 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: CodeGeneratorTool.st 8074 2012-11-30 17:23:39Z vranyj1 $'
 ! !
+
--- a/ColorInspectorView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ColorInspectorView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -126,5 +126,9 @@
 !ColorInspectorView class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/ColorInspectorView.st,v 1.14 2011-07-05 12:04:32 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/ColorInspectorView.st,v 1.14 2011/07/05 12:04:32 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: ColorInspectorView.st 7944 2012-03-19 15:32:45Z vranyj1 $'
 ! !
--- a/ContextInspectorView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ContextInspectorView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -51,6 +51,7 @@
 "
 ! !
 
+
 !ContextInspectorView methodsFor:'accessing'!
 
 inspect:aContext
@@ -369,6 +370,7 @@
     "Modified: 14.12.1995 / 21:49:43 / cg"
 ! !
 
+
 !ContextInspectorView methodsFor:'initialization'!
 
 initialize
@@ -377,6 +379,7 @@
 
 ! !
 
+
 !ContextInspectorView methodsFor:'menu'!
 
 fieldMenu
@@ -457,6 +460,7 @@
     "Modified: / 20-07-2012 / 10:51:12 / cg"
 ! !
 
+
 !ContextInspectorView methodsFor:'private'!
 
 defaultLabel
@@ -626,6 +630,7 @@
     "Created: / 31.10.2001 / 09:17:45 / cg"
 ! !
 
+
 !ContextInspectorView methodsFor:'user actions'!
 
 doAccept:theText
@@ -669,6 +674,7 @@
     inspectedContext at:selectionIndex put:newValue.
 ! !
 
+
 !ContextInspectorView class methodsFor:'documentation'!
 
 version
@@ -677,4 +683,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/ContextInspectorView.st,v 1.79 2012-07-20 09:22:08 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: ContextInspectorView.st 8022 2012-07-25 09:51:30Z vranyj1 $'
 ! !
+
--- a/DataBaseSourceCodeManagementSettingsAppl.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/DataBaseSourceCodeManagementSettingsAppl.st	Wed Jan 30 11:15:09 2013 +0000
@@ -41,6 +41,7 @@
 "
 ! !
 
+
 !DataBaseSourceCodeManagementSettingsAppl class methodsFor:'defaults'!
 
 defaultTableName
@@ -50,6 +51,7 @@
     "Created: / 21-12-2011 / 23:43:04 / cg"
 ! !
 
+
 !DataBaseSourceCodeManagementSettingsAppl class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -84,6 +86,7 @@
     "Created: / 25-12-2011 / 13:46:07 / cg"
 ! !
 
+
 !DataBaseSourceCodeManagementSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -112,6 +115,7 @@
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[219 185 65 198 168 74 219 190 79 243 243 243 247 247 247 212 188 103 224 198 109 222 200 122 234 215 144 254 223 141 240 223 165 253 234 173 253 237 183 241 231 193 188 151 42 211 174 48 191 161 59 254 242 210 208 176 66 242 239 229 220 189 76 242 242 242 245 245 245 255 255 255 222 198 111 244 220 117 237 216 141 255 233 149 254 227 155 250 228 170 196 152 26 252 239 190 253 238 192 212 212 212 249 242 210 207 171 55 211 178 65 225 194 72 230 197 74 255 251 236 250 248 244 231 203 98 246 219 105 245 221 117 227 210 143 241 216 146 253 228 154 249 232 171 253 237 182 174 139 37 239 228 192 202 168 50 209 174 52 210 173 51 214 179 60 222 188 68 210 174 70 224 193 81 208 180 89 254 254 254 225 200 105 232 208 118 220 202 138 252 229 143 252 235 160 205 200 181 186 147 30 202 156 27 251 235 189 255 244 201 216 216 216 233 228 211 193 161 65 207 177 72 230 197 73 252 249 237 252 251 244 208 183 100 213 188 101 231 202 112 206 189 131 252 230 145 254 225 148 254 228 160 254 233 176 187 149 35 198 153 27 211 211 211 215 215 215 248 241 209 225 225 225 223 192 70 231 231 231 231 201 81 225 195 86 253 253 253 219 192 114 251 228 125 243 221 145 253 226 149 247 229 168 252 236 180 201 155 26 253 243 195 255 240 196 255 239 199 217 217 217 220 185 61 254 249 224 223 188 69 232 203 81 244 244 244 252 252 252 211 183 100 236 208 111 227 205 125 252 230 144 253 226 148 236 222 171 197 156 25 202 156 26 190 149 32 187 154 48 197 165 54 203 172 59 215 179 59 224 224 224 228 196 72 236 236 236 210 184 89 249 249 249 250 223 100 251 225 111 217 194 122 233 215 148 246 222 149 253 230 161 186 145 25 200 158 27 251 236 189 209 209 209 205 168 48 218 218 218 208 177 64 0 0 0 0 64 0 32 96 32 96 192 128 32 128 64 32 160 64 32 128 32 64 64 64 96 96 96 128 128 128 32 32 32 32 64 32]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@O0@@?<@A?>@A??@A??@A??@A??@A??@A??@C??@C??@O??@G??@C??@@??@D_>@C>@@A<@@@@@@') ; yourself); yourself]
 ! !
 
+
 !DataBaseSourceCodeManagementSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -346,6 +350,7 @@
       )
 ! !
 
+
 !DataBaseSourceCodeManagementSettingsAppl class methodsFor:'queries'!
 
 managerClass
@@ -356,6 +361,7 @@
     "Created: / 19-04-2011 / 12:46:52 / cg"
 ! !
 
+
 !DataBaseSourceCodeManagementSettingsAppl methodsFor:'actions'!
 
 addModule:module withData:data
@@ -462,6 +468,7 @@
     "Created: / 21-12-2011 / 14:26:08 / cg"
 ! !
 
+
 !DataBaseSourceCodeManagementSettingsAppl methodsFor:'aspects'!
 
 dbNameHolder
@@ -520,6 +527,7 @@
     "Created: / 25-12-2011 / 13:15:10 / cg"
 ! !
 
+
 !DataBaseSourceCodeManagementSettingsAppl methodsFor:'change & update'!
 
 selectedPerModuleDatabaseChanged
@@ -616,6 +624,7 @@
     "Created: / 21-12-2011 / 14:43:11 / cg"
 ! !
 
+
 !DataBaseSourceCodeManagementSettingsAppl methodsFor:'help'!
 
 helpFilename
@@ -624,6 +633,7 @@
     "Modified: / 12-01-2012 / 14:03:04 / cg"
 ! !
 
+
 !DataBaseSourceCodeManagementSettingsAppl methodsFor:'initialization & release'!
 
 initialize
@@ -644,6 +654,7 @@
     "Modified: / 25-12-2011 / 13:23:44 / cg"
 ! !
 
+
 !DataBaseSourceCodeManagementSettingsAppl methodsFor:'queries'!
 
 cvsRootFromCVSRootFileOrNil
@@ -683,6 +694,7 @@
     "Modified: / 10-01-2012 / 00:31:19 / cg"
 ! !
 
+
 !DataBaseSourceCodeManagementSettingsAppl class methodsFor:'documentation'!
 
 version
@@ -691,4 +703,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/DataBaseSourceCodeManagementSettingsAppl.st,v 1.14 2012-03-16 11:17:07 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: DataBaseSourceCodeManagementSettingsAppl.st 7952 2012-03-21 17:50:14Z vranyj1 $'
 ! !
+
--- a/DebugView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/DebugView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -122,6 +122,7 @@
 "
 ! !
 
+
 !DebugView class methodsFor:'initialization'!
 
 initialize
@@ -140,6 +141,7 @@
     self newDebugger
 ! !
 
+
 !DebugView class methodsFor:'cleanup'!
 
 lowSpaceCleanup
@@ -173,6 +175,7 @@
     "
 ! !
 
+
 !DebugView class methodsFor:'defaults'!
 
 defaultIcon
@@ -216,6 +219,7 @@
     "Modified: / 17.11.2001 / 17:31:42 / cg"
 ! !
 
+
 !DebugView class methodsFor:'ignoring halts'!
 
 haltIgnoreInformationFor:haltingMethod atLineNr:lineNrInHaltingMethod
@@ -356,6 +360,7 @@
     Smalltalk changed:#ignoredHalts.
 ! !
 
+
 !DebugView class methodsFor:'instance creation / entering'!
 
 enter
@@ -619,6 +624,7 @@
     "Modified: 4.4.1997 / 16:22:36 / cg"
 ! !
 
+
 !DebugView class methodsFor:'menu specs'!
 
 menuSpec
@@ -1123,6 +1129,7 @@
       )
 ! !
 
+
 !DebugView class methodsFor:'misc'!
 
 interestingContextFrom:aContext
@@ -1382,6 +1389,7 @@
     "Modified: / 08-07-2011 / 13:15:49 / cg"
 ! !
 
+
 !DebugView methodsFor:'basic'!
 
 enableDisableActions
@@ -1418,6 +1426,18 @@
     "Created: / 16.11.2001 / 17:40:51 / cg"
 !
 
+enter
+    "enter a debugger"
+
+    <context: #return>
+
+    ^ self
+        enter:thisContext sender
+        select: nil.
+
+    "Modified: / 28-08-2012 / 21:13:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 enter:aContext select:initialSelectionOrNil
     "enter the debugger - get and display the context, then start an
      exclusive event loop on top of eveything else"
@@ -2143,6 +2163,7 @@
     "Created: / 16.11.2001 / 17:36:18 / cg"
 ! !
 
+
 !DebugView methodsFor:'help'!
 
 flyByHelpDependsOnPositionIn:aView
@@ -2340,6 +2361,7 @@
     "Modified: 4.3.1997 / 01:54:03 / cg"
 ! !
 
+
 !DebugView methodsFor:'initialization & release'!
 
 addToCurrentProject
@@ -3018,6 +3040,7 @@
     "Modified: / 06-07-2006 / 12:43:19 / cg"
 ! !
 
+
 !DebugView methodsFor:'interrupt handling'!
 
 contextInterrupt
@@ -3677,6 +3700,7 @@
     "Modified: / 20-07-2012 / 15:26:26 / cg"
 ! !
 
+
 !DebugView methodsFor:'menu & button actions'!
 
 addBrowserBookmark
@@ -5079,6 +5103,7 @@
     "Modified: / 19-07-2012 / 11:53:30 / cg"
 ! !
 
+
 !DebugView methodsFor:'menu & button actions-breakpoints'!
 
 addBreakpoint
@@ -5313,6 +5338,7 @@
     self class stopIgnoringHalts
 ! !
 
+
 !DebugView methodsFor:'private'!
 
 abortAllIsHandled
@@ -5765,6 +5791,7 @@
     "Modified: / 18-01-2011 / 17:57:34 / cg"
 ! !
 
+
 !DebugView methodsFor:'private queries'!
 
 canBrowseClassHierarchy
@@ -5888,6 +5915,7 @@
     setOfHiddenCallingSelectors := aCollectionOfSymbols
 ! !
 
+
 !DebugView methodsFor:'private-breakpoints'!
 
 addIgnoredHaltForCount:countOrNil orTimeDuration:dTOrNil orUntilShiftKey:untilShiftKey forAll:aBoolean
@@ -5969,6 +5997,7 @@
     "Created: / 17.11.2001 / 18:20:16 / cg"
 ! !
 
+
 !DebugView methodsFor:'private-cache handling'!
 
 cacheMyself
@@ -6039,6 +6068,7 @@
     "Modified: 31.7.1997 / 21:20:11 / cg"
 ! !
 
+
 !DebugView methodsFor:'private-code view'!
 
 codeAspect
@@ -6048,6 +6078,7 @@
     "Modified: / 27-07-2012 / 22:20:27 / cg"
 ! !
 
+
 !DebugView methodsFor:'private-context handling'!
 
 contextListEntryFor:aContext
@@ -6822,6 +6853,7 @@
     "Modified: / 27-07-2012 / 17:26:54 / cg"
 ! !
 
+
 !DebugView methodsFor:'private-control loop'!
 
 controlLoop
@@ -7031,6 +7063,7 @@
     "Modified: / 26-09-2012 / 15:03:39 / cg"
 ! !
 
+
 !DebugView methodsFor:'user interaction'!
 
 checkIfCodeIsReallyModified
@@ -7882,6 +7915,7 @@
     "Modified: / 23-07-2012 / 12:23:49 / cg"
 ! !
 
+
 !DebugView::IgnoredHaltOrBreakpoint methodsFor:'accessing'!
 
 ignoreCount:something
@@ -7898,6 +7932,7 @@
     "Created: / 27-01-2012 / 11:35:23 / cg"
 ! !
 
+
 !DebugView::IgnoredHaltOrBreakpoint methodsFor:'misc'!
 
 decrementIgnoreCount
@@ -7908,6 +7943,7 @@
     ]
 ! !
 
+
 !DebugView::IgnoredHaltOrBreakpoint methodsFor:'printing'!
 
 printConditionOn:aStream
@@ -7935,6 +7971,7 @@
     "Created: / 06-03-2012 / 12:41:10 / cg"
 ! !
 
+
 !DebugView::IgnoredHaltOrBreakpoint methodsFor:'queries'!
 
 haltIgnoredInfoString
@@ -8011,6 +8048,7 @@
     "Modified: / 27-01-2012 / 11:36:01 / cg"
 ! !
 
+
 !DebugView::IgnoredHalt methodsFor:'accessing'!
 
 method
@@ -8046,6 +8084,7 @@
     "Modified: / 08-05-2011 / 10:28:41 / cg"
 ! !
 
+
 !DebugView::IgnoredHalt methodsFor:'printing'!
 
 printOn:aStream
@@ -8067,6 +8106,7 @@
     "Modified: / 27-07-2012 / 23:04:42 / cg"
 ! !
 
+
 !DebugView::IgnoredHalt methodsFor:'queries'!
 
 isActive
@@ -8096,6 +8136,7 @@
     ^ self isHaltIgnored
 ! !
 
+
 !DebugView::IgnoredBreakpoint methodsFor:'accessing'!
 
 parameter
@@ -8106,6 +8147,7 @@
     parameter := something.
 ! !
 
+
 !DebugView::IgnoredBreakpoint methodsFor:'printing'!
 
 printOn:aStream
@@ -8115,6 +8157,7 @@
     "Created: / 06-03-2012 / 12:42:10 / cg"
 ! !
 
+
 !DebugView::IgnoredBreakpoint methodsFor:'queries'!
 
 isForBreakpointWithParameter
@@ -8129,6 +8172,7 @@
     "Created: / 06-03-2012 / 14:36:21 / cg"
 ! !
 
+
 !DebugView class methodsFor:'documentation'!
 
 version
--- a/DictionaryInspectorView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/DictionaryInspectorView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -44,6 +44,7 @@
 "
 ! !
 
+
 !DictionaryInspectorView methodsFor:'event handling'!
 
 keyPress:key x:x y:y
@@ -63,6 +64,7 @@
     super keyPress:key x:x y:y
 ! !
 
+
 !DictionaryInspectorView methodsFor:'initialization & release'!
 
 initialize
@@ -78,6 +80,7 @@
     hideNilValues := false.
 ! !
 
+
 !DictionaryInspectorView methodsFor:'menu'!
 
 fieldMenu
@@ -236,6 +239,7 @@
     "Modified: / 26-09-2012 / 13:20:59 / cg"
 ! !
 
+
 !DictionaryInspectorView methodsFor:'menu actions'!
 
 browse
@@ -381,6 +385,7 @@
     ]
 ! !
 
+
 !DictionaryInspectorView methodsFor:'private'!
 
 allNumericKeys
@@ -534,11 +539,12 @@
     ].
     ^ keyList
         keysAndValuesCollect:[:idx :nm |
-            self listEntryForName:nm value:(object at:(indexList at:idx))
+            self listEntryForName:nm value:(self indexedValueAtIndex:idx)
         ].
     "/ ^ keyList
 
     "Modified: / 26-09-2012 / 13:22:08 / cg"
+    "Modified: / 06-07-2012 / 10:36:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 instVarIndexForLine:lineNr
@@ -641,6 +647,7 @@
     ].
 ! !
 
+
 !DictionaryInspectorView methodsFor:'user interaction'!
 
 indexedValueAtIndex:idx
@@ -658,6 +665,7 @@
     inspectedObject at:key put:newValue.
 ! !
 
+
 !DictionaryInspectorView class methodsFor:'documentation'!
 
 version
@@ -666,5 +674,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/DictionaryInspectorView.st,v 1.78 2013-01-17 10:48:34 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: DictionaryInspectorView.st 8059 2012-09-27 20:08:20Z vranyj1 $'
 ! !
 
--- a/Diff.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Diff.st	Wed Jan 30 11:15:09 2013 +0000
@@ -257,6 +257,7 @@
 "
 ! !
 
+
 !Diff class methodsFor:'instance creation'!
 
 new
@@ -265,6 +266,7 @@
     ^ self basicNew initialize.
 ! !
 
+
 !Diff class methodsFor:'diffing'!
 
 between: a and: b 
@@ -283,6 +285,7 @@
     "Created: / 16-02-2010 / 23:04:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !Diff methodsFor:'diffing'!
 
 a:gA b:gB 
@@ -376,6 +379,7 @@
     "Modified: / 12-02-2010 / 13:57:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !Diff methodsFor:'initialization'!
 
 initialize
@@ -395,6 +399,7 @@
     "Modified: / 16-02-2010 / 22:51:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !Diff methodsFor:'private'!
 
 compareseq:gXoff xlim:gXlim yoff:gYoff ylim:gYlim
@@ -693,6 +698,7 @@
     second shiftBoundaries:first.
 ! !
 
+
 !Diff::Change class methodsFor:'documentation'!
 
 documentation
@@ -710,6 +716,7 @@
 "
 ! !
 
+
 !Diff::Change methodsFor:'accessing'!
 
 deleted
@@ -732,6 +739,7 @@
     ^ line1
 ! !
 
+
 !Diff::Change methodsFor:'enumerating'!
 
 do: aBlock
@@ -745,6 +753,7 @@
     "Created: / 16-02-2010 / 22:53:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !Diff::Change methodsFor:'instance creation'!
 
 newLine0:aLine0 line1:aLine1 deleted:aDeleted inserted:aInserted next: nextChange 
@@ -765,6 +774,7 @@
     "Modified: / 12-02-2010 / 13:42:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !Diff::Data methodsFor:'accessing'!
 
 bufferedLines
@@ -787,6 +797,7 @@
     ^ undiscarded
 ! !
 
+
 !Diff::Data methodsFor:'default'!
 
 clear
@@ -1173,6 +1184,7 @@
     ].
 ! !
 
+
 !Diff::ForwardScript methodsFor:'default'!
 
 buildScript:aChanged0 length0:aLen0 changed1:aChanged1 length1:aLen1 
@@ -1206,6 +1218,7 @@
     "Modified: / 16-02-2010 / 22:49:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !Diff::ReverseScript methodsFor:'default'!
 
 buildScript:aChanged0 length0:aLen0 changed1:aChanged1 length1:aLen1 
@@ -1239,6 +1252,7 @@
     "Modified: / 12-02-2010 / 14:15:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !Diff class methodsFor:'documentation'!
 
 version_CVS
@@ -1248,3 +1262,4 @@
 version_SVN
     ^ '§Id: Diff.st 7567 2010-04-17 10:59:53Z vranyj1 §'
 ! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Diff2.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,830 @@
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+"
+"{ Package: 'stx:libtool' }"
+
+Object subclass:#Diff2
+	instanceVariableNames:'file1 file2'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Collections-Sequenceable-Diff2'
+!
+
+Object subclass:#Chunk
+	instanceVariableNames:'offset length'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:Diff2
+!
+
+Diff2 subclass:#HuntMcilroy
+	instanceVariableNames:'lcs'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:Diff2
+!
+
+Object subclass:#Candidate
+	instanceVariableNames:'file1index file2index chain'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:Diff2::HuntMcilroy
+!
+
+Diff2 subclass:#MyersUkkonen
+	instanceVariableNames:'lcs'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:Diff2
+!
+
+Object subclass:#Patch
+	instanceVariableNames:'chunks snippets'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:Diff2
+!
+
+Diff2 comment:'Generic diff/comm utilities. Agnostic as to the longestCommonSubsequence algorithm used.

Instance Variables
	file1:		<SequenceableCollection> One of the two files to compare.
	file2:		<SequenceableCollection> The other of the files to compare.

-- 
Copyright (c) 2008 Tony Garnock-Jones <tonyg@lshift.net>
Copyright (c) 2008 LShift Ltd. <query@lshift.net>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,including without limitation the rights to use, copy, modify, merge,publish, distribute, sublicense, and/or sell copies of the Software,and to permit persons to whom the Software is furnished to do so,subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
'
+!
+
+!Diff2 class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+"
+!
+
+documentation
+"
+Generic diff/comm utilities. Agnostic as to the longestCommonSubsequence algorithm used.
+
+Instance Variables
+        file1:          <SequenceableCollection> One of the two files to compare.
+        file2:          <SequenceableCollection> The other of the files to compare.
+
+    [author:]
+        Tony Garnock-Jones <tonyg@lshift.com>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!Diff2 class methodsFor:'instance creation'!
+
+new
+    "I'm abstract, so instantiate some default here"
+
+    ^self == Diff2 ifTrue:[
+        HuntMcilroy new
+    ] ifFalse:[
+        self basicNew initialize
+    ]
+
+    "Created: / 16-03-2012 / 20:16:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff2 class methodsFor:'accessing'!
+
+HuntMcilroy
+
+    ^HuntMcilroy
+
+    "Created: / 16-03-2012 / 18:54:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+MyersUkkonen
+
+    ^MyersUkkonen
+
+    "Created: / 16-03-2012 / 18:54:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff2 methodsFor:'accessing'!
+
+file1
+	^ file1
+!
+
+file1: anObject
+	file1 := anObject.
+	self emptyCaches.
+!
+
+file2
+	^ file2
+!
+
+file2: anObject
+	file2 := anObject.
+	self emptyCaches.
+! !
+
+!Diff2 methodsFor:'diffing'!
+
+comm
+	"Returns a collection of similarities and differences between the two files. Each entry in the resulting collection is either (#common -> {...}) or (#different -> ({...} -> {...}))."
+	| result common p1 p2 |
+	result := OrderedCollection new.
+	p1 := 0.
+	p2 := 0.
+	common := OrderedCollection new.
+	self longestCommonSubsequence do: [:entry |
+		common := self maybeAddCommonBlock: common to: result
+						p1: p1 p2: p2 limit1: entry key limit2: entry value.
+		common add: (self file1 at: entry key).
+		p1 := entry key.
+		p2 := entry value.].
+	common := self maybeAddCommonBlock: common to: result
+					p1: p1 p2: p2 limit1: file1 size + 1 limit2: file2 size + 1.
+	self addCommonBlock: common ifNonEmptyTo: result.
+	^ result asArray
+!
+
+diff
+        "Returns a DiffPatch instance that can be used in future to transform file1 into file2."
+        | p |
+        p := Diff2::Patch new.
+        p initChunks: self diffIndices file1: file1 file2: file2.
+        ^ p
+
+    "Modified: / 16-03-2012 / 19:16:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+diffIndices
+	"Returns a collection of (DiffChunk -> DiffChunk) associations mapping differing regions of file1 and file2 onto each other."
+	| result p1 p2 |
+	result := OrderedCollection new.
+	p1 := 0.
+	p2 := 0.
+	self longestCommonSubsequence do: [:entry |
+		self maybeAddDiffChunkTo: result p1: p1 p2: p2 limit1: entry key limit2: entry value.
+		p1 := entry key.
+		p2 := entry value.].
+	self maybeAddDiffChunkTo: result p1: p1 p2: p2 limit1: file1 size + 1 limit2: file2 size + 1.
+	^ result asArray
+!
+
+longestCommonSubsequence
+	"The longestCommonSubsequence (LCS) algorithm is at the heart of a diff/comm algorithm."
+	self subclassResponsibility.
+! !
+
+!Diff2 methodsFor:'private'!
+
+addCommonBlock: aSubCollection ifNonEmptyTo: aCollection
+	^ aSubCollection isEmpty
+		ifFalse: [aCollection add: #common -> aSubCollection asArray. OrderedCollection new]
+		ifTrue: [aSubCollection]
+!
+
+emptyCaches
+	"Subclasses should implement this to clear any cached state they may have built up."
+!
+
+maybeAddCommonBlock: common to: result p1: p1 p2: p2 limit1: limit1 limit2: limit2
+	"For internal use by comm."
+	((p1 + 1 ~= limit1) or: [p2 + 1 ~= limit2])
+			ifTrue: [| newCommon |
+					newCommon := self addCommonBlock: common ifNonEmptyTo: result.
+					result add: #different -> ((file1 copyFrom: p1 + 1 to: limit1 - 1) ->
+											(file2 copyFrom: p2 + 1 to: limit2 - 1)).
+					^ newCommon]
+			ifFalse: [^ common].
+!
+
+maybeAddDiffChunkTo: result p1: p1 p2: p2 limit1: limit1 limit2: limit2
+        "For internal use by diffIndices."
+        ((p1 + 1 ~= limit1) or: [p2 + 1 ~= limit2])
+                        ifTrue: [result add: ((Diff2::Chunk offset: p1 + 1 length: limit1 - p1 - 1) ->
+                                                                (Diff2::Chunk offset: p2 + 1 length: limit2 - p2 - 1))].
+
+    "Modified: / 16-03-2012 / 19:13:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff2::Chunk class methodsFor:'as yet unclassified'!
+
+negativeSize: s
+	"Returns a pseudo-chunk with *negative* length, useful as a kind of zero for destructiveMergeWith: operations intended to build up coverage over some set of chunks."
+	^ self new offset: s + 1; length: s negated
+!
+
+offset: o length: l
+	^ self new offset: o; length: l
+! !
+
+!Diff2::Chunk class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+"
+!
+
+documentation
+"
+A DiffChunk represents a span of items within a collection (e.g. a collection of lines representing a text file).
+
+Instance Variables
+        length:                 <Integer> Count of lines within the chunk; 0 is permitted
+        offset:                 <Integer> Index of first line within the chunk; 1-based
+
+    [author:]
+        Tony Garnock-Jones <tonyg@lshift.com>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!Diff2::Chunk methodsFor:'accessing'!
+
+correctForSkewFrom: smallerChunk to: biggerChunk
+	"Given a biggerChunk that definitely contains smallerChunk but might have an extra head or tail, updates the receiver to include such an extra head or tail."
+	| headSize tailSize |
+	headSize := smallerChunk offset - biggerChunk offset.
+	tailSize := biggerChunk lastIndex - smallerChunk lastIndex.
+	offset := offset - headSize.
+	length := length + headSize + tailSize.
+!
+
+destructiveMergeWith: aChunk
+	| newLastIndex |
+	newLastIndex := self lastIndex max: aChunk lastIndex.
+	offset := offset min: aChunk offset.
+	length := newLastIndex - offset + 1.
+!
+
+lastIndex
+	"Returns the rightmost index contained in my range. (Offset is the leftmost index.) If my length is zero, will return an index lower than my offset."
+	^ offset + length - 1
+!
+
+length
+	^ length
+!
+
+length: anObject
+	length := anObject
+!
+
+offset
+	^ offset
+!
+
+offset: anObject
+	offset := anObject
+!
+
+printOn: aStream
+	aStream
+		nextPut: $(;
+		nextPutAll: self class name;
+		nextPutAll: ' offset: ';
+		nextPutAll: self offset asString;
+		nextPutAll: ' length: ';
+		nextPutAll: self length asString;
+		nextPut: $).
+! !
+
+!Diff2::Chunk methodsFor:'as yet unclassified'!
+
+extractFrom: aCollection
+	"Extracts a subcollection from aCollection corresponding to my offset and length."
+	^ aCollection copyFrom: offset to: offset + length - 1.
+!
+
+extractSafeFrom: aCollection
+    "Extracts a subcollection from aCollection corresponding to my offset and length.
+     Returns nil if extraction fails (out of bounds)"
+    ^((offset <= aCollection size) and:[(offset + length - 1) <= aCollection size]) ifTrue:[
+        aCollection copyFrom: offset to: offset + length - 1
+    ] ifFalse:[
+        nil
+    ].
+
+    "Created: / 06-04-2012 / 12:37:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff2::Chunk methodsFor:'comparing'!
+
+< aDiffChunk
+	"Used to sort changed chunks during three-way merge; see Diff3"
+	^ self offset < aDiffChunk offset
+!
+
+= otherChunk
+        ^ (otherChunk isKindOf: Diff2::Chunk) and:
+        [(self offset = otherChunk offset) and:
+        [(self length = otherChunk length)]]
+
+    "Modified: / 16-03-2012 / 19:13:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff2::HuntMcilroy class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+"
+!
+
+documentation
+"
+A HuntMcilroyDiff provides a longestCommonSubsequence algorithm following Hunt and McIlroy 1976 for use by the methods on GenericDiff.
+
+J. W. Hunt and M. D. McIlroy, An algorithm for differential file comparison, Bell Telephone Laboratories CSTR #41 (1976).
+http://www.cs.dartmouth.edu/~doug/
+
+Instance Variables
+        lcs:            cached longest common subsequence
+
+    [author:]
+        Tony Garnock-Jones <tonyg@lshift.com>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!Diff2::HuntMcilroy methodsFor:'accessing'!
+
+emptyCaches
+	lcs := nil.
+! !
+
+!Diff2::HuntMcilroy methodsFor:'diffing'!
+
+longestCommonSubsequence
+        | equivalenceClasses candidates |
+        lcs ifNotNil: [ ^ lcs ].
+        equivalenceClasses := self computeEquivalenceClasses.
+        candidates := OrderedCollection with: (Candidate new 
+                        file1index: 0
+                        file2index: 0
+                        chain: nil).
+        file1 withIndexDo: 
+                [ :line :file1index | 
+                self 
+                        mergeCandidates: candidates
+                        file1index: file1index
+                        file2indices: (equivalenceClasses 
+                                        at: line
+                                        ifAbsent: #()) ].
+        lcs := self postprocessCandidateChain: candidates.
+        ^ lcs
+
+    "Modified: / 16-03-2012 / 19:14:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff2::HuntMcilroy methodsFor:'private'!
+
+computeEquivalenceClasses
+	| result |
+	result := Dictionary new.
+	file2 withIndexDo: 
+		[ :line :index | 
+		(result 
+			at: line
+			ifAbsentPut: [ OrderedCollection new ]) add: index ].
+	^ result
+!
+
+findCandidateFrom: candidates forLine: file2index startingAt: lowIndex
+	"Find the index k in the given subrange of candidates where file2index falls strictly between the file2indexes of the kth and k+1th candidates. If no such k exists, return 0."
+	(lowIndex to: candidates size) do: [ :k |
+		(candidates at: k) file2index >= file2index ifTrue: [^ 0].
+		(k = candidates size or: [ (candidates at: k + 1) file2index > file2index ])
+			ifTrue: [^ k] ].
+	^ 0
+!
+
+mergeCandidates: candidates file1index: file1index file2indices: file2indices 
+        | r c s newCandidate |
+        r := 1.
+        c := candidates at: r.
+        file2indices do: 
+                [ :file2index | 
+                s := self findCandidateFrom: candidates forLine: file2index startingAt: r.
+                s > 0 ifTrue: 
+                        [ newCandidate := Candidate new   
+                                file1index: file1index
+                                file2index: file2index
+                                chain: (candidates at: s).
+                        self storeCandidate: c at: r in: candidates.
+                        c := newCandidate.
+                        r := s + 1.
+                        "optimise by leaving early if s was the end of the candidates list, since none of the subsequent file2indices will have a place to go"
+                        s = candidates size ifTrue: 
+                                [ self storeCandidate: c at: r in: candidates. ^ self ] ] ].
+        self storeCandidate: c at: r in: candidates.
+
+    "Modified (format): / 16-03-2012 / 19:08:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+postprocessCandidateChain: candidates 
+	| result c |
+	result := OrderedCollection new.
+	c := candidates at: candidates size.
+	[ c chain notNil ] whileTrue: 
+		[ result add: c file1index -> c file2index.
+		c := c chain ].
+	^ result reversed.
+!
+
+storeCandidate: c at: r in: candidates
+	r > candidates size ifTrue: [candidates add: c] ifFalse: [candidates at: r put: c].
+! !
+
+!Diff2::HuntMcilroy::Candidate class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+"
+!
+
+documentation
+"
+HuntMcilroyDiffCandidate is used internally by HuntMcilroyDiff.
+
+    [author:]
+        Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
+
+    [instance variables:]
+        chain:                  Link to next candidate in chain.
+        file1index:             Position in file1.
+        file2index:             Position in file2.
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!Diff2::HuntMcilroy::Candidate methodsFor:'accessing'!
+
+chain
+	^ chain
+!
+
+file1index
+	^ file1index
+!
+
+file2index
+	^ file2index
+! !
+
+!Diff2::HuntMcilroy::Candidate methodsFor:'as yet unclassified'!
+
+file1index: f1 file2index: f2 chain: c
+	file1index := f1.
+	file2index := f2.
+	chain := c.
+! !
+
+!Diff2::MyersUkkonen class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+"
+!
+
+documentation
+"
+I implement a modified version of Myers' greedy lcs algorithm described in http://xmailserver.org/diff2.pdf. A similar version written in C can be found here http://research.janelia.org/myers/Papers/file.comparison.pdf. Ukkonen's version can be found here http://www.cs.helsinki.fi/u/ukkonen/InfCont85.PDF.
+
+    [author:]
+        Tony Garnock-Jones <tonyg@lshift.com>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!Diff2::MyersUkkonen methodsFor:'accessing'!
+
+emptyCaches
+
+	lcs := nil
+! !
+
+!Diff2::MyersUkkonen methodsFor:'diffing'!
+
+longestCommonSubsequence
+	
+	^lcs ifNil: [ 
+		lcs := (Array streamContents: [ :stream |
+			| list |
+			list := self calculateLcs.
+			[ list == nil ] whileFalse: [
+				stream nextPut: (list at: 1) -> (list at: 2).
+				list := list at: 3 ] ]) reverse ]
+! !
+
+!Diff2::MyersUkkonen methodsFor:'private'!
+
+calculateLcs
+	"I find one of the longest common subsequences of my the arguments. I assume that none of my arguments are empty. I return nil or an Array which represents a list. The first two elements are the matching line numbers, the last is the next node in the list or nil if there are no more elements. The list containts the longest common subsequence. I'm a modified version of the greedy lcs algorithm from the 6th page of 'An O(ND) Difference Algorithm and Its Variations (1986)' by Eugene W. Myers"
+
+    | n m v lcss max |
+    n := file1 size.
+    m := file2 size.
+    max := m + n.
+    v := Array new: 2 * max + 1.
+    v at: max + 2 put: 0.
+    lcss := Array new: 2 * max + 1.
+    0 to: max do: [ :d |
+	d negated to: d by: 2 do: [ :k |
+	    | index chain x y |
+	    (k + d = 0 or: [ k ~= d and: [ (v at: max + k ) < (v at: max + k + 2) ] ])
+				ifTrue: [ 
+					index := max + k + 2.
+					x := v at: index ]
+				ifFalse: [ 
+					index := max + k.
+					x := (v at: index) + 1 ].
+			chain := lcss at: index.
+			y := x - k.
+			[ x < n and: [ y < m and: [ (file1 at: x + 1) = (file2 at: y + 1) ] ] ] whileTrue: [
+			    chain := Array with: (x := x + 1) with: (y := y + 1) with: chain.
+			].
+			(x >= n and: [ y >= m ]) ifTrue: [
+				^chain ].
+			v at: max + k + 1 put: x.
+			lcss at: max + k + 1 put: chain ] ].
+	self error
+! !
+
+!Diff2::Patch class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+"
+!
+
+documentation
+"
+    A DiffPatch has a collection of DiffChunks, and a collection of corresponding 
+    SequenceableCollection snippets. It can be used to patch a file (= SequenceableCollection) 
+    forwards or backwards.
+
+
+    [author:]
+        Tony Garnock-Jones <tonyg@lshift.com>
+
+    [instance variables:]
+        chunks:         <SequenceableCollection of DiffChunk->DiffChunk>
+        snippets:       <SequenceableCollection of SequenceableCollection->SequenceableCollection>
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!Diff2::Patch methodsFor:'accessing'!
+
+applyTo: file
+	"Applies this patch to the given collection. Makes no sanity checks on the contents of the collection - simply blindly applies the chunks and snippets to its argument."
+	| result commonOffset |
+	result := OrderedCollection new.
+	commonOffset := 1.
+	chunks with: snippets do: [:chunk :snippet |
+		result addAll: (file copyFrom: commonOffset to: chunk key offset - 1).
+		result addAll: (snippet value).
+		commonOffset := chunk key offset + chunk key length].
+	result addAll: (file copyFrom: commonOffset to: file size).
+	^ result as: file species.
+! !
+
+!Diff2::Patch methodsFor:'as yet unclassified'!
+
+initChunks: c file1: f1 file2: f2
+	chunks := c.
+	snippets := c collect: [:entry | (entry key extractFrom: f1) -> (entry value extractFrom: f2)].
+! !
+
+!Diff2::Patch methodsFor:'selecting'!
+
+invert
+	"Causes this patch to invert itself; if previously it represented the changes from file1 to file2, after being sent #invert, it will represent the changes from file2 to file1. After inversion, calling #applyTo: on file2 will yield file1, rather than the other way around."
+	chunks do: [:entry | entry key: entry value value: entry key].
+	snippets do: [:entry | entry key: entry value value: entry key].
+! !
+
+!Diff2 class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: Diff2.st 7973 2012-04-06 15:56:16Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Diff3.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,826 @@
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+"
+"{ Package: 'stx:libtool' }"
+
+Object subclass:#Diff3
+	instanceVariableNames:'file1 file0 file2 diffClass'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Collections-Sequenceable-Diff3'
+!
+
+Object subclass:#Chunk
+	instanceVariableNames:'offset length side'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:Diff3
+!
+
+Object subclass:#Conflict
+	instanceVariableNames:'left original right'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:Diff3
+!
+
+Diff3 comment:'Diff3 provides a three-way-merge algorithm suitable for performing textual merges, such as are often required as part of source-code version control systems.

Instance Variables
	diffClass:	<Class> Should be a subclass of GenericDiff. Used to resolve changes.
	file0:		<SequenceableCollection> The ancestral file.
	file1:		<SequenceableCollection> The left branch.
	file2:		<SequenceableCollection> The right branch.

-- 
Copyright (c) 2008 Tony Garnock-Jones <tonyg@lshift.net>
Copyright (c) 2008 LShift Ltd. <query@lshift.net>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,including without limitation the rights to use, copy, modify, merge,publish, distribute, sublicense, and/or sell copies of the Software,and to permit persons to whom the Software is furnished to do so,subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
'
+!
+
+!Diff3 class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+"
+!
+
+documentation
+"
+Diff3 provides a three-way-merge algorithm suitable for performing textual merges, such as are often required as part of source-code version control systems.
+
+Instance Variables
+        diffClass:      <Class> Should be a subclass of GenericDiff. Used to resolve changes.
+        file0:          <SequenceableCollection> The ancestral file.
+        file1:          <SequenceableCollection> The left branch.
+        file2:          <SequenceableCollection> The right branch.
+
+    [author:]
+        Tony Garnock-Jones <tonyg@lshift.com>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!Diff3 methodsFor:'accessing'!
+
+diffClass
+    ^ diffClass ? Diff2::HuntMcilroy
+
+    "Modified (format): / 16-03-2012 / 20:27:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+diffClass: anObject
+	diffClass := anObject
+!
+
+file0
+	^ file0
+!
+
+file0: anObject
+	file0 := anObject
+!
+
+file1
+	^ file1
+!
+
+file1: anObject
+	file1 := anObject
+!
+
+file2
+	^ file2
+!
+
+file2: anObject
+	file2 := anObject
+!
+
+fileAt: side
+    "Given a side (#left, #original or #right), returns the
+    corresponding file"
+
+    side == #left       ifTrue:[ ^ file1 ].
+    side == #original   ifTrue:[ ^ file0 ].
+    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'!
+
+diffIndices
+    "Returns an Array of Diff3Chunks (representing clean merges) or Diff3Conflicts 
+     (containing DiffChunks, representing conflicts), together representing the 
+     results of a three-way merge between file1/file0/file2. Does not detect 
+     'false conflicts', and can return two Diff3Chunks next to each other in 
+     the result."
+
+    | result commonOffset hunks lastOverlapHunkIndex hunk firstHunkIndex |
+
+    hunks := self computeHunks.
+    result := OrderedCollection new.
+    commonOffset := 1.
+    firstHunkIndex := 1.
+    [firstHunkIndex <= hunks size] whileTrue: [
+        | conflict |
+
+        hunk := hunks at: firstHunkIndex.
+        self addCommonChunkTo: result between: commonOffset and: hunk oldChunk offset.
+        lastOverlapHunkIndex := self findOverlapStartingAt: firstHunkIndex in: hunks.
+
+        (firstHunkIndex = lastOverlapHunkIndex)"false" ifTrue: [
+            conflict := self computeConflictFromCleanMerge: hunk.
+            result add: conflict.
+            commonOffset := (hunks at: lastOverlapHunkIndex) oldChunk lastIndex + 1.
+        ] ifFalse: [ 
+
+            conflict := self computeConflictFrom: firstHunkIndex
+                                            to: lastOverlapHunkIndex
+                                            hunks: hunks.
+            result add: conflict.
+            commonOffset := conflict original lastIndex + 1.
+        ].
+
+        firstHunkIndex := lastOverlapHunkIndex + 1
+    ].
+    self addCommonChunkTo: result between: commonOffset and: file0 size + 1.
+    ^ result asArray
+
+    "Created: / 20-03-2012 / 18:27:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+merge
+    "Returns an Array of (#ok -> {...}) or (#conflict -> Diff3Conflict 
+     of collections) instances representing the results of a three-way 
+     merge between file1/file0/file2. Does not optimistically treat 
+     'false conflicts' as clean merges (see the class comment for 
+     Diff3InclusiveVisitor)."
+
+    ^ self merge: false
+
+    "Modified (comment): / 16-03-2012 / 20:26:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mergeClean
+    "Returns an Array of (#ok -> {...}) or (#conflict -> Diff3Conflict of 
+     collections) instances representing the results of a three-way merge 
+     between file1/file0/file2. Optimistically treats 'false conflicts' 
+     as clean merges (see the class comment for Diff3ExclusiveVisitor)."
+
+    ^ self merge: true
+
+    "Modified (format): / 16-03-2012 / 20:26:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mergeIndices
+    "Returns an Array of Diff3Chunks (representing clean merges) or Diff3Conflicts 
+     (containing DiffChunks, representing conflicts), together representing the 
+     results of a three-way merge between file1/file0/file2. Does not detect 
+     'false conflicts', and can return two Diff3Chunks next to each other in 
+     the result."
+
+    ^self mergeIndicesDiscardEmpty: true
+
+    "Modified: / 09-04-2012 / 16:26:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mergeIndicesDiscardEmpty: discardEmpty
+    "Returns an Array of Diff3Chunks (representing clean merges) or Diff3Conflicts 
+     (containing DiffChunks, representing conflicts), together representing the 
+     results of a three-way merge between file1/file0/file2. Does not detect 
+     'false conflicts', and can return two Diff3Chunks next to each other in 
+     the result.
+
+    If discard empty is true, empty clean merge chunks are not included
+     "
+
+    | result commonOffset hunks lastOverlapHunkIndex hunk firstHunkIndex |
+
+    hunks := self computeHunks.
+    result := OrderedCollection new.
+    commonOffset := 1.
+    firstHunkIndex := 1.
+    [firstHunkIndex <= hunks size] whileTrue: [
+
+        hunk := hunks at: firstHunkIndex.
+        self addCommonChunkTo: result between: commonOffset and: hunk oldChunk offset.
+        lastOverlapHunkIndex := self findOverlapStartingAt: firstHunkIndex in: hunks.
+
+        (firstHunkIndex = lastOverlapHunkIndex) ifTrue: [
+            (discardEmpty and:[hunk newChunk length == 0]) ifTrue:[
+                "/Empty chunk...
+            ] ifFalse:[
+                result add: (Diff3::Chunk side: hunk side chunk: hunk newChunk)
+            ].
+            commonOffset := (hunks at: lastOverlapHunkIndex) oldChunk lastIndex + 1.
+        ] ifFalse: [ 
+            | conflict |
+            conflict := self computeConflictFrom: firstHunkIndex
+                                            to: lastOverlapHunkIndex
+                                            hunks: hunks.
+            result add: conflict.
+            commonOffset := conflict original lastIndex + 1.
+        ].
+
+        firstHunkIndex := lastOverlapHunkIndex + 1
+    ].
+    self addCommonChunkTo: result between: commonOffset and: file0 size + 1.
+    ^ result asArray
+
+    "Created: / 09-04-2012 / 16:25:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff3 methodsFor:'private'!
+
+addCommonChunkTo: result between: commonOffset and: targetOffset
+        targetOffset > commonOffset ifTrue: [
+                result add: (Diff3::Chunk new
+                                                side: #original;
+                                                offset: commonOffset;
+                                                length: targetOffset - commonOffset)].
+        ^ targetOffset
+
+    "Modified: / 16-03-2012 / 19:20:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+computeConflictChunk: side fromCleanMerge: hunk old: old new: new into: conflict
+
+    side == hunk side ifTrue:[
+        conflict at: side put: hunk newChunk.
+        ^self
+    ].
+    "Hmm....we have to compare"
+
+
+    (hunk newChunk extractSafeFrom: (self fileAt: side)) = new ifTrue:[
+        conflict at: side put: hunk newChunk.
+    ] ifFalse:[
+        conflict at: side put: hunk oldChunk.
+    ]
+
+    "Created: / 06-04-2012 / 12:31:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+computeConflictFrom: i1 to: i2 hunks: hunks
+        | hunk conflict l o r lo ro chunk chunkOrig |
+        conflict := Diff3::Conflict new.
+        conflict left: (l := Diff2::Chunk negativeSize: file1 size).
+        conflict original: (o := Diff2::Chunk negativeSize: file0 size).
+        conflict right: (r := Diff2::Chunk negativeSize: file2 size).
+        lo := o copy.
+        ro := o copy.
+
+        i1 to: i2 do: [:index |
+                hunk := hunks at: index.
+                (hunk side = #left)
+                        ifTrue: [chunk := l. chunkOrig := lo.]
+                        ifFalse: [chunk := r. chunkOrig := ro.].
+                o destructiveMergeWith: hunk oldChunk.
+                chunk destructiveMergeWith: hunk newChunk.
+                chunkOrig destructiveMergeWith: hunk oldChunk].
+
+        l correctForSkewFrom: lo to: o.
+        r correctForSkewFrom: ro to: o.
+
+        ^ conflict
+
+    "Modified: / 16-03-2012 / 19:20:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+computeConflictFromCleanMerge: hunk
+    | conflict old new |
+
+    conflict := Conflict new.
+
+    old := hunk oldChunk extractFrom: file0.
+    new := hunk newChunk extractFrom: (self fileAt: hunk side).
+
+    conflict left: old.
+    conflict original: old.
+    conflict right: old.
+    conflict instVarNamed:hunk side put: hunk newChunk.
+
+    ^conflict.
+
+    "Created: / 06-04-2012 / 12:13:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+computeHunks
+        | diff2 diff1 hunks |
+        diff1 := self diffClass new file1: file0; file2: file1; diffIndices.
+        diff2 := self diffClass new file1: file0; file2: file2; diffIndices.
+        hunks := OrderedCollection new.
+        diff1 do: [ :entry | hunks add: (Diff3Hunk side: #left entry: entry) ].
+        diff2 do: [ :entry | hunks add: (Diff3Hunk side: #right entry: entry) ].
+        ^ hunks asSortedCollection:[:a :b|a <= b].
+
+    "Modified: / 16-03-2012 / 20:29:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileMap
+	| files |
+	files := Dictionary new.
+	files at: #left put: file1.
+	files at: #original put: file0.
+	files at: #right put: file2.
+	^ files
+!
+
+findOverlapStartingAt: startIndex in: hunks
+        | nextRegionLhs hunk |
+        nextRegionLhs := (hunks at: startIndex) oldChunk lastIndex + 1.
+        startIndex + 1 to: hunks size do: [:index |
+                hunk := hunks at: index.
+                hunk oldChunk offset > nextRegionLhs ifTrue: [ 
+                    ^ index - 1
+                ].
+                nextRegionLhs := nextRegionLhs max: hunk oldChunk lastIndex + 1
+        ].
+        ^ hunks size.
+
+    "Modified (format): / 20-03-2012 / 18:04:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+merge: excludeFalseConflicts
+	| visitor |
+	visitor := excludeFalseConflicts
+		ifTrue: [Diff3ExclusiveVisitor new]
+		ifFalse: [Diff3InclusiveVisitor new].
+	visitor files: self fileMap.
+	self mergeIndices do: [:each | each accept: visitor].
+	^ visitor result
+! !
+
+!Diff3::Chunk class methodsFor:'as yet unclassified'!
+
+negativeSize: s
+	"Returns a pseudo-chunk with *negative* length, useful as a kind of zero for destructiveMergeWith: operations intended to build up coverage over some set of chunks."
+	^ self new offset: s + 1; length: s negated
+!
+
+offset: o length: l
+	^ self new offset: o; length: l
+!
+
+side: aSelector chunk: aChunk
+	^ self new side: aSelector; offset: aChunk offset; length: aChunk length
+! !
+
+!Diff3::Chunk class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+"
+!
+
+documentation
+"
+A Diff3Chunk is a subclass of DiffChunk that also knows which side of a three-way merge it represents.
+
+Instance Variables
+        side:           <Symbol> One of #left, #original or #right
+
+    [author:]
+        Tony Garnock-Jones <tonyg@lshift.com>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!Diff3::Chunk methodsFor:'accessing'!
+
+correctForSkewFrom: smallerChunk to: biggerChunk
+	"Given a biggerChunk that definitely contains smallerChunk but might have an extra head or tail, updates the receiver to include such an extra head or tail."
+	| headSize tailSize |
+	headSize := smallerChunk offset - biggerChunk offset.
+	tailSize := biggerChunk lastIndex - smallerChunk lastIndex.
+	offset := offset - headSize.
+	length := length + headSize + tailSize.
+!
+
+destructiveMergeWith: aChunk
+	| newLastIndex |
+	newLastIndex := self lastIndex max: aChunk lastIndex.
+	offset := offset min: aChunk offset.
+	length := newLastIndex - offset + 1.
+!
+
+lastIndex
+	"Returns the rightmost index contained in my range. (Offset is the leftmost index.) If my length is zero, will return an index lower than my offset."
+	^ offset + length - 1
+!
+
+length
+	^ length
+!
+
+length: anObject
+	length := anObject
+!
+
+offset
+	^ offset
+!
+
+offset: anObject
+	offset := anObject
+!
+
+side
+	^ side
+!
+
+side: anObject
+	side := anObject
+! !
+
+!Diff3::Chunk methodsFor:'as yet unclassified'!
+
+= otherChunk
+
+        ^ (otherChunk isKindOf: self class) and:
+        [(self offset = otherChunk offset) and:
+        [(self length = otherChunk length)]]
+
+    "Modified: / 16-03-2012 / 19:25:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+accept: aVisitor
+	^ aVisitor side: side chunk: self
+!
+
+extractFrom: aCollection
+	"Extracts a subcollection from aCollection corresponding to my offset and length."
+	^ 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.
+        aStream
+                nextPutAll: ' side: ';
+                nextPutAll: side printString;
+                nextPutAll: ' off: ';
+                nextPutAll: offset printString;
+                nextPutAll: ' len: ';
+                nextPutAll: length printString;
+
+
+                nextPut: $).
+
+    "Modified: / 20-03-2012 / 17:08:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff3::Chunk methodsFor:'comparing'!
+
+< aDiffChunk
+	"Used to sort changed chunks during three-way merge; see Diff3"
+	^ self offset < aDiffChunk offset
+! !
+
+!Diff3::Chunk methodsFor:'testing'!
+
+isChunk
+    ^true
+
+    "Created: / 16-03-2012 / 22:02:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isConflict
+    ^false
+
+    "Created: / 16-03-2012 / 22:02:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff3::Conflict class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+"
+!
+
+documentation
+"
+A Diff3Conflict represents a merge conflict.
+
+Instance Variables
+        left:           Either a SequenceableCollection or a Diff3Chunk representing the left variant.
+        original:       Either a SequenceableCollection or a Diff3Chunk representing the original variant.
+        right:          Either a SequenceableCollection or a Diff3Chunk representing the right variant.
+
+    [author:]
+        Tony Garnock-Jones <tonyg@lshift.com>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!Diff3::Conflict methodsFor:'accessing'!
+
+at: side
+
+    "Given a side (#left, #original or #right), returns the
+    corresponding chunk"
+
+    side == #left       ifTrue:[ ^ left ].
+    side == #original   ifTrue:[ ^ original ].
+    side == #right      ifTrue:[ ^ right ].
+
+    self error:'Invalid parameter, must be one of #left, #original or #right'.
+
+    "Created: / 06-04-2012 / 12:26:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+at: side put: chunk
+
+    "Given a side (#left, #original or #right), sets the
+    corresponding chunk"
+
+    side == #left       ifTrue:[ left := chunk. ^ self].
+    side == #original   ifTrue:[ original := chunk. ^ self ].
+    side == #right      ifTrue:[ right := chunk. ^ self ].
+
+    self error:'Invalid parameter, must be one of #left, #original or #right'.
+
+    "Created: / 06-04-2012 / 12:26:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+left
+	^ left
+!
+
+left: anObject
+	left := anObject
+!
+
+leftAt: index
+
+    ^(index between: 1 and: left size) ifTrue:[
+        left at: index
+    ] ifFalse:[
+        nil
+    ]
+
+    "Created: / 20-03-2012 / 20:48:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+length
+
+    ^left length max: (original length max: right length)
+
+    "Created: / 16-03-2012 / 22:02:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+original
+	^ original
+!
+
+original: anObject
+	original := anObject
+!
+
+originalAt: index
+
+    ^(index between: 1 and: original size) ifTrue:[
+        original at: index
+    ] ifFalse:[
+        nil
+    ]
+
+    "Created: / 20-03-2012 / 20:49:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+right
+	^ right
+!
+
+right: anObject
+	right := anObject
+!
+
+rightAt: index
+
+    ^(index between: 1 and: right size) ifTrue:[
+        right at: index
+    ] ifFalse:[
+        nil
+    ]
+
+    "Created: / 20-03-2012 / 20:48:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff3::Conflict methodsFor:'as yet unclassified'!
+
+= otherConflict
+        ^ (otherConflict isKindOf: Diff3::Conflict) and:
+                [(left = otherConflict left) and:
+                [(original = otherConflict original) and:
+                [(right = otherConflict right)]]]
+
+    "Modified: / 16-03-2012 / 19:20:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+accept: aVisitor
+	^ aVisitor left: left original: original right: right.
+!
+
+printOn: aStream
+	aStream
+		nextPut: $(;
+		nextPutAll: self class name;
+		nextPutAll: ' new left: '.
+	left printOn: aStream.
+	aStream nextPutAll: '; original: '.
+	original printOn: aStream.
+	aStream nextPutAll: '; right: '.
+	right printOn: aStream.
+	aStream nextPut: $).
+! !
+
+!Diff3::Conflict methodsFor:'testing'!
+
+isChunk
+    ^false
+
+    "Created: / 16-03-2012 / 22:03:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isConflict
+    ^true
+
+    "Created: / 16-03-2012 / 22:03:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isInsertionInLeft
+    ^left length > 0
+        and:[original length <= 0
+            and:[right length <= 0]]
+
+    "Created: / 20-03-2012 / 18:37:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isInsertionInOriginal
+    ^original length > 0
+        and:[left length <= 0
+            and:[right length <= 0]]
+
+    "Created: / 20-03-2012 / 18:36:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isInsertionInRight
+    ^right length > 0
+        and:[original length <= 0
+            and:[left length <= 0]]
+
+    "Created: / 20-03-2012 / 18:37:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff3 class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: Diff3.st 7975 2012-04-09 18:34:24Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Diff3ExclusiveVisitor.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,115 @@
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+"
+"{ Package: 'stx:libtool' }"
+
+Diff3InclusiveVisitor subclass:#Diff3ExclusiveVisitor
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Collections-Sequenceable-Diff3'
+!
+
+Diff3ExclusiveVisitor comment:'A Diff3ExclusiveVisitor is used by Diff3 to construct a three-way SequenceableCollection merge that resolves "false conflicts" (a.k.a "accidental clean merges") by accepting the changed text as a non-conflict in the merge result.

-- 
Copyright (c) 2008 Tony Garnock-Jones <tonyg@lshift.net>
Copyright (c) 2008 LShift Ltd. <query@lshift.net>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,including without limitation the rights to use, copy, modify, merge,publish, distribute, sublicense, and/or sell copies of the Software,and to permit persons to whom the Software is furnished to do so,subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
'
+!
+
+!Diff3ExclusiveVisitor class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+"
+!
+
+documentation
+"
+    A Diff3ExclusiveVisitor is used by Diff3 to construct a three-way SequenceableCollection 
+    merge that resolves 'false conflicts' (a.k.a 'accidental clean merges') by accepting the 
+    changed text as a non-conflict in the merge result.
+
+
+    [author:]
+        Tony Garnock-Jones <tonyg@lshift.com>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!Diff3ExclusiveVisitor methodsFor:'as yet unclassified'!
+
+isTrueConflictBetween: left and: right
+	"A conflict is 'false' when, from a particular ancestral snippet, both the left and right branches have changed to have the same contents. In some circumstances this can be treated as a clean merge; in others, it's actually an exception that needs to be dealt with. See http://revctrl.org/AccidentalCleanMerge."
+	left length = right length ifFalse: [^true].
+	(left extractFrom: (files at: #left)) = (right extractFrom: (files at: #right)) ifFalse: [^true].
+	^false
+!
+
+left: left original: original right: right
+	(self isTrueConflictBetween: left and: right)
+		ifTrue: [super left: left original: original right: right]
+		ifFalse: [self side: #left chunk: left]
+! !
+
+!Diff3ExclusiveVisitor class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: Diff3ExclusiveVisitor.st 7927 2012-03-16 19:30:50Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Diff3Hunk.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,157 @@
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+"
+"{ Package: 'stx:libtool' }"
+
+Object subclass:#Diff3Hunk
+	instanceVariableNames:'side oldChunk newChunk'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Collections-Sequenceable-Diff3'
+!
+
+Diff3Hunk comment:'A Diff3Hunk represents a change from the ancestor to either the left or the right branch as part of a three-way merge.

Instance Variables
	newChunk:	<DiffChunk> The new content chunk
	oldChunk:	<DiffChunk> The old (ancestral) content chunk
	side:		<Symbol> Either #left or #right
'
+!
+
+!Diff3Hunk class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+"
+!
+
+documentation
+"
+A Diff3Hunk represents a change from the ancestor to either the left or the right branch as part of a three-way merge.
+
+Instance Variables
+        newChunk:       <DiffChunk> The new content chunk
+        oldChunk:       <DiffChunk> The old (ancestral) content chunk
+        side:           <Symbol> Either #left or #right
+
+    [author:]
+        Tony Garnock-Jones <tonyg@lshift.com>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!Diff3Hunk class methodsFor:'as yet unclassified'!
+
+side: aSelector entry: anAssociation
+	^ self new side: aSelector; oldChunk: anAssociation key; newChunk: anAssociation value
+! !
+
+!Diff3Hunk methodsFor:'accessing'!
+
+newChunk
+	^ newChunk
+!
+
+newChunk: anObject
+	newChunk := anObject
+!
+
+oldChunk
+	^ oldChunk
+!
+
+oldChunk: anObject
+	oldChunk := anObject
+!
+
+side
+	^ side
+!
+
+side: anObject
+	side := anObject
+! !
+
+!Diff3Hunk methodsFor:'comparing'!
+
+<= otherHunk
+	^ (oldChunk < otherHunk oldChunk) or:
+		[(otherHunk oldChunk = oldChunk) and: [side = #left]]
+! !
+
+!Diff3Hunk methodsFor:'printing & storing'!
+
+printOn:aStream
+    "append a printed representation if the receiver to the argument, aStream"
+
+    super printOn:aStream.
+    aStream nextPutAll:' side: '.
+    side printOn:aStream.
+    aStream nextPutAll:' old: '.
+    oldChunk printOn:aStream.
+    aStream nextPutAll:' new: '.
+    newChunk printOn:aStream.
+
+    "Modified: / 20-03-2012 / 17:56:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff3Hunk class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: Diff3Hunk.st 7948 2012-03-21 01:52:35Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Diff3InclusiveVisitor.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,148 @@
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+"
+"{ Package: 'stx:libtool' }"
+
+Object subclass:#Diff3InclusiveVisitor
+	instanceVariableNames:'result okLines files'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Collections-Sequenceable-Diff3'
+!
+
+Diff3InclusiveVisitor comment:'A Diff3InclusiveVisitor is used by Diff3 to construct a three-way SequenceableCollection merge that treats "false conflicts" (a.k.a "accidental clean merges") as true conflicts.

Instance Variables
	files:		Used to extract the elements for each part of the result
	okLines:		Used to buffer up lists of non-conflicting elements
	result:		Accumulator

-- 
Copyright (c) 2008 Tony Garnock-Jones <tonyg@lshift.net>
Copyright (c) 2008 LShift Ltd. <query@lshift.net>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction,including without limitation the rights to use, copy, modify, merge,publish, distribute, sublicense, and/or sell copies of the Software,and to permit persons to whom the Software is furnished to do so,subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
'
+!
+
+!Diff3InclusiveVisitor class methodsFor:'documentation'!
+
+copyright
+"
+ Copyright (c) 2007-2012 Tony Garnock-Jones
+
+ This code is based on Squeak's DiffMerge package
+ written by Tony Garnock-Jones. Original project's web site:
+
+ http://www.squeaksource.com/DiffMerge
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the 'Software'), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+"
+!
+
+documentation
+"
+A Diff3InclusiveVisitor is used by Diff3 to construct a three-way SequenceableCollection merge that treats 'false conflicts' (a.k.a 'accidental clean merges') as true conflicts.
+
+Instance Variables
+        files:          Used to extract the elements for each part of the result
+        okLines:                Used to buffer up lists of non-conflicting elements
+        result:                 Accumulator
+
+    [author:]
+        Tony Garnock-Jones <tonyg@lshift.com>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!Diff3InclusiveVisitor class methodsFor:'instance creation'!
+
+new
+    "return an initialized instance"
+
+    ^ self basicNew initialize.
+! !
+
+!Diff3InclusiveVisitor methodsFor:'as yet unclassified'!
+
+files: aDictionary
+	files := aDictionary
+!
+
+flushOk
+	okLines isEmpty ifFalse: [
+		result add: #ok -> okLines asArray.
+		okLines := OrderedCollection new].
+!
+
+initialize
+	result := OrderedCollection new.
+	okLines := OrderedCollection new.
+!
+
+left: left original: original right: right
+        | c |
+        self flushOk.
+        c := Diff3::Conflict new.
+        c left: (left extractFrom: (files at: #left)).
+        c original: (original extractFrom: (files at: #original)).
+        c right: (right extractFrom: (files at: #right)).
+        result add: #conflict -> c.
+
+    "Modified: / 16-03-2012 / 19:20:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+result
+	self flushOk.
+	^ result asArray
+!
+
+side: aSelector chunk: aChunk
+	okLines addAll: (aChunk extractFrom: (files at: aSelector)).
+! !
+
+!Diff3InclusiveVisitor class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: Diff3InclusiveVisitor.st 7927 2012-03-16 19:30:50Z vranyj1 $'
+! !
--- a/Diff3TextView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Diff3TextView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -59,6 +59,7 @@
 "
 ! !
 
+
 !Diff3TextView class methodsFor:'instance creation'!
 
 openOnMergedText:text label:firstLabel label:secondLabel label:thirdLabel
@@ -99,6 +100,7 @@
     "Modified: 12.12.1995 / 13:09:13 / cg"
 ! !
 
+
 !Diff3TextView class methodsFor:'public helpers'!
 
 emphasizeMergedDiff3Text:mergedText emphasize1:e1 emphasize2:e2 emphasizeSep:e3
@@ -281,6 +283,7 @@
     "Created: / 01-06-2012 / 10:44:31 / cg"
 ! !
 
+
 !Diff3TextView methodsFor:'initialization'!
 
 initStyle
@@ -309,6 +312,7 @@
     "Modified: 12.12.1995 / 12:25:55 / cg"
 ! !
 
+
 !Diff3TextView methodsFor:'private'!
 
 updateListsFromMergedText:mergedText
@@ -434,8 +438,14 @@
     "Modified: 13.12.1995 / 19:56:32 / cg"
 ! !
 
+
 !Diff3TextView class methodsFor:'documentation'!
 
 version
     ^ '$Header: /cvs/stx/stx/libtool/Diff3TextView.st,v 1.9 2012-06-01 10:44:15 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: Diff3TextView.st 8016 2012-07-18 09:57:46Z vranyj1 $'
 ! !
+
--- a/DiffCodeView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/DiffCodeView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -59,5 +59,9 @@
 !DiffCodeView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/DiffCodeView.st,v 1.1 2008-05-05 11:24:27 cg Exp $'
+    ^ '$Id: DiffCodeView.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+!
+
+version_SVN
+    ^ '$Id: DiffCodeView.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/DiffListUtility.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/DiffListUtility.st	Wed Jan 30 11:15:09 2013 +0000
@@ -51,6 +51,7 @@
 "
 ! !
 
+
 !DiffListUtility class methodsFor:'defaults'!
 
 diffCommand
@@ -76,6 +77,7 @@
     DiffCommandTemplate := aCommandTemplateString
 ! !
 
+
 !DiffListUtility class methodsFor:'private'!
 
 saveForDiff:text as:filename
@@ -118,6 +120,7 @@
     "Modified: / 22-10-2008 / 17:52:52 / cg"
 ! !
 
+
 !DiffListUtility class methodsFor:'utilities'!
 
 diffListFor:text1 and:text2
@@ -208,8 +211,14 @@
     "
 ! !
 
+
 !DiffListUtility class methodsFor:'documentation'!
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/DiffListUtility.st,v 1.4 2012-12-12 23:00:48 stefan Exp $'
+!
+
+version_SVN
+    ^ '$Id: DiffListUtility.st 8083 2013-01-14 11:48:37Z vranyj1 $'
 ! !
+
--- a/DiffTextView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/DiffTextView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -583,9 +583,13 @@
 !DiffTextView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/DiffTextView.st,v 1.56 2009-10-10 10:09:23 cg Exp $'
+    ^ '$Id: DiffTextView.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/DiffTextView.st,v 1.56 2009-10-10 10:09:23 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/DiffTextView.st,v 1.56 2009/10/10 10:09:23 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: DiffTextView.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/DirectoryContentsBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/DirectoryContentsBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -72,6 +72,7 @@
 "
 ! !
 
+
 !DirectoryContentsBrowser class methodsFor:'instance creation'!
 
 openIn:aDirectory
@@ -102,6 +103,7 @@
     "
 ! !
 
+
 !DirectoryContentsBrowser class methodsFor:'classAccess'!
 
 itemClass
@@ -114,6 +116,7 @@
 "
 ! !
 
+
 !DirectoryContentsBrowser class methodsFor:'constant'!
 
 updateTaskCyleTime
@@ -131,6 +134,7 @@
     ^ 8
 ! !
 
+
 !DirectoryContentsBrowser class methodsFor:'image specs'!
 
 detailsMenuIconDown
@@ -165,6 +169,7 @@
     ^ DataSetLabel sortIndicator
 ! !
 
+
 !DirectoryContentsBrowser class methodsFor:'interface specs'!
 
 tableColumns
@@ -183,11 +188,14 @@
     ^#(
       (DataSetColumnSpec
          label: ''
+         labelIsImage: true
          labelButtonType: Group
          width: 22
          minWidth: 22
          height: 16
          model: icon
+         menuFromApplication: false
+         printSelector: icon
          canSelect: false
          showRowSeparator: false
          showColSeparator: false
@@ -463,6 +471,7 @@
       )
 ! !
 
+
 !DirectoryContentsBrowser class methodsFor:'menu specs'!
 
 directoryContentsBrowserMenu
@@ -472,6 +481,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:DirectoryContentsBrowser andSelector:#directoryContentsBrowserMenu
      (Menu new fromLiteralArrayEncoding:(DirectoryContentsBrowser directoryContentsBrowserMenu)) startUp
@@ -498,6 +508,15 @@
             label: '-'
           )
          (MenuItem
+            label: 'SourceCodeManagement'
+            translateLabel: true
+            submenuChannel: scmMenuSlice
+            isMenuSlice: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
             label: 'New'
             translateLabel: true
             submenuChannel: newMenu
@@ -677,8 +696,6 @@
         nil
         nil
       )
-
-    "Modified: / 07-02-2007 / 18:44:44 / cg"
 !
 
 viewBrowserMenu
@@ -833,6 +850,7 @@
       )
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'accessing'!
 
 allItems
@@ -1040,6 +1058,7 @@
     ^ updateContentsSelection
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'actions'!
 
 browserItemListAdd:addItemCol remove:remItemCol
@@ -1241,6 +1260,7 @@
     self startDiskUsageInfoProcess.
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'aspects'!
 
 browserItemList
@@ -1251,6 +1271,14 @@
     ^ browserItemList
 !
 
+currentDirectoryDisplayed
+    "Return a directory as Filename that is currently displayed in the browser"
+
+    ^ directory
+
+    "Modified: / 15-01-2013 / 11:42:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 selectionInFileList
 
     selectionInFileList isNil ifTrue:[
@@ -1299,6 +1327,7 @@
     ^ self viewTime
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'aspects-visibility'!
 
 colVisibilityAspectFor:aKey ifAbsent:absentBlock
@@ -1396,6 +1425,7 @@
     ^ self colVisibilityAspectFor:#viewType ifAbsent:[ false asValue ].
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'change & update'!
 
 currentFileNameHolderChanged
@@ -1612,6 +1642,7 @@
     "Modified: / 27-03-2007 / 08:46:28 / cg"
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'drag & drop'!
 
 doStartDrag:aDropSource in:aView
@@ -1641,6 +1672,14 @@
     ^ destinationPath
 !
 
+dropObjects:aCollectionOfDropObjects
+    "drop manager wants to drop.
+     This is ony sent, if #canDrop: returned true.
+     Must be redefined in order for drop to work."
+
+    ^ self shouldImplement
+!
+
 dropOver:aDropContext 
     "called during drag & drop while moving over the widget."
 
@@ -1738,6 +1777,7 @@
                  )
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'event handling'!
 
 processEvent:anEvent
@@ -1809,6 +1849,7 @@
     "Modified: / 25-07-2006 / 09:08:16 / cg"
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'initialization'!
 
 initialize
@@ -1826,6 +1867,7 @@
     "Modified: / 07-01-2012 / 16:34:25 / cg"
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'menu accessing'!
 
 viewBrowserMenu
@@ -1845,6 +1887,7 @@
     ^ menu
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'menu actions'!
 
 doShowFileContents
@@ -1867,6 +1910,7 @@
     ].
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'queries'!
 
 allItemsOfCurrentDirectory
@@ -1895,6 +1939,7 @@
     ^ self allItems size ~~ browserItemList size
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'selection'!
 
 selectAll
@@ -2003,6 +2048,7 @@
     ^ selection.
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'startup & release'!
 
 makeDependent
@@ -2053,6 +2099,7 @@
     ^ super releaseAsSubCanvas.
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'update columns cycle'!
 
 findNextItemFor:aConditionBlock
@@ -2325,6 +2372,7 @@
     "Modified: / 20-03-2012 / 13:05:28 / cg"
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'update task'!
 
 createItemList
@@ -2684,6 +2732,7 @@
     "Modified: / 20-03-2012 / 13:07:22 / cg"
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'update task trigger'!
 
 wakeUp
@@ -2725,6 +2774,7 @@
     self wakeUp.
 ! !
 
+
 !DirectoryContentsBrowser methodsFor:'update task-disk usage'!
 
 diskUsageInKiloBytesFor:aDirectory
@@ -2870,6 +2920,7 @@
         ] fork.
 ! !
 
+
 !DirectoryContentsBrowser::DirectoryContentsItem class methodsFor:'instance creation'!
 
 fileName:aFilename 
@@ -2902,6 +2953,7 @@
     ^ instance
 ! !
 
+
 !DirectoryContentsBrowser::DirectoryContentsItem methodsFor:'accessing'!
 
 fileInfo:something
@@ -3092,6 +3144,7 @@
 
 ! !
 
+
 !DirectoryContentsBrowser::DirectoryContentsItem methodsFor:'actions'!
 
 resetImageFile
@@ -3116,6 +3169,7 @@
     mimeType := nil.
 ! !
 
+
 !DirectoryContentsBrowser::DirectoryContentsItem methodsFor:'change queries'!
 
 hasBeenModified
@@ -3145,6 +3199,7 @@
     ^ false
 ! !
 
+
 !DirectoryContentsBrowser::DirectoryContentsItem methodsFor:'comparing'!
 
 = anItem
@@ -3159,6 +3214,7 @@
     ^ fileName hash
 ! !
 
+
 !DirectoryContentsBrowser::DirectoryContentsItem methodsFor:'presentation'!
 
 baseName
@@ -3363,6 +3419,7 @@
     ^ modTime printStringFormat:format.
 ! !
 
+
 !DirectoryContentsBrowser::DirectoryContentsItem methodsFor:'printing'!
 
 printOn:aStream
@@ -3373,6 +3430,7 @@
         nextPut:$]. 
 ! !
 
+
 !DirectoryContentsBrowser::DirectoryContentsItem methodsFor:'private'!
 
 getFileInfo
@@ -3386,6 +3444,7 @@
     ^ fileInfo
 ! !
 
+
 !DirectoryContentsBrowser::DirectoryContentsItem methodsFor:'queries'!
 
 beRemoteDirectory
@@ -3420,6 +3479,7 @@
     ^ mimeTypeForContents
 ! !
 
+
 !DirectoryContentsBrowser class methodsFor:'documentation'!
 
 version
@@ -3428,5 +3488,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/DirectoryContentsBrowser.st,v 1.252 2013-01-19 14:24:23 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: DirectoryContentsBrowser.st 8086 2013-01-15 12:03:21Z vranyj1 $'
 ! !
 
--- a/DirectoryDifferenceViewApplication.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/DirectoryDifferenceViewApplication.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,3 +1,14 @@
+"
+ 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' }"
 
 AbstractFileFinderApplicationComponent subclass:#DirectoryDifferenceViewApplication
@@ -11,6 +22,22 @@
 	category:'Interface-Tools-File'
 !
 
+!DirectoryDifferenceViewApplication 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.
+"
+! !
+
 
 !DirectoryDifferenceViewApplication class methodsFor:'help specs'!
 
@@ -46,6 +73,7 @@
     "Modified: / 13-01-2012 / 14:41:36 / cg"
 ! !
 
+
 !DirectoryDifferenceViewApplication class methodsFor:'interface specs'!
 
 windowSpec
@@ -223,6 +251,7 @@
     "Modified: / 13-01-2012 / 14:41:56 / cg"
 ! !
 
+
 !DirectoryDifferenceViewApplication class methodsFor:'menu specs'!
 
 searchMenu
@@ -274,6 +303,7 @@
       )
 ! !
 
+
 !DirectoryDifferenceViewApplication class methodsFor:'tableColumns specs'!
 
 searchResultTable
@@ -314,6 +344,7 @@
     
 ! !
 
+
 !DirectoryDifferenceViewApplication methodsFor:'accessing'!
 
 directory1:directory1Arg directory2:directory2Arg 
@@ -346,6 +377,7 @@
     "Created: / 12-01-2012 / 01:37:41 / cg"
 ! !
 
+
 !DirectoryDifferenceViewApplication methodsFor:'actions'!
 
 fileSelected:entries
@@ -370,6 +402,7 @@
     "Created: / 12-01-2012 / 03:21:52 / cg"
 ! !
 
+
 !DirectoryDifferenceViewApplication methodsFor:'aspects'!
 
 excludedNamePatternHolder
@@ -391,6 +424,7 @@
     "Created: / 13-01-2012 / 14:37:28 / cg"
 ! !
 
+
 !DirectoryDifferenceViewApplication methodsFor:'comparing'!
 
 doSearch
@@ -502,6 +536,7 @@
     "Created: / 12-01-2012 / 01:07:20 / cg"
 ! !
 
+
 !DirectoryDifferenceViewApplication methodsFor:'startup & release'!
 
 postOpenWith:aBuilder
@@ -511,6 +546,7 @@
     "Created: / 12-01-2012 / 01:41:18 / cg"
 ! !
 
+
 !DirectoryDifferenceViewApplication class methodsFor:'documentation'!
 
 version
@@ -519,4 +555,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/DirectoryDifferenceViewApplication.st,v 1.5 2012-06-06 09:46:59 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: DirectoryDifferenceViewApplication.st 8018 2012-07-18 17:00:57Z vranyj1 $'
 ! !
+
--- a/DirectoryTreeBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/DirectoryTreeBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -66,6 +66,7 @@
 "
 ! !
 
+
 !DirectoryTreeBrowser class methodsFor:'instance creation'!
 
 open
@@ -104,6 +105,7 @@
 "
 ! !
 
+
 !DirectoryTreeBrowser class methodsFor:'defaults'!
 
 timeForExpandOnDropInMilliseconds
@@ -111,6 +113,7 @@
     ^ 1500
 ! !
 
+
 !DirectoryTreeBrowser class methodsFor:'interface specs'!
 
 windowSpec
@@ -179,6 +182,7 @@
       )
 ! !
 
+
 !DirectoryTreeBrowser class methodsFor:'menu specs'!
 
 menu
@@ -399,6 +403,7 @@
       )
 ! !
 
+
 !DirectoryTreeBrowser class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -421,6 +426,7 @@
       ).
 ! !
 
+
 !DirectoryTreeBrowser methodsFor:'accessing'!
 
 allowRenameOnOneClick
@@ -453,6 +459,7 @@
     ^ updateTreeSelection
 ! !
 
+
 !DirectoryTreeBrowser methodsFor:'actions'!
 
 doDoubleClick:anIndex 
@@ -708,6 +715,7 @@
     ]
 ! !
 
+
 !DirectoryTreeBrowser methodsFor:'aspects'!
 
 allowFileOperations
@@ -801,6 +809,7 @@
     ^ treeSelectionHolder
 ! !
 
+
 !DirectoryTreeBrowser methodsFor:'change & update'!
 
 changeMatchBlock
@@ -919,6 +928,7 @@
     ^ self
 ! !
 
+
 !DirectoryTreeBrowser methodsFor:'drag & drop'!
 
 dropDestinationPath
@@ -1045,6 +1055,7 @@
         afterMilliseconds:(self class timeForExpandOnDropInMilliseconds).
 ! !
 
+
 !DirectoryTreeBrowser methodsFor:'event handling'!
 
 processEvent:anEvent
@@ -1106,6 +1117,7 @@
     ^ false
 ! !
 
+
 !DirectoryTreeBrowser methodsFor:'queries'!
 
 hasOpenEditor
@@ -1115,7 +1127,9 @@
 
 masterIsFileBrowser
 
-    ^ self masterApplication class = FileBrowserV2
+    ^ self masterApplication isKindOf: FileBrowserV2
+
+    "Modified: / 04-05-2012 / 16:24:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 selectedFilesIncludesNonRootDirectory
@@ -1133,6 +1147,7 @@
 "/    ^ false
 ! !
 
+
 !DirectoryTreeBrowser methodsFor:'selection'!
 
 firstSelectedDirectory
@@ -1256,6 +1271,7 @@
     ^ Array with:selection. "Wrap single value into Array"
 ! !
 
+
 !DirectoryTreeBrowser methodsFor:'startup & release'!
 
 makeDependent
@@ -1358,6 +1374,7 @@
     ^ super release.
 ! !
 
+
 !DirectoryTreeBrowser::DirTreeBrowserHFL methodsFor:'accessing'!
 
 draggedItem
@@ -1370,6 +1387,7 @@
     draggedItem := anItemOrNil.
 ! !
 
+
 !DirectoryTreeBrowser::DirTreeBrowserHFL methodsFor:'protocol'!
 
 grayDirectoryIcon
@@ -1390,6 +1408,7 @@
     ^ super iconFor:anItem.
 ! !
 
+
 !DirectoryTreeBrowser class methodsFor:'documentation'!
 
 version
@@ -1398,5 +1417,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/DirectoryTreeBrowser.st,v 1.122 2013-01-17 11:16:54 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: DirectoryTreeBrowser.st 8018 2012-07-18 17:00:57Z vranyj1 $'
 ! !
 
--- a/EWorldIconLibrary.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/EWorldIconLibrary.st	Wed Jan 30 11:15:09 2013 +0000
@@ -251,9 +251,9 @@
 !EWorldIconLibrary class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/EWorldIconLibrary.st,v 1.1 2011-07-01 13:18:34 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/EWorldIconLibrary.st,v 1.1 2011/07/01 13:18:34 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: EWorldIconLibrary.st 7475 2009-06-17 15:19:48Z vranyj1 §'
-! !
+    ^ '$Id: EWorldIconLibrary.st 7810 2011-08-12 14:54:02Z vranyj1 $'
+! !
\ No newline at end of file
--- a/EditFieldWithCompletion.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/EditFieldWithCompletion.st	Wed Jan 30 11:15:09 2013 +0000
@@ -82,6 +82,7 @@
 "
 ! !
 
+
 !EditFieldWithCompletion methodsFor:'accepting'!
 
 accept
@@ -93,6 +94,7 @@
     "Modified: / 12-02-2010 / 11:56:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !EditFieldWithCompletion methodsFor:'accessing-behavior'!
 
 showOptions
@@ -103,6 +105,7 @@
     showOptions := aBoolean.
 ! !
 
+
 !EditFieldWithCompletion methodsFor:'accessing-dimensions'!
 
 absoluteLeft
@@ -131,6 +134,7 @@
     "Created: / 08-08-2009 / 22:30:16 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !EditFieldWithCompletion methodsFor:'accessing-mvc'!
 
 optionsHolder
@@ -148,6 +152,7 @@
     "Created: / 09-08-2009 / 08:14:24 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !EditFieldWithCompletion methodsFor:'event handling'!
 
 completion:best options:options 
@@ -250,7 +255,7 @@
     key = #Escape ifTrue:[self hideOptionsWindow].
     key = #BackSpace ifTrue:
         [super 
-            keyPress:#Delete x:x y:y;
+"/            keyPress:#Delete x:x y:y;
             keyPress:#BackSpace x:x y:y.
         ^ self startCompletion].
 
@@ -263,7 +268,7 @@
 
     "Created: / 08-08-2009 / 22:02:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 09-08-2009 / 14:06:43 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 09-02-2010 / 20:47:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 30-03-2012 / 17:34:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 keyPress:key x:x y:y view:aView
@@ -273,6 +278,7 @@
     "Created: / 09-12-2010 / 21:32:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !EditFieldWithCompletion methodsFor:'initialization & release'!
 
 destroy
@@ -299,6 +305,7 @@
     "Modified: / 03-08-2011 / 17:50:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !EditFieldWithCompletion methodsFor:'private'!
 
 doCompletion
@@ -319,7 +326,7 @@
                     ifNone:[ best ]
     ].
     options isSortedCollection ifFalse:[
-        options := options asSortedCollection:[:a :b | a asString < b asString ]
+        options := options asSortedCollection:[:a :b | a displayString < b displayString ]
     ].
     self sensor 
         pushUserEvent:#completion:options:
@@ -328,9 +335,9 @@
 
     "Created: / 26-07-2009 / 17:45:09 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 09-08-2009 / 02:51:44 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 09-02-2010 / 20:46:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 18-11-2011 / 14:33:56 / cg"
     "Modified (format): / 20-11-2011 / 09:42:25 / cg"
+    "Modified: / 20-04-2012 / 18:20:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 hideOptionsWindow
@@ -346,6 +353,8 @@
 
 showOptionsWindow
 
+    | x y w |
+
     showOptions ifFalse:[^ self].
     optionsWindow notNil ifTrue:[ ^ self ].
 
@@ -363,14 +372,19 @@
                     highlightMode: #line;
                     font:self font;
                     backgroundColor:self backgroundColor;
-                    delegate: self.
+                    delegate: self;
+                    yourself.
+
+    x := self absoluteLeft + 5" - optionsView textStartLeft".
+    y := self absoluteTop + self height + 1 + 5.
+    w := (width * 2) + 0"((optionsView textStartLeft) * 2)".
 
     optionsWindow := StandardSystemView new
         bePopUpView;
         beSlave;        
-        origin:(self absoluteLeft + 5" - optionsView textStartLeft") 
-                    @ (self absoluteTop + self height + 1 + 5)
-        extent:(width + 0"((optionsView textStartLeft) * 2)") @ (fontHeight * 10).
+        origin:x @ y
+        extent:(w min: (Screen current width - x)) @ (fontHeight * 10);
+        yourself.
 
     ScrollableView   
         forView:optionsView 
@@ -387,8 +401,8 @@
 
     "Created: / 09-08-2009 / 08:12:21 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 09-08-2009 / 09:28:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 09-12-2010 / 22:05:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 29-11-2011 / 11:27:13 / cg"
+    "Modified: / 04-04-2012 / 13:08:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 startCompletion
@@ -399,6 +413,7 @@
     "Modified (format): / 03-08-2011 / 17:50:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !EditFieldWithCompletion class methodsFor:'documentation'!
 
 version_CVS
--- a/EditFieldWithCompletionSpec.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/EditFieldWithCompletionSpec.st	Wed Jan 30 11:15:09 2013 +0000
@@ -68,9 +68,9 @@
 !EditFieldWithCompletionSpec class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/EditFieldWithCompletionSpec.st,v 1.1 2011-07-01 13:30:32 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/EditFieldWithCompletionSpec.st,v 1.1 2011/07/01 13:30:32 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: EditFieldWithCompletionSpec.st 7567 2010-04-17 10:59:53Z vranyj1 §'
-! !
+    ^ '$Id: EditFieldWithCompletionSpec.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
\ No newline at end of file
--- a/EventMonitor.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/EventMonitor.st	Wed Jan 30 11:15:09 2013 +0000
@@ -722,5 +722,9 @@
 !EventMonitor class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/EventMonitor.st,v 1.30 2009-03-20 17:44:15 stefan Exp $'
+    ^ '$Id: EventMonitor.st 7958 2012-03-29 13:52:31Z vranyj1 $'
+!
+
+version_SVN
+    ^ '$Id: EventMonitor.st 7958 2012-03-29 13:52:31Z vranyj1 $'
 ! !
--- a/ExpandableRevisionItem.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ExpandableRevisionItem.st	Wed Jan 30 11:15:09 2013 +0000
@@ -104,5 +104,5 @@
 !ExpandableRevisionItem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ExpandableRevisionItem.st,v 1.5 2000-02-18 14:08:35 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ExpandableRevisionItem.st,v 1.5 2000/02/18 14:08:35 cg Exp $'
 ! !
--- a/FileApplicationNoteBook.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FileApplicationNoteBook.st	Wed Jan 30 11:15:09 2013 +0000
@@ -125,6 +125,7 @@
 "
 ! !
 
+
 !FileApplicationNoteBook class methodsFor:'application list'!
 
 applicationList
@@ -177,6 +178,7 @@
     ^ aApplicationListItem at:2
 ! !
 
+
 !FileApplicationNoteBook class methodsFor:'classAccess'!
 
 textEditorClass
@@ -184,6 +186,7 @@
     ^ TextEditor
 ! !
 
+
 !FileApplicationNoteBook class methodsFor:'defaults'!
 
 openAnotherApplicationOnSameItem
@@ -191,6 +194,7 @@
     ^ false
 ! !
 
+
 !FileApplicationNoteBook class methodsFor:'interface specs'!
 
 windowSpec
@@ -238,6 +242,7 @@
       )
 ! !
 
+
 !FileApplicationNoteBook class methodsFor:'menu specs'!
 
 tabMenu
@@ -306,6 +311,7 @@
     "Modified: / 27-03-2007 / 11:13:52 / cg"
 ! !
 
+
 !FileApplicationNoteBook methodsFor:'accessing'!
 
 listOfApplications
@@ -330,6 +336,7 @@
     selectionHistoryList := aCol 
 ! !
 
+
 !FileApplicationNoteBook methodsFor:'accessing-applications'!
 
 getAllApplicationsByClass:aClass andType:aType
@@ -371,6 +378,7 @@
         ].
 ! !
 
+
 !FileApplicationNoteBook methodsFor:'actions-app-common'!
 
 changeItem:anItem for:anAppl
@@ -745,6 +753,7 @@
     "Modified (format): / 29-11-2011 / 19:07:57 / cg"
 ! !
 
+
 !FileApplicationNoteBook methodsFor:'actions-app-spec'!
 
 addTerminalIn:aDirectory
@@ -883,12 +892,14 @@
             preSetItem:[:aTextEditor | aTextEditor presentation:#hexDump].
 ! !
 
+
 !FileApplicationNoteBook methodsFor:'applicationlist access'!
 
 applicationList
     ^ self class applicationList
 ! !
 
+
 !FileApplicationNoteBook methodsFor:'aspects'!
 
 canvasHolder
@@ -1014,6 +1025,7 @@
     tabList := aValue.
 ! !
 
+
 !FileApplicationNoteBook methodsFor:'change & update'!
 
 canvasChanged
@@ -1101,6 +1113,7 @@
     ^ self.
 ! !
 
+
 !FileApplicationNoteBook methodsFor:'menu & actions'!
 
 destroyTabAt:idx
@@ -1124,6 +1137,7 @@
     "Modified: / 27-03-2007 / 10:57:25 / cg"
 ! !
 
+
 !FileApplicationNoteBook methodsFor:'queries'!
 
 getSameFilesModifiedFor:aAppl
@@ -1142,6 +1156,7 @@
     ^ colOfChanged
 ! !
 
+
 !FileApplicationNoteBook methodsFor:'selection'!
 
 currentTabMenusApplication
@@ -1179,6 +1194,7 @@
     ^ canvas application.
 ! !
 
+
 !FileApplicationNoteBook methodsFor:'startup & release'!
 
 closeRequest
@@ -1228,6 +1244,7 @@
     ^ true
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication class methodsFor:'defaults'!
 
 tabStringFor:aApplicationType
@@ -1238,6 +1255,7 @@
     "Modified: / 01-03-2007 / 21:43:13 / cg"
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -1300,6 +1318,7 @@
 )
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication class methodsFor:'image specs'!
 
 extract28x28Icon
@@ -1381,6 +1400,7 @@
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[0 0 0 8 4 8 105 133 190 121 133 157 129 129 129 194 194 194 255 0 0]; mask:((Depth1Image new) width: 28; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@LC@@@A!! @@@L0@@@A8@@@@L@@@@G @@@CL@@@A!! @@@0L@@@@@@@BY=5LAIUUT S5UU8D!!UUPAFU\#@@@@@@@LR9@@D)J @A:R(@@P$*@@CIN @@@@@@@@@a') ; yourself); yourself]
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication class methodsFor:'interface specs'!
 
 windowSpec
@@ -1478,6 +1498,7 @@
       )
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication class methodsFor:'menu specs'!
 
 fileListMenu
@@ -1615,6 +1636,7 @@
     "Modified: / 12-01-2012 / 00:34:06 / cg"
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication class methodsFor:'queries'!
 
 canOpenItem:anItem
@@ -1645,6 +1667,7 @@
     ^ false
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication class methodsFor:'tableColumns specs'!
 
 tableColumns
@@ -1806,6 +1829,7 @@
     
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'accessing'!
 
 archiver
@@ -1872,6 +1896,7 @@
     ^ temporaryDirectory
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'actions'!
 
 changeItem:anItem 
@@ -1982,6 +2007,7 @@
     ].
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'aspects'!
 
 archiveFileList
@@ -2059,6 +2085,7 @@
     ^ viewErrorList
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
@@ -2078,6 +2105,7 @@
     self errorListVisibilityHolder value:viewListValue.
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'command execution'!
 
 getErrorBlock
@@ -2195,6 +2223,7 @@
     ].
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'command helper'!
 
 selectDirectoryDialog
@@ -2257,6 +2286,7 @@
     ^ dir
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'commands add'!
 
 addFilesToArchive:colOfFiles 
@@ -2282,6 +2312,7 @@
     ^ true
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'commands extract'!
 
 extractAll
@@ -2318,6 +2349,7 @@
 "/    self updateFileBrowserIfPresentWith:dir.
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'commands extract private'!
 
 extractAllTo:aDirectory 
@@ -2401,6 +2433,7 @@
     "Modified (format): / 29-11-2011 / 18:58:01 / cg"
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'commands list'!
 
 listAllFiles
@@ -2425,6 +2458,7 @@
     ]
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'commands remove'!
 
 removeFilesFromArchive
@@ -2454,6 +2488,7 @@
     self archiveFileList value removeAllFoundIn:realSel
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'drag & drop'!
 
 canDrop:aContext
@@ -2533,6 +2568,7 @@
     ^ sel collect:[:el| DropObject newFileInArchive:(el fileName asFilename) ].
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'event handling'!
 
 processEvent:anEvent 
@@ -2557,6 +2593,7 @@
     ^ false
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'initialization & release'!
 
 postBuildFileTable:aWidget
@@ -2603,6 +2640,7 @@
     ^ super release.
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'queries'!
 
 canDelete
@@ -2650,6 +2688,7 @@
     ^ newSel.
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication methodsFor:'sorting'!
 
 generateSortBlock:instanceName
@@ -2711,6 +2750,7 @@
     fileList addAll:sortCol.
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication::ArchivItem methodsFor:'accessing'!
 
 compressSize
@@ -2963,12 +3003,14 @@
     self year:(Integer readFrom:yearString)
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication::ArchivItem methodsFor:'printing'!
 
 printOn:aStream
     aStream nextPutAll:self fileName asString
 ! !
 
+
 !FileApplicationNoteBook::ArchiveViewApplication::ArchivItem methodsFor:'queries'!
 
 hasDirectoryPart
@@ -2976,6 +3018,7 @@
     ^ self fileName asFilename components size ~= 1
 ! !
 
+
 !FileApplicationNoteBook::CommandResult class methodsFor:'defaults'!
 
 tabStringFor:aApplicationType
@@ -2991,6 +3034,7 @@
     ^ false
 ! !
 
+
 !FileApplicationNoteBook::CommandResult class methodsFor:'interface specs'!
 
 windowSpec
@@ -3052,6 +3096,7 @@
       )
 ! !
 
+
 !FileApplicationNoteBook::CommandResult class methodsFor:'menu specs'!
 
 menu
@@ -3099,6 +3144,7 @@
     "Modified: / 12-01-2012 / 00:33:56 / cg"
 ! !
 
+
 !FileApplicationNoteBook::CommandResult methodsFor:'accessing'!
 
 resultStream
@@ -3113,6 +3159,7 @@
     resultStream := something.
 ! !
 
+
 !FileApplicationNoteBook::CommandResult methodsFor:'actions'!
 
 changeTabTo:aString 
@@ -3136,6 +3183,7 @@
     ].
 ! !
 
+
 !FileApplicationNoteBook::CommandResult methodsFor:'aspects'!
 
 enableStopButton
@@ -3156,6 +3204,7 @@
     ^ process
 ! !
 
+
 !FileApplicationNoteBook::CommandResult methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
@@ -3166,6 +3215,7 @@
     super update:something with:aParameter from:changedObject
 ! !
 
+
 !FileApplicationNoteBook::CommandResult methodsFor:'initialization & release'!
 
 postBuildTextCollector:aBuilder
@@ -3193,12 +3243,14 @@
     ^ super release
 ! !
 
+
 !FileApplicationNoteBook::CommandResult methodsFor:'printing'!
 
 printOn:aStream
     aStream nextPutAll:'CommandResult Application'.
 ! !
 
+
 !FileApplicationNoteBook::DigitalNotepadFileViewApplication class methodsFor:'defaults'!
 
 tabStringFor:anApplicationType
@@ -3209,6 +3261,7 @@
     "Modified: / 01-03-2007 / 21:43:23 / cg"
 ! !
 
+
 !FileApplicationNoteBook::DigitalNotepadFileViewApplication class methodsFor:'documentation'!
 
 documentation
@@ -3218,6 +3271,7 @@
 "
 ! !
 
+
 !FileApplicationNoteBook::DigitalNotepadFileViewApplication class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -3241,6 +3295,7 @@
 )
 ! !
 
+
 !FileApplicationNoteBook::DigitalNotepadFileViewApplication class methodsFor:'interface specs'!
 
 windowSpec
@@ -3297,6 +3352,7 @@
       )
 ! !
 
+
 !FileApplicationNoteBook::DigitalNotepadFileViewApplication class methodsFor:'menu specs'!
 
 menu
@@ -3355,6 +3411,7 @@
       )
 ! !
 
+
 !FileApplicationNoteBook::DigitalNotepadFileViewApplication class methodsFor:'queries'!
 
 canOpenItem:anItem
@@ -3366,6 +3423,7 @@
     ^ false
 ! !
 
+
 !FileApplicationNoteBook::DigitalNotepadFileViewApplication methodsFor:'accessing'!
 
 imageView
@@ -3395,6 +3453,7 @@
 "/    self notify:msg.
 ! !
 
+
 !FileApplicationNoteBook::DigitalNotepadFileViewApplication methodsFor:'actions'!
 
 changeItem:anItem
@@ -3408,6 +3467,7 @@
     imageView readFile:self fileName
 ! !
 
+
 !FileApplicationNoteBook::DigitalNotepadFileViewApplication methodsFor:'aspects'!
 
 fitSize
@@ -3420,6 +3480,7 @@
     ^ fitSize
 ! !
 
+
 !FileApplicationNoteBook::DigitalNotepadFileViewApplication methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
@@ -3434,6 +3495,7 @@
     super update:something with:aParameter from:changedObject
 ! !
 
+
 !FileApplicationNoteBook::DigitalNotepadFileViewApplication methodsFor:'initialization & release'!
 
 postBuildImageView:aWidget
@@ -3466,6 +3528,7 @@
     super postOpenWith:aBuilder
 ! !
 
+
 !FileApplicationNoteBook::HtmlViewApplication class methodsFor:'defaults'!
 
 tabStringFor:aApplicationType
@@ -3476,6 +3539,7 @@
     "Modified: / 01-03-2007 / 21:43:18 / cg"
 ! !
 
+
 !FileApplicationNoteBook::HtmlViewApplication class methodsFor:'help specs'!
 
 helpSpec
@@ -3499,6 +3563,7 @@
 )
 ! !
 
+
 !FileApplicationNoteBook::HtmlViewApplication class methodsFor:'interface specs'!
 
 windowSpec
@@ -3640,6 +3705,7 @@
     "Modified: / 11-08-2011 / 00:34:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !FileApplicationNoteBook::HtmlViewApplication class methodsFor:'menu specs'!
 
 menu
@@ -3743,6 +3809,7 @@
       )
 ! !
 
+
 !FileApplicationNoteBook::HtmlViewApplication class methodsFor:'queries'!
 
 canOpenItem:anItem
@@ -3755,6 +3822,7 @@
     ^ false
 ! !
 
+
 !FileApplicationNoteBook::HtmlViewApplication methodsFor:'accessing'!
 
 htmlView
@@ -3779,6 +3847,7 @@
     ^ retVal
 ! !
 
+
 !FileApplicationNoteBook::HtmlViewApplication methodsFor:'accessing - subapps'!
 
 webBrowserPage
@@ -3792,6 +3861,7 @@
     "Created: / 11-08-2011 / 00:32:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !FileApplicationNoteBook::HtmlViewApplication methodsFor:'actions'!
 
 doEdit
@@ -3846,6 +3916,7 @@
     "Modified: / 17-02-2011 / 14:01:35 / cg"
 ! !
 
+
 !FileApplicationNoteBook::HtmlViewApplication methodsFor:'aspects'!
 
 labelHolder
@@ -3856,6 +3927,7 @@
     ^ labelHolder.
 ! !
 
+
 !FileApplicationNoteBook::HtmlViewApplication methodsFor:'initialization & release'!
 
 postBuildHtmlView:aWidget
@@ -3893,6 +3965,7 @@
     "Modified: / 17-02-2011 / 13:27:12 / cg"
 ! !
 
+
 !FileApplicationNoteBook::ImageViewApplication class methodsFor:'defaults'!
 
 tabStringFor:aApplicationType
@@ -3903,6 +3976,7 @@
     "Modified: / 01-03-2007 / 21:43:23 / cg"
 ! !
 
+
 !FileApplicationNoteBook::ImageViewApplication class methodsFor:'documentation'!
 
 documentation
@@ -3912,6 +3986,7 @@
 "
 ! !
 
+
 !FileApplicationNoteBook::ImageViewApplication class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -3935,6 +4010,7 @@
 )
 ! !
 
+
 !FileApplicationNoteBook::ImageViewApplication class methodsFor:'image specs'!
 
 fitSize20x20Icon
@@ -3966,6 +4042,7 @@
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]
 ! !
 
+
 !FileApplicationNoteBook::ImageViewApplication class methodsFor:'interface specs'!
 
 windowSpec
@@ -4022,6 +4099,7 @@
       )
 ! !
 
+
 !FileApplicationNoteBook::ImageViewApplication class methodsFor:'menu specs'!
 
 menu
@@ -4080,6 +4158,7 @@
       )
 ! !
 
+
 !FileApplicationNoteBook::ImageViewApplication class methodsFor:'queries'!
 
 canOpenItem:anItem
@@ -4092,6 +4171,7 @@
     ^ false
 ! !
 
+
 !FileApplicationNoteBook::ImageViewApplication methodsFor:'accessing'!
 
 image:something
@@ -4126,6 +4206,7 @@
     self notify:msg.
 ! !
 
+
 !FileApplicationNoteBook::ImageViewApplication methodsFor:'actions'!
 
 changeItem:anItem
@@ -4181,6 +4262,7 @@
     "Modified: / 25-07-2006 / 09:09:33 / cg"
 ! !
 
+
 !FileApplicationNoteBook::ImageViewApplication methodsFor:'aspects'!
 
 fitSize
@@ -4193,6 +4275,7 @@
     ^ fitSize
 ! !
 
+
 !FileApplicationNoteBook::ImageViewApplication methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
@@ -4207,6 +4290,7 @@
     super update:something with:aParameter from:changedObject
 ! !
 
+
 !FileApplicationNoteBook::ImageViewApplication methodsFor:'initialization & release'!
 
 postBuildImageView:aWidget
@@ -4240,6 +4324,7 @@
     super postOpenWith:aBuilder
 ! !
 
+
 !FileApplicationNoteBook::Terminal class methodsFor:'defaults'!
 
 defaultLineLimit
@@ -4262,6 +4347,7 @@
     "Modified: / 01-03-2007 / 21:43:38 / cg"
 ! !
 
+
 !FileApplicationNoteBook::Terminal class methodsFor:'help specs'!
 
 helpSpec
@@ -4285,6 +4371,7 @@
 )
 ! !
 
+
 !FileApplicationNoteBook::Terminal class methodsFor:'interface specs'!
 
 windowSpec
@@ -4340,6 +4427,7 @@
       )
 ! !
 
+
 !FileApplicationNoteBook::Terminal class methodsFor:'menu specs'!
 
 menu
@@ -4385,22 +4473,30 @@
       )
 ! !
 
+
 !FileApplicationNoteBook::Terminal methodsFor:'accessing'!
 
 terminalView
 
     terminalView isNil ifTrue:[
-        VT100TerminalView isNil ifTrue:[
-            Dialog warn:('Missing class: ' , 'VT100TerminalView' allBold).
-            AbortOperationRequest raise 
+        (OperatingSystem isUNIXlike and:[XTermView notNil and:[XTermView isAvailable]]) ifTrue:[
+            terminalView := XTermView new.
+        ] ifFalse:[
+            VT100TerminalView isNil ifTrue:[
+                Dialog warn:('Missing class: ' , 'VT100TerminalView' allBold).
+                AbortOperationRequest raise 
+            ].
+            terminalView := VT100TerminalView new.
         ].
-
-        terminalView := VT100TerminalView new.
+        terminalView workingDirectory: item fileName pathName.
         terminalView lineLimit:(self class defaultLineLimit).
     ].
     ^ terminalView.
+
+    "Modified: / 05-04-2012 / 15:58:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !FileApplicationNoteBook::Terminal methodsFor:'actions'!
 
 saveAs
@@ -4408,6 +4504,7 @@
     self terminalView save.
 ! !
 
+
 !FileApplicationNoteBook::Terminal methodsFor:'initialization & release'!
 
 shellFinished
@@ -4434,6 +4531,7 @@
     vt100 startShellIn:(self fileName).
 ! !
 
+
 !FileApplicationNoteBook::Terminal methodsFor:'printing'!
 
 printOn:aStream
@@ -4441,6 +4539,7 @@
     self fileName baseName printOn:aStream.
 ! !
 
+
 !FileApplicationNoteBook::Terminal methodsFor:'queries'!
 
 getTabValueString
@@ -4451,6 +4550,7 @@
     "Created: / 01-03-2007 / 21:39:56 / cg"
 ! !
 
+
 !FileApplicationNoteBook::Terminal methodsFor:'startup & release'!
 
 postOpenWith:aBuilder
@@ -4464,6 +4564,7 @@
     super postOpenWith:aBuilder.
 ! !
 
+
 !FileApplicationNoteBook::TextEditor class methodsFor:'defaults'!
 
 checkModifiedDelayTime
@@ -4492,6 +4593,7 @@
     ^ false
 ! !
 
+
 !FileApplicationNoteBook::TextEditor class methodsFor:'documentation'!
 
 documentation
@@ -4501,6 +4603,7 @@
 "
 ! !
 
+
 !FileApplicationNoteBook::TextEditor class methodsFor:'help specs'!
 
 helpSpec
@@ -4524,6 +4627,7 @@
 )
 ! !
 
+
 !FileApplicationNoteBook::TextEditor class methodsFor:'interface specs'!
 
 windowSpec
@@ -4655,6 +4759,7 @@
       )
 ! !
 
+
 !FileApplicationNoteBook::TextEditor class methodsFor:'menu specs'!
 
 menu
@@ -4774,6 +4879,7 @@
       )
 ! !
 
+
 !FileApplicationNoteBook::TextEditor methodsFor:'accessing'!
 
 fileEncoding
@@ -4841,6 +4947,7 @@
     self changeInformation.
 ! !
 
+
 !FileApplicationNoteBook::TextEditor methodsFor:'actions'!
 
 accept
@@ -5440,6 +5547,7 @@
     ].
 ! !
 
+
 !FileApplicationNoteBook::TextEditor methodsFor:'aspects'!
 
 cursorColLabelHolder
@@ -5579,6 +5687,7 @@
     ^ viewModifiedChannel.
 ! !
 
+
 !FileApplicationNoteBook::TextEditor methodsFor:'aspects-visibility'!
 
 closeButtonShown
@@ -5623,6 +5732,7 @@
     "Modified: / 06-10-2011 / 12:46:41 / cg"
 ! !
 
+
 !FileApplicationNoteBook::TextEditor methodsFor:'change & update'!
 
 changeTextColorForChanged
@@ -5798,6 +5908,7 @@
     "Created: / 23-06-2011 / 16:32:44 / cg"
 ! !
 
+
 !FileApplicationNoteBook::TextEditor methodsFor:'initialization'!
 
 initialize
@@ -5805,6 +5916,7 @@
     semaChangeItem := Semaphore forMutualExclusion.
 ! !
 
+
 !FileApplicationNoteBook::TextEditor methodsFor:'printing'!
 
 printOn:aStream
@@ -5816,6 +5928,7 @@
     ]
 ! !
 
+
 !FileApplicationNoteBook::TextEditor methodsFor:'private-process'!
 
 checkItemForChanges
@@ -5872,6 +5985,7 @@
     Processor addTimedBlock:checkModifiedBlock afterSeconds:(self class checkModifiedDelayTime).
 ! !
 
+
 !FileApplicationNoteBook::TextEditor methodsFor:'queries'!
 
 additionalInfo
@@ -5895,6 +6009,7 @@
     ^ true
 ! !
 
+
 !FileApplicationNoteBook::TextEditor methodsFor:'startup & release'!
 
 closeRequest
@@ -6016,6 +6131,7 @@
     "Modified: / 10-04-2007 / 15:24:22 / cg"
 ! !
 
+
 !FileApplicationNoteBook::XMLViewApplication class methodsFor:'defaults'!
 
 tabStringFor:aApplicationType
@@ -6026,6 +6142,7 @@
     "Modified: / 17-02-2011 / 13:28:22 / cg"
 ! !
 
+
 !FileApplicationNoteBook::XMLViewApplication class methodsFor:'help specs'!
 
 helpSpec
@@ -6049,6 +6166,7 @@
     "Modified: / 17-02-2011 / 13:28:28 / cg"
 ! !
 
+
 !FileApplicationNoteBook::XMLViewApplication class methodsFor:'interface specs'!
 
 windowSpec
@@ -6105,6 +6223,7 @@
       )
 ! !
 
+
 !FileApplicationNoteBook::XMLViewApplication class methodsFor:'menu specs'!
 
 menu
@@ -6153,6 +6272,7 @@
     "Modified: / 17-02-2011 / 17:30:26 / cg"
 ! !
 
+
 !FileApplicationNoteBook::XMLViewApplication class methodsFor:'queries'!
 
 canOpenItem:anItem
@@ -6168,6 +6288,7 @@
     ^ false
 ! !
 
+
 !FileApplicationNoteBook::XMLViewApplication methodsFor:'accessing'!
 
 item:anItem 
@@ -6212,6 +6333,7 @@
     "Modified: / 17-02-2011 / 17:39:15 / cg"
 ! !
 
+
 !FileApplicationNoteBook::XMLViewApplication methodsFor:'actions'!
 
 reload
@@ -6220,6 +6342,7 @@
     "Created: / 17-02-2011 / 17:46:36 / cg"
 ! !
 
+
 !FileApplicationNoteBook::XMLViewApplication methodsFor:'aspects'!
 
 labelHolder
@@ -6230,6 +6353,7 @@
     ^ labelHolder.
 ! !
 
+
 !FileApplicationNoteBook::XMLViewApplication methodsFor:'initialization & release'!
 
 postBuildXMLCanvas:aWidget
@@ -6239,6 +6363,7 @@
     "Modified: / 17-02-2011 / 13:39:18 / cg"
 ! !
 
+
 !FileApplicationNoteBook::XViewApplication class methodsFor:'defaults'!
 
 maxNumberOfVNCRestarts
@@ -6276,6 +6401,7 @@
     ^ true
 ! !
 
+
 !FileApplicationNoteBook::XViewApplication class methodsFor:'interface specs'!
 
 windowSpec
@@ -6332,6 +6458,7 @@
       )
 ! !
 
+
 !FileApplicationNoteBook::XViewApplication class methodsFor:'menu specs'!
 
 menu
@@ -6367,6 +6494,7 @@
       )
 ! !
 
+
 !FileApplicationNoteBook::XViewApplication class methodsFor:'queries'!
 
 canOpenItem:anItem
@@ -6389,6 +6517,7 @@
     ^ true
 ! !
 
+
 !FileApplicationNoteBook::XViewApplication methodsFor:'accessing'!
 
 xView
@@ -6403,6 +6532,7 @@
     xView := something.
 ! !
 
+
 !FileApplicationNoteBook::XViewApplication methodsFor:'actions'!
 
 changeInformation 
@@ -6441,6 +6571,7 @@
     self startViewer.
 ! !
 
+
 !FileApplicationNoteBook::XViewApplication methodsFor:'actions VNC'!
 
 setupView
@@ -6609,6 +6740,7 @@
     ^ true
 ! !
 
+
 !FileApplicationNoteBook::XViewApplication methodsFor:'actions viewer'!
 
 startViewer
@@ -6686,6 +6818,7 @@
     "/ Dialog information:'viewer has terminated'.
 ! !
 
+
 !FileApplicationNoteBook::XViewApplication methodsFor:'initialization & release'!
 
 postBuildXView:aWidget
@@ -6728,6 +6861,7 @@
     ^ super release
 ! !
 
+
 !FileApplicationNoteBook class methodsFor:'documentation'!
 
 version
@@ -6736,5 +6870,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/FileApplicationNoteBook.st,v 1.273 2013-01-18 11:29:08 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: FileApplicationNoteBook.st 8083 2013-01-14 11:48:37Z vranyj1 $'
 ! !
 
--- a/FileBasedSourceCodeManagementSettingsAppl.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FileBasedSourceCodeManagementSettingsAppl.st	Wed Jan 30 11:15:09 2013 +0000
@@ -43,6 +43,7 @@
 "
 ! !
 
+
 !FileBasedSourceCodeManagementSettingsAppl class methodsFor:'defaults'!
 
 defaultRepositoryPath
@@ -51,6 +52,7 @@
     "Created: / 21-12-2011 / 14:55:40 / cg"
 ! !
 
+
 !FileBasedSourceCodeManagementSettingsAppl class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -85,6 +87,7 @@
     "Created: / 25-12-2011 / 14:00:06 / cg"
 ! !
 
+
 !FileBasedSourceCodeManagementSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -145,6 +148,7 @@
 @@@@@@@@@@@@@@@@@@@@@JJ!!(ZFZ@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[223 191 95 128 127 112 160 144 128 175 143 112 224 223 207 255 224 127 207 192 160 207 175 112 144 112 48 224 192 128 240 224 191 192 176 144 239 224 223 175 143 111 239 224 176 223 192 111 191 175 160 159 112 64 255 240 176 240 240 208 255 239 176 240 208 127 160 127 63 176 159 112 255 224 96 207 160 64 224 208 175 239 208 144 240 223 95 128 96 64 240 224 127 255 240 224 255 239 175 192 160 111 255 255 224 255 223 112 255 240 223 255 223 143 255 208 64 208 192 191 255 255 223 160 143 127 160 144 111 240 240 175 160 159 112 240 239 176 208 176 111 239 223 159 207 176 127 255 224 144 239 208 112 255 240 192 175 159 128 240 239 175 192 176 159 224 207 111 207 191 128 239 208 111 144 112 96 255 240 191 255 239 192 240 224 95 192 144 48 240 239 208 224 192 64 144 112 95 160 127 47 127 80 47 255 224 111 176 144 96 176 159 96 240 223 176 240 239 144 176 175 159 240 224 144 255 239 191 240 208 64 255 239 128 239 208 79 223 208 208 191 144 64 240 223 143 240 208 63 255 239 127 240 240 192 255 239 159 144 112 79 240 224 143 191 159 63 240 223 80 207 176 112 240 240 191 175 143 127 224 192 112 240 223 112 208 176 80 176 159 127 255 224 160 240 223 79 255 240 208 207 191 112 239 239 207 208 176 79 255 223 95 192 160 63 128 111 48 255 223 127 255 224 159 159 127 95 176 160 112 255 240 207 255 255 240 240 224 112 176 143 96 160 143 48 240 239 160 207 160 80 239 223 175 239 192 96 143 111 64 160 143 95 255 224 128 255 248 200 255 248 24 15 56 160 255 248 88 239 232 240 240 240 240 255 248 152 48 80 176 255 248 96 48 88 176 240 240 248 207 216 240 223 216 224 255 248 48 224 224 232 255 248 176 255 248 248 240 144 24 255 248 136 63 96 184 240 208 24 239 239 224 176 159 111 240 207 96 207 160 127 240 207 111 191 191 160 223 208 175 240 208 111 255 255 239 192 176 175 208 207 176 0 0 0 0 64 0 32 96 32 96 192 128 32 128 64 32 160 64 32 128 32 64 64 64 96 96 96 128 128 128 32 32 32 32 64 32]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@O0@@_??@_??@_??8_??8_??8_??0_?? _?? _?? _??@_?>@_?<@_? @_<@@C8@@') ; yourself); yourself]
 ! !
 
+
 !FileBasedSourceCodeManagementSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -372,12 +376,14 @@
       )
 ! !
 
+
 !FileBasedSourceCodeManagementSettingsAppl class methodsFor:'others'!
 
 version_FileRepository
     ^ '§Path: stx/libtool/FileBasedSourceCodeManagementSettingsAppl.st, Version: 1§'
 ! !
 
+
 !FileBasedSourceCodeManagementSettingsAppl class methodsFor:'queries'!
 
 managerClass
@@ -388,6 +394,7 @@
     "Created: / 19-04-2011 / 12:46:52 / cg"
 ! !
 
+
 !FileBasedSourceCodeManagementSettingsAppl methodsFor:'actions'!
 
 addModule:module withData:data
@@ -474,6 +481,7 @@
     "Created: / 21-12-2011 / 14:26:08 / cg"
 ! !
 
+
 !FileBasedSourceCodeManagementSettingsAppl methodsFor:'aspects'!
 
 initialListOfModules
@@ -529,6 +537,7 @@
     "Created: / 21-12-2011 / 14:35:37 / cg"
 ! !
 
+
 !FileBasedSourceCodeManagementSettingsAppl methodsFor:'change & update'!
 
 selectedPerModulePathChanged
@@ -625,6 +634,7 @@
     "Created: / 21-12-2011 / 14:43:11 / cg"
 ! !
 
+
 !FileBasedSourceCodeManagementSettingsAppl methodsFor:'help'!
 
 helpFilename
@@ -633,6 +643,7 @@
     "Modified: / 21-12-2011 / 14:36:53 / cg"
 ! !
 
+
 !FileBasedSourceCodeManagementSettingsAppl methodsFor:'initialization & release'!
 
 initialize
@@ -653,6 +664,7 @@
     "Modified: / 21-12-2011 / 23:50:23 / cg"
 ! !
 
+
 !FileBasedSourceCodeManagementSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -679,6 +691,7 @@
     "Modified: / 10-01-2012 / 00:31:28 / cg"
 ! !
 
+
 !FileBasedSourceCodeManagementSettingsAppl class methodsFor:'documentation'!
 
 version
@@ -687,4 +700,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/FileBasedSourceCodeManagementSettingsAppl.st,v 1.14 2012-08-09 08:44:23 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: FileBasedSourceCodeManagementSettingsAppl.st 8048 2012-09-07 17:28:09Z vranyj1 $'
 ! !
+
--- a/FileBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FileBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -84,6 +84,7 @@
 "
 ! !
 
+
 !FileBrowser class methodsFor:'instance creation'!
 
 on:aDirectoryPath
@@ -149,6 +150,7 @@
     "Modified: / 17.6.1998 / 11:25:29 / cg"
 ! !
 
+
 !FileBrowser class methodsFor:'aspects'!
 
 directoryBookmarks
@@ -160,6 +162,7 @@
     ^ AbstractFileBrowser directoryHistory.
 ! !
 
+
 !FileBrowser class methodsFor:'defaults'!
 
 defaultIcon
@@ -190,12 +193,14 @@
     "Modified: / 17-09-2007 / 11:36:12 / cg"
 ! !
 
+
 !FileBrowser class methodsFor:'fileList user interaction'!
 
 goodRenameDefaultForFile:oldName lastOld:lastOldName lastNew:lastNewName
     ^ DoWhatIMeanSupport goodRenameDefaultForFile:oldName lastOld:lastOldName lastNew:lastNewName
 ! !
 
+
 !FileBrowser class methodsFor:'history'!
 
 addToCommandHistory:aCommandString for:aFilename
@@ -240,6 +245,7 @@
     VisitedFileHistory addFirst:path.
 ! !
 
+
 !FileBrowser class methodsFor:'icon-presentation'!
 
 addOnIconsFor:aFilename to:anIcon
@@ -307,6 +313,7 @@
     ^ MIMETypeIconLibrary iconKeyForRemoteDirectory:aFilenameArg
 ! !
 
+
 !FileBrowser class methodsFor:'interface specs'!
 
 fileSearchDialogSpec
@@ -439,6 +446,7 @@
       )
 ! !
 
+
 !FileBrowser class methodsFor:'menu specs'!
 
 baseBookmarksMenuSpec
@@ -1468,6 +1476,7 @@
     ^ m
 ! !
 
+
 !FileBrowser class methodsFor:'queries'!
 
 isVisualStartable
@@ -1477,6 +1486,7 @@
     ^ true
 ! !
 
+
 !FileBrowser methodsFor:'aspects'!
 
 anyFilesPresentWithSuffix:suffix
@@ -1872,6 +1882,7 @@
     "Created: / 4.8.1998 / 13:37:37 / cg"
 ! !
 
+
 !FileBrowser methodsFor:'drag & drop'!
 
 canDropObjects:aCollectionOfDropObjects
@@ -1941,6 +1952,7 @@
     "Modified: 6.4.1997 / 14:46:44 / cg"
 ! !
 
+
 !FileBrowser methodsFor:'events'!
 
 handlesKeyPress:key inView:view
@@ -2062,6 +2074,7 @@
     "Modified: / 18.2.1998 / 17:57:44 / cg"
 ! !
 
+
 !FileBrowser methodsFor:'fileList user interaction'!
 
 bigImagePreviewSettingChanged
@@ -3828,6 +3841,7 @@
     "Modified: / 4.8.1998 / 13:44:14 / cg"
 ! !
 
+
 !FileBrowser methodsFor:'help'!
 
 helpTextFor:aComponent
@@ -3854,6 +3868,7 @@
     ^ nil
 ! !
 
+
 !FileBrowser methodsFor:'initialization & release'!
 
 createTabRulerIn:topFrame
@@ -4358,6 +4373,7 @@
     "Created: 24.7.1997 / 18:13:46 / cg"
 ! !
 
+
 !FileBrowser methodsFor:'menu actions'!
 
 addBookmark
@@ -4506,6 +4522,7 @@
     "Modified: / 14.8.1998 / 16:44:00 / cg"
 ! !
 
+
 !FileBrowser methodsFor:'menu actions-cvs'!
 
 cvsAddAndCommitSelection
@@ -4720,6 +4737,7 @@
     "Modified: / 21.10.1998 / 17:02:11 / cg"
 ! !
 
+
 !FileBrowser methodsFor:'misc user interaction'!
 
 closeRequest
@@ -4853,6 +4871,7 @@
     "Modified: 29.5.1996 / 16:13:43 / cg"
 ! !
 
+
 !FileBrowser methodsFor:'pathField user interaction'!
 
 addDirToJavaClassPath
@@ -5184,6 +5203,7 @@
     "Created: 2.8.1997 / 14:11:41 / cg"
 ! !
 
+
 !FileBrowser methodsFor:'private'!
 
 ask:question yesButton:yesButtonText
@@ -5365,6 +5385,7 @@
     ^ aCollection reject:[:fn | fn asFilename isHidden].
 ! !
 
+
 !FileBrowser methodsFor:'private-actions & command execution'!
 
 binaryFileAction:aFilename
@@ -5733,6 +5754,7 @@
     "Modified: 18.9.1997 / 16:58:40 / stefan"
 ! !
 
+
 !FileBrowser methodsFor:'private-directory stuff'!
 
 changeToPreviousDirectory
@@ -5989,6 +6011,7 @@
     "Modified: / 16.12.1998 / 22:55:44 / cg"
 ! !
 
+
 !FileBrowser methodsFor:'private-file I/O'!
 
 readFile:fileName
@@ -6299,6 +6322,7 @@
     "Modified: / 6.5.1999 / 11:45:50 / cg"
 ! !
 
+
 !FileBrowser methodsFor:'private-file stuff'!
 
 doCreateFile:newName
@@ -6654,6 +6678,7 @@
     "Modified: / 21-09-2006 / 18:34:45 / cg"
 ! !
 
+
 !FileBrowser methodsFor:'private-file type & info'!
 
 fileTypeSpecificActions
@@ -6872,6 +6897,7 @@
     ^ (n printStringLeftPaddedTo:5) , unitString.
 ! !
 
+
 !FileBrowser methodsFor:'private-presentation'!
 
 defineTabulatorsForLongList
@@ -7465,6 +7491,7 @@
     "Modified: / 15.11.2001 / 23:49:03 / cg"
 ! !
 
+
 !FileBrowser methodsFor:'queries'!
 
 fileName
@@ -7499,6 +7526,7 @@
     "Modified: / 12.8.1998 / 14:45:48 / cg"
 ! !
 
+
 !FileBrowser class methodsFor:'documentation'!
 
 version
@@ -7507,4 +7535,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/FileBrowser.st,v 1.643 2012-07-27 09:07:58 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: FileBrowser.st 8048 2012-09-07 17:28:09Z vranyj1 $'
 ! !
+
--- a/FileBrowserV2.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FileBrowserV2.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 2002 by eXept Software AG
-	      All Rights Reserved
+              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
@@ -24,7 +24,7 @@
 copyright
 "
  COPYRIGHT (c) 2002 by eXept Software AG
-	      All Rights Reserved
+              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
@@ -40,36 +40,36 @@
     FileBrowserV2 is based on Filebrowser
 
     WARNING: files edited with FileBrowser will have leading spaces (multiple-8)
-	     being replaced by tabs. If tabs are to be preserved at other
-	     positions (for example, sendmail-config files) they will be
-	     corrupt after being written.
+             being replaced by tabs. If tabs are to be preserved at other
+             positions (for example, sendmail-config files) they will be
+             corrupt after being written.
 
     [instance variables]:
 
-	checkDelta      <Integer>       number of seconds of check interval
-					(looks ever so often if shown directory
-					 has changed). You may make this number
-					higher, if your network-times are
-					incorrect and thus, the filebrowser
-					checks too often.
+        checkDelta      <Integer>       number of seconds of check interval
+                                        (looks ever so often if shown directory
+                                         has changed). You may make this number
+                                        higher, if your network-times are
+                                        incorrect and thus, the filebrowser
+                                        checks too often.
 
-	compressTabs    <Boolean>       if true, leading spaces will be
-					replaced by tabs when saving text
+        compressTabs    <Boolean>       if true, leading spaces will be
+                                        replaced by tabs when saving text
 
     some of the defaults (long/short list etc.) can be set by the resource file;
     see FileBrowser>>initialize for more details..
 
     [author:]
-	Christian Penk
+        Christian Penk
 
     [start with:]
-	FileBrowserV2 open
+        FileBrowserV2 open
 "
 !
 
 toDo
 "
-    - the tab for the directory description text editor is not changed if the
+    - the tab for the directory description text editor is not changed if the 
       directory description changes to a normal text editor
     - FileDialog should get a file history
     - directorycontentsItem isDirectory fails if it is a symbolic link
@@ -81,6 +81,7 @@
 "
 ! !
 
+
 !FileBrowserV2 class methodsFor:'instance creation'!
 
 on:aDirectoryPath
@@ -106,22 +107,22 @@
     "
 !
 
-openIn:aDirectoryPath
+openIn:aDirectoryPath 
     "backward compatibility"
 
     ^ self openOn:aDirectoryPath
 !
 
-openOn:aFileOrDirectoryPath
+openOn:aFileOrDirectoryPath 
     "start a new FileBrowserV2 in a pathname"
 
     |fn|
 
     fn := aFileOrDirectoryPath asFilename.
     fn isDirectory ifFalse:[
-	^ self openOnFileNamed:aFileOrDirectoryPath
+        ^ self openOnFileNamed:aFileOrDirectoryPath
     ] ifTrue:[
-	^ self openOn:fn withExtent:nil
+        ^ self openOn:fn withExtent:nil
     ].
 
     "
@@ -140,7 +141,7 @@
     instance := self on:aDirectoryPath.
     builder := instance open.
     extentOrNil notNil ifTrue:[
-	builder window extent:extentOrNil.
+        builder window extent:extentOrNil.
     ].
     ^ instance
 
@@ -149,7 +150,7 @@
     "
 !
 
-openOnDirectory:aDirectoryPath
+openOnDirectory:aDirectoryPath 
     "start a new FileBrowserV2 in a pathname"
 
     ^ self openOn:aDirectoryPath withExtent:nil
@@ -197,6 +198,7 @@
     ^ clone
 ! !
 
+
 !FileBrowserV2 class methodsFor:'class initialization'!
 
 initialize
@@ -211,7 +213,9 @@
 
     FileBrowserV2 isNil ifTrue:[^ self].
 
-    action := (MessageSend receiver:(Smalltalk at:self name) selector:#open).
+    "JV@2012-04-03: Changed to reflect UserPreferences"
+    "/action := (MessageSend receiver:(Smalltalk at:self name) selector:#open).
+    action := [ UserPreferences current fileBrowserClass open].
 
     icon := [self defaultIcon]. "/ self defaultIcon magnifiedTo:28@28.
 
@@ -261,6 +265,8 @@
      self installInLauncher
      self removeFromLauncher
     "
+
+    "Modified: / 03-04-2012 / 11:06:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 removeFromLauncher
@@ -274,7 +280,7 @@
     NewLauncher removeUserTool:#fileBrowserV2.
     currentLauncher := NewLauncher current.
     currentLauncher notNil ifTrue:[
-	currentLauncher fileBrowserItemVisible value:false
+        currentLauncher fileBrowserItemVisible value:false
     ].
     NewLauncher removeSettingsApplicationByClass:#'FileBrowserV2SettingsAppl'.
 
@@ -285,13 +291,14 @@
 
 update:something with:aParameter from:changedObject
     something == #initialized ifTrue:[
-	changedObject == ObjectMemory ifTrue:[
-	    self installInLauncher.
-	    ObjectMemory removeDependent:self.
-	]
+        changedObject == ObjectMemory ifTrue:[
+            self installInLauncher.
+            ObjectMemory removeDependent:self.
+        ]
     ].
 ! !
 
+
 !FileBrowserV2 class methodsFor:'defaults'!
 
 entryFieldEndStringForMultipleSelection
@@ -299,6 +306,7 @@
     ^ ('[*]')
 ! !
 
+
 !FileBrowserV2 class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -309,7 +317,7 @@
      the UIHelpTool may not be able to read the specification."
 
     "
-     UIHelpTool openOnClass:FileBrowserV2
+     UIHelpTool openOnClass:FileBrowserV2    
     "
 
     <resource: #help>
@@ -338,8 +346,33 @@
 )
 
     "Modified: / 06-10-2011 / 14:37:12 / cg"
+!
+
+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:FileBrowserV2    
+    "
+
+    <resource: #help>
+
+    ^ super helpSpec addPairsFrom:#(
+
+#addTerminal
+''
+
+#make
+''
+
+)
 ! !
 
+
 !FileBrowserV2 class methodsFor:'image specs'!
 
 applicationIcon
@@ -375,6 +408,7 @@
     ^ ToolbarIconLibrary hideToolbarIconH26
 ! !
 
+
 !FileBrowserV2 class methodsFor:'interface specs'!
 
 windowSpec
@@ -727,6 +761,7 @@
       )
 ! !
 
+
 !FileBrowserV2 class methodsFor:'menu specs'!
 
 editModeInfoLabelMenu
@@ -743,27 +778,27 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
-	(
-	 (MenuItem
-	    label: 'Insert'
-	    itemValue: editModeInsert
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    label: 'Overwrite'
-	    itemValue: editModeOverwrite
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    label: 'Insert Selecting'
-	    itemValue: editModeInsertAndSelect
-	    translateLabel: true
-	  )
-	 )
-	nil
-	nil
+        (
+         (MenuItem
+            label: 'Insert'
+            itemValue: editModeInsert
+            translateLabel: true
+          )
+         (MenuItem
+            label: 'Overwrite'
+            itemValue: editModeOverwrite
+            translateLabel: true
+          )
+         (MenuItem
+            label: 'Insert Selecting'
+            itemValue: editModeInsertAndSelect
+            translateLabel: true
+          )
+         )
+        nil
+        nil
       )
 
     "Created: / 11-09-2006 / 12:23:59 / cg"
@@ -783,25 +818,25 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
-	(
-	 (MenuItem
-	    label: 'Encoding...'
-	    itemValue: fileEncodingDialog
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    label: 'Locked'
-	    translateLabel: true
-	    indication: lockFileEncodingHolder
-	  )
-	 )
-	nil
-	nil
+        (
+         (MenuItem
+            label: 'Encoding...'
+            itemValue: fileEncodingDialog
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Locked'
+            translateLabel: true
+            indication: lockFileEncodingHolder
+          )
+         )
+        nil
+        nil
       )
 !
 
@@ -820,158 +855,140 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
-	(
-	 (MenuItem
-	    label: 'Browser'
-	    translateLabel: true
-	    submenuChannel: browserMenu
-	  )
-	 (MenuItem
-	    label: 'Directory'
-	    translateLabel: true
-	    submenuChannel: directoryMenu
-	  )
-	 (MenuItem
-	    label: 'File'
-	    translateLabel: true
-	    submenuChannel: fileMenu
-	  )
-	 (MenuItem
-	    label: 'Edit'
-	    translateLabel: true
-	    submenuChannel: editMenu
-	  )
-	 (MenuItem
-	    label: 'View'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  label: 'Details'
-		  translateLabel: true
-		  submenuChannel: viewInContentsBrowserMenu
-		)
-	       (MenuItem
-		  label: 'Sort'
-		  translateLabel: true
-		  submenuChannel: sortMenu
-		)
-	       (MenuItem
-		  label: 'Show'
-		  translateLabel: true
-		  submenuChannel: showMenuSpec
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  label: 'Toolbar'
-		  translateLabel: true
-		  hideMenuOnActivated: false
-		  indication: toolBarVisibleHolder
-		)
-	       (MenuItem
-		  label: 'Path Entry && Filter'
-		  translateLabel: true
-		  hideMenuOnActivated: false
-		  indication: filenameEntryFieldVisibleHolder
-		)
-	       (MenuItem
-		  label: 'Info'
-		  translateLabel: true
-		  hideMenuOnActivated: false
-		  indication: infoBarVisibleHolder
-		)
-	       (MenuItem
-		  label: 'Tags'
-		  translateLabel: true
-		  indication: tagsBrowserVisibleHolder
-		)
-	       (MenuItem
-		  label: 'Preview'
-		  translateLabel: true
-		  hideMenuOnActivated: false
-		  indication: previewVisibleHolder
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  label: 'Update'
-		  itemValue: updateCurrentDirectory
-		  translateLabel: true
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    label: 'Tools'
-	    translateLabel: true
-	    submenuChannel: toolsMenuSpec
-	  )
-	 (MenuItem
-	    label: 'CVS'
-	    translateLabel: true
-	    isVisible: cvsMenusAreShown
-	    submenuChannel: cvsMenu
-	  )
-	 (MenuItem
-	    label: 'SVN'
-	    translateLabel: true
-	    isVisible: svnMenusAreShown
-	    submenuChannel: svnMenu
-	  )
-	 (MenuItem
-	    label: 'Mercurial'
-	    translateLabel: true
-	    isVisible: mercurialMenusAreShown
-	    submenuChannel: mercurialMenu
-	  )
-	 (MenuItem
-	    label: 'Perforce'
-	    translateLabel: true
-	    isVisible: perforceMenusAreShown
-	    submenuChannel: perforceMenu
-	  )
-	 (MenuItem
-	    label: 'Extras'
-	    translateLabel: true
-	    submenuChannel: extraMenu
-	  )
-	 (MenuItem
-	    label: 'MENU_Help'
-	    translateLabel: true
-	    startGroup: conditionalRight
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  label: 'FileBrowser Documentation'
-		  itemValue: openHTMLDocument:
-		  translateLabel: true
-		  argument: 'tools/fbrowserV2/TOP.html'
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  label: 'About FileBrowser...'
-		  itemValue: openAboutThisApplication
-		  translateLabel: true
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 )
-	nil
-	nil
+        (
+         (MenuItem
+            label: 'Browser'
+            translateLabel: true
+            submenuChannel: browserMenu
+          )
+         (MenuItem
+            label: 'Directory'
+            translateLabel: true
+            submenuChannel: directoryMenu
+          )
+         (MenuItem
+            label: 'File'
+            translateLabel: true
+            submenuChannel: fileMenu
+          )
+         (MenuItem
+            label: 'Edit'
+            translateLabel: true
+            submenuChannel: editMenu
+          )
+         (MenuItem
+            label: 'View'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'Details'
+                  translateLabel: true
+                  submenuChannel: viewInContentsBrowserMenu
+                )
+               (MenuItem
+                  label: 'Sort'
+                  translateLabel: true
+                  submenuChannel: sortMenu
+                )
+               (MenuItem
+                  label: 'Show'
+                  translateLabel: true
+                  submenuChannel: showMenuSpec
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Toolbar'
+                  translateLabel: true
+                  hideMenuOnActivated: false
+                  indication: toolBarVisibleHolder
+                )
+               (MenuItem
+                  label: 'Path Entry && Filter'
+                  translateLabel: true
+                  hideMenuOnActivated: false
+                  indication: filenameEntryFieldVisibleHolder
+                )
+               (MenuItem
+                  label: 'Info'
+                  translateLabel: true
+                  hideMenuOnActivated: false
+                  indication: infoBarVisibleHolder
+                )
+               (MenuItem
+                  label: 'Tags'
+                  translateLabel: true
+                  indication: tagsBrowserVisibleHolder
+                )
+               (MenuItem
+                  label: 'Preview'
+                  translateLabel: true
+                  hideMenuOnActivated: false
+                  indication: previewVisibleHolder
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Update'
+                  itemValue: updateCurrentDirectory
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: 'Tools'
+            translateLabel: true
+            submenuChannel: toolsMenuSpec
+          )
+         (MenuItem
+            label: 'Source Code Management'
+            translateLabel: true
+            submenuChannel: scmMenuSlice
+            isMenuSlice: true
+          )
+         (MenuItem
+            label: 'Extras'
+            translateLabel: true
+            submenuChannel: extraMenu
+          )
+         (MenuItem
+            label: 'MENU_Help'
+            translateLabel: true
+            startGroup: conditionalRight
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'FileBrowser Documentation'
+                  itemValue: openHTMLDocument:
+                  translateLabel: true
+                  argument: 'tools/fbrowserV2/TOP.html'
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'About FileBrowser...'
+                  itemValue: openAboutThisApplication
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
       )
 !
 
@@ -989,17 +1006,17 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(#Menu
-	#(
-	 #(#MenuItem
-	    #label: 'Close Preview'
-	    #itemValue: #closePreview
-	    #translateLabel: true
-	  )
-	 )
-	nil
-	nil
+        #(
+         #(#MenuItem
+            #label: 'Close Preview'
+            #itemValue: #closePreview
+            #translateLabel: true
+          )
+         )
+        nil
+        nil
       )
 !
 
@@ -1010,6 +1027,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:FileBrowserV2 andSelector:#toolBarMainMenu
      (Menu new fromLiteralArrayEncoding:(FileBrowserV2 toolBarMainMenu)) startUp
@@ -1236,6 +1254,7 @@
       )
 ! !
 
+
 !FileBrowserV2 methodsFor:'actions'!
 
 changeFileBrowserTitleTo:aString
@@ -1267,104 +1286,113 @@
     self viewDetails value:viewDetails.
 
     viewDetails ifTrue:[
-	anItem activeHelpKey:#hideFileDetails.
-	anItem label:(ToolbarIconLibrary viewNoDetailsIcon).
+        anItem activeHelpKey:#hideFileDetails.
+        anItem label:(ToolbarIconLibrary viewNoDetailsIcon).
     ] ifFalse:[
-	anItem activeHelpKey:#showFileDetails.
-	anItem label:(ToolbarIconLibrary viewDetailsIcon).
+        anItem activeHelpKey:#showFileDetails.
+        anItem label:(ToolbarIconLibrary viewDetailsIcon).
     ].
 ! !
 
+
 !FileBrowserV2 methodsFor:'aspects'!
 
 busyLabelHolder
-    ^ self
-	aspectFor:#busyLabelHolder
-	ifAbsent:[ ' ' asValue ].
+    ^ self 
+        aspectFor:#busyLabelHolder 
+        ifAbsent:[ ' ' asValue ].
 
     "Created: / 25-07-2006 / 09:06:00 / cg"
 !
 
 canAddToClassPath
-    ^ [
-	|f|
+    ^ [ 
+        |f|
 
-	(Java isNil or:[Java isLoaded not]) ifTrue:[
-	    false
-	] ifFalse:[
-	    f := self currentFileNameHolder value.
-	    f size == 1
-	    and:[ f:= f first. (Java classPath includes:f pathName not)
-	    and:[f isDirectory
-		 or:[(f hasSuffix:'jar')
-		 or:[(f hasSuffix:'zip')]]]]
-	  ]
+        (Java isNil or:[Java isLoaded not]) ifTrue:[
+            false
+        ] ifFalse:[
+            f := self currentFileNameHolder value.
+            f size == 1 
+            and:[ f:= f first. (Java classPath includes:f pathName not)
+            and:[f isDirectory
+                 or:[(f hasSuffix:'jar')
+                 or:[(f hasSuffix:'zip')]]]]
+          ]
       ]
 !
 
 canAddToSourcePath
-    ^ [
-	|f|
+    ^ [ 
+        |f|
 
-	(Java isNil or:[Java isLoaded not]) ifTrue:[
-	    false
-	] ifFalse:[
-	    f := self currentFileNameHolder value.
-	    f size == 1
-	    and:[ f:= f first. (Java sourcePath isNil
-		 or:[(Java sourcePath includes:f pathName) not])
-	    and:[f isDirectory
-		 or:[(f hasSuffix:'jar')
-		 or:[(f hasSuffix:'zip')]]]].
-	  ]
+        (Java isNil or:[Java isLoaded not]) ifTrue:[
+            false
+        ] ifFalse:[
+            f := self currentFileNameHolder value.
+            f size == 1 
+            and:[ f:= f first. (Java sourcePath isNil
+                 or:[(Java sourcePath includes:f pathName) not])
+            and:[f isDirectory
+                 or:[(f hasSuffix:'jar')
+                 or:[(f hasSuffix:'zip')]]]].
+          ]
       ]
 !
 
 canRemoveFromClassPath
-    ^ [
-	|f|
+    ^ [ 
+        |f|
 
-	(Java isNil or:[Java isLoaded not]) ifTrue:[
-	    false
-	] ifFalse:[
-	    f := self currentFileNameHolder value.
-	    f size == 1
-	    and:[f:= f first. (Java classPath includes:f pathName)
-	    and:[f isDirectory
-		 or:[(f hasSuffix:'jar')
-		 or:[(f hasSuffix:'zip')]]]]
-	  ]
+        (Java isNil or:[Java isLoaded not]) ifTrue:[
+            false
+        ] ifFalse:[
+            f := self currentFileNameHolder value.
+            f size == 1 
+            and:[f:= f first. (Java classPath includes:f pathName)
+            and:[f isDirectory
+                 or:[(f hasSuffix:'jar')
+                 or:[(f hasSuffix:'zip')]]]]
+          ]
       ]
 !
 
+currentDirectoryDisplayed
+    "Return a directory that is currently displayed in the browser"
+
+    ^self fileEntryFieldHolder value asFilename
+
+    "Modified: / 14-01-2013 / 11:58:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 cursorColLabelHolder
-    ^ self
-	aspectFor:#cursorColLabelHolder
-	ifAbsent:[
-	    self
-		applicationNamed:#FileApplicationNoteBook
-		ifPresentDo:[:appl | appl cursorColLabelHolder].
-	]
+    ^ self 
+        aspectFor:#cursorColLabelHolder 
+        ifAbsent:[
+            self 
+                applicationNamed:#FileApplicationNoteBook
+                ifPresentDo:[:appl | appl cursorColLabelHolder].
+        ]
 !
 
 cursorLineLabelHolder
-    ^ self
-	aspectFor:#cursorLineLabelHolder
-	ifAbsent:[
-	    self
-		applicationNamed:#FileApplicationNoteBook
-		ifPresentDo:[:appl | appl cursorLineLabelHolder].
-	]
+    ^ self 
+        aspectFor:#cursorLineLabelHolder
+        ifAbsent:[
+            self 
+                applicationNamed:#FileApplicationNoteBook
+                ifPresentDo:[:appl | appl cursorLineLabelHolder].
+        ]
 !
 
 fileEncodingLockImageHolder
-    ^ self
-	aspectFor:#fileEncodingLockImageHolder
-	ifAbsent:[
-	    BlockValue
-		with:[:m | m == true ifTrue:[self class encodingLockIcon] ifFalse:[nil] ]
-		argument:(self lockFileEncodingHolder)
-	]
+    ^ self 
+        aspectFor:#fileEncodingLockImageHolder 
+        ifAbsent:[
+            BlockValue
+                with:[:m | m == true ifTrue:[self class encodingLockIcon] ifFalse:[nil] ] 
+                argument:(self lockFileEncodingHolder)
+        ]
 
     "Modified: / 08-03-2007 / 22:59:12 / cg"
 !
@@ -1372,8 +1400,8 @@
 fileEntryFieldHolder
 
     fileEntryFieldHolder isNil ifTrue:[
-	fileEntryFieldHolder := ValueHolder new.
-	fileEntryFieldHolder addDependent:self.
+        fileEntryFieldHolder := ValueHolder new.
+        fileEntryFieldHolder addDependent:self.
     ].
     ^ fileEntryFieldHolder.
 !
@@ -1381,25 +1409,25 @@
 listOfDeviceDrives
 
     listOfDeviceDrives isNil ifTrue:[
-	listOfDeviceDrives := Filename volumes.
+        listOfDeviceDrives := Filename volumes.
     ].
     ^ listOfDeviceDrives
 !
 
 modeLabelHolder
-    ^ self
-	aspectFor:#modeLabelHolder
-	ifAbsent:[
-	    self
-		applicationNamed:#FileApplicationNoteBook
-		ifPresentDo:[:appl | appl modeLabelHolder].
-	]
+    ^ self 
+        aspectFor:#modeLabelHolder 
+        ifAbsent:[
+            self 
+                applicationNamed:#FileApplicationNoteBook
+                ifPresentDo:[:appl | appl modeLabelHolder].
+        ]
 !
 
 modeLabelMenuHolder
-    ^ self
-	applicationNamed:#FileApplicationNoteBook
-	ifPresentDo:[:appl | appl modeLabelMenu].
+    ^ self 
+        applicationNamed:#FileApplicationNoteBook
+        ifPresentDo:[:appl | appl modeLabelMenu].
 
     "Created: / 11-09-2006 / 12:26:44 / cg"
 !
@@ -1407,12 +1435,13 @@
 selectedDeviceDrive
 
     selectedDeviceDrive isNil ifTrue:[
-	selectedDeviceDrive := self listOfDeviceDrives first asValue.
-	selectedDeviceDrive addDependent:self.
+        selectedDeviceDrive := self listOfDeviceDrives first asValue.
+        selectedDeviceDrive addDependent:self.
     ].
     ^ selectedDeviceDrive
 ! !
 
+
 !FileBrowserV2 methodsFor:'aspects-visibility'!
 
 busyLabelVisibleHolder
@@ -1449,6 +1478,7 @@
     ^ self aspectFor:#toolBarVisibleHolder ifAbsent:[true asValue]
 ! !
 
+
 !FileBrowserV2 methodsFor:'change & update'!
 
 currentFileNameHolderChanged
@@ -1458,28 +1488,28 @@
     nSelected := files size.
 
     nSelected == 0 ifTrue:[
-	newEntryValue := ''.
+        newEntryValue := ''.
     ] ifFalse:[
-	nSelected == 1 ifTrue:[
-	    newEntryValue := files first.
-	] ifFalse:[
-	    newEntryValue := self commonPrefixOfSelectedFiles.
-	].
+        nSelected == 1 ifTrue:[
+            newEntryValue := files first.
+        ] ifFalse:[
+            newEntryValue := self commonPrefixOfSelectedFiles.
+        ].
     ].
     self fileEntryFieldHolder value:(newEntryValue asString) withoutNotifying:self.
 
     OperatingSystem supportsVolumes ifTrue:[
-	volume := (nSelected >= 1)
-		    ifTrue:[files first volume]
-		    ifFalse:[nil].
-	self selectedDeviceDrive value:volume.
+        volume := (nSelected >= 1) 
+                    ifTrue:[files first volume] 
+                    ifFalse:[nil].    
+        self selectedDeviceDrive value:volume.
     ].
     self updatePreview.
 
     nSelected == 1 ifTrue:[
-	self currentDirectory notNil ifTrue:[
-	    self window label:(self currentDirectory baseName)
-	]
+        self currentDirectory notNil ifTrue:[
+            self window label:(self currentDirectory baseName)  
+        ]
     ].
 
     "Modified: / 06-07-2011 / 09:41:50 / cg"
@@ -1490,48 +1520,48 @@
 
     fileNameString := fileEntryFieldHolder value withoutSeparators.
     fileName := fileNameString asFilename.
-    fileNameString isEmpty ifTrue:[
-	pathEntryField flash.
-	^ self
+    fileNameString isEmpty ifTrue:[ 
+        pathEntryField flash.
+        ^ self
     ].
 
-    (fileName exists) ifFalse:[
-	pathEntryField flash.
+    (fileName exists) ifFalse:[ 
+        pathEntryField flash.
 
-	dir := fileName directory.
-	dir exists ifTrue:[
-	    self currentFileNameHolder
-		value:(OrderedCollection with:dir)
-		withoutNotifying:self.
-	].
-	fileName baseName includesMatchCharacters ifTrue:[
-	    self fileEntryFieldHolder value:(fileName directoryName) withoutNotifying:self.
-	    self filterModel value:fileName baseName.
-	].
+        dir := fileName directory.
+        dir exists ifTrue:[
+            self currentFileNameHolder 
+                value:(OrderedCollection with:dir)
+                withoutNotifying:self.
+        ].
+        fileName baseName includesMatchCharacters ifTrue:[
+            self fileEntryFieldHolder value:(fileName directoryName) withoutNotifying:self.
+            self filterModel value:fileName baseName.
+        ].
 
-"/        answer := OptionBox
+"/        answer := OptionBox 
 "/           request:(resources string:'No file or directory named "%1" exists.\\Create ?' with:fileNameString allBold) withCRs
 "/           buttonLabels:#('Create as File' 'Create as Directory' 'Cancel')
 "/           values:#(createFile createDirectory nil)
 "/           default:nil.
 "/
-	answer isNil ifTrue:[
-	    ^ self.
-	].
+        answer isNil ifTrue:[
+            ^ self.
+        ].
 
-	[
-	    answer == #createFile ifTrue:[
-		fileName directory recursiveMakeDirectory.
-		fileName createAsEmptyFile.
-	    ] ifFalse:[
-		answer == #createDirectory ifTrue:[
-		    fileName recursiveMakeDirectory.
-		]
-	    ].
-	] on:OperatingSystem accessDeniedErrorSignal do:[:ex |
-	    Dialog warn:'Error: ' , ex description.
-	].
-	^ self
+        [
+            answer == #createFile ifTrue:[
+                fileName directory recursiveMakeDirectory.
+                fileName createAsEmptyFile.
+            ] ifFalse:[
+                answer == #createDirectory ifTrue:[
+                    fileName recursiveMakeDirectory.
+                ]
+            ].
+        ] on:OperatingSystem accessDeniedErrorSignal do:[:ex |
+            Dialog warn:'Error: ' , ex description.
+        ].
+        ^ self
     ].
     self setCurrentFileName:fileName.
 !
@@ -1542,21 +1572,21 @@
     newDrive := self selectedDeviceDrive value.
     curSel := self currentSelectedObjects.
     curSel notEmptyOrNil ifTrue:[
-	curSel first volume = newDrive ifTrue:[ ^self].
+        curSel first volume = newDrive ifTrue:[ ^self].
     ].
 
     newDrive notNil ifTrue:[
-	newFile := newDrive asFilename.
+        newFile := newDrive asFilename.
 
-	newFile isReadable ifTrue:[
-	    self gotoFile:newFile.
-	    ^self.
-	].
+        newFile isReadable ifTrue:[
+            self gotoFile:newFile.
+            ^self.
+        ].
     ].
-    self selectedDeviceDrive
-	value:(curSel notEmptyOrNil
-		ifTrue:[curSel first volume]
-		ifFalse:['C:']).
+    self selectedDeviceDrive 
+        value:(curSel notEmptyOrNil 
+                ifTrue:[curSel first volume]
+                ifFalse:['C:']).
 
     "Modified: / 18-09-2007 / 09:41:30 / cg"
 !
@@ -1566,14 +1596,14 @@
 
     files := self currentSelectedFiles.
     files size >= 1 ifFalse:[
-	^ nil
+        ^ nil
     ].
-    selectedFile := files last.
+    selectedFile := files last.    
 
     mime := MIMETypes mimeTypeForFilename:selectedFile.
     (mime notNil and:[mime startsWith:'image/']) ifTrue:[
-	img := Image fromFile:selectedFile.
-	^ img
+        img := Image fromFile:selectedFile.
+        ^ img
     ].
 
     ^ nil.
@@ -1597,38 +1627,38 @@
     lbl := shownImage isNil ifTrue:'Preview' ifFalse:[ shownImage fileName asFilename baseName ].
 
     previewLabel := builder componentAt:#PreviewLabel.
-    previewLabel label:lbl; forceResizeHorizontally.
-    self enqueueMessage:#'showImagePreview:' for:self arguments:(Array with:shownImage).
+    previewLabel label:lbl; forceResizeHorizontally.     
+    self enqueueMessage:#'showImagePreview:' for:self arguments:(Array with:shownImage).        
 !
 
 update:something with:aParameter from:changedObject
     changedObject == self selectedDeviceDrive ifTrue:[
-	self selectedDeviceDriveChanged.
-	^ self.
+        self selectedDeviceDriveChanged.
+        ^ self.
     ].
     changedObject == self fileEntryFieldHolder ifTrue:[
-	self fileEntryFieldHolderChanged.
-	^ self.
+        self fileEntryFieldHolderChanged.
+        ^ self.
     ].
     changedObject == self currentFileNameHolder ifTrue:[
-	super update:something with:aParameter from:changedObject.
-	self currentFileNameHolderChanged.
-	^ self.
+        super update:something with:aParameter from:changedObject.
+        self currentFileNameHolderChanged.
+        ^ self.
     ].
     (changedObject == self previewVisibleHolder) ifTrue:[
-	self updatePreview.
-	^ self.
+        self updatePreview.
+        ^ self.
     ].
-    (changedObject == self toolBarVisibleHolder
+    (changedObject == self toolBarVisibleHolder 
     or:[changedObject == self filenameEntryFieldVisibleHolder
     or:[changedObject == self infoBarVisibleHolder]]) ifTrue:[
-	self updateToolVisibility.
-	^ self.
+        self updateToolVisibility.
+        ^ self.
     ].
     (changedObject == self sortBlockProperty or:[changedObject == self sortDirectoriesBeforeFiles]) ifTrue:[
-	self sortFileListsBy:(self sortBlockProperty value) withReverse:false.
-	^ self.
-    ].
+        self sortFileListsBy:(self sortBlockProperty value) withReverse:false.
+        ^ self.
+    ].             
 
     ^ super update:something with:aParameter from:changedObject.
 
@@ -1639,38 +1669,38 @@
     |previewLabel shownImage plug closePreviewButton|
 
     self previewVisibleHolder value ifTrue:[
-	shownImage := nil.
-	imgView := builder componentAt:#Preview.
-	previewLabel := builder componentAt:#PreviewLabel.
-	closePreviewButton := builder componentAt:#ClosePreviewButton.
+        shownImage := nil.
+        imgView := builder componentAt:#Preview.
+        previewLabel := builder componentAt:#PreviewLabel.
+        closePreviewButton := builder componentAt:#ClosePreviewButton.
 
-	plug := Plug new.
-	plug respondTo:#closePreview with:[ self previewVisibleHolder value:false ].
+        plug := Plug new.
+        plug respondTo:#closePreview with:[ self previewVisibleHolder value:false ].
 
-	previewLabel menuHolder:(self class previewLabelMenu decodeAsLiteralArray).
-	previewLabel menuPerformer:plug asValue.
+        previewLabel menuHolder:(self class previewLabelMenu decodeAsLiteralArray).
+        previewLabel menuPerformer:plug asValue.
 
-	closePreviewButton action:[ self previewVisibleHolder value:false ].
+        closePreviewButton action:[ self previewVisibleHolder value:false ].
 
-	previewProcess notNil ifTrue:[
-	    previewProcess terminate
-	].
-	previewProcess := [
-				|imgView oldBg shownImage lbl|
+        previewProcess notNil ifTrue:[
+            previewProcess terminate
+        ].
+        previewProcess := [
+                                |imgView oldBg shownImage lbl|
 
-				oldBg := previewLabel backgroundColor.
-				previewLabel backgroundColor:(Color red lightened lightened).
-				[
-				    self showPreview.
-				    previewProcess := nil.
-				] ensure:[
-				    previewLabel backgroundColor:oldBg.
-				].
-			  ] forkAt:7.
+                                oldBg := previewLabel backgroundColor.
+                                previewLabel backgroundColor:(Color red lightened lightened).
+                                [
+                                    self showPreview.
+                                    previewProcess := nil.
+                                ] ensure:[
+                                    previewLabel backgroundColor:oldBg.
+                                ].
+                          ] forkAt:7.
     ] ifFalse:[
-	imgView notNil ifTrue:[
-	    imgView image:nil.
-	]
+        imgView notNil ifTrue:[
+            imgView image:nil.
+        ]
     ].
 !
 
@@ -1685,35 +1715,36 @@
 
     toolBarVisible := self toolBarVisibleHolder value.
     toolBarVisible ifTrue:[
-	toolBar := builder componentAt:#ToolbarBox.
-	topOffset := topOffset + toolBar height.
+        toolBar := builder componentAt:#ToolbarBox.
+        topOffset := topOffset + toolBar height.
     ].
 
     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.
-	].
+        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.
+        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.
+        vPanel containerChangedSize.
     ].
 ! !
 
+
 !FileBrowserV2 methodsFor:'event handling'!
 
 crPressedInPathField
@@ -1722,7 +1753,7 @@
     path := fileEntryFieldHolder value.
     fn := path asFilename.
     (fn exists and:[ fn isDirectory not ]) ifTrue:[
-	self openApplForFile:path.
+        self openApplForFile:path.
     ]
 !
 
@@ -1789,6 +1820,7 @@
     "Modified: / 17-05-2007 / 09:12:53 / cg"
 ! !
 
+
 !FileBrowserV2 methodsFor:'menu accessing'!
 
 menuFileHistory
@@ -1807,29 +1839,29 @@
 
     removeCol := OrderedCollection new.
     hist do:[:aFileItem|
-	"aFileItem fileName exists" true ifTrue:[
-	    menu addItem:(MenuItem label: aFileItem fileName asString value:[
-		self setCurrentFileName:(aFileItem fileName).
-		self openApplByFileItem:aFileItem
-	    ]).
-	] ifFalse:[
-	    removeCol add:aFileItem.
-	]
+        "aFileItem fileName exists" true ifTrue:[
+            menu addItem:(MenuItem label: aFileItem fileName asString value:[
+                self setCurrentFileName:(aFileItem fileName).
+                self openApplByFileItem:aFileItem
+            ]).
+        ] ifFalse:[
+            removeCol add:aFileItem.
+        ]
     ].
     "/ remove all not existing history entries
     removeCol do:[ : el |
-	hist remove:el.
+        hist remove:el.
     ].
     removeItem := MenuItem new.
     removeItem translateLabel:true.
     text := resources string:'Clear History'.
     "/ text := LabelAndIcon icon:(self class clearHistoryIcon) string:text.
     removeItem label:text.
-    removeItem
-	itemValue:[
-	    self fileHistory removeAll.
-	    self enableFileHistory value:false.
-	].
+    removeItem 
+        itemValue:[
+            self fileHistory removeAll.
+            self enableFileHistory value:false.
+        ].
     menu addSeparator.
     menu addItem:removeItem.
     ^ menu
@@ -1837,34 +1869,36 @@
     "Modified: / 09-09-2012 / 13:08:42 / cg"
 ! !
 
+
 !FileBrowserV2 methodsFor:'queries'!
 
 getAllFilesAsStrings
     ^ self directoryContentsBrowser getAllFilesAsStrings
 ! !
 
+
 !FileBrowserV2 methodsFor:'startup & release'!
 
 closeRequest
     "asks for permission before closing"
 
-    self
-	applicationNamed:#FileApplicationNoteBook
-	ifPresentDo:[:appl | appl tryCloseApplications ifFalse:[^ self] ].
+    self 
+        applicationNamed:#FileApplicationNoteBook 
+        ifPresentDo:[:appl | appl tryCloseApplications ifFalse:[^ self] ]. 
 
     super closeRequest.
 !
 
 hideFilenameEntryFieldButtonCreated:aButton
 
-    aButton passiveLevel:(MenuPanel defaultLevel).
+    aButton passiveLevel:(MenuPanel defaultLevel). 
     aButton activeLevel:-1.
     aButton backgroundColor:(MenuPanel defaultBackgroundColor).
 !
 
 hideToolBarButtonCreated:aButton
 
-    aButton passiveLevel:(MenuPanel defaultLevel).
+    aButton passiveLevel:(MenuPanel defaultLevel). 
     aButton activeLevel:-1.
     aButton backgroundColor:(MenuPanel defaultBackgroundColor).
 !
@@ -1890,12 +1924,12 @@
 
     self createBuilder.
     aDirectoryPathOrNil notNil ifTrue:[
-	aDirectoryPathOrNil isCollection ifTrue:[
-	    files := aDirectoryPathOrNil
-	] ifFalse:[
-	    files := Array with:aDirectoryPathOrNil.
-	].
-	self currentFileNameHolder value:files.
+        aDirectoryPathOrNil isCollection ifTrue:[
+            files := aDirectoryPathOrNil
+        ] ifFalse:[
+            files := Array with:aDirectoryPathOrNil.
+        ].
+        self currentFileNameHolder value:files.
     ].
 !
 
@@ -1913,20 +1947,20 @@
 
     f := aFilename asFilename asAbsoluteFilename.
     f isDirectory ifTrue:[
-	self onDirectory:aFilename.
-	self open.
-	^ self.
+        self onDirectory:aFilename.
+        self open.
+        ^ self.
     ].
 
     self onDirectory:(f directory).
     self currentFileNameHolder setValue:(Array with:f).
     self open.
     self enqueueDelayedAction:[
-	editing ifTrue:[
-	    self openTextEditorForFile:f.
-	] ifFalse:[
-	    self openApplForFile:f.
-	].
+        editing ifTrue:[
+            self openTextEditorForFile:f.
+        ] ifFalse:[
+            self openApplForFile:f.
+        ].
     ].
 
     "
@@ -1975,14 +2009,14 @@
     "Load user settings"
     prefs := UserPreferences current.
     AbstractFileBrowser userPreferencesAspectList keysAndValuesDo:[:aspect :default|
-	| value |
+        | value |
 
-	(prefs respondsTo: aspect) ifTrue:[
-	    value := prefs perform: aspect
-	] ifFalse:[
-	    value := prefs at: aspect ifAbsent:[default].
-	].
-	(self perform: aspect) value: value
+        (prefs respondsTo: aspect) ifTrue:[
+            value := prefs perform: aspect
+        ] ifFalse:[
+            value := prefs at: aspect ifAbsent:[default].
+        ].
+        (self perform: aspect) value: value
     ]
 
     "Modified: / 10-10-2011 / 10:54:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -2004,10 +2038,15 @@
     ^ super release
 ! !
 
+
 !FileBrowserV2 class methodsFor:'documentation'!
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/FileBrowserV2.st,v 1.205 2013-01-26 21:04:45 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: FileBrowserV2.st 8084 2013-01-14 12:06:02Z vranyj1 $'
 ! !
 
 
--- a/FileBrowserV2PanelView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FileBrowserV2PanelView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -8,10 +8,7 @@
  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' }"
 
 VariablePanel subclass:#FileBrowserV2PanelView
@@ -192,5 +189,9 @@
 !FileBrowserV2PanelView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileBrowserV2PanelView.st,v 1.4 2004-08-04 17:59:43 cg Exp $'
+    ^ '$Id: FileBrowserV2PanelView.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+!
+
+version_SVN
+    ^ '$Id: FileBrowserV2PanelView.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/FileBrowserV2SettingsAppl.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FileBrowserV2SettingsAppl.st	Wed Jan 30 11:15:09 2013 +0000
@@ -601,9 +601,13 @@
 !FileBrowserV2SettingsAppl class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileBrowserV2SettingsAppl.st,v 1.28 2011-11-25 14:25:40 cg Exp $'
+    ^ '$Id: FileBrowserV2SettingsAppl.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/FileBrowserV2SettingsAppl.st,v 1.28 2011-11-25 14:25:40 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/FileBrowserV2SettingsAppl.st,v 1.28 2011/11/25 14:25:40 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: FileBrowserV2SettingsAppl.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/FileBrowserV2SettingsDialog.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FileBrowserV2SettingsDialog.st	Wed Jan 30 11:15:09 2013 +0000
@@ -329,9 +329,13 @@
 !FileBrowserV2SettingsDialog class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileBrowserV2SettingsDialog.st,v 1.11 2010-10-15 08:31:37 cg Exp $'
+    ^ '$Id: FileBrowserV2SettingsDialog.st 7972 2012-04-05 17:53:51Z vranyj1 $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/FileBrowserV2SettingsDialog.st,v 1.11 2010-10-15 08:31:37 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/FileBrowserV2SettingsDialog.st,v 1.11 2010/10/15 08:31:37 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id:: FileBrowserV2SettingsDialog.st 7972 2012-04-05 17:53:51Z vranyj1                                                       $'
 ! !
--- a/FileBrowserV2Tests.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FileBrowserV2Tests.st	Wed Jan 30 11:15:09 2013 +0000
@@ -184,5 +184,5 @@
 !FileBrowserV2Tests class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileBrowserV2Tests.st,v 1.9 2003-10-02 12:22:11 penk Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FileBrowserV2Tests.st,v 1.9 2003/10/02 12:22:11 penk Exp $'
 ! !
--- a/FileBrowserV2UISpecifications.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FileBrowserV2UISpecifications.st	Wed Jan 30 11:15:09 2013 +0000
@@ -640,5 +640,9 @@
 !FileBrowserV2UISpecifications class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileBrowserV2UISpecifications.st,v 1.6 2008-01-10 13:00:21 cg Exp $'
+    ^ '$Id: FileBrowserV2UISpecifications.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+!
+
+version_SVN
+    ^ '$Id: FileBrowserV2UISpecifications.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/FileBrowserV3.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,869 @@
+"
+ 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:'bookmarkBarVisibleHolder bookmarkHolder'
+	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:'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:#(
+
+#copyFile
+''
+
+#cutFile
+''
+
+#deleteFile
+''
+
+#editFile
+''
+
+#fileGotoBookmark
+''
+
+#fileHistory
+''
+
+#fileIn
+''
+
+#pasteFile
+''
+
+)
+! !
+
+!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
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+
+    "
+     MenuEditor new openOnClass:FileBrowserV3 andSelector:#toolBarMainMenu
+     (Menu new fromLiteralArrayEncoding:(FileBrowserV3 toolBarMainMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            activeHelpKey: directoryBack
+            enabled: enableBack
+            label: 'Back'
+            itemValue: doBack
+            translateLabel: true
+            isButton: true
+            submenuChannel: menuDirHistoryBack
+            labelImage: (ResourceRetriever ToolbarIconLibrary historyBackIcon)
+          )
+         (MenuItem
+            label: ''
+          )
+         (MenuItem
+            activeHelpKey: directoryForward
+            enabled: enableForward
+            label: 'Forward'
+            itemValue: doForward
+            translateLabel: true
+            isButton: true
+            submenuChannel: menuDirHistoryForward
+            labelImage: (ResourceRetriever ToolbarIconLibrary historyForwardIcon)
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: directoryUp
+            enabled: enableDirectoryUp
+            label: 'DirectoryUp'
+            itemValue: doGoDirectoryUp
+            translateLabel: true
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary directoryUpIcon)
+          )
+         (MenuItem
+            activeHelpKey: fileHome
+            enabled: enableHome
+            label: 'Home'
+            itemValue: doGotoHomeDirectory
+            translateLabel: true
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary homeIcon)
+          )
+         (MenuItem
+            activeHelpKey: fileGotoDefaultDirectory
+            enabled: enableGotoDefaultDirectory
+            label: 'Current'
+            itemValue: doGotoDefaultDirectory
+            translateLabel: true
+            isButton: true
+            isVisible: false
+            labelImage: (ResourceRetriever ToolbarIconLibrary currentDirectoryIcon)
+          )
+         (MenuItem
+            activeHelpKey: fileGotoSmalltalkDirectory
+            enabled: enableGotoSmalltalkDirectory
+            label: 'ST/X Default'
+            itemValue: doGotoSmalltalkDirectory
+            translateLabel: true
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary stxHomeIcon)
+          )
+         (MenuItem
+            activeHelpKey: fileGotoBookmark
+            label: 'Bookmarks'
+            translateLabel: true
+            isButton: true
+            isVisible: false
+            submenuChannel: gotoBookmarksMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary directoryBookmarksIcon)
+          )
+         (MenuItem
+            activeHelpKey: fileHistory
+            enabled: enableFileHistory
+            label: 'File History'
+            translateLabel: true
+            isButton: true
+            isVisible: false
+            submenuChannel: menuFileHistory
+            labelImage: (ResourceRetriever ToolbarIconLibrary historyIcon)
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: searchFile
+            label: 'Search File'
+            itemValue: doOpenSearchFile
+            translateLabel: true
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary searchFileIcon)
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: cutFile
+            enabled: hasSelection
+            label: 'Cut'
+            itemValue: cutFiles
+            translateLabel: true
+            isButton: true
+            isVisible: false
+            labelImage: (ResourceRetriever ToolbarIconLibrary cutFileIcon)
+          )
+         (MenuItem
+            activeHelpKey: copyFile
+            enabled: hasSelection
+            label: 'Copy'
+            itemValue: copyFiles
+            translateLabel: true
+            isButton: true
+            isVisible: false
+            labelImage: (ResourceRetriever ToolbarIconLibrary copyFileIcon)
+          )
+         (MenuItem
+            activeHelpKey: pasteFile
+            enabled: canPaste
+            label: 'Paste'
+            itemValue: pasteFiles
+            translateLabel: true
+            isButton: true
+            isVisible: false
+            labelImage: (ResourceRetriever ToolbarIconLibrary pasteFileIcon)
+          )
+         (MenuItem
+            activeHelpKey: deleteFile
+            enabled: hasSelection
+            label: 'Delete'
+            itemValue: deleteFiles
+            translateLabel: true
+            isButton: true
+            isVisible: false
+            labelImage: (ResourceRetriever ToolbarIconLibrary deleteFileIcon)
+          )
+         (MenuItem
+            label: '-'
+            isVisible: false
+          )
+         (MenuItem
+            activeHelpKey: editFile
+            label: 'Edit File'
+            itemValue: doShowFileContents
+            translateLabel: true
+            isButton: true
+            isVisible: false
+            labelImage: (ResourceRetriever ToolbarIconLibrary editFileIcon)
+          )
+         (MenuItem
+            activeHelpKey: fileIn
+            label: 'File In'
+            itemValue: fileFileIn
+            translateLabel: true
+            isButton: true
+            isVisible: false
+            labelImage: (ResourceRetriever ToolbarIconLibrary fileInIcon)
+          )
+         (MenuItem
+            activeHelpKey: openChangeBrowser
+            enabled: hasFileSelection
+            label: 'Changes Browser'
+            itemValue: openChangesBrowser
+            translateLabel: true
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary startChangesBrowserIcon)
+          )
+         (MenuItem
+            label: '-'
+            isVisible: false
+          )
+         (MenuItem
+            activeHelpKey: addTerminal
+            label: 'VT100'
+            itemValue: doAddTerminal
+            translateLabel: true
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary shellTerminalIcon)
+          )
+         (MenuItem
+            activeHelpKey: make
+            enabled: canMake
+            label: 'Make'
+            itemValue: doMake
+            translateLabel: true
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary make24x24Icon3)
+          )
+         (MenuItem
+            activeHelpKey: viewDetails
+            label: 'viewDetails'
+            translateLabel: true
+            isButton: true
+            startGroup: right
+            hideMenuOnActivated: false
+            indication: viewDetails
+            labelImage: (ResourceRetriever ToolbarIconLibrary viewDetailsIcon)
+          )
+         (MenuItem
+            activeHelpKey: viewDetails
+            label: 'viewDetails'
+            translateLabel: true
+            isButton: true
+            startGroup: right
+            isVisible: false
+            indication: viewDetails
+            submenuChannel: viewDetailsMenuSpec
+            labelImage: (ResourceRetriever ToolbarIconLibrary viewDetailsIcon)
+          )
+         (MenuItem
+            activeHelpKey: selectDetails
+            label: ''
+            isButton: true
+            startGroup: right
+            submenuChannel: viewDetailsMenuSpec
+            labelImage: (ResourceRetriever ToolbarIconLibrary empty1x20Icon)
+          )
+         )
+        nil
+        nil
+      )
+! !
+
+!FileBrowserV3 methodsFor:'actions'!
+
+hideBookmarkBar
+
+    self bookmarkBarVisibleHolder value
+
+    "Created: / 04-04-2012 / 12:08:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+switchToBookmarkEntry: bookmark
+
+    self gotoFile: bookmark path asFilename
+
+    "Created: / 20-04-2012 / 18:07: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 forFileBrowser
+
+    "Created: / 08-06-2011 / 12:16:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!FileBrowserV3 methodsFor:'change & update'!
+
+currentFileNameHolderChanged
+    super currentFileNameHolderChanged.
+    self updateBookmark
+
+    "Created: / 20-04-2012 / 18:04:48 / 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 == someOfMyValueHolders ifTrue:[
+    "/     self doSomethingApropriate.
+    "/     ^ self.
+    "/ ].
+    super update:something with:aParameter from:changedObject
+!
+
+updateBookmark
+
+    | file bookmark |
+    file := fileEntryFieldHolder value.
+    file notEmptyOrNil ifTrue:[
+        bookmark := Bookmark forFile: file.
+    ].
+    self bookmarkHolder value: bookmark.
+
+    "Created: / 13-04-2012 / 12:37:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+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 7985 2012-04-21 08:36:31Z vranyj1 $'
+! !
--- a/FileDialog.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FileDialog.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1996,9 +1996,13 @@
 !FileDialog class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.116 2011-04-04 08:09:15 stefan Exp $'
+    ^ '$Id: FileDialog.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.116 2011-04-04 08:09:15 stefan Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/FileDialog.st,v 1.116 2011/04/04 08:09:15 stefan Exp §'
+!
+
+version_SVN
+    ^ '$Id: FileDialog.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/FileDialogV2.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FileDialogV2.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1635,5 +1635,5 @@
 !FileDialogV2 class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/FileDialogV2.st,v 1.6 2006-12-06 11:09:13 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/FileDialogV2.st,v 1.6 2006/12/06 11:09:13 cg Exp $'
 ! !
--- a/FileDialogWithPreview.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FileDialogWithPreview.st	Wed Jan 30 11:15:09 2013 +0000
@@ -328,5 +328,9 @@
 !FileDialogWithPreview class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/FileDialogWithPreview.st,v 1.2 2011-02-14 17:13:03 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/FileDialogWithPreview.st,v 1.2 2011/02/14 17:13:03 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: FileDialogWithPreview.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/FileOperation.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FileOperation.st	Wed Jan 30 11:15:09 2013 +0000
@@ -83,6 +83,7 @@
 "
 ! !
 
+
 !FileOperation class methodsFor:'instance creation'!
 
 copyCorruptedFile:aSourceFile to:aDestFile
@@ -151,12 +152,14 @@
     ^ Rename renameFiles:aCollectionofFilenames
 ! !
 
+
 !FileOperation class methodsFor:'defaults'!
 
 suffixForCopyOverExistingFile
     ^ '.copy'
 ! !
 
+
 !FileOperation methodsFor:'accessing'!
 
 errorString
@@ -175,6 +178,7 @@
     result := something.
 ! !
 
+
 !FileOperation methodsFor:'dialogs & helpers'!
 
 checkDirectoryExists:aDirectory
@@ -327,12 +331,14 @@
     "Created: / 20-03-2012 / 11:44:34 / cg"
 ! !
 
+
 !FileOperation methodsFor:'queries'!
 
 isErase
     ^ false
 ! !
 
+
 !FileOperation::Copy class methodsFor:'actions'!
 
 copyFile:aSourceFile to:aDestFile
@@ -383,6 +389,7 @@
     ^ instance
 ! !
 
+
 !FileOperation::Copy methodsFor:'accessing'!
 
 colOfCopiedFiles
@@ -405,6 +412,7 @@
     ^ newFiles
 ! !
 
+
 !FileOperation::Copy methodsFor:'actions'!
 
 copyFile:aSourceFile to:aDestFile
@@ -423,6 +431,7 @@
     ^ self copyFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning copyFileIfSame:true.
 ! !
 
+
 !FileOperation::Copy methodsFor:'actions-basic'!
 
 basicCopy:aSourceFile to:newFile
@@ -549,6 +558,7 @@
     "Modified: / 07-02-2007 / 18:36:54 / cg"
 ! !
 
+
 !FileOperation::CopyCorrupted methodsFor:'actions-basic'!
 
 basicCopy:aSourceFile to:newFile
@@ -685,6 +695,7 @@
     "Modified: / 21-06-2010 / 14:25:22 / cg"
 ! !
 
+
 !FileOperation::CopyCorrupted methodsFor:'defaults'!
 
 bufferSize
@@ -708,6 +719,7 @@
     "Modified: / 27-11-2010 / 18:05:19 / cg"
 ! !
 
+
 !FileOperation::Create class methodsFor:'actions'!
 
 createDirectoryIn:aDirectory
@@ -759,6 +771,7 @@
     ^ self createLinkIn:aFile soft:true
 ! !
 
+
 !FileOperation::Create methodsFor:'accessing'!
 
 createdFile
@@ -769,6 +782,7 @@
     createdFile := something.
 ! !
 
+
 !FileOperation::Create methodsFor:'actions'!
 
 createDirectoryIn:startDirectory
@@ -800,6 +814,7 @@
     self errorString:msg.
 ! !
 
+
 !FileOperation::Create methodsFor:'actions-basic'!
 
 createDirectoryIn:startDirectory initialAnswer:initialAnswerArg
@@ -1003,6 +1018,7 @@
     ].
 ! !
 
+
 !FileOperation::Delete class methodsFor:'actions'!
 
 deleteFile:aFileOrDirectory
@@ -1029,6 +1045,7 @@
     ^ instance
 ! !
 
+
 !FileOperation::Delete methodsFor:'actions'!
 
 deleteFiles:colOfFiles
@@ -1039,6 +1056,7 @@
     "intentionally left blank"
 ! !
 
+
 !FileOperation::Delete methodsFor:'actions-basic'!
 
 deleteFile:aFileOrDirectory
@@ -1179,6 +1197,7 @@
     "Modified: / 11-10-2010 / 13:08:20 / cg"
 ! !
 
+
 !FileOperation::Erase methodsFor:'actions-basic'!
 
 eraseFilesContentsBeforeRemoving:file
@@ -1208,12 +1227,14 @@
     "Modified: / 07-02-2007 / 18:20:21 / cg"
 ! !
 
+
 !FileOperation::Erase methodsFor:'queries'!
 
 isErase
     ^ true
 ! !
 
+
 !FileOperation::Move class methodsFor:'actions'!
 
 moveFile:aSourceFile to:aDestFile
@@ -1264,6 +1285,7 @@
     ^ instance
 ! !
 
+
 !FileOperation::Move methodsFor:'accessing'!
 
 colOfMovedFiles
@@ -1279,6 +1301,7 @@
     ^ movedFiles
 ! !
 
+
 !FileOperation::Move methodsFor:'actions'!
 
 moveFile:aSourceFile to:aDestFile
@@ -1301,6 +1324,7 @@
     ^ self moveFiles:aColOfSourceFiles to:aDirectory withOverWriteWarning:overWriteWarning moveFileIfSame:true
 ! !
 
+
 !FileOperation::Move methodsFor:'actions-basic'!
 
 moveFile:aSourceFile to:aDestFile withOverWriteWarning:overWriteWarning moveFileIfSame:move
@@ -1465,6 +1489,7 @@
     "Modified: / 20-03-2012 / 11:53:35 / cg"
 ! !
 
+
 !FileOperation::Rename class methodsFor:'actions'!
 
 renameFile:oldFile to:newName
@@ -1483,6 +1508,7 @@
     ^ instance
 ! !
 
+
 !FileOperation::Rename methodsFor:'accessing'!
 
 renamedFiles
@@ -1492,6 +1518,7 @@
     ^ renamedFiles
 ! !
 
+
 !FileOperation::Rename methodsFor:'actions-basic'!
 
 renameFile:oldFile to:newName
@@ -1598,6 +1625,7 @@
     ]
 ! !
 
+
 !FileOperation class methodsFor:'documentation'!
 
 version
@@ -1606,4 +1634,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/FileOperation.st,v 1.90 2012-03-20 11:01:05 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: FileOperation.st 7952 2012-03-21 17:50:14Z vranyj1 $'
 ! !
+
--- a/FilenameEditFieldV2.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FilenameEditFieldV2.st	Wed Jan 30 11:15:09 2013 +0000
@@ -47,6 +47,7 @@
 "
 ! !
 
+
 !FilenameEditFieldV2 methodsFor:'accessing'!
 
 acceptOnExpand
@@ -146,6 +147,7 @@
     "Modified: 6.9.1995 / 20:34:57 / claus"
 ! !
 
+
 !FilenameEditFieldV2 methodsFor:'initialization'!
 
 initialize
@@ -212,6 +214,7 @@
     "Created: 24.7.1997 / 18:21:51 / cg"
 ! !
 
+
 !FilenameEditFieldV2 methodsFor:'menu'!
 
 processEvent:anEvent
@@ -274,9 +277,14 @@
     pullDownButton turnOff.
 ! !
 
+
 !FilenameEditFieldV2 class methodsFor:'documentation'!
 
 version
     ^ '$Header: /cvs/stx/stx/libtool/FilenameEditFieldV2.st,v 1.14 2013-01-17 11:18:19 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: FilenameEditFieldV2.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
 
--- a/FindFileApplication.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/FindFileApplication.st	Wed Jan 30 11:15:09 2013 +0000
@@ -45,6 +45,7 @@
 "
 ! !
 
+
 !FindFileApplication class methodsFor:'instance creation'!
 
 open
@@ -80,6 +81,7 @@
     ^ builder
 ! !
 
+
 !FindFileApplication class methodsFor:'defaults'!
 
 tabStringFor:aApplicationType
@@ -90,6 +92,7 @@
     "Modified: / 01-03-2007 / 21:47:54 / cg"
 ! !
 
+
 !FindFileApplication class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -141,6 +144,7 @@
     "Modified: / 28-03-2012 / 23:03:39 / cg"
 ! !
 
+
 !FindFileApplication class methodsFor:'history'!
 
 addToSearchStringHistory:aString
@@ -159,6 +163,7 @@
     ^ SearchStringHistory
 ! !
 
+
 !FindFileApplication class methodsFor:'interface specs'!
 
 windowSpec
@@ -539,6 +544,7 @@
 
 ! !
 
+
 !FindFileApplication class methodsFor:'menu specs'!
 
 menu
@@ -698,12 +704,14 @@
       )
 ! !
 
+
 !FindFileApplication class methodsFor:'startup & release'!
 
 releaseContentsInfoCache
     ContentsInfoCache := ContentsInfoCacheAccessLock := nil.
 ! !
 
+
 !FindFileApplication class methodsFor:'tableColumns specs'!
 
 searchResultTable
@@ -732,6 +740,7 @@
     
 ! !
 
+
 !FindFileApplication methodsFor:'actions'!
 
 clearCache
@@ -934,6 +943,7 @@
     ].
 ! !
 
+
 !FindFileApplication methodsFor:'aspects'!
 
 canUseGrep
@@ -1168,6 +1178,7 @@
     ^ useLocate.
 ! !
 
+
 !FindFileApplication methodsFor:'private'!
 
 changeExtentToSeeSearchResult
@@ -1188,6 +1199,7 @@
     "Modified: / 08-08-2010 / 14:42:40 / cg"
 ! !
 
+
 !FindFileApplication methodsFor:'private - searching'!
 
 cachedFileSizeOf:aFilenameString
@@ -1746,6 +1758,7 @@
     "Created: / 28-03-2012 / 23:18:32 / cg"
 ! !
 
+
 !FindFileApplication methodsFor:'queries'!
 
 getTabValueString
@@ -1756,6 +1769,7 @@
     "Created: / 01-03-2007 / 21:39:54 / cg"
 ! !
 
+
 !FindFileApplication methodsFor:'startup & release'!
 
 initialize
@@ -1804,6 +1818,7 @@
     ^ super release
 ! !
 
+
 !FindFileApplication class methodsFor:'documentation'!
 
 version
@@ -1812,5 +1827,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/FindFileApplication.st,v 1.104 2013-01-26 21:37:24 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: FindFileApplication.st 7978 2012-04-13 13:15:47Z vranyj1 $'
 ! !
 
--- a/GitSourceCodeManagementSettingsAppl.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/GitSourceCodeManagementSettingsAppl.st	Wed Jan 30 11:15:09 2013 +0000
@@ -49,6 +49,7 @@
 "
 ! !
 
+
 !GitSourceCodeManagementSettingsAppl class methodsFor:'defaults'!
 
 defaultRepositoryName
@@ -58,6 +59,7 @@
     "Created: / 19-04-2011 / 11:00:11 / cg"
 ! !
 
+
 !GitSourceCodeManagementSettingsAppl class methodsFor:'help specs'!
 
 helpSpec
@@ -182,6 +184,7 @@
     "Modified: / 09-08-2012 / 09:41:18 / cg"
 ! !
 
+
 !GitSourceCodeManagementSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -244,6 +247,7 @@
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 0 64 0 0 128 0 32 32 32 32 64 32 32 96 32 32 128 32 32 128 64 32 160 64 64 64 64 96 96 96 96 192 128 128 128 128 192 0 0 209 87 87 255 255 255]; mask:((Depth1Image new) width: 24; height: 24; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@>>>@>>>@@@@@@@@@XXX@^^^@>>>@<<<@LLL@@@@A<@@C<@@GR@@G@@@_$@@ON@@F_@@@O@@JL@@G<@@C8@@@@@@') ; yourself); yourself]
 ! !
 
+
 !GitSourceCodeManagementSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -763,6 +767,7 @@
       )
 ! !
 
+
 !GitSourceCodeManagementSettingsAppl class methodsFor:'queries'!
 
 managerClass
@@ -773,6 +778,7 @@
     "Created: / 19-04-2011 / 12:46:52 / cg"
 ! !
 
+
 !GitSourceCodeManagementSettingsAppl methodsFor:'actions'!
 
 addModule:module withData:data
@@ -876,6 +882,7 @@
     "Modified: / 26-01-2012 / 13:50:08 / cg"
 ! !
 
+
 !GitSourceCodeManagementSettingsAppl methodsFor:'actions - git'!
 
 addPerModuleRoot
@@ -944,6 +951,7 @@
     "Created: / 17-01-2012 / 17:42:27 / cg"
 ! !
 
+
 !GitSourceCodeManagementSettingsAppl methodsFor:'aspects'!
 
 gitCommandTimeoutHolder
@@ -1095,6 +1103,7 @@
     "Created: / 03-03-2012 / 10:34:19 / cg"
 ! !
 
+
 !GitSourceCodeManagementSettingsAppl methodsFor:'change & update'!
 
 selectedPerModuleRepositoryChanged
@@ -1145,6 +1154,7 @@
     "Modified: / 14-01-2012 / 20:26:51 / cg"
 ! !
 
+
 !GitSourceCodeManagementSettingsAppl methodsFor:'help'!
 
 helpFilename
@@ -1153,6 +1163,7 @@
     "Modified: / 02-03-2012 / 15:20:09 / cg"
 ! !
 
+
 !GitSourceCodeManagementSettingsAppl methodsFor:'initialization & release'!
 
 initialize
@@ -1176,6 +1187,7 @@
     "Modified: / 02-03-2012 / 15:20:19 / cg"
 ! !
 
+
 !GitSourceCodeManagementSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -1214,6 +1226,7 @@
     "Modified: / 02-03-2012 / 15:20:03 / cg"
 ! !
 
+
 !GitSourceCodeManagementSettingsAppl class methodsFor:'documentation'!
 
 version
@@ -1222,4 +1235,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/GitSourceCodeManagementSettingsAppl.st,v 1.9 2012-08-09 08:59:17 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: GitSourceCodeManagementSettingsAppl.st 8048 2012-09-07 17:28:09Z vranyj1 $'
 ! !
+
--- a/HierarchicalClassRevisionList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/HierarchicalClassRevisionList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -205,5 +205,5 @@
 !HierarchicalClassRevisionList class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/HierarchicalClassRevisionList.st,v 1.3 2000-02-18 14:08:26 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/HierarchicalClassRevisionList.st,v 1.3 2000/02/18 14:08:26 cg Exp $'
 ! !
--- a/HierarchicalVersionDiffBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/HierarchicalVersionDiffBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -641,5 +641,5 @@
 !HierarchicalVersionDiffBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/HierarchicalVersionDiffBrowser.st,v 1.9 2000-02-18 14:06:52 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/HierarchicalVersionDiffBrowser.st,v 1.9 2000/02/18 14:06:52 cg Exp $'
 ! !
--- a/ImageInspectorView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ImageInspectorView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -41,6 +41,7 @@
 "
 ! !
 
+
 !ImageInspectorView class methodsFor:'defaults'!
 
 defaultTopViewExtent
@@ -55,6 +56,7 @@
     "Created: / 23-10-2007 / 19:09:34 / cg"
 ! !
 
+
 !ImageInspectorView class methodsFor:'menu specs'!
 
 imageMenu
@@ -143,6 +145,7 @@
       )
 ! !
 
+
 !ImageInspectorView methodsFor:'accessing'!
 
 inspect:anObject
@@ -156,6 +159,7 @@
     "
 ! !
 
+
 !ImageInspectorView methodsFor:'initialization'!
 
 destroy
@@ -210,6 +214,7 @@
     "Modified: / 28-05-2007 / 15:15:32 / cg"
 ! !
 
+
 !ImageInspectorView methodsFor:'menu'!
 
 imageMenu
@@ -242,6 +247,7 @@
     imageView backgroundColor:(Color name:colorNameSymbol)
 ! !
 
+
 !ImageInspectorView methodsFor:'queries'!
 
 labelFor:anObject
@@ -256,6 +262,7 @@
     "Modified: / 25-07-2012 / 12:53:13 / cg"
 ! !
 
+
 !ImageInspectorView class methodsFor:'documentation'!
 
 version
@@ -264,4 +271,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/ImageInspectorView.st,v 1.26 2012-07-25 10:54:12 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: ImageInspectorView.st 8026 2012-07-26 16:09:41Z vranyj1 $'
 ! !
+
--- a/InspectorView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/InspectorView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -103,6 +103,7 @@
 "
 ! !
 
+
 !InspectorView class methodsFor:'instance creation'!
 
 for:anObject
@@ -202,6 +203,7 @@
     ^ self openOn:anObject
 ! !
 
+
 !InspectorView class methodsFor:'common label support'!
 
 commonLabelFor:anObject
@@ -278,6 +280,7 @@
     "Created: / 15-07-2011 / 16:20:06 / cg"
 ! !
 
+
 !InspectorView class methodsFor:'defaults'!
 
 defaultExtent
@@ -355,6 +358,7 @@
     "Created: / 23-10-2007 / 19:10:02 / cg"
 ! !
 
+
 !InspectorView class methodsFor:'image specs'!
 
 imageFor_arrays
@@ -752,6 +756,7 @@
 M#L3NBH"H#\@@@@@@@@@@@@-JS 8JSH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[226 226 226 176 176 176 155 155 155 169 169 169 152 152 152 164 164 164 149 149 149 192 192 192 240 240 240 255 255 255 202 202 202 201 201 201 151 151 151 162 162 162 148 148 148 158 158 158 173 173 173 154 154 154 167 167 167 150 150 150 160 160 160 180 180 180 156 156 156 170 170 170 153 153 153 165 165 165 183 183 183 98 255 0 75 198 0 25 74 0 57 156 0 34 99 0 92 206 16 60 132 16 31 74 0 79 206 0 128 131 142 88 231 0 70 189 0 38 90 0 148 198 123 57 115 16 92 239 0 103 255 8 76 189 0 154 198 123 85 214 0 53 132 0 106 255 0 138 255 49 107 156 74 44 115 0 119 206 66 85 222 0 142 206 99 68 139 33 33 90 0 57 148 0 135 206 99]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@A>@O<A?8G? _>A?8G? _>@?0A>@@@@@@@@@b') ; yourself); yourself]
 ! !
 
+
 !InspectorView class methodsFor:'queries-plugin'!
 
 aspectSelectors
@@ -760,6 +765,7 @@
     "Modified: / 10.2.2000 / 12:25:28 / cg"
 ! !
 
+
 !InspectorView methodsFor:'accessing'!
 
 allowFollow:aBoolean
@@ -937,6 +943,7 @@
     ^ workspace
 ! !
 
+
 !InspectorView methodsFor:'accessing-channels'!
 
 inspectedObjectHolder
@@ -962,6 +969,7 @@
     "Created: / 10.2.2000 / 13:34:53 / cg"
 ! !
 
+
 !InspectorView methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
@@ -987,6 +995,7 @@
     "Modified: / 10.2.2000 / 13:48:18 / cg"
 ! !
 
+
 !InspectorView methodsFor:'drag & drop'!
 
 getDisplayObjects
@@ -1005,6 +1014,7 @@
     "Modified: / 18-09-2006 / 21:11:31 / cg"
 ! !
 
+
 !InspectorView methodsFor:'event handling'!
 
 doubleClickOnLine:lineNr
@@ -1062,6 +1072,7 @@
     ].
 ! !
 
+
 !InspectorView methodsFor:'initialization & release'!
 
 destroy
@@ -1221,6 +1232,7 @@
     ].
 ! !
 
+
 !InspectorView methodsFor:'menu'!
 
 fieldMenu
@@ -1555,6 +1567,7 @@
     "Created: / 20-07-2012 / 10:47:53 / cg"
 ! !
 
+
 !InspectorView methodsFor:'menu actions'!
 
 browse
@@ -2029,6 +2042,7 @@
     "Modified: / 6.2.2000 / 13:47:37 / cg"
 ! !
 
+
 !InspectorView methodsFor:'presentation'!
 
 appendDisplayStringForElementsOf:val indent:lvl pad:padding to:aStream
@@ -2382,6 +2396,7 @@
     "Created: / 13-06-2012 / 12:04:31 / cg"
 ! !
 
+
 !InspectorView methodsFor:'private'!
 
 baseInspectedObjectClass
@@ -2662,6 +2677,7 @@
 "/    ^ list.
 
     "Modified: / 27-09-2012 / 21:51:58 / cg"
+    "Modified: / 06-07-2012 / 10:37:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 indexedValueAtIndex:idx
@@ -3104,6 +3120,7 @@
     "Modified: / 06-06-2012 / 11:57:54 / cg"
 ! !
 
+
 !InspectorView methodsFor:'queries'!
 
 canInspect:anObject
@@ -3168,6 +3185,7 @@
     ^ suppressPseudoSlots ? false
 ! !
 
+
 !InspectorView methodsFor:'selection'!
 
 selection:lineNr
@@ -3223,6 +3241,7 @@
     "Modified: / 28-10-2012 / 11:03:04 / cg"
 ! !
 
+
 !InspectorView methodsFor:'user interaction'!
 
 doAccept:theText
@@ -3373,6 +3392,7 @@
     "Created: / 16-11-2001 / 13:48:51 / cg"
 ! !
 
+
 !InspectorView methodsFor:'workspace protocol'!
 
 modified:aBoolean
@@ -3383,6 +3403,7 @@
     workspace saveAs:file doAppend:doAppend
 ! !
 
+
 !InspectorView class methodsFor:'documentation'!
 
 version
@@ -3391,5 +3412,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/InspectorView.st,v 1.296 2013-01-15 16:33:23 stefan Exp $'
+!
+
+version_SVN
+    ^ '$Id: InspectorView.st 8083 2013-01-14 11:48:37Z vranyj1 $'
 ! !
 
--- a/Launcher.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Launcher.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1726,5 +1726,5 @@
 !Launcher class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Launcher.st,v 1.406 2004-03-12 22:50:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Launcher.st,v 1.406 2004/03/12 22:50:40 cg Exp $'
 ! !
--- a/LibraryBuilder.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/LibraryBuilder.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1100,5 +1100,5 @@
 !LibraryBuilder class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/LibraryBuilder.st,v 1.8 2006-09-05 16:45:22 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/LibraryBuilder.st,v 1.8 2006/09/05 16:45:22 cg Exp $'
 ! !
--- a/Make.proto	Sun Jan 27 02:50:59 2013 +0100
+++ b/Make.proto	Wed Jan 30 11:15:09 2013 +0000
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libtool/Make.proto,v 1.167 2012-07-26 12:06:25 vrany Exp $
+# $Header$
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libtool.
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser -I$(INCLUDE_TOP)/stx/libui -I$(INCLUDE_TOP)/stx/libview -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libwidg -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libwidg2 -I$(INCLUDE_TOP)/stx/libwidg3 -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic3 -I$(INCLUDE_TOP)/stx/libboss -I$(INCLUDE_TOP)/stx/libcomp
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser -I$(INCLUDE_TOP)/stx/libwidg -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libview -I$(INCLUDE_TOP)/stx/libhtml -I$(INCLUDE_TOP)/stx/libcomp -I$(INCLUDE_TOP)/stx/libboss -I$(INCLUDE_TOP)/stx/libwidg2 -I$(INCLUDE_TOP)/stx/libbasic3 -I$(INCLUDE_TOP)/stx/libui
 
 
 # if you need any additional defines for embedded C code,
@@ -63,21 +63,45 @@
 
 all:: preMake classLibRule postMake
 
-pre_objs::  update-svn-revision
+pre_objs::  
+
 
 
 
-update-svn-revision:
-	if [ ! -r .svnversion -o "$(shell svnversion -n)" != "$(shell cat .svnversion)" ]; then \
-		svnversion -n > .svnversion; \
-		sed -i -e "s/\"\$$SVN\-Revision:\".*\"\$$\"/\"\$$SVN-Revision:\"'$(shell svnversion -n)'\"\$$\"/g" \
-			stx_libtool.st; \
+# Update SVN revision in package definition class
+ifneq (,$(findstring .svn,$(wildcard .svn)))
+.svnversion: *.st
+	if [ -d .svn ]; then \
+		rev=$(shell svnversion -n); \
+		echo -n $$rev > .svnversion; \
+	else \
+		echo -n exported > .svnversion; \
+	fi
+
+stx_libtool.o: stx_libtool.st .svnversion
+	@if [ -d .svn ]; then \
+		rev2="$(shell printf "%-16s" $$(cat .svnversion))"; \
+		echo "  [SV]  Expanding svnRevisionNo in $1.st"; \
+		sed -e "s/\"\$$SVN\-Revision:\".*\"\$$\"/\"\$$SVN-Revision:\"\'$$rev2\'\"\$$\"/g" $< > .stx_libtool.svn.st; \
 	fi
-.PHONY: update-svn-revision
+	$(MAKE) CC="$(CLASSLIB_CC)" OPT="$(OPT)" SEPINITCODE="$(SEPINITCODE)" STC="$(STC)" STFILE=.stx_libtool.svn $(C_RULE);
+	sed -i -e "s/\".stx_libtool.svn.st\");/\"\stx_libtool.st\");/g" .stx_libtool.svn.c
+	$(MAKE) .stx_libtool.svn.$(O)
+	@mv .stx_libtool.svn.$(O) stx_libtool.$(O)
+endif
+
+
 
 
 
 
+# run default testsuite for this package
+test: $(TOP)/goodies/builder/reports
+	$(MAKE) -C $(TOP)/goodies/builder/reports
+	$(TOP)/goodies/builder/reports/report-runner.sh -D . -r Builder::TestReport -p $(PACKAGE)
+
+
+
 # add more install actions here
 install::
 
@@ -91,17 +115,20 @@
 postMake:: cleanjunk
 
 prereq: $(REQUIRED_SUPPORT_DIRS)
-	cd ../libwidg3 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../goodies/refactoryBrowser/parser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../libdb/libodbc && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libcomp && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
-	cd ../libbasic3 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../libdb && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libboss && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../libdb/libsqlite && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../goodies/sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libui && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../libbasic3 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../libhtml && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../libwidg2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 	cd ../librun && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
 
@@ -136,6 +163,10 @@
 $(OUTDIR)CodeGeneratorTool.$(O) CodeGeneratorTool.$(H): CodeGeneratorTool.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)DebugView.$(O) DebugView.$(H): DebugView.st $(INCLUDE_TOP)/stx/libview/StandardSystemView.$(H) $(INCLUDE_TOP)/stx/libview/TopView.$(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) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Diff.$(O) Diff.$(H): Diff.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(STCHDR)
+$(OUTDIR)Diff2.$(O) Diff2.$(H): Diff2.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Diff3.$(O) Diff3.$(H): Diff3.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Diff3Hunk.$(O) Diff3Hunk.$(H): Diff3Hunk.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Diff3InclusiveVisitor.$(O) Diff3InclusiveVisitor.$(H): Diff3InclusiveVisitor.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)DiffListUtility.$(O) DiffListUtility.$(H): DiffListUtility.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)DiffTextView.$(O) DiffTextView.$(H): DiffTextView.st $(INCLUDE_TOP)/stx/libwidg2/TwoColumnTextView.$(H) $(INCLUDE_TOP)/stx/libwidg2/SyncedMultiColumnTextView.$(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)EditFieldWithCompletion.$(O) EditFieldWithCompletion.$(H): EditFieldWithCompletion.st $(INCLUDE_TOP)/stx/libwidg/EditField.$(H) $(INCLUDE_TOP)/stx/libwidg/EditTextView.$(H) $(INCLUDE_TOP)/stx/libwidg/TextView.$(H) $(INCLUDE_TOP)/stx/libwidg/ListView.$(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) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -150,9 +181,9 @@
 $(OUTDIR)MemoryMonitor.$(O) MemoryMonitor.$(H): MemoryMonitor.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)MemoryMonitorView.$(O) MemoryMonitorView.$(H): MemoryMonitorView.st $(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) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)MultiViewToolApplication.$(O) MultiViewToolApplication.$(H): MultiViewToolApplication.st $(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)ParseTreeIndex.$(O) ParseTreeIndex.$(H): ParseTreeIndex.st $(INCLUDE_TOP)/stx/libbasic/SortedCollection.$(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) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(STCHDR)
 $(OUTDIR)PerforceSourceCodeManagerUtilities.$(O) PerforceSourceCodeManagerUtilities.$(H): PerforceSourceCodeManagerUtilities.st $(INCLUDE_TOP)/stx/libbasic3/SourceCodeManagerUtilities.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/SimpleDialog.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(STCHDR)
 $(OUTDIR)ProcessMonitorV2.$(O) ProcessMonitorV2.$(H): ProcessMonitorV2.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(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/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)SyntaxElement.$(O) SyntaxElement.$(H): SyntaxElement.st $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SyntaxHighlighter2.$(O) SyntaxHighlighter2.$(H): SyntaxHighlighter2.st $(INCLUDE_TOP)/stx/libcomp/SyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/Parser.$(H) $(INCLUDE_TOP)/stx/libcomp/Scanner.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SystemBrowser.$(O) SystemBrowser.$(H): SystemBrowser.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -162,11 +193,12 @@
 $(OUTDIR)Tools__BrowsletCanvas.$(O) Tools__BrowsletCanvas.$(H): Tools__BrowsletCanvas.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__CachedTags.$(O) Tools__CachedTags.$(H): Tools__CachedTags.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__ChangeSetBrowser2.$(O) Tools__ChangeSetBrowser2.$(H): Tools__ChangeSetBrowser2.st $(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)Tools__ChangeSetDiffInfo.$(O) Tools__ChangeSetDiffInfo.$(H): Tools__ChangeSetDiffInfo.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__ChangeSetDiffTool.$(O) Tools__ChangeSetDiffTool.$(H): Tools__ChangeSetDiffTool.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libview2/SimpleDialog.$(H) $(STCHDR)
 $(OUTDIR)Tools__ChangeSetSelectionDialog.$(O) Tools__ChangeSetSelectionDialog.$(H): Tools__ChangeSetSelectionDialog.st $(INCLUDE_TOP)/stx/libview2/SimpleDialog.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__ChangeSetSpec.$(O) Tools__ChangeSetSpec.$(H): Tools__ChangeSetSpec.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__CheckinInfoDialog.$(O) Tools__CheckinInfoDialog.$(H): Tools__CheckinInfoDialog.st $(INCLUDE_TOP)/stx/libview2/SimpleDialog.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Tools_ClassChecker.$(O) Tools_ClassChecker.$(H): Tools_ClassChecker.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__ClassChecker.$(O) Tools__ClassChecker.$(H): Tools__ClassChecker.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__ClassSorter.$(O) Tools__ClassSorter.$(H): Tools__ClassSorter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__CodeCompletionMenu.$(O) Tools__CodeCompletionMenu.$(H): Tools__CodeCompletionMenu.st $(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) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__CodeCritics.$(O) Tools__CodeCritics.$(H): Tools__CodeCritics.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -177,14 +209,15 @@
 $(OUTDIR)Tools__InlineMessageDialog.$(O) Tools__InlineMessageDialog.$(H): Tools__InlineMessageDialog.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__Inspector2.$(O) Tools__Inspector2.$(H): Tools__Inspector2.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__Inspector2Tab.$(O) Tools__Inspector2Tab.$(H): Tools__Inspector2Tab.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__LintAnnotation.$(O) Tools__LintAnnotation.$(H): Tools__LintAnnotation.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__LintHighlighter.$(O) Tools__LintHighlighter.$(H): Tools__LintHighlighter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__LintRuleDetail.$(O) Tools__LintRuleDetail.$(H): Tools__LintRuleDetail.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__LintRuleSelectionDialog.$(O) Tools__LintRuleSelectionDialog.$(H): Tools__LintRuleSelectionDialog.st $(INCLUDE_TOP)/stx/libview2/SimpleDialog.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__MethodCategoryCache.$(O) Tools__MethodCategoryCache.$(H): Tools__MethodCategoryCache.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__MethodRewriter.$(O) Tools__MethodRewriter.$(H): Tools__MethodRewriter.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__NavigationHistory.$(O) Tools__NavigationHistory.$(H): Tools__NavigationHistory.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Tools_NavigationState.$(O) Tools_NavigationState.$(H): Tools_NavigationState.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Tools_NavigatorModel.$(O) Tools_NavigatorModel.$(H): Tools_NavigatorModel.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__NavigationState.$(O) Tools__NavigationState.$(H): Tools__NavigationState.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__NavigatorModel.$(O) Tools__NavigatorModel.$(H): Tools__NavigatorModel.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__NewClassWizardDialog.$(O) Tools__NewClassWizardDialog.$(H): Tools__NewClassWizardDialog.st $(INCLUDE_TOP)/stx/libview2/SimpleDialog.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__NewSystemBrowserCodeView.$(O) Tools__NewSystemBrowserCodeView.$(H): Tools__NewSystemBrowserCodeView.st $(INCLUDE_TOP)/stx/libwidg/CodeView.$(H) $(INCLUDE_TOP)/stx/libwidg/Workspace.$(H) $(INCLUDE_TOP)/stx/libwidg/TextCollector.$(H) $(INCLUDE_TOP)/stx/libwidg/EditTextView.$(H) $(INCLUDE_TOP)/stx/libwidg/TextView.$(H) $(INCLUDE_TOP)/stx/libwidg/ListView.$(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) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__Profiler.$(O) Tools__Profiler.$(H): Tools__Profiler.st $(INCLUDE_TOP)/stx/libbasic3/MessageTally.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -192,15 +225,16 @@
 $(OUTDIR)Tools__ProfilerInfoItem.$(O) Tools__ProfilerInfoItem.$(H): Tools__ProfilerInfoItem.st $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__ProjectCheckerBrowser.$(O) Tools__ProjectCheckerBrowser.$(H): Tools__ProjectCheckerBrowser.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__ProjectLoader.$(O) Tools__ProjectLoader.$(H): Tools__ProjectLoader.st $(INCLUDE_TOP)/stx/libview2/SimpleDialog.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Tools_SearchDialog.$(O) Tools_SearchDialog.$(H): Tools_SearchDialog.st $(INCLUDE_TOP)/stx/libwidg/DialogBox.$(H) $(INCLUDE_TOP)/stx/libview/ModalBox.$(H) $(INCLUDE_TOP)/stx/libview/StandardSystemView.$(H) $(INCLUDE_TOP)/stx/libview/TopView.$(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) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__SearchDialog.$(O) Tools__SearchDialog.$(H): Tools__SearchDialog.st $(INCLUDE_TOP)/stx/libwidg/DialogBox.$(H) $(INCLUDE_TOP)/stx/libview/ModalBox.$(H) $(INCLUDE_TOP)/stx/libview/StandardSystemView.$(H) $(INCLUDE_TOP)/stx/libview/TopView.$(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) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__SmalltalkDiffTool.$(O) Tools__SmalltalkDiffTool.$(H): Tools__SmalltalkDiffTool.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__SourceCodeManagerConfigurationTestTool.$(O) Tools__SourceCodeManagerConfigurationTestTool.$(H): Tools__SourceCodeManagerConfigurationTestTool.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Tools_SpecialCodeView.$(O) Tools_SpecialCodeView.$(H): Tools_SpecialCodeView.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__SpecialCodeView.$(O) Tools__SpecialCodeView.$(H): Tools__SpecialCodeView.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__StringSearchTool.$(O) Tools__StringSearchTool.$(H): Tools__StringSearchTool.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__Tag.$(O) Tools__Tag.$(H): Tools__Tag.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(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)
@@ -212,6 +246,7 @@
 $(OUTDIR)BookmarkMenuBuilder.$(O) BookmarkMenuBuilder.$(H): BookmarkMenuBuilder.st $(INCLUDE_TOP)/stx/libtool/BookmarkVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)ContextInspectorView.$(O) ContextInspectorView.$(H): ContextInspectorView.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)DictionaryInspectorView.$(O) DictionaryInspectorView.$(H): DictionaryInspectorView.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)Diff3ExclusiveVisitor.$(O) Diff3ExclusiveVisitor.$(H): Diff3ExclusiveVisitor.st $(INCLUDE_TOP)/stx/libtool/Diff3InclusiveVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)DiffCodeView.$(O) DiffCodeView.$(H): DiffCodeView.st $(INCLUDE_TOP)/stx/libtool/DiffTextView.$(H) $(INCLUDE_TOP)/stx/libwidg2/TwoColumnTextView.$(H) $(INCLUDE_TOP)/stx/libwidg2/SyncedMultiColumnTextView.$(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)FileApplicationNoteBook.$(O) FileApplicationNoteBook.$(H): FileApplicationNoteBook.st $(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/libtool/AbstractFileApplicationNoteBookComponent.$(H) $(STCHDR)
 $(OUTDIR)FileBrowserV2.$(O) FileBrowserV2.$(H): FileBrowserV2.st $(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)
@@ -221,21 +256,26 @@
 $(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/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)
-$(OUTDIR)Tools_BrowserList.$(O) Tools_BrowserList.$(H): Tools_BrowserList.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) $(STCHDR)
+$(OUTDIR)Tools__BrowserList.$(O) Tools__BrowserList.$(H): Tools__BrowserList.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) $(STCHDR)
 $(OUTDIR)Tools__CodeCompletionService.$(O) Tools__CodeCompletionService.$(H): Tools__CodeCompletionService.st $(INCLUDE_TOP)/stx/libtool/Tools__CodeViewService.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__CodeNavigationService.$(O) Tools__CodeNavigationService.$(H): Tools__CodeNavigationService.st $(INCLUDE_TOP)/stx/libtool/Tools__CodeViewService.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__CodeView2SettingsAppl.$(O) Tools__CodeView2SettingsAppl.$(H): Tools__CodeView2SettingsAppl.st $(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)Tools__Diff2CodeView2.$(O) Tools__Diff2CodeView2.$(H): Tools__Diff2CodeView2.st $(INCLUDE_TOP)/stx/libtool/Tools__DiffCodeView2.$(H) $(INCLUDE_TOP)/stx/libwidg2/TwoColumnTextView.$(H) $(INCLUDE_TOP)/stx/libwidg2/SyncedMultiColumnTextView.$(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)Tools__Diff3CodeView2.$(O) Tools__Diff3CodeView2.$(H): Tools__Diff3CodeView2.st $(INCLUDE_TOP)/stx/libtool/Tools__DiffCodeView2.$(H) $(INCLUDE_TOP)/stx/libwidg2/TwoColumnTextView.$(H) $(INCLUDE_TOP)/stx/libwidg2/SyncedMultiColumnTextView.$(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)Tools__LintService.$(O) Tools__LintService.$(H): Tools__LintService.st $(INCLUDE_TOP)/stx/libtool/Tools__CodeViewService.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Tools_NavigatorCanvas.$(O) Tools_NavigatorCanvas.$(H): Tools_NavigatorCanvas.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) $(STCHDR)
+$(OUTDIR)Tools__NavigatorCanvas.$(O) Tools__NavigatorCanvas.$(H): Tools__NavigatorCanvas.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) $(STCHDR)
 $(OUTDIR)Tools__NewSystemBrowser.$(O) Tools__NewSystemBrowser.$(H): Tools__NewSystemBrowser.st $(INCLUDE_TOP)/stx/libtool/SystemBrowser.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Tools_OrganizerCanvas.$(O) Tools_OrganizerCanvas.$(H): Tools_OrganizerCanvas.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) $(STCHDR)
+$(OUTDIR)Tools__OrganizerCanvas.$(O) Tools__OrganizerCanvas.$(H): Tools__OrganizerCanvas.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) $(STCHDR)
 $(OUTDIR)Tools__SendersBrowslet.$(O) Tools__SendersBrowslet.$(H): Tools__SendersBrowslet.st $(INCLUDE_TOP)/stx/libtool/Tools__Browslet.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(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__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)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) $(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)
 $(OUTDIR)BookmarkToolbarMenuBuilder.$(O) BookmarkToolbarMenuBuilder.$(H): BookmarkToolbarMenuBuilder.st $(INCLUDE_TOP)/stx/libtool/BookmarkMenuBuilder.$(H) $(INCLUDE_TOP)/stx/libtool/BookmarkVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -245,38 +285,39 @@
 $(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)GitSourceCodeManagementSettingsAppl.$(O) GitSourceCodeManagementSettingsAppl.$(H): GitSourceCodeManagementSettingsAppl.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)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)
 $(OUTDIR)StoreSourceCodeManagementSettingsAppl.$(O) StoreSourceCodeManagementSettingsAppl.$(H): StoreSourceCodeManagementSettingsAppl.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)Tools__BrowserListWithFilter.$(O) Tools__BrowserListWithFilter.$(H): Tools__BrowserListWithFilter.st $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_ClassCategoryList.$(O) Tools_ClassCategoryList.$(H): Tools_ClassCategoryList.st $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_ClassGeneratorList.$(O) Tools_ClassGeneratorList.$(H): Tools_ClassGeneratorList.st $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_ClassList.$(O) Tools_ClassList.$(H): Tools_ClassList.st $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__BrowserListWithFilter.$(O) Tools__BrowserListWithFilter.$(H): Tools__BrowserListWithFilter.st $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__ClassCategoryList.$(O) Tools__ClassCategoryList.$(H): Tools__ClassCategoryList.st $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__ClassGeneratorList.$(O) Tools__ClassGeneratorList.$(H): Tools__ClassGeneratorList.st $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__ClassList.$(O) Tools__ClassList.$(H): Tools__ClassList.st $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
 $(OUTDIR)Tools__CodeHighlightingService.$(O) Tools__CodeHighlightingService.$(H): Tools__CodeHighlightingService.st $(INCLUDE_TOP)/stx/libtool/Tools__BackgroundSourceProcessingService.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__CodeViewService.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)Tools__LintRuleList.$(O) Tools__LintRuleList.$(H): Tools__LintRuleList.st $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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)Tools_MethodCategoryList.$(O) Tools_MethodCategoryList.$(H): Tools_MethodCategoryList.st $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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/libbasic/Method.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(STCHDR)
-$(OUTDIR)Tools_MethodList.$(O) Tools_MethodList.$(H): Tools_MethodList.st $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_NamespaceList.$(O) Tools_NamespaceList.$(H): Tools_NamespaceList.st $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_ProjectList.$(O) Tools_ProjectList.$(H): Tools_ProjectList.st $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools__VariableList.$(O) Tools__VariableList.$(H): Tools__VariableList.st $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools__ChangeList.$(O) Tools__ChangeList.$(H): Tools__ChangeList.st $(INCLUDE_TOP)/stx/libtool/Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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)Tools__ChangeSetDiffList.$(O) Tools__ChangeSetDiffList.$(H): Tools__ChangeSetDiffList.st $(INCLUDE_TOP)/stx/libtool/Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_FullMethodCategoryList.$(O) Tools_FullMethodCategoryList.$(H): Tools_FullMethodCategoryList.st $(INCLUDE_TOP)/stx/libtool/Tools_MethodCategoryList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_HierarchicalClassCategoryList.$(O) Tools_HierarchicalClassCategoryList.$(H): Tools_HierarchicalClassCategoryList.st $(INCLUDE_TOP)/stx/libtool/Tools_ClassCategoryList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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/HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
-$(OUTDIR)Tools_HierarchicalClassList.$(O) Tools_HierarchicalClassList.$(H): Tools_HierarchicalClassList.st $(INCLUDE_TOP)/stx/libtool/Tools_ClassList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools__HierarchicalLintRuleList.$(O) Tools__HierarchicalLintRuleList.$(H): Tools__HierarchicalLintRuleList.st $(INCLUDE_TOP)/stx/libtool/Tools__LintRuleList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_HierarchicalProjectList.$(O) Tools_HierarchicalProjectList.$(H): Tools_HierarchicalProjectList.st $(INCLUDE_TOP)/stx/libtool/Tools_ProjectList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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/HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
-$(OUTDIR)Tools_ImplementingClassList.$(O) Tools_ImplementingClassList.$(H): Tools_ImplementingClassList.st $(INCLUDE_TOP)/stx/libtool/Tools_MethodList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_ImplementingMethodList.$(O) Tools_ImplementingMethodList.$(H): Tools_ImplementingMethodList.st $(INCLUDE_TOP)/stx/libtool/Tools_MethodList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools__NamespaceFilter.$(O) Tools__NamespaceFilter.$(H): Tools__NamespaceFilter.st $(INCLUDE_TOP)/stx/libtool/Tools_NamespaceList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools__TestRunner2.$(O) Tools__TestRunner2.$(H): Tools__TestRunner2.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) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_ClassList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_NavigatorModel.$(H) $(STCHDR)
-$(OUTDIR)Tools__HierarchicalChangeList.$(O) Tools__HierarchicalChangeList.$(H): Tools__HierarchicalChangeList.st $(INCLUDE_TOP)/stx/libtool/Tools__ChangeList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools__HierarchicalPackageFilterList.$(O) Tools__HierarchicalPackageFilterList.$(H): Tools__HierarchicalPackageFilterList.st $(INCLUDE_TOP)/stx/libtool/Tools_HierarchicalProjectList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_ProjectList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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/HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
-$(OUTDIR)Tools_InheritanceClassList.$(O) Tools_InheritanceClassList.$(H): Tools_InheritanceClassList.st $(INCLUDE_TOP)/stx/libtool/Tools_HierarchicalClassList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_ClassList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools_BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__LintRuleList.$(O) Tools__LintRuleList.$(H): Tools__LintRuleList.st $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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)Tools__MethodCategoryList.$(O) Tools__MethodCategoryList.$(H): Tools__MethodCategoryList.st $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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/libbasic/Method.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(STCHDR)
+$(OUTDIR)Tools__MethodList.$(O) Tools__MethodList.$(H): Tools__MethodList.st $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__NamespaceList.$(O) Tools__NamespaceList.$(H): Tools__NamespaceList.st $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__ProjectList.$(O) Tools__ProjectList.$(H): Tools__ProjectList.st $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__VariableList.$(O) Tools__VariableList.$(H): Tools__VariableList.st $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__ChangeList.$(O) Tools__ChangeList.$(H): Tools__ChangeList.st $(INCLUDE_TOP)/stx/libtool/Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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)Tools__ChangeSetDiffList.$(O) Tools__ChangeSetDiffList.$(H): Tools__ChangeSetDiffList.st $(INCLUDE_TOP)/stx/libtool/Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__FullMethodCategoryList.$(O) Tools__FullMethodCategoryList.$(H): Tools__FullMethodCategoryList.st $(INCLUDE_TOP)/stx/libtool/Tools__MethodCategoryList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__HierarchicalClassCategoryList.$(O) Tools__HierarchicalClassCategoryList.$(H): Tools__HierarchicalClassCategoryList.st $(INCLUDE_TOP)/stx/libtool/Tools__ClassCategoryList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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/HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)Tools__HierarchicalClassList.$(O) Tools__HierarchicalClassList.$(H): Tools__HierarchicalClassList.st $(INCLUDE_TOP)/stx/libtool/Tools__ClassList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__HierarchicalLintRuleList.$(O) Tools__HierarchicalLintRuleList.$(H): Tools__HierarchicalLintRuleList.st $(INCLUDE_TOP)/stx/libtool/Tools__LintRuleList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__HierarchicalProjectList.$(O) Tools__HierarchicalProjectList.$(H): Tools__HierarchicalProjectList.st $(INCLUDE_TOP)/stx/libtool/Tools__ProjectList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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/HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)Tools__ImplementingClassList.$(O) Tools__ImplementingClassList.$(H): Tools__ImplementingClassList.st $(INCLUDE_TOP)/stx/libtool/Tools__MethodList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__ImplementingMethodList.$(O) Tools__ImplementingMethodList.$(H): Tools__ImplementingMethodList.st $(INCLUDE_TOP)/stx/libtool/Tools__MethodList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__NamespaceFilter.$(O) Tools__NamespaceFilter.$(H): Tools__NamespaceFilter.st $(INCLUDE_TOP)/stx/libtool/Tools__NamespaceList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__TestRunner2.$(O) Tools__TestRunner2.$(H): Tools__TestRunner2.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) $(INCLUDE_TOP)/stx/libtool/Tools__ClassList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__NavigatorModel.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)Tools__HierarchicalChangeList.$(O) Tools__HierarchicalChangeList.$(H): Tools__HierarchicalChangeList.st $(INCLUDE_TOP)/stx/libtool/Tools__ChangeList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__HierarchicalPackageFilterList.$(O) Tools__HierarchicalPackageFilterList.$(H): Tools__HierarchicalPackageFilterList.st $(INCLUDE_TOP)/stx/libtool/Tools__HierarchicalProjectList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__ProjectList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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/HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)/stx/libwidg2/HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)Tools__InheritanceClassList.$(O) Tools__InheritanceClassList.$(H): Tools__InheritanceClassList.st $(INCLUDE_TOP)/stx/libtool/Tools__HierarchicalClassList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__ClassList.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__BrowserList.$(H) $(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) $(STCHDR)
 $(OUTDIR)XTermView.$(O) XTermView.$(H): XTermView.st $(INCLUDE_TOP)/stx/libview/XEmbedContainerView.$(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)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libcomp/Breakpoint.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libcomp/BreakpointDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic3/Change.$(H) $(INCLUDE_TOP)/stx/libbasic3/ChangeSet.$(H) $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Character.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libview/Color.$(H) $(INCLUDE_TOP)/stx/libbasic3/CompositeChange.$(H) $(INCLUDE_TOP)/stx/libbasic/Date.$(H) $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libwidg/EditTextView.$(H) $(INCLUDE_TOP)/stx/libwidg/TextView.$(H) $(INCLUDE_TOP)/stx/libwidg/ListView.$(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) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libview/Form.$(H) $(INCLUDE_TOP)/stx/libview/Image.$(H) $(INCLUDE_TOP)/stx/libbasic/Integer.$(H) $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libwidg/MenuView.$(H) $(INCLUDE_TOP)/stx/libwidg/SelectionInListView.$(H) $(INCLUDE_TOP)/stx/libbasic/Method.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/MethodDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/KeyedCollection.$(H) $(INCLUDE_TOP)/stx/libwidg/PopUpMenu.$(H) $(INCLUDE_TOP)/stx/libview/PopUpView.$(H) $(INCLUDE_TOP)/stx/libview/TopView.$(H) $(INCLUDE_TOP)/stx/libbasic3/ProfileTree.$(H) $(INCLUDE_TOP)/stx/libbasic2/RunArray.$(H) $(INCLUDE_TOP)/stx/libwidg2/SelectionInListModelView.$(H) $(INCLUDE_TOP)/stx/libwidg2/ListModelView.$(H) $(INCLUDE_TOP)/stx/libbasic/StringCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Symbol.$(H) $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic2/Text.$(H) $(INCLUDE_TOP)/stx/libbasic/Timestamp.$(H) $(INCLUDE_TOP)/stx/libbasic/AbstractTime.$(H) $(INCLUDE_TOP)/stx/libbasic/UserPreferences.$(H) $(INCLUDE_TOP)/stx/libbasic/IdentityDictionary.$(H) $(INCLUDE_TOP)/stx/libcomp/AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/Parser.$(H) $(INCLUDE_TOP)/stx/libcomp/Scanner.$(H) $(INCLUDE_TOP)/stx/libwidg/GenericToolbarIconLibrary.$(H) $(INCLUDE_TOP)/stx/libbasic/NameSpace.$(H) $(INCLUDE_TOP)/stx/libbasic/Smalltalk.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libcomp/Breakpoint.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libcomp/BreakpointDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic3/Change.$(H) $(INCLUDE_TOP)/stx/libbasic3/ChangeSet.$(H) $(INCLUDE_TOP)/stx/libbasic/OrderedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Character.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libview/Color.$(H) $(INCLUDE_TOP)/stx/libbasic3/CompositeChange.$(H) $(INCLUDE_TOP)/stx/libbasic/Date.$(H) $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libwidg/EditTextView.$(H) $(INCLUDE_TOP)/stx/libwidg/TextView.$(H) $(INCLUDE_TOP)/stx/libwidg/ListView.$(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) $(INCLUDE_TOP)/stx/libbasic/ExecutableFunction.$(H) $(INCLUDE_TOP)/stx/libview/Form.$(H) $(INCLUDE_TOP)/stx/libview/Image.$(H) $(INCLUDE_TOP)/stx/libbasic/Integer.$(H) $(INCLUDE_TOP)/stx/libbasic/Number.$(H) $(INCLUDE_TOP)/stx/libbasic/ArithmeticValue.$(H) $(INCLUDE_TOP)/stx/libwidg/MenuView.$(H) $(INCLUDE_TOP)/stx/libwidg/SelectionInListView.$(H) $(INCLUDE_TOP)/stx/libbasic/Method.$(H) $(INCLUDE_TOP)/stx/libbasic/CompiledCode.$(H) $(INCLUDE_TOP)/stx/libbasic/MethodDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/KeyedCollection.$(H) $(INCLUDE_TOP)/stx/libwidg/PopUpMenu.$(H) $(INCLUDE_TOP)/stx/libview/PopUpView.$(H) $(INCLUDE_TOP)/stx/libview/TopView.$(H) $(INCLUDE_TOP)/stx/libbasic3/ProfileTree.$(H) $(INCLUDE_TOP)/stx/libbasic2/RunArray.$(H) $(INCLUDE_TOP)/stx/libwidg2/SelectionInListModelView.$(H) $(INCLUDE_TOP)/stx/libwidg2/ListModelView.$(H) $(INCLUDE_TOP)/stx/libbasic/StringCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Symbol.$(H) $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic2/Text.$(H) $(INCLUDE_TOP)/stx/libbasic/Timestamp.$(H) $(INCLUDE_TOP)/stx/libbasic/AbstractTime.$(H) $(INCLUDE_TOP)/stx/libbasic/UserPreferences.$(H) $(INCLUDE_TOP)/stx/libbasic/IdentityDictionary.$(H) $(INCLUDE_TOP)/stx/libcomp/AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/Parser.$(H) $(INCLUDE_TOP)/stx/libcomp/Scanner.$(H) $(INCLUDE_TOP)/stx/libwidg/GenericToolbarIconLibrary.$(H) $(INCLUDE_TOP)/stx/libbasic/NameSpace.$(H) $(INCLUDE_TOP)/stx/libbasic/Block.$(H) $(INCLUDE_TOP)/stx/libbasic/LimitedPrecisionReal.$(H) $(INCLUDE_TOP)/stx/libbasic/UndefinedObject.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(INCLUDE_TOP)/stx/libbasic2/Iterator.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
--- a/Make.spec	Sun Jan 27 02:50:59 2013 +0100
+++ b/Make.spec	Wed Jan 30 11:15:09 2013 +0000
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libtool/Make.spec,v 1.79 2012-07-26 12:06:14 vrany Exp $
+# $Header$
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libtool.
@@ -157,6 +157,7 @@
 	SmalltalkCodeGeneratorTool \
 	Tools::BreakpointService \
 	Tools::BrowserList \
+	Tools::BrowserListWithFilter \
 	Tools::CodeCompletionService \
 	Tools::CodeHighlightingService \
 	Tools::CodeNavigationService \
@@ -176,7 +177,7 @@
 	DirectoryTreeBrowser \
 	PerforceSourceCodeManagementSettingsAppl \
 	StoreSourceCodeManagementSettingsAppl \
-	Tools::BrowserListWithFilter \
+	Tools::ChangeList \
 	Tools::ChangeSetDiffList \
 	Tools::ClassCategoryList \
 	Tools::ClassGeneratorList \
@@ -188,7 +189,7 @@
 	Tools::ProjectList \
 	Tools::VariableList \
 	Tools::FullMethodCategoryList \
-	Tools::ChangeList \
+	Tools::HierarchicalChangeList \
 	Tools::HierarchicalClassCategoryList \
 	Tools::HierarchicalClassList \
 	Tools::HierarchicalLintRuleList \
@@ -202,14 +203,27 @@
 	Tools::LintHighlighter \
 	Tools::LintService \
 	Tools::SourceCodeManagerConfigurationTestTool \
-	Tools::HierarchicalChangeList \
 	FileBasedSourceCodeManagementSettingsAppl \
 	DataBaseSourceCodeManagementSettingsAppl \
 	DirectoryDifferenceViewApplication \
 	MercurialSourceCodeManagementSettingsAppl \
 	GitSourceCodeManagementSettingsAppl \
+	Tools::LintAnnotation \
+	Tools::ProjectCheckerBrowser \
+	ParseTreeIndex \
+	Tools::Diff2CodeView2 \
+	Tools::Diff3CodeView2 \
+	Tools::TextDiff2Tool \
+	Tools::TextDiff3Tool \
+	Diff2 \
+	Diff3 \
+	Diff3Hunk \
+	Diff3InclusiveVisitor \
+	Diff3ExclusiveVisitor \
+	Tools::TextMergeInfo \
+	FileBrowserV3 \
+	Tools::ChangeSetDiffInfo \
 	PerforceSourceCodeManagerUtilities \
-	Tools::ProjectCheckerBrowser \
 
 
 
@@ -265,7 +279,7 @@
     $(OUTDIR)Tools__ChangeSetSelectionDialog.$(O) \
     $(OUTDIR)Tools__ChangeSetSpec.$(O) \
     $(OUTDIR)Tools__CheckinInfoDialog.$(O) \
-    $(OUTDIR)Tools_ClassChecker.$(O) \
+    $(OUTDIR)Tools__ClassChecker.$(O) \
     $(OUTDIR)Tools__ClassSorter.$(O) \
     $(OUTDIR)Tools__CodeCompletionMenu.$(O) \
     $(OUTDIR)Tools__CodeCritics.$(O) \
@@ -282,17 +296,17 @@
     $(OUTDIR)Tools__MethodCategoryCache.$(O) \
     $(OUTDIR)Tools__MethodRewriter.$(O) \
     $(OUTDIR)Tools__NavigationHistory.$(O) \
-    $(OUTDIR)Tools_NavigationState.$(O) \
-    $(OUTDIR)Tools_NavigatorModel.$(O) \
+    $(OUTDIR)Tools__NavigationState.$(O) \
+    $(OUTDIR)Tools__NavigatorModel.$(O) \
     $(OUTDIR)Tools__NewClassWizardDialog.$(O) \
     $(OUTDIR)Tools__NewSystemBrowserCodeView.$(O) \
     $(OUTDIR)Tools__Profiler.$(O) \
     $(OUTDIR)Tools__ProfilerInfoBuilder.$(O) \
     $(OUTDIR)Tools__ProfilerInfoItem.$(O) \
     $(OUTDIR)Tools__ProjectLoader.$(O) \
-    $(OUTDIR)Tools_SearchDialog.$(O) \
+    $(OUTDIR)Tools__SearchDialog.$(O) \
     $(OUTDIR)Tools__SmalltalkDiffTool.$(O) \
-    $(OUTDIR)Tools_SpecialCodeView.$(O) \
+    $(OUTDIR)Tools__SpecialCodeView.$(O) \
     $(OUTDIR)Tools__StringSearchTool.$(O) \
     $(OUTDIR)Tools__Tag.$(O) \
     $(OUTDIR)Tools__TagList.$(O) \
@@ -321,14 +335,15 @@
     $(OUTDIR)SetInspectorView.$(O) \
     $(OUTDIR)SmalltalkCodeGeneratorTool.$(O) \
     $(OUTDIR)Tools__BreakpointService.$(O) \
-    $(OUTDIR)Tools_BrowserList.$(O) \
+    $(OUTDIR)Tools__BrowserList.$(O) \
+    $(OUTDIR)Tools__BrowserListWithFilter.$(O) \
     $(OUTDIR)Tools__CodeCompletionService.$(O) \
     $(OUTDIR)Tools__CodeHighlightingService.$(O) \
     $(OUTDIR)Tools__CodeNavigationService.$(O) \
     $(OUTDIR)Tools__CodeView2SettingsAppl.$(O) \
-    $(OUTDIR)Tools_NavigatorCanvas.$(O) \
+    $(OUTDIR)Tools__NavigatorCanvas.$(O) \
     $(OUTDIR)Tools__NewSystemBrowser.$(O) \
-    $(OUTDIR)Tools_OrganizerCanvas.$(O) \
+    $(OUTDIR)Tools__OrganizerCanvas.$(O) \
     $(OUTDIR)Tools__SendersBrowslet.$(O) \
     $(OUTDIR)Tools__StringSearchToolForTextView.$(O) \
     $(OUTDIR)Tools__TestRunnerEmbedded.$(O) \
@@ -341,40 +356,53 @@
     $(OUTDIR)DirectoryTreeBrowser.$(O) \
     $(OUTDIR)PerforceSourceCodeManagementSettingsAppl.$(O) \
     $(OUTDIR)StoreSourceCodeManagementSettingsAppl.$(O) \
-    $(OUTDIR)Tools__BrowserListWithFilter.$(O) \
+    $(OUTDIR)Tools__ChangeList.$(O) \
     $(OUTDIR)Tools__ChangeSetDiffList.$(O) \
-    $(OUTDIR)Tools_ClassCategoryList.$(O) \
-    $(OUTDIR)Tools_ClassGeneratorList.$(O) \
-    $(OUTDIR)Tools_ClassList.$(O) \
+    $(OUTDIR)Tools__ClassCategoryList.$(O) \
+    $(OUTDIR)Tools__ClassGeneratorList.$(O) \
+    $(OUTDIR)Tools__ClassList.$(O) \
     $(OUTDIR)Tools__LintRuleList.$(O) \
-    $(OUTDIR)Tools_MethodCategoryList.$(O) \
-    $(OUTDIR)Tools_MethodList.$(O) \
-    $(OUTDIR)Tools_NamespaceList.$(O) \
-    $(OUTDIR)Tools_ProjectList.$(O) \
+    $(OUTDIR)Tools__MethodCategoryList.$(O) \
+    $(OUTDIR)Tools__MethodList.$(O) \
+    $(OUTDIR)Tools__NamespaceList.$(O) \
+    $(OUTDIR)Tools__ProjectList.$(O) \
     $(OUTDIR)Tools__VariableList.$(O) \
-    $(OUTDIR)Tools_FullMethodCategoryList.$(O) \
-    $(OUTDIR)Tools__ChangeList.$(O) \
-    $(OUTDIR)Tools_HierarchicalClassCategoryList.$(O) \
-    $(OUTDIR)Tools_HierarchicalClassList.$(O) \
+    $(OUTDIR)Tools__FullMethodCategoryList.$(O) \
+    $(OUTDIR)Tools__HierarchicalChangeList.$(O) \
+    $(OUTDIR)Tools__HierarchicalClassCategoryList.$(O) \
+    $(OUTDIR)Tools__HierarchicalClassList.$(O) \
     $(OUTDIR)Tools__HierarchicalLintRuleList.$(O) \
-    $(OUTDIR)Tools_HierarchicalProjectList.$(O) \
-    $(OUTDIR)Tools_ImplementingClassList.$(O) \
-    $(OUTDIR)Tools_ImplementingMethodList.$(O) \
+    $(OUTDIR)Tools__HierarchicalProjectList.$(O) \
+    $(OUTDIR)Tools__ImplementingClassList.$(O) \
+    $(OUTDIR)Tools__ImplementingMethodList.$(O) \
     $(OUTDIR)Tools__NamespaceFilter.$(O) \
     $(OUTDIR)Tools__TestRunner2.$(O) \
     $(OUTDIR)Tools__HierarchicalPackageFilterList.$(O) \
-    $(OUTDIR)Tools_InheritanceClassList.$(O) \
+    $(OUTDIR)Tools__InheritanceClassList.$(O) \
     $(OUTDIR)Tools__LintHighlighter.$(O) \
     $(OUTDIR)Tools__LintService.$(O) \
     $(OUTDIR)Tools__SourceCodeManagerConfigurationTestTool.$(O) \
-    $(OUTDIR)Tools__HierarchicalChangeList.$(O) \
     $(OUTDIR)FileBasedSourceCodeManagementSettingsAppl.$(O) \
     $(OUTDIR)DataBaseSourceCodeManagementSettingsAppl.$(O) \
     $(OUTDIR)DirectoryDifferenceViewApplication.$(O) \
     $(OUTDIR)MercurialSourceCodeManagementSettingsAppl.$(O) \
     $(OUTDIR)GitSourceCodeManagementSettingsAppl.$(O) \
+    $(OUTDIR)Tools__LintAnnotation.$(O) \
+    $(OUTDIR)Tools__ProjectCheckerBrowser.$(O) \
+    $(OUTDIR)ParseTreeIndex.$(O) \
+    $(OUTDIR)Tools__Diff2CodeView2.$(O) \
+    $(OUTDIR)Tools__Diff3CodeView2.$(O) \
+    $(OUTDIR)Tools__TextDiff2Tool.$(O) \
+    $(OUTDIR)Tools__TextDiff3Tool.$(O) \
+    $(OUTDIR)Diff2.$(O) \
+    $(OUTDIR)Diff3.$(O) \
+    $(OUTDIR)Diff3Hunk.$(O) \
+    $(OUTDIR)Diff3InclusiveVisitor.$(O) \
+    $(OUTDIR)Diff3ExclusiveVisitor.$(O) \
+    $(OUTDIR)Tools__TextMergeInfo.$(O) \
+    $(OUTDIR)FileBrowserV3.$(O) \
+    $(OUTDIR)Tools__ChangeSetDiffInfo.$(O) \
     $(OUTDIR)PerforceSourceCodeManagerUtilities.$(O) \
-    $(OUTDIR)Tools__ProjectCheckerBrowser.$(O) \
     $(OUTDIR)extensions.$(O) \
 
 
--- a/MemoryMonitor.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/MemoryMonitor.st	Wed Jan 30 11:15:09 2013 +0000
@@ -99,6 +99,7 @@
 
 ! !
 
+
 !MemoryMonitor class methodsFor:'image specs'!
 
 defaultIcon
@@ -125,6 +126,7 @@
 @P(P)RH@@P/P&RH@@@@@@@@@') ; yourself]
 ! !
 
+
 !MemoryMonitor class methodsFor:'interface specs'!
 
 windowSpec
@@ -169,6 +171,7 @@
       )
 ! !
 
+
 !MemoryMonitor class methodsFor:'menu specs'!
 
 mainMenu
@@ -261,6 +264,7 @@
       )
 ! !
 
+
 !MemoryMonitor methodsFor:'actions'!
 
 collectGarbage
@@ -282,6 +286,7 @@
 
 ! !
 
+
 !MemoryMonitor methodsFor:'initialization & release'!
 
 postBuildWith:aBuilder
@@ -297,6 +302,7 @@
     ^ super postBuildWith:aBuilder
 ! !
 
+
 !MemoryMonitor class methodsFor:'documentation'!
 
 version
@@ -305,4 +311,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/MemoryMonitor.st,v 1.70 2012-10-29 00:35:21 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: MemoryMonitor.st 8074 2012-11-30 17:23:39Z vranyj1 $'
 ! !
+
--- a/MemoryMonitorView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/MemoryMonitorView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1020,9 +1020,13 @@
 !MemoryMonitorView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/MemoryMonitorView.st,v 1.16 2011-08-16 13:13:38 stefan Exp $'
+    ^ '$Id: MemoryMonitorView.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/MemoryMonitorView.st,v 1.16 2011-08-16 13:13:38 stefan Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/MemoryMonitorView.st,v 1.16 2011/08/16 13:13:38 stefan Exp §'
+!
+
+version_SVN
+    ^ '$Id: MemoryMonitorView.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/MemoryUsageView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/MemoryUsageView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -59,6 +59,7 @@
 "
 ! !
 
+
 !MemoryUsageView class methodsFor:'startup'!
 
 isVisualStartable
@@ -67,6 +68,7 @@
     "Created: / 10.8.1998 / 16:02:59 / cg"
 ! !
 
+
 !MemoryUsageView methodsFor:'auto update'!
 
 autoUpdate
@@ -124,6 +126,7 @@
     "Created: / 05-05-2011 / 17:19:03 / cg"
 ! !
 
+
 !MemoryUsageView methodsFor:'initialization'!
 
 initialize
@@ -183,6 +186,7 @@
     "Created: / 05-05-2011 / 17:26:24 / cg"
 ! !
 
+
 !MemoryUsageView methodsFor:'menu-actions'!
 
 browseClass
@@ -602,6 +606,7 @@
     "Created: / 11-05-2011 / 14:36:00 / cg"
 ! !
 
+
 !MemoryUsageView methodsFor:'menu-sorting'!
 
 sortByAverageSize
@@ -741,6 +746,7 @@
     "Modified: / 05-05-2011 / 16:13:58 / cg"
 ! !
 
+
 !MemoryUsageView methodsFor:'private'!
 
 updateDisplay
@@ -927,6 +933,7 @@
     "Modified: / 08-05-2011 / 12:35:11 / cg"
 ! !
 
+
 !MemoryUsageView methodsFor:'realization'!
 
 pixelOrigin:a extent:b
@@ -944,6 +951,7 @@
     "Modified: 14.10.1997 / 21:03:52 / cg"
 ! !
 
+
 !MemoryUsageView::StatisticEntry methodsFor:'accessing'!
 
 averageSize
@@ -1025,6 +1033,7 @@
     ^ overallByteSize
 ! !
 
+
 !MemoryUsageView::StatisticEntry methodsFor:'updating'!
 
 addStatisticForInstance:o class:classNameOrSymbolArg
@@ -1047,6 +1056,7 @@
     "Created: / 05-05-2011 / 16:04:42 / cg"
 ! !
 
+
 !MemoryUsageView class methodsFor:'documentation'!
 
 version
@@ -1056,3 +1066,4 @@
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/MemoryUsageView.st,v 1.61 2012-11-04 22:12:51 cg Exp $'
 ! !
+
--- a/MercurialSourceCodeManagementSettingsAppl.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/MercurialSourceCodeManagementSettingsAppl.st	Wed Jan 30 11:15:09 2013 +0000
@@ -49,6 +49,7 @@
 "
 ! !
 
+
 !MercurialSourceCodeManagementSettingsAppl class methodsFor:'defaults'!
 
 defaultRepositoryName
@@ -58,6 +59,7 @@
     "Created: / 19-04-2011 / 11:00:11 / cg"
 ! !
 
+
 !MercurialSourceCodeManagementSettingsAppl class methodsFor:'help specs'!
 
 helpSpec
@@ -191,6 +193,7 @@
     "Modified: / 09-08-2012 / 09:41:11 / cg"
 ! !
 
+
 !MercurialSourceCodeManagementSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -280,6 +283,7 @@
 @CP\L0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[174 169 169 255 255 255 233 233 230 216 216 216 213 209 209 214 209 209 232 229 229 229 223 223 191 187 181 197 197 197 255 255 255 233 230 230 194 189 194 247 244 245 251 250 250 177 177 177 255 255 255 194 189 194 155 149 149 175 175 169 157 157 157 136 128 128 251 251 251 255 255 255 117 108 108 118 118 118 97 89 98 139 139 147 240 240 242 255 255 255 137 128 118 98 98 98 79 79 79 255 255 255 156 149 156 38 30 30 39 39 30 97 89 79 79 69 69 58 49 49 255 255 255 255 255 255 77 59 59 229 226 223 137 137 128 79 79 69 77 69 69 59 59 59 59 49 59 154 140 147 199 199 204 251 251 251 255 255 255 0 0 0 0 64 0 32 96 32 96 192 128 32 128 64 32 160 64 32 128 32 64 64 64 96 96 96 128 128 128 32 32 32 32 64 32]; mask:((Depth1Image new) width: 24; height: 24; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@G>@@O? @_?0@??8@??8@??<@??<O??>__?>_O?>_??>O=?>GR_>G<_<_>_<O>_8G?_8C??0K<? G<?@C8\@@@@@') ; yourself); yourself]
 ! !
 
+
 !MercurialSourceCodeManagementSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -803,6 +807,7 @@
       )
 ! !
 
+
 !MercurialSourceCodeManagementSettingsAppl class methodsFor:'queries'!
 
 managerClass
@@ -813,6 +818,7 @@
     "Created: / 19-04-2011 / 12:46:52 / cg"
 ! !
 
+
 !MercurialSourceCodeManagementSettingsAppl methodsFor:'actions'!
 
 addModule:module withData:data
@@ -916,6 +922,7 @@
     "Modified: / 26-01-2012 / 13:50:08 / cg"
 ! !
 
+
 !MercurialSourceCodeManagementSettingsAppl methodsFor:'actions - mercurial'!
 
 addPerModuleRoot
@@ -974,6 +981,7 @@
     "Created: / 17-01-2012 / 17:42:27 / cg"
 ! !
 
+
 !MercurialSourceCodeManagementSettingsAppl methodsFor:'aspects'!
 
 hgCommandTimeoutHolder
@@ -1123,6 +1131,7 @@
     "Created: / 03-03-2012 / 10:34:19 / cg"
 ! !
 
+
 !MercurialSourceCodeManagementSettingsAppl methodsFor:'change & update'!
 
 selectedPerModuleRepositoryChanged
@@ -1173,6 +1182,7 @@
     "Modified: / 14-01-2012 / 20:26:51 / cg"
 ! !
 
+
 !MercurialSourceCodeManagementSettingsAppl methodsFor:'help'!
 
 helpFilename
@@ -1181,6 +1191,7 @@
     "Modified: / 14-01-2012 / 20:27:00 / cg"
 ! !
 
+
 !MercurialSourceCodeManagementSettingsAppl methodsFor:'initialization & release'!
 
 initialize
@@ -1204,6 +1215,7 @@
     "Modified: / 17-01-2012 / 17:39:13 / cg"
 ! !
 
+
 !MercurialSourceCodeManagementSettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -1242,6 +1254,7 @@
     "Modified: / 14-01-2012 / 23:41:33 / cg"
 ! !
 
+
 !MercurialSourceCodeManagementSettingsAppl class methodsFor:'documentation'!
 
 version
@@ -1250,4 +1263,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/MercurialSourceCodeManagementSettingsAppl.st,v 1.19 2012-08-09 08:59:22 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: MercurialSourceCodeManagementSettingsAppl.st 8048 2012-09-07 17:28:09Z vranyj1 $'
 ! !
+
--- a/MultiViewToolApplication.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/MultiViewToolApplication.st	Wed Jan 30 11:15:09 2013 +0000
@@ -44,6 +44,7 @@
 "
 ! !
 
+
 !MultiViewToolApplication class methodsFor:'defaults'!
 
 defaultEditToolbarVisible
@@ -64,6 +65,7 @@
     "Created: / 14-07-2007 / 16:38:47 / cg"
 ! !
 
+
 !MultiViewToolApplication class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -85,6 +87,7 @@
     "Modified: / 06-07-2011 / 18:08:57 / cg"
 ! !
 
+
 !MultiViewToolApplication class methodsFor:'image specs'!
 
 hideToolBarIcon
@@ -95,6 +98,7 @@
     "Created: / 18-02-2007 / 14:53:38 / cg"
 ! !
 
+
 !MultiViewToolApplication class methodsFor:'interface specs'!
 
 windowSpec
@@ -120,7 +124,7 @@
           label: 'Workspace'
           name: 'Workspace'
           min: (Point 10 10)
-          bounds: (Rectangle 0 0 432 241)
+          bounds: (Rectangle 0 0 640 480)
           menu: mainMenu
         )
         component: 
@@ -199,8 +203,11 @@
          
         )
       )
+
+    "Modified: / 11-05-2012 / 11:43:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !MultiViewToolApplication class methodsFor:'menu specs'!
 
 editToolBarMenu
@@ -541,6 +548,7 @@
       )
 ! !
 
+
 !MultiViewToolApplication class methodsFor:'queries'!
 
 isVisualStartable
@@ -551,6 +559,7 @@
     ^ super isVisualStartable
 ! !
 
+
 !MultiViewToolApplication methodsFor:'accessing'!
 
 selectedWorkspace
@@ -571,6 +580,22 @@
     ^ workspaces at:wsIndex
 !
 
+selectedWorkspaceApplication
+    "Return an aoplication of selected workspace or nil,
+     is currently selected workspace is not an embedded
+     ApplicationModel"
+
+    | ws |
+    ws := self selectedWorkspace.
+    ^(ws notNil and:[ws isApplicationSubView]) ifTrue:[
+        ws application
+    ] ifFalse:[
+        nil
+    ]
+
+    "Created: / 11-05-2012 / 09:38:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 tabMenuAt:index
     <resource: #programMenu>
 
@@ -636,6 +661,7 @@
     ^ workspaces
 ! !
 
+
 !MultiViewToolApplication methodsFor:'aspects'!
 
 editToolBarVisibleHolder
@@ -703,6 +729,7 @@
     "Modified: / 14-07-2007 / 16:39:55 / cg"
 ! !
 
+
 !MultiViewToolApplication methodsFor:'aspects-queries'!
 
 canRemoveAllWorkspacesExcept:idx
@@ -738,6 +765,7 @@
       and:[v list contains:[:l | l notEmptyOrNil]]] 
 ! !
 
+
 !MultiViewToolApplication methodsFor:'change & update'!
 
 infoVisibilityChanged
@@ -818,6 +846,7 @@
     "Modified: / 14-07-2007 / 16:46:14 / cg"
 ! !
 
+
 !MultiViewToolApplication methodsFor:'defaults'!
 
 defaultFileNameForLoad
@@ -844,6 +873,7 @@
     "Created: / 25-10-2006 / 14:57:18 / cg"
 ! !
 
+
 !MultiViewToolApplication methodsFor:'initialization'!
 
 hideToolBarButtonCreated:aButton
@@ -868,6 +898,7 @@
     "Modified: / 22-01-2011 / 11:46:35 / cg"
 ! !
 
+
 !MultiViewToolApplication methodsFor:'menu-actions'!
 
 addWindow:aWindow named:name
@@ -1147,6 +1178,7 @@
     ].
 ! !
 
+
 !MultiViewToolApplication methodsFor:'menu-actions-editing'!
 
 copySelection
@@ -1223,6 +1255,7 @@
     ]
 ! !
 
+
 !MultiViewToolApplication methodsFor:'private'!
 
 askForFile:question default:defaultFilename thenDo:aBlock
@@ -1342,6 +1375,7 @@
     ^ view allSubViewsDetect:[:v| v name = #Workspace] ifNone:nil.
 ! !
 
+
 !MultiViewToolApplication methodsFor:'user actions'!
 
 hideEditToolbar
@@ -1354,8 +1388,14 @@
     "Created: / 18-02-2007 / 14:55:54 / cg"
 ! !
 
+
 !MultiViewToolApplication class methodsFor:'documentation'!
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/MultiViewToolApplication.st,v 1.45 2012-08-03 20:25:30 stefan Exp $'
+!
+
+version_SVN
+    ^ '$Id: MultiViewToolApplication.st 8048 2012-09-07 17:28:09Z vranyj1 $'
 ! !
+
--- a/NewChangesBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/NewChangesBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,3 +1,14 @@
+"
+ 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' }"
 
 ToolApplicationModel subclass:#NewChangesBrowser
@@ -20,6 +31,20 @@
 
 !NewChangesBrowser 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.
+"
+!
+
 documentation
 "
     The future Changes Browser.
@@ -3881,9 +3906,13 @@
 !NewChangesBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/NewChangesBrowser.st,v 1.35 2011-08-18 07:51:53 cg Exp $'
+    ^ '$Id: NewChangesBrowser.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/NewChangesBrowser.st,v 1.35 2011-08-18 07:51:53 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/NewChangesBrowser.st,v 1.35 2011/08/18 07:51:53 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: NewChangesBrowser.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/NewLauncher.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/NewLauncher.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 1997-1998 by eXept Software AG
-	      All Rights Reserved
+              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
@@ -31,7 +31,7 @@
 copyright
 "
  COPYRIGHT (c) 1997-1998 by eXept Software AG
-	      All Rights Reserved
+              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
@@ -47,7 +47,7 @@
 documentation
 "
     The new launcher.
-    This one provides all of the Launchers functionality,
+    This one provides all of the Launchers functionality, 
     but has been written using the new GUI painter tools.
     (i.e. its menu and toolbar is defined by specs, which can be
      easily modified).
@@ -59,14 +59,14 @@
     methods there.
 
     [start with:]
-	NewLauncher open
+        NewLauncher open
 
     [see also:]
-	Launcher
+        Launcher
 
     [author:]
-	Thomas Zwick, eXept Software AG
-	Claus Gittinger, eXept Software AG
+        Thomas Zwick, eXept Software AG
+        Claus Gittinger, eXept Software AG
 "
 
 !
@@ -74,60 +74,61 @@
 examples
 "
     reopening a standard launcher (without any added tools)
-									[exBegin]
+                                                                        [exBegin]
      NewLauncher removeAllUserAddedTools.
      NewLauncher open.
-									[exEnd]
+                                                                        [exEnd]
 
 
 
     adding your own menu items (for user-applications)
 
     an additional item in the tools menu:
-									[exBegin]
+                                                                        [exBegin]
      Transcript topView application
-	addMenuItem:(MenuItem new
-			label: 'Foo';
-			value: [Transcript showCR:'foo invoked'];
-			isButton: false;
-			labelImage: nil;
-			nameKey: #foo;
-			activeHelpKey: #Foo)
-	in:#menu
-	position:#(before workspace)
-	space:true
-									[exEnd]
+        addMenuItem:(MenuItem new 
+                        label: 'Foo';
+                        value: [Transcript showCR:'foo invoked'];
+                        isButton: false;
+                        labelImage: nil;
+                        nameKey: #foo;
+                        activeHelpKey: #Foo)
+        in:#menu
+        position:#(before workspace)
+        space:true
+                                                                        [exEnd]
 
     an additional item in the tools menu:
-									[exBegin]
+                                                                        [exBegin]
      Transcript topView application
-	addMenuItem:(MenuItem new
-			label: 'Foo';
-			value: [Transcript showCR:'foo invoked'];
-			isButton: false;
-			labelImage: nil;
-			activeHelpKey: #Foo)
-	in:#menu
-	position:#(after guiPainter)
-	space:true
-									[exEnd]
+        addMenuItem:(MenuItem new 
+                        label: 'Foo';
+                        value: [Transcript showCR:'foo invoked'];
+                        isButton: false;
+                        labelImage: nil;
+                        activeHelpKey: #Foo)
+        in:#menu
+        position:#(after guiPainter)
+        space:true
+                                                                        [exEnd]
 
     an additional item in one of the tools sub menus:
-									[exBegin]
+                                                                        [exBegin]
      Transcript topView application
-	addMenuItem:(MenuItem new
-			label: 'Foo';
-			value: [Transcript showCR:'foo invoked'];
-			isButton: false;
-			labelImage: nil;
-			activeHelpKey: #Foo)
-	in:#menu
-	position:#(after Workspace)
-	space:true
-									[exEnd]
+        addMenuItem:(MenuItem new 
+                        label: 'Foo';
+                        value: [Transcript showCR:'foo invoked'];
+                        isButton: false;
+                        labelImage: nil;
+                        activeHelpKey: #Foo)
+        in:#menu
+        position:#(after Workspace)
+        space:true
+                                                                        [exEnd]
 "
 ! !
 
+
 !NewLauncher class methodsFor:'accessing'!
 
 label
@@ -137,25 +138,26 @@
 
 ! !
 
+
 !NewLauncher class methodsFor:'defaults'!
 
 defaultInfoLineTemplate
     "available values:
-	PACKAGE         - the current packageID
-	PACKAGEOREMPTY  - the current packageID or empty if its __NoPackage__
-	IMAGE           - the current snapshot image
-	CVS             - the CVS source repository or empty
-	DB              - the Store source repository DB or empty
-	SVN_WORKING_COPY- the SVN working copy dir or empty
-	NOREPOSITORY    - the tring 'No Repository' empty
-	NS              - the default namespace, or empty (if Smalltalk)
-	PROJECTDIR      - the default fileOut directory or empty (if current)
+        PACKAGE         - the current packageID
+        PACKAGEOREMPTY  - the current packageID or empty if its __NoPackage__
+        IMAGE           - the current snapshot image
+        CVS             - the CVS source repository or empty
+        DB              - the Store source repository DB or empty
+        SVN_WORKING_COPY- the SVN working copy dir or empty
+        NOREPOSITORY    - the tring 'No Repository' empty
+        NS              - the default namespace, or empty (if Smalltalk)
+        PROJECTDIR      - the default fileOut directory or empty (if current)
     "
 
     (SVN::RepositoryManager notNil
-    and:[ SVN::RepositoryManager isLoaded
+    and:[ SVN::RepositoryManager isLoaded    
     and:[ SVN::RepositoryManager enabled ]]) ifTrue:[
-	^ '%(PACKAGEOREMPTY)%(IMAGE) %(CVS)%(DB)%(SVN_WORKING_COPY)'
+        ^ '%(PACKAGEOREMPTY)%(IMAGE) %(CVS)%(DB)%(SVN_WORKING_COPY)'
     ].
     ^ '%(PACKAGEOREMPTY)%(IMAGE)%(CVS)%(DB)%(NOREPOSITORY)%(NS)'
 
@@ -172,6 +174,7 @@
     "Modified: / 17.8.1998 / 10:07:09 / cg"
 ! !
 
+
 !NewLauncher class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -258,7 +261,7 @@
      the UIHelpTool may not be able to read the specification."
 
     "
-     UIHelpTool openOnClass:NewLauncher
+     UIHelpTool openOnClass:NewLauncher    
     "
 
     <resource: #help>
@@ -782,6 +785,7 @@
     "Modified: / 21-09-2012 / 10:59:33 / cg"
 ! !
 
+
 !NewLauncher class methodsFor:'interface specs'!
 
 windowSpec
@@ -928,107 +932,108 @@
 
     <resource: #canvas>
 
-    ^
+    ^ 
      #(FullSpec
-	name: #'windowSpec_pda'
-	window:
+        name: #'windowSpec_pda'
+        window: 
        (WindowSpec
-	  label: 'Launcher'
-	  name: 'Launcher'
-	  min: (Point 100 20)
-	  max: (Point 240 300)
-	  bounds: (Rectangle 13 23 197 224)
-	  menu: #'menu_pda'
-	  icon: windowIcon
-	)
-	component:
+          label: 'Launcher'
+          name: 'Launcher'
+          min: (Point 100 20)
+          max: (Point 240 300)
+          bounds: (Rectangle 13 23 197 224)
+          menu: #'menu_pda'
+          icon: windowIcon
+        )
+        component: 
        (SpecCollection
-	  collection: (
-	   (MenuPanelSpec
-	      name: 'menuToolbarView'
-	      layout: (LayoutFrame 0 0.0 0 0 0 1.0 38 0)
-	      menu: #'menuToolbar_pda'
-	    )
-	   (WorkspaceSpec
-	      name: 'transcriptView'
-	      layout: (LayoutFrame 0 0.0 40 0.0 0 1.0 -26 1.0)
-	      hasHorizontalScrollBar: true
-	      hasVerticalScrollBar: true
-	      miniScrollerHorizontal: true
-	      miniScrollerVertical: false
-	    )
-	   (UISubSpecification
-	      name: 'infoBarSubSpec'
-	      layout: (LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0)
-	      majorKey: ToolApplicationModel
-	      minorKey: windowSpecForInfoBarWithClock
-	    )
-	   )
-
-	)
+          collection: (
+           (MenuPanelSpec
+              name: 'menuToolbarView'
+              layout: (LayoutFrame 0 0.0 0 0 0 1.0 38 0)
+              menu: #'menuToolbar_pda'
+            )
+           (WorkspaceSpec
+              name: 'transcriptView'
+              layout: (LayoutFrame 0 0.0 40 0.0 0 1.0 -26 1.0)
+              hasHorizontalScrollBar: true
+              hasVerticalScrollBar: true
+              miniScrollerHorizontal: true
+              miniScrollerVertical: false
+            )
+           (UISubSpecification
+              name: 'infoBarSubSpec'
+              layout: (LayoutFrame 0 0.0 -24 1 0 1.0 0 1.0)
+              majorKey: ToolApplicationModel
+              minorKey: windowSpecForInfoBarWithClock
+            )
+           )
+         
+        )
       )
 ! !
 
+
 !NewLauncher class methodsFor:'menu configuration'!
 
 addMenuItem:newItem from:anApplicationWhichProvidesResourcesOrNil in:where position:positionSpecOrNilArg space:space
     |positionSpecOrNil itemNameOrNil before launcherApp|
 
-    (Transcript notNil
+    (Transcript notNil 
     and:[ Transcript isView
     and:[ (launcherApp := Transcript application) notNil
     and:[ launcherApp isKindOf:self]]]) ifTrue:[
-	"/ add to instance
-	launcherApp addMenuItem:newItem from:anApplicationWhichProvidesResourcesOrNil in:where position:positionSpecOrNilArg space:space.
-	^ self
+        "/ add to instance
+        launcherApp addMenuItem:newItem from:anApplicationWhichProvidesResourcesOrNil in:where position:positionSpecOrNilArg space:space.
+        ^ self
     ].
 
     positionSpecOrNil := positionSpecOrNilArg.
     positionSpecOrNil isArray ifTrue:[
-	positionSpecOrNil size > 1 ifTrue:[
-	    itemNameOrNil := positionSpecOrNil at:2.
-	].
-	positionSpecOrNil := positionSpecOrNil at:1.
+        positionSpecOrNil size > 1 ifTrue:[
+            itemNameOrNil := positionSpecOrNil at:2.
+        ].
+        positionSpecOrNil := positionSpecOrNil at:1.
     ].
     before := (positionSpecOrNil == #first) or:[positionSpecOrNil == #before].
 
     (where isNil or: [where = 'toolbar']) ifTrue:[
-	UserAddedToolBarItems isNil ifTrue: [UserAddedToolBarItems := Dictionary new].
-	(UserAddedToolBarItems contains:[:info | info item nameKey = newItem nameKey])
-	ifTrue:[
-	    Transcript show:'NewLauncher class: menu item already present:'; showCR:newItem nameKey.
-	]
-	ifFalse:[
-	    UserAddedToolBarItems
-		at:newItem put:(AddedToolInfo new
-					    item:newItem;
-					    resourceProvider:anApplicationWhichProvidesResourcesOrNil;
-					    where:where;
-					    positionSpec:positionSpecOrNilArg;
-					    space:space;
-					    before:before;
-					    menuWithNewItem:nil;
-					    yourself)
-	]
+        UserAddedToolBarItems isNil ifTrue: [UserAddedToolBarItems := Dictionary new].
+        (UserAddedToolBarItems contains:[:info | info item nameKey = newItem nameKey])
+        ifTrue:[
+            Transcript show:'NewLauncher class: menu item already present:'; showCR:newItem nameKey.
+        ]
+        ifFalse:[
+            UserAddedToolBarItems
+                at:newItem put:(AddedToolInfo new
+                                            item:newItem;
+                                            resourceProvider:anApplicationWhichProvidesResourcesOrNil;
+                                            where:where;
+                                            positionSpec:positionSpecOrNilArg;
+                                            space:space;
+                                            before:before;
+                                            menuWithNewItem:nil;
+                                            yourself)
+        ]
     ].
     (where isNil or:[where startsWith:'menu']) ifTrue:[
-	UserAddedMenuItems isNil ifTrue: [UserAddedMenuItems := Dictionary new].
-	(UserAddedMenuItems contains:[:info | info item nameKey = newItem nameKey])
-	ifTrue:[
-	    Transcript show:'NewLauncher class: menu item already present:'; showCR:newItem nameKey.
-	]
-	ifFalse:[
-	    UserAddedMenuItems
-		at:newItem put:(AddedToolInfo new
-					    item:newItem;
-					    resourceProvider:anApplicationWhichProvidesResourcesOrNil;
-					    where:where;
-					    positionSpec:positionSpecOrNilArg;
-					    space:space;
-					    before:before;
-					    menuWithNewItem:nil;
-					    yourself)
-	]
+        UserAddedMenuItems isNil ifTrue: [UserAddedMenuItems := Dictionary new].
+        (UserAddedMenuItems contains:[:info | info item nameKey = newItem nameKey])
+        ifTrue:[
+            Transcript show:'NewLauncher class: menu item already present:'; showCR:newItem nameKey.
+        ]
+        ifFalse:[
+            UserAddedMenuItems 
+                at:newItem put:(AddedToolInfo new
+                                            item:newItem;
+                                            resourceProvider:anApplicationWhichProvidesResourcesOrNil;
+                                            where:where;
+                                            positionSpec:positionSpecOrNilArg;
+                                            space:space;
+                                            before:before;
+                                            menuWithNewItem:nil;
+                                            yourself)
+        ]
     ]
 
     "Modified: / 09-08-2011 / 22:39:44 / cg"
@@ -1036,11 +1041,11 @@
 
 addMenuItem:newItem in:where position:positionSpecOrNilArg space:space
     ^ self
-	addMenuItem:newItem
-	from:nil
-	in:where
-	position:positionSpecOrNilArg
-	space:space
+        addMenuItem:newItem 
+        from:nil
+        in:where 
+        position:positionSpecOrNilArg 
+        space:space
 !
 
 removeAllUserAddedTools
@@ -1054,7 +1059,7 @@
 
 removeUserTool:toolNameOrMenuItem
     "removes a menu item labeled toolName
-     This can be invoked by a classes #deinitialize method,
+     This can be invoked by a classes #deinitialize method, 
      to remove its item from the toolbar or menu.
     "
 
@@ -1063,11 +1068,11 @@
 
     "
      Transcript topView application
-	removeUserTool:'Bar'
+        removeUserTool:'Bar' 
     "
     "
      Transcript topView application
-	removeUserTool:'Foo'
+        removeUserTool:'Foo' 
     "
 
 
@@ -1075,7 +1080,7 @@
 
 removeUserTool:toolNameOrMenuItem from:addedToolsCollection
     "removes a menu item labeled toolName
-     This can be invoked by a classes #deinitialize method,
+     This can be invoked by a classes #deinitialize method, 
      to remove its item from the toolbar or menu.
     "
 
@@ -1084,52 +1089,53 @@
     addedToolsCollection size == 0 ifTrue: [^nil].
 
     [true] whileTrue:[
-	(toolNameOrMenuItem isString or:[toolNameOrMenuItem isSymbol]) ifTrue:[
-	    info := addedToolsCollection detect:[:eachInfo | |eachItem|
-					    eachItem := eachInfo item.
-					    (eachItem nameKey notNil and:[ toolNameOrMenuItem = eachItem nameKey])
-					    or:[ (eachItem activeHelpKey notNil and:[ toolNameOrMenuItem = eachItem activeHelpKey])
-					    or:[ (eachItem label notNil and:[ toolNameOrMenuItem = eachItem label])]]
-					  ]
-				   ifNone:nil.
-	] ifFalse:[
-	    info := addedToolsCollection detect:[:eachInfo | |eachItem| eachItem := eachInfo item. (eachItem == toolNameOrMenuItem)] ifNone:nil.
-	].
-	info isNil ifTrue:[^ self].
-
-	space     := info space.
-	whichMenu := info menuWithNewItem.
-	menuItemToRemove := info item.
-	before := info before.
-
-	whichMenu notNil ifTrue:[
-	    menuIndex := whichMenu findFirst:[:item |
-						    (item nameKey notNil and:[item nameKey == menuItemToRemove nameKey])
-						    or:[ (item activeHelpKey notNil and:[item activeHelpKey == menuItemToRemove activeHelpKey])
-						    or:[ (item label notNil and:[item label = menuItemToRemove label]) ]]
-					     ].
-	    menuIndex ~~ 0 ifTrue:[
-		whichMenu remove: menuIndex.
-		space ifTrue: [
-		    whichMenu remove:(menuIndex - (before ifTrue:0 ifFalse:1))
-		].
-	    ].
-	].
-	addedToolsCollection removeKey:menuItemToRemove.
-	^ self
+        (toolNameOrMenuItem isString or:[toolNameOrMenuItem isSymbol]) ifTrue:[
+            info := addedToolsCollection detect:[:eachInfo | |eachItem|
+                                            eachItem := eachInfo item.
+                                            (eachItem nameKey notNil and:[ toolNameOrMenuItem = eachItem nameKey])
+                                            or:[ (eachItem activeHelpKey notNil and:[ toolNameOrMenuItem = eachItem activeHelpKey])
+                                            or:[ (eachItem label notNil and:[ toolNameOrMenuItem = eachItem label])]]
+                                          ]
+                                   ifNone:nil.
+        ] ifFalse:[
+            info := addedToolsCollection detect:[:eachInfo | |eachItem| eachItem := eachInfo item. (eachItem == toolNameOrMenuItem)] ifNone:nil.
+        ].
+        info isNil ifTrue:[^ self].
+
+        space     := info space.
+        whichMenu := info menuWithNewItem.
+        menuItemToRemove := info item.
+        before := info before.
+
+        whichMenu notNil ifTrue:[
+            menuIndex := whichMenu findFirst:[:item | 
+                                                    (item nameKey notNil and:[item nameKey == menuItemToRemove nameKey])
+                                                    or:[ (item activeHelpKey notNil and:[item activeHelpKey == menuItemToRemove activeHelpKey])
+                                                    or:[ (item label notNil and:[item label = menuItemToRemove label]) ]]
+                                             ].
+            menuIndex ~~ 0 ifTrue:[              
+                whichMenu remove: menuIndex.
+                space ifTrue: [
+                    whichMenu remove:(menuIndex - (before ifTrue:0 ifFalse:1))
+                ].
+            ].
+        ].
+        addedToolsCollection removeKey:menuItemToRemove. 
+        ^ self
     ].
 
 
     "
      Transcript topView application
-	removeUserTool:'Bar'
+        removeUserTool:'Bar' 
     "
     "
      Transcript topView application
-	removeUserTool:'Foo'
+        removeUserTool:'Foo' 
     "
 ! !
 
+
 !NewLauncher class methodsFor:'menu specs'!
 
 aboutMenu
@@ -1146,27 +1152,27 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(#Menu
-	#(
-	 #(#MenuItem
-	    #label: 'About Smalltalk/X...'
-	    #translateLabel: true
-	    #value: #openAbout
-	    #activeHelpKey: #aboutSTX
-	  )
-	 #(#MenuItem
-	    #label: '-'
-	  )
-	 #(#MenuItem
-	    #label: 'Licence Conditions'
-	    #translateLabel: true
-	    #value: #openLicenseConditions
-	    #activeHelpKey: #aboutLicenseConditions
-	  )
-	 )
-	nil
-	nil
+        #(
+         #(#MenuItem
+            #label: 'About Smalltalk/X...'
+            #translateLabel: true
+            #value: #openAbout
+            #activeHelpKey: #aboutSTX
+          )
+         #(#MenuItem
+            #label: '-'
+          )
+         #(#MenuItem
+            #label: 'Licence Conditions'
+            #translateLabel: true
+            #value: #openLicenseConditions
+            #activeHelpKey: #aboutLicenseConditions
+          )
+         )
+        nil
+        nil
       )
 !
 
@@ -1319,50 +1325,50 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
-	(
-	 (MenuItem
-	    activeHelpKey: classesClassBrowser
-	    label: 'Class Browser On...'
-	    itemValue: startClassBrowser
-	    nameKey: classBrowserOn
-	    translateLabel: true
-	    showBusyCursorWhilePerforming: true
-	  )
-	 (MenuItem
-	    activeHelpKey: classesFullClassBrowser
-	    label: 'Full Class Browser On...'
-	    itemValue: startFullClassBrowser
-	    translateLabel: true
-	    showBusyCursorWhilePerforming: true
-	  )
-	 (MenuItem
-	    activeHelpKey: classesClassHierarchyBrowser
-	    label: 'Class Hierarchy Browser On...'
-	    itemValue: startClassHierarchyBrowser
-	    translateLabel: true
-	    showBusyCursorWhilePerforming: true
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    label: 'Snapshot Image Browser...'
-	    itemValue: startSnapshotImageBrowser
-	    translateLabel: true
-	    showBusyCursorWhilePerforming: true
-	  )
-	 (MenuItem
-	    enabled: remoteImageBrowserAvailable
-	    label: 'Remote Image Browser...'
-	    itemValue: startRemoteImageBrowser
-	    translateLabel: true
-	    showBusyCursorWhilePerforming: true
-	  )
-	 )
-	nil
-	nil
+        (
+         (MenuItem
+            activeHelpKey: classesClassBrowser
+            label: 'Class Browser On...'
+            itemValue: startClassBrowser
+            nameKey: classBrowserOn
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            activeHelpKey: classesFullClassBrowser
+            label: 'Full Class Browser On...'
+            itemValue: startFullClassBrowser
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            activeHelpKey: classesClassHierarchyBrowser
+            label: 'Class Hierarchy Browser On...'
+            itemValue: startClassHierarchyBrowser
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Snapshot Image Browser...'
+            itemValue: startSnapshotImageBrowser
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: remoteImageBrowserAvailable
+            label: 'Remote Image Browser...'
+            itemValue: startRemoteImageBrowser
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         )
+        nil
+        nil
       )
 !
 
@@ -1381,502 +1387,502 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
-	(
-	 (MenuItem
-	    activeHelpKey: demosGoodies
-	    label: 'Goodies'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  activeHelpKey: demosClock
-		  label: 'Clock'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'Clock'
-		)
-	       (MenuItem
-		  activeHelpKey: demosDigitalClock
-		  label: 'Digital Clock'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'DigitalClockView'
-		)
-	       (MenuItem
-		  activeHelpKey: demosDigitalClock
-		  label: 'QlockTwoWatch'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'QlockTwoWatch'
-		)
-	       (MenuItem
-		  activeHelpKey: demosBabelFish
-		  label: 'BabelFish'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'SOAP::TranslationServiceApplication'
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    activeHelpKey: demosGames
-	    label: 'Games'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  activeHelpKey: gamesTetris
-		  label: 'Blocks (Tetris look alike)'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'Games::Tetris'
-		)
-	       (MenuItem
-		  activeHelpKey: gamesTicTacToe
-		  label: 'Tic Tac Toe'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'Games::TicTacToeGame'
-		)
-	       (MenuItem
-		  activeHelpKey: gamesTicTacToe2
-		  label: 'Tic Tac Toe (2 Players)'
-		  itemValue: startTicTacToe2
-		  translateLabel: true
-		)
-	       (MenuItem
-		  activeHelpKey: gamesPingPong
-		  label: 'PingPong'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'Games::PingPongGame'
-		)
-	       (MenuItem
-		  activeHelpKey: gamesPingPong2
-		  label: 'PingPong - (2 Players)'
-		  itemValue: startPingPong2
-		  translateLabel: true
-		)
-	       (MenuItem
-		  activeHelpKey: gamesReversi
-		  label: 'Reversi (Java)'
-		  itemValue: startReversi
-		  translateLabel: true
-		)
-	       (MenuItem
-		  label: 'Towers of Hanoi (Prolog)'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'Prolog::TowersOfHanoiApplication'
-		)
-	       (MenuItem
-		  label: 'MasterMind (Prolog)'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'Prolog::MasterMind'
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    activeHelpKey: demosGeometric
-	    label: 'Geometric Designs'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  activeHelpKey: demosPen
-		  label: 'Pen Demo'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'PenDemo'
-		)
-	       (MenuItem
-		  activeHelpKey: demosCommander
-		  label: 'Commander Demo'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'CommanderDemo'
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  activeHelpKey: demosMandel
-		  label: 'Mandel'
-		  itemValue: openMandelbrotDemo
-		  translateLabel: true
-		)
-	       (MenuItem
-		  activeHelpKey: demosFractalPlants
-		  label: 'Fractal Plants Demo'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'FractalPlantsDemo'
-		)
-	       (MenuItem
-		  activeHelpKey: demosFractalPatterns
-		  label: 'Fractal Patterns Demo'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'FractalPatternsDemo'
-		)
-	       (MenuItem
-		  activeHelpKey: demosLSystems
-		  label: 'Lindenmayer Patterns Demo'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'LSystemsDemo'
-		)
-	       (MenuItem
-		  activeHelpKey: demosMoreFractalPatterns
-		  label: 'More Fractal Patterns Demo'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'ArmchairUniverseDemo'
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  label: 'Jan''s FractalApplication'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'Demos::FractalApplication'
-		)
-	       (MenuItem
-		  label: 'Jan''s Superformula'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'Demos::SuperFormulaApplication'
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    activeHelpKey: demosAnimations
-	    label: 'Simple Animations'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  activeHelpKey: demosWalkingMan
-		  label: 'Walking Man'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'Animation'
-		)
-	       (MenuItem
-		  activeHelpKey: demosWalkingMan
-		  label: 'Walking Girl'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'WalkingGirl'
-		)
-	       (MenuItem
-		  activeHelpKey: demosGlobe
-		  label: 'Globe Demo'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'GlobeDemo'
-		)
-	       (MenuItem
-		  activeHelpKey: chickenFun
-		  label: 'Chicken Fun'
-		  itemValue: startStopDemo:
-		  translateLabel: true
-		  indication: chickenFunIsRunning
-		  argument: 'ChickenFun'
-		)
-	       (MenuItem
-		  activeHelpKey: chickenFun
-		  label: 'Chicks Eyes'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'ChickenEyes'
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    activeHelpKey: demos3D
-	    label: '3D GL Graphics'
-	    translateLabel: true
-	    isVisible: displaySupportsGLDrawing
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  activeHelpKey: demos3Dplane
-		  label: 'Plane'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'GLPlaneDemoView2'
-		)
-	       (MenuItem
-		  activeHelpKey: demos3Dtetra
-		  label: 'Tetra'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'GLTetraDemoView'
-		)
-	       (MenuItem
-		  activeHelpKey: demos3DcubeWire
-		  label: 'Cube (Wireframe)'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'GLWireCubeDemoView'
-		)
-	       (MenuItem
-		  activeHelpKey: demos3DcubeSolid
-		  label: 'Cube (Solid)'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'GLCubeDemoView'
-		)
-	       (MenuItem
-		  activeHelpKey: demos3Dsphere
-		  label: 'Sphere (Wireframe)'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'GLWireSphereDemoView'
-		)
-	       (MenuItem
-		  activeHelpKey: demos3Ddoughnut
-		  label: 'Doughnut (Wireframe)'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'GLDoughnutDemoView'
-		)
-	       (MenuItem
-		  activeHelpKey: demos3Dplanet
-		  label: 'Planet'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'GLPlanetDemoView'
-		)
-	       (MenuItem
-		  activeHelpKey: demos3Dteapot
-		  label: 'Teapot'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'GLTeapotDemo'
-		)
-	       (MenuItem
-		  activeHelpKey: demos3Dlogo
-		  label: 'Logo'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'Logo3DView1'
-		)
-	       (MenuItem
-		  activeHelpKey: demosCommander
-		  label: 'Rubics Cube'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'RubicsCubeView'
-		)
-	       (MenuItem
-		  label: 'X/Y Graph'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'GLXYGraph'
-		)
-	       (MenuItem
-		  label: 'X/Y Graph Widget'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'CodingExamples_GUI::GLXYGraph3DDemo'
-		)
-	       (MenuItem
-		  label: 'X/Y Graph Animated'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'CodingExamples_GUI::AnimatedGLXYGraph3DDemo'
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  label: 'Cube (Light)'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'GLCubeDemoView2'
-		)
-	       (MenuItem
-		  label: 'Cube (Light and Texture)'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'GLBrickCubeDemoView'
-		)
-	       (MenuItem
-		  label: 'Sphere (Light)'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'GLSphereDemoView2'
-		)
-	       (MenuItem
-		  label: 'Colored Octahedron'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'GLOctaHedronDemoView'
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    activeHelpKey: demosGraphicEditors
-	    label: 'Graphic Editors'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  activeHelpKey: demosGraphicEditorsDrawTool
-		  label: 'Draw Tool'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'DrawTool'
-		)
-	       (MenuItem
-		  activeHelpKey: demosGraphicEditorsLogicTool
-		  label: 'Logic Tool'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'LogicTool'
-		)
-	       (MenuItem
-		  activeHelpKey: demosGraphicEditorsPaintTool
-		  label: 'Paint Demo'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'ColorDrawDemo3'
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    activeHelpKey: demosGUI
-	    label: 'GUI'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  activeHelpKey: demosGUIWidgets
-		  label: 'Widget Gallery'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'CodingExamples_GUI::GUIDemo'
-		)
-	       (MenuItem
-		  activeHelpKey: demosDrawingProtocol
-		  label: 'Drawing Protocol Demo'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'CodingExamples_GUI::DrawingProtocolDemonstration'
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  activeHelpKey: demosGUICalculator
-		  label: 'Calculator (simple)'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'CodingExamples_GUI::GUIDemoCalculator'
-		)
-	       (MenuItem
-		  activeHelpKey: demosGUICalculator
-		  label: 'Calculator (nice)'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'CodingExamples_GUI::GUIDemoFoxCalculatorClone'
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    activeHelpKey: demosOldStuff
-	    label: 'Old Stuff'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  activeHelpKey: demosCalendar
-		  label: 'Calendar'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'Calendar'
-		)
-	       (MenuItem
-		  activeHelpKey: demosCalculator
-		  label: 'Calculator'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'CalculatorView'
-		)
-	       (MenuItem
-		  label: '-'
-		)
-	       (MenuItem
-		  activeHelpKey: demosMail
-		  label: 'Mail Tool'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'MailView'
-		)
-	       (MenuItem
-		  activeHelpKey: demosNews
-		  label: 'News Tool'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'NewsView'
-		)
-	       (MenuItem
-		  activeHelpKey: demosFTP
-		  label: 'FTP Tool'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'FTPTool'
-		)
-	       (MenuItem
-		  activeHelpKey: demosTelnet
-		  label: 'Telnet Tool'
-		  itemValue: openDemo:
-		  translateLabel: true
-		  argument: 'TelnetTool'
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 )
-	nil
-	nil
+        (
+         (MenuItem
+            activeHelpKey: demosGoodies
+            label: 'Goodies'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  activeHelpKey: demosClock
+                  label: 'Clock'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'Clock'
+                )
+               (MenuItem
+                  activeHelpKey: demosDigitalClock
+                  label: 'Digital Clock'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'DigitalClockView'
+                )
+               (MenuItem
+                  activeHelpKey: demosDigitalClock
+                  label: 'QlockTwoWatch'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'QlockTwoWatch'
+                )
+               (MenuItem
+                  activeHelpKey: demosBabelFish
+                  label: 'BabelFish'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'SOAP::TranslationServiceApplication'
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            activeHelpKey: demosGames
+            label: 'Games'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  activeHelpKey: gamesTetris
+                  label: 'Blocks (Tetris look alike)'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'Games::Tetris'
+                )
+               (MenuItem
+                  activeHelpKey: gamesTicTacToe
+                  label: 'Tic Tac Toe'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'Games::TicTacToeGame'
+                )
+               (MenuItem
+                  activeHelpKey: gamesTicTacToe2
+                  label: 'Tic Tac Toe (2 Players)'
+                  itemValue: startTicTacToe2
+                  translateLabel: true
+                )
+               (MenuItem
+                  activeHelpKey: gamesPingPong
+                  label: 'PingPong'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'Games::PingPongGame'
+                )
+               (MenuItem
+                  activeHelpKey: gamesPingPong2
+                  label: 'PingPong - (2 Players)'
+                  itemValue: startPingPong2
+                  translateLabel: true
+                )
+               (MenuItem
+                  activeHelpKey: gamesReversi
+                  label: 'Reversi (Java)'
+                  itemValue: startReversi
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: 'Towers of Hanoi (Prolog)'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'Prolog::TowersOfHanoiApplication'
+                )
+               (MenuItem
+                  label: 'MasterMind (Prolog)'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'Prolog::MasterMind'
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            activeHelpKey: demosGeometric
+            label: 'Geometric Designs'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  activeHelpKey: demosPen
+                  label: 'Pen Demo'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'PenDemo'
+                )
+               (MenuItem
+                  activeHelpKey: demosCommander
+                  label: 'Commander Demo'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'CommanderDemo'
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  activeHelpKey: demosMandel
+                  label: 'Mandel'
+                  itemValue: openMandelbrotDemo
+                  translateLabel: true
+                )
+               (MenuItem
+                  activeHelpKey: demosFractalPlants
+                  label: 'Fractal Plants Demo'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'FractalPlantsDemo'
+                )
+               (MenuItem
+                  activeHelpKey: demosFractalPatterns
+                  label: 'Fractal Patterns Demo'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'FractalPatternsDemo'
+                )
+               (MenuItem
+                  activeHelpKey: demosLSystems
+                  label: 'Lindenmayer Patterns Demo'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'LSystemsDemo'
+                )
+               (MenuItem
+                  activeHelpKey: demosMoreFractalPatterns
+                  label: 'More Fractal Patterns Demo'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'ArmchairUniverseDemo'
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Jan''s FractalApplication'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'Demos::FractalApplication'
+                )
+               (MenuItem
+                  label: 'Jan''s Superformula'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'Demos::SuperFormulaApplication'
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            activeHelpKey: demosAnimations
+            label: 'Simple Animations'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  activeHelpKey: demosWalkingMan
+                  label: 'Walking Man'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'Animation'
+                )
+               (MenuItem
+                  activeHelpKey: demosWalkingMan
+                  label: 'Walking Girl'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'WalkingGirl'
+                )
+               (MenuItem
+                  activeHelpKey: demosGlobe
+                  label: 'Globe Demo'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'GlobeDemo'
+                )
+               (MenuItem
+                  activeHelpKey: chickenFun
+                  label: 'Chicken Fun'
+                  itemValue: startStopDemo:
+                  translateLabel: true
+                  indication: chickenFunIsRunning
+                  argument: 'ChickenFun'
+                )
+               (MenuItem
+                  activeHelpKey: chickenFun
+                  label: 'Chicks Eyes'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'ChickenEyes'
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            activeHelpKey: demos3D
+            label: '3D GL Graphics'
+            translateLabel: true
+            isVisible: displaySupportsGLDrawing
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  activeHelpKey: demos3Dplane
+                  label: 'Plane'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'GLPlaneDemoView2'
+                )
+               (MenuItem
+                  activeHelpKey: demos3Dtetra
+                  label: 'Tetra'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'GLTetraDemoView'
+                )
+               (MenuItem
+                  activeHelpKey: demos3DcubeWire
+                  label: 'Cube (Wireframe)'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'GLWireCubeDemoView'
+                )
+               (MenuItem
+                  activeHelpKey: demos3DcubeSolid
+                  label: 'Cube (Solid)'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'GLCubeDemoView'
+                )
+               (MenuItem
+                  activeHelpKey: demos3Dsphere
+                  label: 'Sphere (Wireframe)'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'GLWireSphereDemoView'
+                )
+               (MenuItem
+                  activeHelpKey: demos3Ddoughnut
+                  label: 'Doughnut (Wireframe)'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'GLDoughnutDemoView'
+                )
+               (MenuItem
+                  activeHelpKey: demos3Dplanet
+                  label: 'Planet'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'GLPlanetDemoView'
+                )
+               (MenuItem
+                  activeHelpKey: demos3Dteapot
+                  label: 'Teapot'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'GLTeapotDemo'
+                )
+               (MenuItem
+                  activeHelpKey: demos3Dlogo
+                  label: 'Logo'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'Logo3DView1'
+                )
+               (MenuItem
+                  activeHelpKey: demosCommander
+                  label: 'Rubics Cube'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'RubicsCubeView'
+                )
+               (MenuItem
+                  label: 'X/Y Graph'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'GLXYGraph'
+                )
+               (MenuItem
+                  label: 'X/Y Graph Widget'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'CodingExamples_GUI::GLXYGraph3DDemo'
+                )
+               (MenuItem
+                  label: 'X/Y Graph Animated'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'CodingExamples_GUI::AnimatedGLXYGraph3DDemo'
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Cube (Light)'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'GLCubeDemoView2'
+                )
+               (MenuItem
+                  label: 'Cube (Light and Texture)'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'GLBrickCubeDemoView'
+                )
+               (MenuItem
+                  label: 'Sphere (Light)'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'GLSphereDemoView2'
+                )
+               (MenuItem
+                  label: 'Colored Octahedron'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'GLOctaHedronDemoView'
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            activeHelpKey: demosGraphicEditors
+            label: 'Graphic Editors'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  activeHelpKey: demosGraphicEditorsDrawTool
+                  label: 'Draw Tool'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'DrawTool'
+                )
+               (MenuItem
+                  activeHelpKey: demosGraphicEditorsLogicTool
+                  label: 'Logic Tool'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'LogicTool'
+                )
+               (MenuItem
+                  activeHelpKey: demosGraphicEditorsPaintTool
+                  label: 'Paint Demo'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'ColorDrawDemo3'
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            activeHelpKey: demosGUI
+            label: 'GUI'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  activeHelpKey: demosGUIWidgets
+                  label: 'Widget Gallery'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'CodingExamples_GUI::GUIDemo'
+                )
+               (MenuItem
+                  activeHelpKey: demosDrawingProtocol
+                  label: 'Drawing Protocol Demo'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'CodingExamples_GUI::DrawingProtocolDemonstration'
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  activeHelpKey: demosGUICalculator
+                  label: 'Calculator (simple)'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'CodingExamples_GUI::GUIDemoCalculator'
+                )
+               (MenuItem
+                  activeHelpKey: demosGUICalculator
+                  label: 'Calculator (nice)'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'CodingExamples_GUI::GUIDemoFoxCalculatorClone'
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            activeHelpKey: demosOldStuff
+            label: 'Old Stuff'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  activeHelpKey: demosCalendar
+                  label: 'Calendar'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'Calendar'
+                )
+               (MenuItem
+                  activeHelpKey: demosCalculator
+                  label: 'Calculator'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'CalculatorView'
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  activeHelpKey: demosMail
+                  label: 'Mail Tool'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'MailView'
+                )
+               (MenuItem
+                  activeHelpKey: demosNews
+                  label: 'News Tool'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'NewsView'
+                )
+               (MenuItem
+                  activeHelpKey: demosFTP
+                  label: 'FTP Tool'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'FTPTool'
+                )
+               (MenuItem
+                  activeHelpKey: demosTelnet
+                  label: 'Telnet Tool'
+                  itemValue: openDemo:
+                  translateLabel: true
+                  argument: 'TelnetTool'
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
       )
 !
 
@@ -1894,59 +1900,59 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
-	(
-	 (MenuItem
-	    activeHelpKey: fileFileBrowser
-	    label: 'File Browser'
-	    itemValue: openFileBrowser
-	    nameKey: fileBrowser
-	    translateLabel: true
-	    labelImage: (ResourceRetriever ToolbarIconLibrary startFileBrowserIcon 'File Browser')
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: fileSaveImage
-	    enabled: enableDangerousMenuItemsInRemoteLauncher
-	    label: 'Save Image'
-	    itemValue: saveImage
-	    nameKey: saveImage
-	    translateLabel: true
-	    labelImage: (ResourceRetriever ToolbarIconLibrary saveImageIcon 'Save Image')
-	  )
-	 (MenuItem
-	    activeHelpKey: fileSaveImageAs
-	    enabled: enableDangerousMenuItemsInRemoteLauncher
-	    label: 'Save Image As...'
-	    itemValue: saveImageAs
-	    nameKey: saveImageAs
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: fileExit
-	    enabled: enableDangerousMenuItemsInRemoteLauncher
-	    label: 'Exit Smalltalk...'
-	    itemValue: exit
-	    nameKey: exitSmalltalk
-	    translateLabel: true
-	    isVisible: isMainLauncherHolder
-	  )
-	 (MenuItem
-	    activeHelpKey: fileClose
-	    label: 'Close...'
-	    itemValue: closeRequest
-	    translateLabel: true
-	    isVisible: isNotMainLauncherHolder
-	  )
-	 )
-	nil
-	nil
+        (
+         (MenuItem
+            activeHelpKey: fileFileBrowser
+            label: 'File Browser'
+            itemValue: openFileBrowser
+            nameKey: fileBrowser
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary startFileBrowserIcon 'File Browser')
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: fileSaveImage
+            enabled: enableDangerousMenuItemsInRemoteLauncher
+            label: 'Save Image'
+            itemValue: saveImage
+            nameKey: saveImage
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary saveImageIcon 'Save Image')
+          )
+         (MenuItem
+            activeHelpKey: fileSaveImageAs
+            enabled: enableDangerousMenuItemsInRemoteLauncher
+            label: 'Save Image As...'
+            itemValue: saveImageAs
+            nameKey: saveImageAs
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: fileExit
+            enabled: enableDangerousMenuItemsInRemoteLauncher
+            label: 'Exit Smalltalk...'
+            itemValue: exit
+            nameKey: exitSmalltalk
+            translateLabel: true
+            isVisible: isMainLauncherHolder
+          )
+         (MenuItem
+            activeHelpKey: fileClose
+            label: 'Close...'
+            itemValue: closeRequest
+            translateLabel: true
+            isVisible: isNotMainLauncherHolder
+          )
+         )
+        nil
+        nil
       )
 !
 
@@ -1965,135 +1971,135 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
-	(
-	 (MenuItem
-	    activeHelpKey: helpWhatsNewInSTX
-	    label: 'What''s New in ST/X'
-	    itemValue: startWhatsNewSTX
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: helpWhatsNew
-	    label: 'What''s New in the Documentation'
-	    itemValue: startWhatsNewDocumentation
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: helpIndex
-	    label: 'Keyword Index'
-	    itemValue: startDocumentationIndex
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: helpSTXOnlineDocumentation
-	    label: 'ST/X Online Documentation'
-	    itemValue: startDocumentationTool
-	    translateLabel: true
-	    labelImage: (ResourceRetriever ToolbarIconLibrary helpIcon2 'ST/X Online Documentation')
-	  )
-	 (MenuItem
-	    activeHelpKey: helpTutorial
-	    label: 'Smalltalk/X Tutorial'
-	    itemValue: startTutorial
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: helpSmalltalkTutorial
-	    label: 'Smalltalk Language Tutorial'
-	    itemValue: startSmalltalkTutorial
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: helpProgrammersGuide
-	    label: 'Programmer''s Guide'
-	    itemValue: startProgrammersGuide
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: helpToolsDocumentation
-	    label: 'Tool Documentation'
-	    itemValue: startToolsDocumentation
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: helpClassDocumentation
-	    label: 'Class Documentation'
-	    itemValue: startClassDocumentation
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    label: 'Web-Documents'
-	    translateLabel: true
-	    isVisible: webDocumentsItemShownInHelpMenu
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  activeHelpKey: helpRFC
-		  label: 'RFCs...'
-		  itemValue: showRFC
-		  translateLabel: true
-		)
-	       (MenuItem
-		  activeHelpKey: helpPortInfo
-		  label: 'TCP/UDP Ports...'
-		  itemValue: showPortInfo
-		  translateLabel: true
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: helpPrintDocumentation
-	    label: 'Print Documentation...'
-	    itemValue: showBookPrintDocument
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: helpShowTipOfTheDay
-	    label: 'Tip of the Day'
-	    itemValue: showTipOfTheDay
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: helpActiveHelp
-	    label: 'Tooltips (FlyBy Help)'
-	    itemValue: toggleFlyByHelp:
-	    translateLabel: true
-	    indication: activeHelp
-	  )
-	 (MenuItem
-	    activeHelpKey: helpShowHelp
-	    label: 'Show Help Texts'
-	    translateLabel: true
-	    isVisible: false
-	    indication: showingHelp:
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: helpCredits
-	    label: 'Credits'
-	    itemValue: showCredits
-	    translateLabel: true
-	  )
-	 )
-	nil
-	nil
+        (
+         (MenuItem
+            activeHelpKey: helpWhatsNewInSTX
+            label: 'What''s New in ST/X'
+            itemValue: startWhatsNewSTX
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: helpWhatsNew
+            label: 'What''s New in the Documentation'
+            itemValue: startWhatsNewDocumentation
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: helpIndex
+            label: 'Keyword Index'
+            itemValue: startDocumentationIndex
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: helpSTXOnlineDocumentation
+            label: 'ST/X Online Documentation'
+            itemValue: startDocumentationTool
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary helpIcon2 'ST/X Online Documentation')
+          )
+         (MenuItem
+            activeHelpKey: helpTutorial
+            label: 'Smalltalk/X Tutorial'
+            itemValue: startTutorial
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: helpSmalltalkTutorial
+            label: 'Smalltalk Language Tutorial'
+            itemValue: startSmalltalkTutorial
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: helpProgrammersGuide
+            label: 'Programmer''s Guide'
+            itemValue: startProgrammersGuide
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: helpToolsDocumentation
+            label: 'Tool Documentation'
+            itemValue: startToolsDocumentation
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: helpClassDocumentation
+            label: 'Class Documentation'
+            itemValue: startClassDocumentation
+            translateLabel: true
+          )
+         (MenuItem
+            label: 'Web-Documents'
+            translateLabel: true
+            isVisible: webDocumentsItemShownInHelpMenu
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  activeHelpKey: helpRFC
+                  label: 'RFCs...'
+                  itemValue: showRFC
+                  translateLabel: true
+                )
+               (MenuItem
+                  activeHelpKey: helpPortInfo
+                  label: 'TCP/UDP Ports...'
+                  itemValue: showPortInfo
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: helpPrintDocumentation
+            label: 'Print Documentation...'
+            itemValue: showBookPrintDocument
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: helpShowTipOfTheDay
+            label: 'Tip of the Day'
+            itemValue: showTipOfTheDay
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: helpActiveHelp
+            label: 'Tooltips (FlyBy Help)'
+            itemValue: toggleFlyByHelp:
+            translateLabel: true
+            indication: activeHelp
+          )
+         (MenuItem
+            activeHelpKey: helpShowHelp
+            label: 'Show Help Texts'
+            translateLabel: true
+            isVisible: false
+            indication: showingHelp:
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: helpCredits
+            label: 'Credits'
+            itemValue: showCredits
+            translateLabel: true
+          )
+         )
+        nil
+        nil
       )
 !
 
@@ -2191,36 +2197,36 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
-	(
-	 (MenuItem
-	    activeHelpKey: toolsWorkspace
-	    label: 'Normal'
-	    itemValue: openWorkspace
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: toolsMyWorkspace
-	    label: 'My Workspace'
-	    itemValue: openMyWorkspace
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: toolsSystemWorkspace
-	    label: 'System Workspace'
-	    itemValue: openSystemWorkspace
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: toolsEvaluationWorkspace
-	    label: 'Evaluation Workspace'
-	    itemValue: openEvaluationWorkspace
-	    translateLabel: true
-	  )
-	 )
-	nil
-	nil
+        (
+         (MenuItem
+            activeHelpKey: toolsWorkspace
+            label: 'Normal'
+            itemValue: openWorkspace
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: toolsMyWorkspace
+            label: 'My Workspace'
+            itemValue: openMyWorkspace
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: toolsSystemWorkspace
+            label: 'System Workspace'
+            itemValue: openSystemWorkspace
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: toolsEvaluationWorkspace
+            label: 'Evaluation Workspace'
+            itemValue: openEvaluationWorkspace
+            translateLabel: true
+          )
+         )
+        nil
+        nil
       )
 !
 
@@ -2238,133 +2244,133 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
-	(
-	 (MenuItem
-	    activeHelpKey: fileSaveImage
-	    enabled: enableDangerousMenuItemsInRemoteLauncher
-	    label: 'save image'
-	    itemValue: saveImage
-	    nameKey: saveImage
-	    translateLabel: true
-	    isButton: true
-	    labelImage: (ResourceRetriever ToolbarIconLibrary saveImageIcon)
-	  )
-	 (MenuItem
-	    activeHelpKey: fileFileBrowser
-	    label: 'open file browser'
-	    itemValue: openFileBrowser
-	    nameKey: fileBrowser
-	    translateLabel: true
-	    isButton: true
-	    isVisible: fileBrowserItemVisible
-	    submenuChannel: menuFileHistory
-	    labelImage: (ResourceRetriever ToolbarIconLibrary startFileBrowserIcon)
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: toolsWorkspace
-	    label: 'open workspace'
-	    itemValue: openWorkspace
-	    nameKey: workspace
-	    translateLabel: true
-	    isButton: true
-	    submenuChannel: menuOpenWorkspaceTypes
-	    labelImage: (ResourceRetriever ToolbarIconLibrary startWorkspaceIcon)
-	  )
-	 (MenuItem
-	    activeHelpKey: classesSystemBrowser
-	    label: 'open system browser'
-	    itemValue: openApplication:
-	    nameKey: systemBrowser
-	    translateLabel: true
-	    isButton: true
-	    isVisible: systemBrowserItemVisible
-	    submenuChannel: menuClassHistory
-	    labelImage: (ResourceRetriever ToolbarIconLibrary startSystemBrowserIcon)
-	    argument: 'SystemBrowser'
-	  )
-	 (MenuItem
-	    activeHelpKey: classesSystemBrowserOnClass
-	    label: 'System Browser On Class'
-	    translateLabel: true
-	    isButton: true
-	    isVisible: false
-	    submenuChannel: menuClassHistory
-	    labelImage: (ResourceRetriever ToolbarIconLibrary startSystemBrowserOnHistoryClassIcon)
-	  )
-	 (MenuItem
-	    activeHelpKey: toolsChangesBrowserOrNavigateToRecentChange
-	    label: 'open changes browser'
-	    itemValue: startChangesBrowser
-	    nameKey: changesBrowser
-	    translateLabel: true
-	    isButton: true
-	    submenuChannel: menuChangeHistory
-	    labelImage: (ResourceRetriever ToolbarIconLibrary startChangesBrowserIcon)
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: toolsGUIPainter
-	    label: 'open GUI Builder'
-	    itemValue: openApplication:
-	    nameKey: guiBuilder
-	    translateLabel: true
-	    isButton: true
-	    labelImage: (ResourceRetriever ToolbarIconLibrary startUIPainterIcon)
-	    argument: 'UIPainter'
-	  )
-	 (MenuItem
-	    activeHelpKey: toolsMenuEditor
-	    label: 'open menu editor'
-	    itemValue: openApplication:
-	    nameKey: menuEditor
-	    translateLabel: true
-	    isButton: true
-	    labelImage: (ResourceRetriever ToolbarIconLibrary startMenuEditorIcon)
-	    argument: 'MenuEditor'
-	  )
-	 (MenuItem
-	    activeHelpKey: toolsImageEditor
-	    label: 'open image editor'
-	    itemValue: openApplication:
-	    nameKey: imageEditor
-	    translateLabel: true
-	    isButton: true
-	    labelImage: (ResourceRetriever ToolbarIconLibrary startImageEditorIcon)
-	    argument: 'ImageEditor'
-	  )
-	 (MenuItem
-	    label: ''
-	  )
-	 (MenuItem
-	    activeHelpKey: systemGarbageCollectAndCompress
-	    label: 'garbage collect and compress'
-	    itemValue: compressingGarbageCollect
-	    nameKey: garbageCollect
-	    translateLabel: true
-	    isButton: true
-	    isVisible: false
-	    labelImage: (ResourceRetriever ToolbarIconLibrary garbageCollectIcon)
-	  )
-	 (MenuItem
-	    activeHelpKey: helpSTXOnlineDocumentation
-	    label: 'help'
-	    itemValue: startDocumentationTool
-	    nameKey: help
-	    translateLabel: true
-	    isButton: true
-	    startGroup: right
-	    labelImage: (ResourceRetriever XPToolbarIconLibrary stxHelpIcon)
-	  )
-	 )
-	nil
-	nil
+        (
+         (MenuItem
+            activeHelpKey: fileSaveImage
+            enabled: enableDangerousMenuItemsInRemoteLauncher
+            label: 'save image'
+            itemValue: saveImage
+            nameKey: saveImage
+            translateLabel: true
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary saveImageIcon)
+          )
+         (MenuItem
+            activeHelpKey: fileFileBrowser
+            label: 'open file browser'
+            itemValue: openFileBrowser
+            nameKey: fileBrowser
+            translateLabel: true
+            isButton: true
+            isVisible: fileBrowserItemVisible
+            submenuChannel: menuFileHistory
+            labelImage: (ResourceRetriever ToolbarIconLibrary startFileBrowserIcon)
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: toolsWorkspace
+            label: 'open workspace'
+            itemValue: openWorkspace
+            nameKey: workspace
+            translateLabel: true
+            isButton: true
+            submenuChannel: menuOpenWorkspaceTypes
+            labelImage: (ResourceRetriever ToolbarIconLibrary startWorkspaceIcon)
+          )
+         (MenuItem
+            activeHelpKey: classesSystemBrowser
+            label: 'open system browser'
+            itemValue: openApplication:
+            nameKey: systemBrowser
+            translateLabel: true
+            isButton: true
+            isVisible: systemBrowserItemVisible
+            submenuChannel: menuClassHistory
+            labelImage: (ResourceRetriever ToolbarIconLibrary startSystemBrowserIcon)
+            argument: 'SystemBrowser'
+          )
+         (MenuItem
+            activeHelpKey: classesSystemBrowserOnClass
+            label: 'System Browser On Class'
+            translateLabel: true
+            isButton: true
+            isVisible: false
+            submenuChannel: menuClassHistory
+            labelImage: (ResourceRetriever ToolbarIconLibrary startSystemBrowserOnHistoryClassIcon)
+          )
+         (MenuItem
+            activeHelpKey: toolsChangesBrowserOrNavigateToRecentChange
+            label: 'open changes browser'
+            itemValue: startChangesBrowser
+            nameKey: changesBrowser
+            translateLabel: true
+            isButton: true
+            submenuChannel: menuChangeHistory
+            labelImage: (ResourceRetriever ToolbarIconLibrary startChangesBrowserIcon)
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: toolsGUIPainter
+            label: 'open GUI Builder'
+            itemValue: openApplication:
+            nameKey: guiBuilder
+            translateLabel: true
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary startUIPainterIcon)
+            argument: 'UIPainter'
+          )
+         (MenuItem
+            activeHelpKey: toolsMenuEditor
+            label: 'open menu editor'
+            itemValue: openApplication:
+            nameKey: menuEditor
+            translateLabel: true
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary startMenuEditorIcon)
+            argument: 'MenuEditor'
+          )
+         (MenuItem
+            activeHelpKey: toolsImageEditor
+            label: 'open image editor'
+            itemValue: openApplication:
+            nameKey: imageEditor
+            translateLabel: true
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary startImageEditorIcon)
+            argument: 'ImageEditor'
+          )
+         (MenuItem
+            label: ''
+          )
+         (MenuItem
+            activeHelpKey: systemGarbageCollectAndCompress
+            label: 'garbage collect and compress'
+            itemValue: compressingGarbageCollect
+            nameKey: garbageCollect
+            translateLabel: true
+            isButton: true
+            isVisible: false
+            labelImage: (ResourceRetriever ToolbarIconLibrary garbageCollectIcon)
+          )
+         (MenuItem
+            activeHelpKey: helpSTXOnlineDocumentation
+            label: 'help'
+            itemValue: startDocumentationTool
+            nameKey: help
+            translateLabel: true
+            isButton: true
+            startGroup: right
+            labelImage: (ResourceRetriever XPToolbarIconLibrary stxHelpIcon)
+          )
+         )
+        nil
+        nil
       )
 !
 
@@ -2382,46 +2388,46 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(#Menu
-	#(
-	 #(#MenuItem
-	    #label: 'open file browser'
-	    #isButton: true
-	    #nameKey: #fileBrowser
-	    #value: #openFileBrowser
-	    #activeHelpKey: #fileFileBrowser
-	    #labelImage: #(#ResourceRetriever ToolbarIconLibrary #startFileBrowserIcon)
-	  )
-	 #(#MenuItem
-	    #label: ''
-	  )
-	 #(#MenuItem
-	    #label: 'open system browser'
-	    #isButton: true
-	    #nameKey: #systemBrowser
-	    #value: #openApplication:
-	    #activeHelpKey: #classesSystemBrowser
-	    #argument: 'SystemBrowser'
-	    #labelImage: #(#ResourceRetriever ToolbarIconLibrary #startSystemBrowserIcon)
-	    #submenuChannel: #menuClassHistory
-	  )
-	 #(#MenuItem
-	    #label: ''
-	  )
-	 #(#MenuItem
-	    #label: 'help'
-	    #translateLabel: true
-	    #isButton: true
-	    #nameKey: #help
-	    #startGroup: #right
-	    #value: #startDocumentationTool
-	    #activeHelpKey: #helpSTXOnlineDocumentation
-	    #labelImage: #(#ResourceRetriever ToolbarIconLibrary #helpIcon2)
-	  )
-	 )
-	nil
-	nil
+        #(
+         #(#MenuItem
+            #label: 'open file browser'
+            #isButton: true
+            #nameKey: #fileBrowser
+            #value: #openFileBrowser
+            #activeHelpKey: #fileFileBrowser
+            #labelImage: #(#ResourceRetriever ToolbarIconLibrary #startFileBrowserIcon)
+          )
+         #(#MenuItem
+            #label: ''
+          )
+         #(#MenuItem
+            #label: 'open system browser'
+            #isButton: true
+            #nameKey: #systemBrowser
+            #value: #openApplication:
+            #activeHelpKey: #classesSystemBrowser
+            #argument: 'SystemBrowser'
+            #labelImage: #(#ResourceRetriever ToolbarIconLibrary #startSystemBrowserIcon)
+            #submenuChannel: #menuClassHistory
+          )
+         #(#MenuItem
+            #label: ''
+          )
+         #(#MenuItem
+            #label: 'help'
+            #translateLabel: true
+            #isButton: true
+            #nameKey: #help
+            #startGroup: #right
+            #value: #startDocumentationTool
+            #activeHelpKey: #helpSTXOnlineDocumentation
+            #labelImage: #(#ResourceRetriever ToolbarIconLibrary #helpIcon2)
+          )
+         )
+        nil
+        nil
       )
 
     "Modified: / 05-11-2007 / 11:16:57 / cg"
@@ -2441,89 +2447,89 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(#Menu
-	#(
-	 #(#MenuItem
-	    #label: 'About'
-	    #translateLabel: true
-	    #nameKey: #about
-	    #activeHelpKey: #settings
-	    #labelImage: #(#ResourceRetriever nil #menuIcon)
-	    #submenuChannel: #aboutMenu
-	    #keepLinkedMenu: true
-	  )
-	 #(#MenuItem
-	    #label: '&File'
-	    #translateLabel: true
-	    #nameKey: #file
-	    #activeHelpKey: #settings
-	    #submenuChannel: #fileMenu
-	    #keepLinkedMenu: true
-	  )
-	 #(#MenuItem
-	    #label: 'Apps'
-	    #translateLabel: true
-	    #submenu:
-	   #(#Menu
-	      #(
-	       #(#MenuItem
-		  #label: 'Classes'
-		  #translateLabel: true
-		  #nameKey: #classes
-		  #activeHelpKey: #settings
-		  #submenuChannel: #classesMenu
-		  #keepLinkedMenu: true
-		)
-	       #(#MenuItem
-		  #label: 'Tools'
-		  #translateLabel: true
-		  #nameKey: #tools
-		  #activeHelpKey: #settings
-		  #submenuChannel: #toolsMenu
-		  #keepLinkedMenu: true
-		)
-	       #(#MenuItem
-		  #label: 'System'
-		  #translateLabel: true
-		  #nameKey: #system
-		  #activeHelpKey: #settings
-		  #submenuChannel: #systemMenu
-		  #keepLinkedMenu: true
-		)
-	       #(#MenuItem
-		  #label: 'Demos'
-		  #translateLabel: true
-		  #nameKey: #demos
-		  #activeHelpKey: #settings
-		  #submenuChannel: #demosMenu
-		  #keepLinkedMenu: true
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 #(#MenuItem
-	    #label: 'Windows'
-	    #translateLabel: true
-	    #nameKey: #windows
-	    #activeHelpKey: #settings
-	    #submenuChannel: #windowsMenu
-	    #keepLinkedMenu: true
-	  )
-	 #(#MenuItem
-	    #label: '&Help'
-	    #translateLabel: true
-	    #nameKey: #help
-	    #startGroup: #right
-	    #activeHelpKey: #settings
-	    #submenuChannel: #helpMenu
-	    #keepLinkedMenu: true
-	  )
-	 )
-	nil
-	nil
+        #(
+         #(#MenuItem
+            #label: 'About'
+            #translateLabel: true
+            #nameKey: #about
+            #activeHelpKey: #settings
+            #labelImage: #(#ResourceRetriever nil #menuIcon)
+            #submenuChannel: #aboutMenu
+            #keepLinkedMenu: true
+          )
+         #(#MenuItem
+            #label: '&File'
+            #translateLabel: true
+            #nameKey: #file
+            #activeHelpKey: #settings
+            #submenuChannel: #fileMenu
+            #keepLinkedMenu: true
+          )
+         #(#MenuItem
+            #label: 'Apps'
+            #translateLabel: true
+            #submenu: 
+           #(#Menu
+              #(
+               #(#MenuItem
+                  #label: 'Classes'
+                  #translateLabel: true
+                  #nameKey: #classes
+                  #activeHelpKey: #settings
+                  #submenuChannel: #classesMenu
+                  #keepLinkedMenu: true
+                )
+               #(#MenuItem
+                  #label: 'Tools'
+                  #translateLabel: true
+                  #nameKey: #tools
+                  #activeHelpKey: #settings
+                  #submenuChannel: #toolsMenu
+                  #keepLinkedMenu: true
+                )
+               #(#MenuItem
+                  #label: 'System'
+                  #translateLabel: true
+                  #nameKey: #system
+                  #activeHelpKey: #settings
+                  #submenuChannel: #systemMenu
+                  #keepLinkedMenu: true
+                )
+               #(#MenuItem
+                  #label: 'Demos'
+                  #translateLabel: true
+                  #nameKey: #demos
+                  #activeHelpKey: #settings
+                  #submenuChannel: #demosMenu
+                  #keepLinkedMenu: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         #(#MenuItem
+            #label: 'Windows'
+            #translateLabel: true
+            #nameKey: #windows
+            #activeHelpKey: #settings
+            #submenuChannel: #windowsMenu
+            #keepLinkedMenu: true
+          )
+         #(#MenuItem
+            #label: '&Help'
+            #translateLabel: true
+            #nameKey: #help
+            #startGroup: #right
+            #activeHelpKey: #settings
+            #submenuChannel: #helpMenu
+            #keepLinkedMenu: true
+          )
+         )
+        nil
+        nil
       )
 
     "Modified: / 19-09-2006 / 20:48:22 / cg"
@@ -2544,124 +2550,124 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
-	(
-	 (MenuItem
-	    activeHelpKey: systemMemory
-	    label: 'Memory'
-	    itemValue: openApplication:
-	    translateLabel: true
-	    argument: 'MemoryMonitor'
-	  )
-	 (MenuItem
-	    activeHelpKey: systemMemoryUsage
-	    label: 'Memory Usage'
-	    itemValue: openApplication:
-	    translateLabel: true
-	    argument: 'MemoryUsageView'
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: systemProcesses
-	    label: 'Processes'
-	    itemValue: startProcessMonitor
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: systemSemaphores
-	    label: 'Semaphores'
-	    itemValue: openApplication:
-	    translateLabel: true
-	    argument: 'SemaphoreMonitor'
-	  )
-	 (MenuItem
-	    activeHelpKey: fileModules
-	    enabled: enableDangerousMenuItemsInRemoteLauncher
-	    label: 'Modules...'
-	    itemValue: objectModuleDialog
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: filePackages
-	    enabled: enableDangerousMenuItemsInRemoteLauncher
-	    label: 'Packages...'
-	    itemValue: packageDialog
-	    translateLabel: true
-	    isVisible: packageDialogVisible
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: systemInterruptLatency
-	    label: 'Interrupt Latency'
-	    itemValue: startLatencyMonitor
-	    translateLabel: true
-	    isVisible: false
-	  )
-	 (MenuItem
-	    label: '-'
-	    isVisible: false
-	  )
-	 (MenuItem
-	    activeHelpKey: systemEventView
-	    label: 'Event View'
-	    itemValue: openApplication:
-	    translateLabel: true
-	    argument: 'EventMonitor'
-	  )
-	 (MenuItem
-	    activeHelpKey: systemEventTrace
-	    label: 'Event Trace'
-	    itemValue: startStopEventTrace
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: systemGarbageCollect
-	    label: 'Collect Garbage'
-	    itemValue: garbageCollect
-	    translateLabel: true
-	    labelImage: (ResourceRetriever nil garbageCollectIcon 'Collect Garbage')
-	  )
-	 (MenuItem
-	    activeHelpKey: systemGarbageCollectAndCompress
-	    label: 'Collect Garbage and Compress'
-	    itemValue: compressingGarbageCollect
-	    translateLabel: true
-	    labelImage: (ResourceRetriever nil garbageCollectIcon 'Collect Garbage and Compress')
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: systemReloadResources
-	    label: 'Reload Resources'
-	    itemValue: flushCachedResources
-	    translateLabel: true
-	    labelImage: (ResourceRetriever nil garbageCollectIcon 'Reload Resources')
-	    showBusyCursorWhilePerforming: true
-	  )
-	 (MenuItem
-	    label: '-'
-	    isVisible: useNewSettingsApplication
-	  )
-	 (MenuItem
-	    activeHelpKey: systemSettings
-	    label: 'Settings...'
-	    itemValue: openSettings
-	    translateLabel: true
-	    isVisible: useNewSettingsApplication
-	    labelImage: (ResourceRetriever ToolbarIconLibrary settings16x16Icon 'Settings...')
-	  )
-	 )
-	nil
-	nil
+        (
+         (MenuItem
+            activeHelpKey: systemMemory
+            label: 'Memory'
+            itemValue: openApplication:
+            translateLabel: true
+            argument: 'MemoryMonitor'
+          )
+         (MenuItem
+            activeHelpKey: systemMemoryUsage
+            label: 'Memory Usage'
+            itemValue: openApplication:
+            translateLabel: true
+            argument: 'MemoryUsageView'
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: systemProcesses
+            label: 'Processes'
+            itemValue: startProcessMonitor
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: systemSemaphores
+            label: 'Semaphores'
+            itemValue: openApplication:
+            translateLabel: true
+            argument: 'SemaphoreMonitor'
+          )
+         (MenuItem
+            activeHelpKey: fileModules
+            enabled: enableDangerousMenuItemsInRemoteLauncher
+            label: 'Modules...'
+            itemValue: objectModuleDialog
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: filePackages
+            enabled: enableDangerousMenuItemsInRemoteLauncher
+            label: 'Packages...'
+            itemValue: packageDialog
+            translateLabel: true
+            isVisible: packageDialogVisible
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: systemInterruptLatency
+            label: 'Interrupt Latency'
+            itemValue: startLatencyMonitor
+            translateLabel: true
+            isVisible: false
+          )
+         (MenuItem
+            label: '-'
+            isVisible: false
+          )
+         (MenuItem
+            activeHelpKey: systemEventView
+            label: 'Event View'
+            itemValue: openApplication:
+            translateLabel: true
+            argument: 'EventMonitor'
+          )
+         (MenuItem
+            activeHelpKey: systemEventTrace
+            label: 'Event Trace'
+            itemValue: startStopEventTrace
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: systemGarbageCollect
+            label: 'Collect Garbage'
+            itemValue: garbageCollect
+            translateLabel: true
+            labelImage: (ResourceRetriever nil garbageCollectIcon 'Collect Garbage')
+          )
+         (MenuItem
+            activeHelpKey: systemGarbageCollectAndCompress
+            label: 'Collect Garbage and Compress'
+            itemValue: compressingGarbageCollect
+            translateLabel: true
+            labelImage: (ResourceRetriever nil garbageCollectIcon 'Collect Garbage and Compress')
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: systemReloadResources
+            label: 'Reload Resources'
+            itemValue: flushCachedResources
+            translateLabel: true
+            labelImage: (ResourceRetriever nil garbageCollectIcon 'Reload Resources')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+            isVisible: useNewSettingsApplication
+          )
+         (MenuItem
+            activeHelpKey: systemSettings
+            label: 'Settings...'
+            itemValue: openSettings
+            translateLabel: true
+            isVisible: useNewSettingsApplication
+            labelImage: (ResourceRetriever ToolbarIconLibrary settings16x16Icon 'Settings...')
+          )
+         )
+        nil
+        nil
       )
 !
 
@@ -2995,190 +3001,191 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
-	(
-	 (MenuItem
-	    label: 'Window'
-	    translateLabel: true
-	    submenuChannel: allWindowsMenu
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsRedrawAll
-	    label: 'Redraw All'
-	    itemValue: redrawAllWindows
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsIconifyAll
-	    label: 'Iconify All'
-	    itemValue: iconifyAllWindows
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsDeiconifyAll
-	    label: 'Deiconify All'
-	    itemValue: deIconifyAllWindows
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    label: 'Migrate'
-	    translateLabel: true
-	    submenu:
-	   (Menu
-	      (
-	       (MenuItem
-		  activeHelpKey: windowsMigrateAllWindows
-		  enabled: windowMigrationFunctionsAreShown
-		  label: 'Migrate All To...'
-		  itemValue: migrateAllWindows
-		  translateLabel: true
-		)
-	       (MenuItem
-		  activeHelpKey: windowsSelectAndMigrate
-		  enabled: windowMigrationFunctionsAreShown
-		  label: 'Select and Migrate To...'
-		  itemValue: viewMigrate
-		  translateLabel: true
-		)
-	       (MenuItem
-		  activeHelpKey: windowsFindAndMigrate
-		  enabled: windowMigrationFunctionsAreShown
-		  label: 'Find by Name and Migrate To...'
-		  itemValue: findAndMigrateWindow
-		  translateLabel: true
-		)
-	       (MenuItem
-		  activeHelpKey: windowsFindAndMigrateBack
-		  enabled: windowMigrationFunctionsAreShown
-		  label: 'Find by Name and Migrate Back...'
-		  itemValue: findAndMigrateWindowBack
-		  translateLabel: true
-		)
-	       )
-	      nil
-	      nil
-	    )
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsViewTree
-	    label: 'Window Tree'
-	    itemValue: startWindowTreeView
-	    translateLabel: true
-	    isVisible: windowTreeViewAvailable
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsViewTreeAllViews
-	    label: 'Window Tree (All Windows)'
-	    itemValue: openApplication:
-	    translateLabel: true
-	    isVisible: windowTreeViewAvailable
-	    argument: 'WindowTreeView'
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsViewTreeAllScreens
-	    label: 'Window Tree (All on All Screens)'
-	    itemValue: startWindowTreeViewForAll
-	    translateLabel: true
-	    isVisible: windowTreeViewAvailable
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsViewTree
-	    label: 'Window Tree'
-	    itemValue: openWindowTreeInspector
-	    translateLabel: true
-	    labelImage: (ResourceRetriever ToolbarIconLibrary viewInspect22x22Icon 'Window Tree')
-	  )
-	 (MenuItem
-	    activeHelpKey: flyByWindowInformation
-	    label: 'FlyBy Window Information'
-	    itemValue: showFlyByWindowInformation
-	    translateLabel: true
-	    labelImage: (ResourceRetriever ToolbarIconLibrary viewFlyByInfo22x22Icon 'FlyBy Window Information')
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsSelectAndInspect
-	    label: 'Select and Inspect...'
-	    itemValue: viewInspect
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsSelectAndInspect
-	    label: 'Select and Browse...'
-	    itemValue: viewBrowse
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsSelectAndDestroy
-	    label: 'Select and Destroy...'
-	    itemValue: viewDestroy
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsFindAndRaise
-	    enabled: enableDangerousMenuItemsInRemoteLauncher
-	    label: 'Find by Name and Raise...'
-	    itemValue: findAndRaiseWindow
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsFindAndDestroy
-	    enabled: enableDangerousMenuItemsInRemoteLauncher
-	    label: 'Find by Name and Destroy...'
-	    itemValue: findAndDestroyWindow
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    label: '-'
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsGrapWindow
-	    label: 'Select and Grab Window...'
-	    itemValue: viewHardcopy
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsGrapWidget
-	    label: 'Select and Grab Widget...'
-	    itemValue: widgetHardcopy
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsGrapScreen
-	    label: 'Grab Screen...'
-	    itemValue: fullScreenHardcopy
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsGrapScreenArea
-	    label: 'Grab Screen Area...'
-	    itemValue: screenHardcopy
-	    translateLabel: true
-	  )
-	 (MenuItem
-	    activeHelpKey: windowsGrapScreenArea
-	    label: 'Grab Screen Area with Delay...'
-	    itemValue: screenHardcopyWithDelay
-	    translateLabel: true
-	  )
-	 )
-	nil
-	nil
+        (
+         (MenuItem
+            label: 'Window'
+            translateLabel: true
+            submenuChannel: allWindowsMenu
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: windowsRedrawAll
+            label: 'Redraw All'
+            itemValue: redrawAllWindows
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: windowsIconifyAll
+            label: 'Iconify All'
+            itemValue: iconifyAllWindows
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: windowsDeiconifyAll
+            label: 'Deiconify All'
+            itemValue: deIconifyAllWindows
+            translateLabel: true
+          )
+         (MenuItem
+            label: 'Migrate'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  activeHelpKey: windowsMigrateAllWindows
+                  enabled: windowMigrationFunctionsAreShown
+                  label: 'Migrate All To...'
+                  itemValue: migrateAllWindows
+                  translateLabel: true
+                )
+               (MenuItem
+                  activeHelpKey: windowsSelectAndMigrate
+                  enabled: windowMigrationFunctionsAreShown
+                  label: 'Select and Migrate To...'
+                  itemValue: viewMigrate
+                  translateLabel: true
+                )
+               (MenuItem
+                  activeHelpKey: windowsFindAndMigrate
+                  enabled: windowMigrationFunctionsAreShown
+                  label: 'Find by Name and Migrate To...'
+                  itemValue: findAndMigrateWindow
+                  translateLabel: true
+                )
+               (MenuItem
+                  activeHelpKey: windowsFindAndMigrateBack
+                  enabled: windowMigrationFunctionsAreShown
+                  label: 'Find by Name and Migrate Back...'
+                  itemValue: findAndMigrateWindowBack
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: windowsViewTree
+            label: 'Window Tree'
+            itemValue: startWindowTreeView
+            translateLabel: true
+            isVisible: windowTreeViewAvailable
+          )
+         (MenuItem
+            activeHelpKey: windowsViewTreeAllViews
+            label: 'Window Tree (All Windows)'
+            itemValue: openApplication:
+            translateLabel: true
+            isVisible: windowTreeViewAvailable
+            argument: 'WindowTreeView'
+          )
+         (MenuItem
+            activeHelpKey: windowsViewTreeAllScreens
+            label: 'Window Tree (All on All Screens)'
+            itemValue: startWindowTreeViewForAll
+            translateLabel: true
+            isVisible: windowTreeViewAvailable
+          )
+         (MenuItem
+            activeHelpKey: windowsViewTree
+            label: 'Window Tree'
+            itemValue: openWindowTreeInspector
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary viewInspect22x22Icon 'Window Tree')
+          )
+         (MenuItem
+            activeHelpKey: flyByWindowInformation
+            label: 'FlyBy Window Information'
+            itemValue: showFlyByWindowInformation
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary viewFlyByInfo22x22Icon 'FlyBy Window Information')
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: windowsSelectAndInspect
+            label: 'Select and Inspect...'
+            itemValue: viewInspect
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: windowsSelectAndInspect
+            label: 'Select and Browse...'
+            itemValue: viewBrowse
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: windowsSelectAndDestroy
+            label: 'Select and Destroy...'
+            itemValue: viewDestroy
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: windowsFindAndRaise
+            enabled: enableDangerousMenuItemsInRemoteLauncher
+            label: 'Find by Name and Raise...'
+            itemValue: findAndRaiseWindow
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: windowsFindAndDestroy
+            enabled: enableDangerousMenuItemsInRemoteLauncher
+            label: 'Find by Name and Destroy...'
+            itemValue: findAndDestroyWindow
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            activeHelpKey: windowsGrapWindow
+            label: 'Select and Grab Window...'
+            itemValue: viewHardcopy
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: windowsGrapWidget
+            label: 'Select and Grab Widget...'
+            itemValue: widgetHardcopy
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: windowsGrapScreen
+            label: 'Grab Screen...'
+            itemValue: fullScreenHardcopy
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: windowsGrapScreenArea
+            label: 'Grab Screen Area...'
+            itemValue: screenHardcopy
+            translateLabel: true
+          )
+         (MenuItem
+            activeHelpKey: windowsGrapScreenArea
+            label: 'Grab Screen Area with Delay...'
+            itemValue: screenHardcopyWithDelay
+            translateLabel: true
+          )
+         )
+        nil
+        nil
       )
 ! !
 
+
 !NewLauncher class methodsFor:'oldstyle-menu specs'!
 
 settingsMenu
@@ -3195,151 +3202,152 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(#Menu
-	#(
-	 #(#MenuItem
-	    #activeHelpKey: #settingsLanguage
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'Language...'
-	    #itemValue: #languageSetting
-	    #translateLabel: true
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsKeyboardMappings
-	    #label: 'Keyboard Mappings...'
-	    #itemValue: #keyboardSetting
-	    #translateLabel: true
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsViewStyle
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'View Style...'
-	    #itemValue: #viewStyleSetting
-	    #translateLabel: true
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsFonts
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'Fonts...'
-	    #itemValue: #fontSettings
-	    #translateLabel: true
-	  )
-	 #(#MenuItem
-	    #label: '-'
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsMessages
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'Messages...'
-	    #itemValue: #messageSettings
-	    #translateLabel: true
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsCompilation
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'Compilation...'
-	    #itemValue: #compilerSettings
-	    #translateLabel: true
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsObjectMemory
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'Object Memory...'
-	    #itemValue: #memorySettings
-	    #translateLabel: true
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsSourceAndDebugger
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'Source and Debugger...'
-	    #itemValue: #sourceAndDebuggerSettings
-	    #translateLabel: true
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsTools
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'Tools...'
-	    #itemValue: #toolSettings
-	    #translateLabel: true
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsJava
-	    #label: 'Java...'
-	    #itemValue: #javaSettings
-	    #translateLabel: true
-	    #isVisible: #javaSupportPresent
-	  )
-	 #(#MenuItem
-	    #label: '-'
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsPrinter
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'Printer...'
-	    #itemValue: #printerSettings
-	    #translateLabel: true
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsScreen
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'Screen...'
-	    #itemValue: #displaySettings
-	    #translateLabel: true
-	  )
-	 #(#MenuItem
-	    #label: '-'
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsMisc
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'Editing...'
-	    #itemValue: #editSettings
-	    #translateLabel: true
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsMisc
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'Misc...'
-	    #itemValue: #miscSettings
-	    #translateLabel: true
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsCommunications
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'Communications...'
-	    #itemValue: #communicationsSettings
-	    #translateLabel: true
-	    #isVisible: false
-	  )
-	 #(#MenuItem
-	    #label: '-'
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsSaveSettings
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'Save Settings...'
-	    #itemValue: #saveSettings
-	    #translateLabel: true
-	  )
-	 #(#MenuItem
-	    #activeHelpKey: #settingsLoadSettings
-	    #enabled: #enableDangerousMenuItemsInRemoteLauncher
-	    #label: 'Load Settings...'
-	    #itemValue: #loadSettings
-	    #translateLabel: true
-	  )
-	 )
-	nil
-	nil
+        #(
+         #(#MenuItem
+            #activeHelpKey: #settingsLanguage
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'Language...'
+            #itemValue: #languageSetting
+            #translateLabel: true
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsKeyboardMappings
+            #label: 'Keyboard Mappings...'
+            #itemValue: #keyboardSetting
+            #translateLabel: true
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsViewStyle
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'View Style...'
+            #itemValue: #viewStyleSetting
+            #translateLabel: true
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsFonts
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'Fonts...'
+            #itemValue: #fontSettings
+            #translateLabel: true
+          )
+         #(#MenuItem
+            #label: '-'
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsMessages
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'Messages...'
+            #itemValue: #messageSettings
+            #translateLabel: true
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsCompilation
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'Compilation...'
+            #itemValue: #compilerSettings
+            #translateLabel: true
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsObjectMemory
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'Object Memory...'
+            #itemValue: #memorySettings
+            #translateLabel: true
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsSourceAndDebugger
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'Source and Debugger...'
+            #itemValue: #sourceAndDebuggerSettings
+            #translateLabel: true
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsTools
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'Tools...'
+            #itemValue: #toolSettings
+            #translateLabel: true
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsJava
+            #label: 'Java...'
+            #itemValue: #javaSettings
+            #translateLabel: true
+            #isVisible: #javaSupportPresent
+          )
+         #(#MenuItem
+            #label: '-'
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsPrinter
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'Printer...'
+            #itemValue: #printerSettings
+            #translateLabel: true
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsScreen
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'Screen...'
+            #itemValue: #displaySettings
+            #translateLabel: true
+          )
+         #(#MenuItem
+            #label: '-'
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsMisc
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'Editing...'
+            #itemValue: #editSettings
+            #translateLabel: true
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsMisc
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'Misc...'
+            #itemValue: #miscSettings
+            #translateLabel: true
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsCommunications
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'Communications...'
+            #itemValue: #communicationsSettings
+            #translateLabel: true
+            #isVisible: false
+          )
+         #(#MenuItem
+            #label: '-'
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsSaveSettings
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'Save Settings...'
+            #itemValue: #saveSettings
+            #translateLabel: true
+          )
+         #(#MenuItem
+            #activeHelpKey: #settingsLoadSettings
+            #enabled: #enableDangerousMenuItemsInRemoteLauncher
+            #label: 'Load Settings...'
+            #itemValue: #loadSettings
+            #translateLabel: true
+          )
+         )
+        nil
+        nil
       )
 ! !
 
+
 !NewLauncher methodsFor:'accessing'!
 
 errorListCanvas
     errorListCanvas isNil ifTrue:[
-	errorListCanvas := DataSetView new.
+        errorListCanvas := DataSetView new.
     ].
     ^ errorListCanvas
 !
@@ -3347,57 +3355,57 @@
 examples
 "
     reopening a standard launcher (without any added tools)
-									[exBegin]
+                                                                        [exBegin]
      NewLauncher removeAllUserAddedTools.
      NewLauncher open.
-									[exEnd]
+                                                                        [exEnd]
 
 
 
     adding your own menu items (for user-applications)
 
     an additional item in the tools menu:
-									[exBegin]
+                                                                        [exBegin]
      Transcript topView application
-	addMenuItem:(MenuItem new
-			label: 'Foo';
-			value: [Transcript showCR:'foo invoked'];
-			isButton: false;
-			labelImage: nil;
-			nameKey: #foo;
-			activeHelpKey: #Foo)
-	in:#menu
-	position:#(before workspace)
-	space:true
-									[exEnd]
+        addMenuItem:(MenuItem new 
+                        label: 'Foo';
+                        value: [Transcript showCR:'foo invoked'];
+                        isButton: false;
+                        labelImage: nil;
+                        nameKey: #foo;
+                        activeHelpKey: #Foo)
+        in:#menu
+        position:#(before workspace)
+        space:true
+                                                                        [exEnd]
 
     an additional item in the tools menu:
-									[exBegin]
+                                                                        [exBegin]
      Transcript topView application
-	addMenuItem:(MenuItem new
-			label: 'Foo';
-			value: [Transcript showCR:'foo invoked'];
-			isButton: false;
-			labelImage: nil;
-			activeHelpKey: #Foo)
-	in:#menu
-	position:#(after guiPainter)
-	space:true
-									[exEnd]
+        addMenuItem:(MenuItem new 
+                        label: 'Foo';
+                        value: [Transcript showCR:'foo invoked'];
+                        isButton: false;
+                        labelImage: nil;
+                        activeHelpKey: #Foo)
+        in:#menu
+        position:#(after guiPainter)
+        space:true
+                                                                        [exEnd]
 
     an additional item in one of the tools sub menus:
-									[exBegin]
+                                                                        [exBegin]
      Transcript topView application
-	addMenuItem:(MenuItem new
-			label: 'Foo';
-			value: [Transcript showCR:'foo invoked'];
-			isButton: false;
-			labelImage: nil;
-			activeHelpKey: #Foo)
-	in:#toolbar
-	position:#(after Workspace)
-	space:true
-									[exEnd]
+        addMenuItem:(MenuItem new 
+                        label: 'Foo';
+                        value: [Transcript showCR:'foo invoked'];
+                        isButton: false;
+                        labelImage: nil;
+                        activeHelpKey: #Foo)
+        in:#toolbar
+        position:#(after Workspace)
+        space:true
+                                                                        [exEnd]
 "
 !
 
@@ -3433,22 +3441,23 @@
     "provide access to my transcript view"
 
     transcript isNil ifTrue:[
-	(self componentAt: #transcriptView) notNil ifTrue:[
-	    transcript := (self componentAt: #transcriptView) subViews first.
-	] ifFalse:[
-	    transcript := Workspace new.
-	]
+        (self componentAt: #transcriptView) notNil ifTrue:[
+            transcript := (self componentAt: #transcriptView) subViews first.
+        ] ifFalse:[
+            transcript := Workspace new.
+        ]
     ].
     ^ transcript
 ! !
 
+
 !NewLauncher methodsFor:'aspects'!
 
 canDoTerminal
     "return a 'valueHolder', which returns true if the terminal application
      is available. For now, this is true if we run under unix"
 
-    ^ OperatingSystem isUNIXlike
+    ^ OperatingSystem isUNIXlike 
       or:[OperatingSystem isMSWINDOWSlike]
 
     "Created: / 27.7.1998 / 12:47:54 / cg"
@@ -3490,7 +3499,7 @@
     |holder|
 
     (holder := builder bindingAt:#enableDangerousMenuItemsInRemoteLauncher) isNil ifTrue:[
-	builder aspectAt:#enableDangerousMenuItemsInRemoteLauncher put:(holder :=  true asValue).
+        builder aspectAt:#enableDangerousMenuItemsInRemoteLauncher put:(holder :=  true asValue).
     ].
     ^ holder
 !
@@ -3499,9 +3508,9 @@
     |holder|
 
     (holder := builder bindingAt:#fileBrowserItemVisible) isNil ifTrue:[
-	builder
-	    aspectAt:#fileBrowserItemVisible
-	    put:(holder := UserPreferences current useNewFileBrowser not asValue)
+        builder 
+            aspectAt:#fileBrowserItemVisible 
+            put:(holder := UserPreferences current useNewFileBrowser not asValue)
     ].
     ^ holder
 !
@@ -3543,8 +3552,8 @@
     |holder|
 
     (holder := builder bindingAt:#noteBookCanvasHolder) isNil ifTrue:[
-	builder aspectAt:#noteBookCanvasHolder put:(holder := nil asValue).
-	holder value:self transcriptView.
+        builder aspectAt:#noteBookCanvasHolder put:(holder := nil asValue).
+        holder value:self transcriptView.
     ].
     ^ holder
 !
@@ -3566,8 +3575,8 @@
     |holder|
 
     (holder := builder bindingAt:#selectedTabHolder) isNil ifTrue:[
-	builder aspectAt:#selectedTabHolder put:(holder := 1 asValue).
-	holder addDependent:self.
+        builder aspectAt:#selectedTabHolder put:(holder := 1 asValue).
+        holder addDependent:self.
     ].
     ^ holder
 !
@@ -3598,9 +3607,9 @@
     |holder|
 
     (holder := builder bindingAt:#systemBrowserItemVisible) isNil ifTrue:[
-	builder
-	    aspectAt:#systemBrowserItemVisible
-	    put:(holder := UserPreferences current useNewSystemBrowser not asValue).
+        builder 
+            aspectAt:#systemBrowserItemVisible 
+            put:(holder := UserPreferences current useNewSystemBrowser not asValue).
     ].
     ^ holder
 !
@@ -3613,6 +3622,7 @@
     ^ false
 ! !
 
+
 !NewLauncher methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
@@ -3620,14 +3630,14 @@
 
     ((something == #currentProject) or:[changedObject == Project]) ifTrue: [self updateInfo].
     changedObject == self selectedTabHolder ifTrue: [
-	changedObject value == 1 ifTrue:[
-	    self noteBookCanvasHolder value:self transcriptView.
-	    ^ self.
-	].
-	changedObject value == 2 ifTrue:[
-	    self noteBookCanvasHolder value:self errorListCanvas.
-	    ^ self.
-	].
+        changedObject value == 1 ifTrue:[
+            self noteBookCanvasHolder value:self transcriptView.
+            ^ self.
+        ].
+        changedObject value == 2 ifTrue:[
+            self noteBookCanvasHolder value:self errorListCanvas.
+            ^ self.
+        ].
     ].
     super update:something with:aParameter from:changedObject.
 !
@@ -3639,101 +3649,102 @@
      cvsRepository storeDB image bindings makeInfoString svnWorkDirBaseName|
 
     (Project notNil and:[(project := Project current) notNil]) ifTrue:[
-	projectName := project name.
-	projectDir := project directory.
-	packageName := packageNameOrNil := project package.
-	defNameSpace := project defaultNameSpace.
-	packageNameOrNil = PackageId noProjectID ifTrue:[
-	    packageNameOrNil := nil
-	].
+        projectName := project name.
+        projectDir := project directory.
+        packageName := packageNameOrNil := project package.
+        defNameSpace := project defaultNameSpace.
+        packageNameOrNil = PackageId noProjectID ifTrue:[
+            packageNameOrNil := nil
+        ].
     ].
     defNameSpace isNil ifTrue:[
-	defNameSpace := Smalltalk.
+        defNameSpace := Smalltalk.
     ].
     image := ((ObjectMemory imageName ? 'none') asFilename baseName).
 
     SourceCodeManager notNil ifTrue:[
-	SourceCodeManager isCVS ifTrue:[
-	    cvsRepository := SourceCodeManager repositoryName.
-	    (cvsRepository notNil and:[cvsRepository startsWith:':pserver:']) ifTrue:[
-		cvsRepository := cvsRepository copyFrom:':pserver:'size+1.
-	    ].
-	] ifFalse:[
-	    SourceCodeManager isStore ifTrue:[
-		storeDB := SourceCodeManager hostAndDBName
-	    ]
-	]
+        SourceCodeManager isCVS ifTrue:[
+            cvsRepository := SourceCodeManager repositoryName.
+            (cvsRepository notNil and:[cvsRepository startsWith:':pserver:']) ifTrue:[
+                cvsRepository := cvsRepository copyFrom:':pserver:'size+1.
+            ].
+        ] ifFalse:[
+            SourceCodeManager isStore ifTrue:[
+                storeDB := SourceCodeManager hostAndDBName
+            ]
+        ]
     ].
 
     makeInfoString := [:title :value |
-	    (resources string:title) allBold
-	    ,': '
-	    ,(value colorizeAllWith:(Color blue darkened))
-	    ,' '
-	].
+            (resources string:title) allBold
+            ,': '
+            ,(value colorizeAllWith:(Color blue darkened))
+            ,' '
+        ].
 
     bindings := Dictionary new.
     packageName isNil ifTrue:[
-	bindings at:'PACKAGE' put:''.
+        bindings at:'PACKAGE' put:''.
     ] ifFalse:[
-	bindings at:'PACKAGE' put:(makeInfoString value:'Pkg' value:packageName).
+        bindings at:'PACKAGE' put:(makeInfoString value:'Pkg' value:packageName).
     ].
     packageNameOrNil isNil ifTrue:[
-	bindings at:'PACKAGEOREMPTY' put:''.
+        bindings at:'PACKAGEOREMPTY' put:''.
     ] ifFalse:[
-	bindings at:'PACKAGEOREMPTY' put:(makeInfoString value:'Pkg' value:packageNameOrNil).
+        bindings at:'PACKAGEOREMPTY' put:(makeInfoString value:'Pkg' value:packageNameOrNil).
     ].
 
     bindings
-	at:'IMAGE'
-	put:(makeInfoString value:'Img' value:image).
+        at:'IMAGE'
+        put:(makeInfoString value:'Img' value:image).
 
     bindings
-	at:'NS' put:( defNameSpace == Smalltalk
-			ifTrue:[ '' ]
-			ifFalse:[ '"',defNameSpace name,'" '] ).
+        at:'NS' put:( defNameSpace == Smalltalk 
+                        ifTrue:[ '' ] 
+                        ifFalse:[ '"',defNameSpace name,'" '] ).
 
     bindings
-	at:'PROJECTDIR'
-	put:(makeInfoString value:'Dir' value:(projectDir contractTo: 30)).
+        at:'PROJECTDIR'
+        put:(makeInfoString value:'Dir' value:(projectDir contractTo: 30)).
 
 
     cvsRepository isNil ifTrue:[
-	bindings at:'CVS' put:''
+        bindings at:'CVS' put:''
     ] ifFalse:[
-	bindings at:'CVS' put:(makeInfoString value:'CVS' value:cvsRepository).
+        bindings at:'CVS' put:(makeInfoString value:'CVS' value:cvsRepository).
     ].
     storeDB isNil ifTrue:[
-	bindings at:'DB' put:''.
+        bindings at:'DB' put:''.
     ] ifFalse:[
-	bindings at:'DB' put:(makeInfoString value:'DB' value:storeDB).
+        bindings at:'DB' put:(makeInfoString value:'DB' value:storeDB).
     ].
     (cvsRepository isNil and:[storeDB isNil]) ifTrue:[
-	bindings at:'NOREPOSITORY' put:' >','No Repository'allBold,'< '.
+        bindings at:'NOREPOSITORY' put:' >','No Repository'allBold,'< '.
     ] ifFalse:[
-	bindings at:'NOREPOSITORY' put:''.
+        bindings at:'NOREPOSITORY' put:''.
     ].
 
     (SVN::RepositoryManager notNil
-    and:[ SVN::RepositoryManager isLoaded
+    and:[ SVN::RepositoryManager isLoaded    
     and:[ SVN::RepositoryManager enabled ]])
-	ifTrue:[
-	    svnWorkDirBaseName := SVN::RepositoryManager current workingCopyBase asFilename baseName.
-
-	    bindings
-		at:  'SVN_WORKING_COPY'
-		put: (makeInfoString value:'SVN Work' value:svnWorkDirBaseName).
-	] ifFalse:[
-	    bindings
-		at:  'SVN_WORKING_COPY'
-		put: ''
-	].
+        ifTrue:[
+            svnWorkDirBaseName := SVN::RepositoryManager current workingCopyBase asFilename baseName.
+
+            bindings
+                at:  'SVN_WORKING_COPY'
+                put: (makeInfoString value:'SVN Work' value:svnWorkDirBaseName).
+        ] ifFalse:[
+            bindings
+                at:  'SVN_WORKING_COPY'
+                put: ''
+        ].
 
     projectInfo := self infoLineTemplate bindWithArguments:bindings.
     self infoLabelHolder value:projectInfo.
     ^projectInfo.
 ! !
 
+
 !NewLauncher methodsFor:'help'!
 
 defaultInfoLabel
@@ -3747,11 +3758,12 @@
 
     text := super flyByHelpTextForKey:aKey.
     aKey == #fileSaveImage ifTrue:[
-	^ text bindWith:(ObjectMemory nameForSnapshot)
+        ^ text bindWith:(ObjectMemory nameForSnapshot)
     ].
     ^ text
 ! !
 
+
 !NewLauncher methodsFor:'menu configuration'!
 
 addMenuItem:newItem from:anApplicationClassWhichProvidesResourcesOrNil in:where position:positionSpecOrNilArg space:space
@@ -3761,16 +3773,16 @@
        where == #menu.<name> - menu item is added at the end of the sub menu named 'name',
 
     position may be one of:
-	#(before <someItemPath>)
-	#(after  <someItemPath>)
-	#( #first )   or #first
-	#( #last )    or #last   or nil
+        #(before <someItemPath>)
+        #(after  <someItemPath>)
+        #( #first )   or #first
+        #( #last )    or #last   or nil
 
      If space is true, some empty space is inserted.
      This can be invoked by a classes #initialize method, to add an item
      for itself to the toolbar or menu."
 
-    |what menuPanel freeMenuIndex mainMenuPanel item subViews subMenuPath
+    |what menuPanel freeMenuIndex mainMenuPanel item subViews subMenuPath 
      rest subMenu subItem positionSpecOrNil itemNameOrNil before itemsOriginalLabel|
 
     itemsOriginalLabel := newItem label.
@@ -3778,170 +3790,170 @@
 
     positionSpecOrNil := positionSpecOrNilArg.
     positionSpecOrNil isArray ifTrue:[
-	positionSpecOrNil size > 1 ifTrue:[
-	    itemNameOrNil := positionSpecOrNil at:2.
-	].
-	positionSpecOrNil := positionSpecOrNil at:1.
+        positionSpecOrNil size > 1 ifTrue:[
+            itemNameOrNil := positionSpecOrNil at:2.
+        ].
+        positionSpecOrNil := positionSpecOrNil at:1.
     ].
     before := (positionSpecOrNil == #first) or:[positionSpecOrNil == #before].
 
     what := where.
     (what isNil or:[what = 'toolbar']) ifTrue:[
-	menuPanel := builder namedComponents at:#menuToolbarView ifAbsent:nil.
-	menuPanel isNil ifTrue:[
-	    'NewLauncher [warning]: addUserTool failed - no menuPanel' infoPrintCR.
-	    ^ self
-	].
-	"/ look if not already in the toolBar
-	(self findItem:newItem inMenuPanel:menuPanel) ~~ 0 ifTrue:[
-	    "item already exists - do nothing"
-	    Transcript show:'NewLauncher: menu item already present:'; showCR:newItem nameKey.
-	    ^ self.
-	].
-
-	"/ ok, not there; search for the position to put the item
-	freeMenuIndex := 0.
-	itemNameOrNil notNil ifTrue:[
-	    freeMenuIndex := menuPanel findFirst: [:i| i nameKey = itemNameOrNil].
-	    freeMenuIndex == 0 ifTrue:[
-		freeMenuIndex := menuPanel findFirst: [:i| i activeHelpKey = itemNameOrNil
-							   or:[i label = itemNameOrNil]].
-	    ]
-	].
-
-	freeMenuIndex == 0 ifTrue:[
-	    "item to insert relative to not found, insert at the begin or end"
-	    freeMenuIndex := before ifTrue:[1] ifFalse:[menuPanel numberOfItems + 1].
-	] ifFalse:[
-	    before ifFalse:[freeMenuIndex := freeMenuIndex +1].
-	].
-
-	space ifTrue:[
-	    "want an empty entry before or after newItem"
-	    (menuPanel createAtIndex:freeMenuIndex) menuItem:(MenuItem labeled:'').
-	    before ifFalse:[
-		freeMenuIndex := freeMenuIndex + 1.
-	    ].
-	].
-
-	(menuPanel createAtIndex:freeMenuIndex) menuItem:newItem.
-
-	UserAddedToolBarItems isNil ifTrue: [UserAddedToolBarItems := Dictionary new].
-	UserAddedToolBarItems at:newItem put:(AddedToolInfo new
-					    item:newItem;
-					    originalLabel:itemsOriginalLabel;
-					    resourceProvider:anApplicationClassWhichProvidesResourcesOrNil;
-					    where:where;
-					    positionSpec:positionSpecOrNilArg;
-					    space:space;
-					    before:before;
-					    menuWithNewItem:menuPanel;
-					    yourself)
+        menuPanel := builder namedComponents at:#menuToolbarView ifAbsent:nil.
+        menuPanel isNil ifTrue:[
+            'NewLauncher [warning]: addUserTool failed - no menuPanel' infoPrintCR.
+            ^ self
+        ].
+        "/ look if not already in the toolBar
+        (self findItem:newItem inMenuPanel:menuPanel) ~~ 0 ifTrue:[
+            "item already exists - do nothing"
+            Transcript show:'NewLauncher: menu item already present:'; showCR:newItem nameKey.
+            ^ self.
+        ].
+
+        "/ ok, not there; search for the position to put the item
+        freeMenuIndex := 0.
+        itemNameOrNil notNil ifTrue:[
+            freeMenuIndex := menuPanel findFirst: [:i| i nameKey = itemNameOrNil].
+            freeMenuIndex == 0 ifTrue:[
+                freeMenuIndex := menuPanel findFirst: [:i| i activeHelpKey = itemNameOrNil 
+                                                           or:[i label = itemNameOrNil]].
+            ]
+        ].
+
+        freeMenuIndex == 0 ifTrue:[
+            "item to insert relative to not found, insert at the begin or end"
+            freeMenuIndex := before ifTrue:[1] ifFalse:[menuPanel numberOfItems + 1].
+        ] ifFalse:[
+            before ifFalse:[freeMenuIndex := freeMenuIndex +1].
+        ].
+
+        space ifTrue:[
+            "want an empty entry before or after newItem"
+            (menuPanel createAtIndex:freeMenuIndex) menuItem:(MenuItem labeled:'').
+            before ifFalse:[
+                freeMenuIndex := freeMenuIndex + 1.
+            ].
+        ].
+
+        (menuPanel createAtIndex:freeMenuIndex) menuItem:newItem.
+
+        UserAddedToolBarItems isNil ifTrue: [UserAddedToolBarItems := Dictionary new].
+        UserAddedToolBarItems at:newItem put:(AddedToolInfo new
+                                            item:newItem;
+                                            originalLabel:itemsOriginalLabel;
+                                            resourceProvider:anApplicationClassWhichProvidesResourcesOrNil;
+                                            where:where;
+                                            positionSpec:positionSpecOrNilArg;
+                                            space:space;
+                                            before:before;
+                                            menuWithNewItem:menuPanel;
+                                            yourself)
     ].
 
     what isNil ifTrue:[
-	what := #menu
+        what := #menu
     ].
 
     (what includes:$.) ifTrue:[
-	subMenuPath := what asCollectionOfSubstringsSeparatedBy:$..
-	what := subMenuPath at:1.
-	subMenuPath := subMenuPath copyFrom:2.
+        subMenuPath := what asCollectionOfSubstringsSeparatedBy:$..
+        what := subMenuPath at:1.
+        subMenuPath := subMenuPath copyFrom:2.
     ] ifFalse:[
-	subMenuPath := #('tools').
+        subMenuPath := #('tools').
     ].
 
     what = 'menu' ifTrue:[
-	mainMenuPanel := self builder menuBar.
-	mainMenuPanel isNil ifTrue:[
-	    subViews := self builder window subViews.
-	    subViews notNil ifTrue:[
-		mainMenuPanel := subViews at:1 ifAbsent:nil.
-	    ]
-	].
-	mainMenuPanel isNil ifTrue:[
-	    'NewLauncher [warning]: addUserTool failed - no mainMenu' infoPrintCR.
-	    ^ self
-	].
-
-	subMenuPath first isEmptyOrNil ifTrue:[
-	    "add to top menu"
-	    menuPanel := mainMenuPanel.
-	] ifFalse:[
-	    "lookup sub menu"
-	    item := mainMenuPanel itemAt:subMenuPath first.
-	    item isNil ifTrue:[
-		item := mainMenuPanel itemAt:'tools'.
-		item isNil ifTrue:[
-		    'NewLauncher [warning]: addUserTool failed - no tools menu' infoPrintCR.
-		    ^ self
-		].
-	    ].
-	    rest := subMenuPath copyFrom:2.
-	    menuPanel := subMenu := item submenu.
-
-	    rest do:[:pathComponent|
-		subMenu notNil ifTrue:[
-		    menuPanel := subMenu.
-		    subItem := subMenu itemAt:pathComponent.
-		    subItem isNil ifTrue:[
-			subMenu := nil
-		    ] ifFalse:[
-			subMenu := subItem submenu.
-		    ]
-		].
-	    ].
-	    subMenu notNil ifTrue:[
-		menuPanel := subMenu.
-	    ]
-	].
-
-	"/ look if not already in the panel
-	(self findItem:newItem inMenuPanel:menuPanel) ~~ 0 ifTrue:[
-	    "item already exists - do nothing"
-	    Transcript show:'NewLauncher: menu item already present:'; showCR:newItem nameKey.
-	    ^ self.
-	].
-
-	"/ ok, search for the position to put the item
-
-	freeMenuIndex := 0.
-	itemNameOrNil notNil ifTrue:[
-	    freeMenuIndex := menuPanel findFirst:[:i| i nameKey = itemNameOrNil].
-	    freeMenuIndex == 0 ifTrue:[
-		freeMenuIndex := menuPanel findFirst:[:i| i itemValue = itemNameOrNil].
-		freeMenuIndex == 0 ifTrue:[
-		    freeMenuIndex := menuPanel findFirst:[:i| i activeHelpKey = itemNameOrNil
-							      or:[i label = itemNameOrNil]].
-		]
-	    ]
-	].
-	freeMenuIndex == 0 ifTrue:[
-	    freeMenuIndex := before ifTrue:[1] ifFalse:[menuPanel numberOfItems + 1].
-	] ifFalse:[
-	    before ifFalse:[freeMenuIndex := freeMenuIndex +1].
-	].
-	space ifTrue:[
-	    "want a line before or after newItem"
-	    (menuPanel createAtIndex:freeMenuIndex) menuItem:(MenuItem labeled: '-').
-	    before ifFalse:[
-		freeMenuIndex := freeMenuIndex + 1.
-	    ].
-	].
-
-	(menuPanel createAtIndex:freeMenuIndex) menuItem:newItem.
-
-	UserAddedMenuItems isNil ifTrue: [UserAddedMenuItems := Dictionary new].
-	UserAddedMenuItems at:newItem put:(AddedToolInfo new
-					    item:newItem;
-					    originalLabel:itemsOriginalLabel;
-					    resourceProvider:anApplicationClassWhichProvidesResourcesOrNil;
-					    where:where;
-					    positionSpec:positionSpecOrNilArg;
-					    space:space;
-					    before:before;
-					    menuWithNewItem:menuPanel;
-					    yourself)
+        mainMenuPanel := self builder menuBar.
+        mainMenuPanel isNil ifTrue:[
+            subViews := self builder window subViews.
+            subViews notNil ifTrue:[
+                mainMenuPanel := subViews at:1 ifAbsent:nil.
+            ]
+        ].
+        mainMenuPanel isNil ifTrue:[
+            'NewLauncher [warning]: addUserTool failed - no mainMenu' infoPrintCR.
+            ^ self
+        ].
+
+        subMenuPath first isEmptyOrNil ifTrue:[
+            "add to top menu"
+            menuPanel := mainMenuPanel.
+        ] ifFalse:[
+            "lookup sub menu"
+            item := mainMenuPanel itemAt:subMenuPath first.
+            item isNil ifTrue:[
+                item := mainMenuPanel itemAt:'tools'.
+                item isNil ifTrue:[
+                    'NewLauncher [warning]: addUserTool failed - no tools menu' infoPrintCR.
+                    ^ self
+                ].
+            ].
+            rest := subMenuPath copyFrom:2.
+            menuPanel := subMenu := item submenu.
+
+            rest do:[:pathComponent|
+                subMenu notNil ifTrue:[
+                    menuPanel := subMenu.
+                    subItem := subMenu itemAt:pathComponent.
+                    subItem isNil ifTrue:[
+                        subMenu := nil
+                    ] ifFalse:[
+                        subMenu := subItem submenu.
+                    ]
+                ].
+            ].
+            subMenu notNil ifTrue:[
+                menuPanel := subMenu.
+            ]
+        ].
+
+        "/ look if not already in the panel
+        (self findItem:newItem inMenuPanel:menuPanel) ~~ 0 ifTrue:[
+            "item already exists - do nothing"
+            Transcript show:'NewLauncher: menu item already present:'; showCR:newItem nameKey.
+            ^ self.
+        ].
+
+        "/ ok, search for the position to put the item
+
+        freeMenuIndex := 0.
+        itemNameOrNil notNil ifTrue:[
+            freeMenuIndex := menuPanel findFirst:[:i| i nameKey = itemNameOrNil].
+            freeMenuIndex == 0 ifTrue:[
+                freeMenuIndex := menuPanel findFirst:[:i| i itemValue = itemNameOrNil].
+                freeMenuIndex == 0 ifTrue:[
+                    freeMenuIndex := menuPanel findFirst:[:i| i activeHelpKey = itemNameOrNil 
+                                                              or:[i label = itemNameOrNil]].
+                ]
+            ]
+        ].
+        freeMenuIndex == 0 ifTrue:[
+            freeMenuIndex := before ifTrue:[1] ifFalse:[menuPanel numberOfItems + 1].
+        ] ifFalse:[
+            before ifFalse:[freeMenuIndex := freeMenuIndex +1].
+        ].
+        space ifTrue:[
+            "want a line before or after newItem"
+            (menuPanel createAtIndex:freeMenuIndex) menuItem:(MenuItem labeled: '-').
+            before ifFalse:[
+                freeMenuIndex := freeMenuIndex + 1.
+            ].
+        ].
+
+        (menuPanel createAtIndex:freeMenuIndex) menuItem:newItem.
+
+        UserAddedMenuItems isNil ifTrue: [UserAddedMenuItems := Dictionary new].
+        UserAddedMenuItems at:newItem put:(AddedToolInfo new
+                                            item:newItem;
+                                            originalLabel:itemsOriginalLabel;
+                                            resourceProvider:anApplicationClassWhichProvidesResourcesOrNil;
+                                            where:where;
+                                            positionSpec:positionSpecOrNilArg;
+                                            space:space;
+                                            before:before;
+                                            menuWithNewItem:menuPanel;
+                                            yourself)
     ].
 
     "
@@ -3950,81 +3962,81 @@
      NewLauncher open.
 
      Transcript topView application
-	addMenuItem:(MenuItem new
-			label: 'Foo';
-			value: [Transcript showCR:'foo'];
-			isButton: false;
-			labelImage: nil;
-			nameKey: #foo)
-	in:'menu.'
-	position:#(last)
-	space:true.
+        addMenuItem:(MenuItem new 
+                        label: 'Foo';
+                        value: [Transcript showCR:'foo'];
+                        isButton: false;
+                        labelImage: nil;
+                        nameKey: #foo)
+        in:'menu.'
+        position:#(last)
+        space:true.
 
      Transcript topView application
-	addMenuItem:(MenuItem new
-			label: 'Foo';
-			value: [Transcript showCR:'foo'];
-			isButton: false;
-			labelImage: nil;
-			nameKey: #foo)
-	in:#menu
-	position:#(before Workspace)
-	space:true.
+        addMenuItem:(MenuItem new 
+                        label: 'Foo';
+                        value: [Transcript showCR:'foo'];
+                        isButton: false;
+                        labelImage: nil;
+                        nameKey: #foo)
+        in:#menu
+        position:#(before Workspace)
+        space:true.
 
      Transcript topView application
-	addMenuItem:(MenuItem new
-			label: 'Bar';
-			value: [Transcript showCR:'bar'];
-			isButton: false;
-			labelImage: nil;
-			nameKey: #bar)
-	in:#menu
-	position:#(after foo)
-	space:true.
+        addMenuItem:(MenuItem new 
+                        label: 'Bar';
+                        value: [Transcript showCR:'bar'];
+                        isButton: false;
+                        labelImage: nil;
+                        nameKey: #bar)
+        in:#menu
+        position:#(after foo)
+        space:true.
 
      Transcript topView application
-	addMenuItem:(MenuItem new
-			label: 'Baz';
-			value: [Transcript showCR:'baz'];
-			isButton: false;
-			labelImage: nil;
-			nameKey: #baz)
-	in:#menu
-	position:#(before bar)
-	space:false.
+        addMenuItem:(MenuItem new 
+                        label: 'Baz';
+                        value: [Transcript showCR:'baz'];
+                        isButton: false;
+                        labelImage: nil;
+                        nameKey: #baz)
+        in:#menu
+        position:#(before bar)
+        space:false.
 
      Transcript topView application
-	addMenuItem:(MenuItem new
-			label: 'Baz2';
-			value: [Transcript showCR:'baz2'];
-			isButton: false;
-			labelImage: nil;
-			nameKey: #baz2)
-	in:#menu
-	position:#(after bar)
-	space:false.
+        addMenuItem:(MenuItem new 
+                        label: 'Baz2';
+                        value: [Transcript showCR:'baz2'];
+                        isButton: false;
+                        labelImage: nil;
+                        nameKey: #baz2)
+        in:#menu
+        position:#(after bar)
+        space:false.
 
      Transcript topView application
-	addMenuItem:(MenuItem new
-			label: 'Foo2';
-			value: [Transcript showCR:'foo2'];
-			isButton: false;
-			labelImage: nil;
-			nameKey: #foo2)
-	in:'menu.classes'
-	position:#last
-	space:false.
+        addMenuItem:(MenuItem new 
+                        label: 'Foo2';
+                        value: [Transcript showCR:'foo2'];
+                        isButton: false;
+                        labelImage: nil;
+                        nameKey: #foo2)
+        in:'menu.classes'
+        position:#last
+        space:false.
 
      Transcript topView application
-	addMenuItem:(MenuItem new
-			label: 'Foo3';
-			value: [Transcript showCR:'foo3'];
-			isButton: false;
-			labelImage: nil;
-			nameKey: #foo3)
-	in:'menu.classes.special'
-	position:#first
-	space:true.
+        addMenuItem:(MenuItem new 
+                        label: 'Foo3';
+                        value: [Transcript showCR:'foo3'];
+                        isButton: false;
+                        labelImage: nil;
+                        nameKey: #foo3)
+        in:'menu.classes.special'
+        position:#first
+        space:true.
     "
 
     "Modified: / 19-08-2011 / 12:17:30 / cg"
@@ -4037,17 +4049,17 @@
        where == #menu.<name> - menu item is added at the end of the sub menu named 'name',
 
     position may be one of:
-	#(before <someItemPath>)
-	#(after  <someItemPath>)
-	#( #first )   or #first
-	#( #last )    or #last   or nil
+        #(before <someItemPath>)
+        #(after  <someItemPath>)
+        #( #first )   or #first
+        #( #last )    or #last   or nil
 
      If space is true, some empty space is inserted.
      This can be invoked by a classes #initialize method, to add an item
      for itself to the toolbar or menu."
 
     ^ self
-	addMenuItem:newItem from:self in:where position:positionSpecOrNilArg space:space
+        addMenuItem:newItem from:self in:where position:positionSpecOrNilArg space:space
 !
 
 findItem:menuItem inMenuPanel:menuPanel
@@ -4059,13 +4071,13 @@
 
     idx := 0.
     menuItem nameKey notNil ifTrue:[
-	idx := menuPanel findFirst: [:i| i nameKey = menuItem nameKey].
+        idx := menuPanel findFirst: [:i| i nameKey = menuItem nameKey].
     ].
     idx == 0 ifTrue:[
-	idx := menuPanel findFirst: [:i| (menuItem activeHelpKey notNil
-					  and:[i activeHelpKey = menuItem activeHelpKey])
-					 or:[menuItem label notNil
-					     and:[i label = menuItem label]]]
+        idx := menuPanel findFirst: [:i| (menuItem activeHelpKey notNil 
+                                          and:[i activeHelpKey = menuItem activeHelpKey])
+                                         or:[menuItem label notNil 
+                                             and:[i label = menuItem label]]]
     ].
 
     ^ idx
@@ -4073,7 +4085,7 @@
 
 removeUserTool:toolNameOrMenuItem
     "removes a menu item labeled toolName
-     This can be invoked by a classes #deinitialize method,
+     This can be invoked by a classes #deinitialize method, 
      to remove its item from the toolbar or menu.
     "
     self class removeUserTool:toolNameOrMenuItem
@@ -4081,7 +4093,7 @@
 
 removeUserTool:toolNameOrMenuItem from:addedToolsCollection
     "removes a menu item labeled toolName
-     This can be invoked by a classes #deinitialize method,
+     This can be invoked by a classes #deinitialize method, 
      to remove its item from the toolbar or menu.
     "
 
@@ -4089,11 +4101,11 @@
 
     "
      Transcript topView application
-	removeUserTool:'Bar'
+        removeUserTool:'Bar' 
     "
     "
      Transcript topView application
-	removeUserTool:'Foo'
+        removeUserTool:'Foo' 
     "
 
 !
@@ -4116,6 +4128,7 @@
 
 ! !
 
+
 !NewLauncher methodsFor:'menus-dynamic'!
 
 allWindowsMenu
@@ -4126,92 +4139,92 @@
     menu := Menu new receiver: self.
     allViewsAndLabels := self allTopViewsAndLabelsSortedFilteringWindowGroups:nil.
     allViewsAndLabels do:[:assoc |
-	|view label submenu likeThis info|
-
-	view := assoc value.
-	label := assoc key.
-
-	submenu := Menu new.
-	submenu addItem:(MenuItem new
-			    label: 'Raise Deiconified';
-			    itemValue: [view raiseDeiconified; setForegroundWindow];
-			    translateLabel: true).
-	submenu addItem:(MenuItem new
-			    label: 'Iconify';
-			    itemValue: [view collapse];
-			    translateLabel: true).
-	submenu addItem:(MenuItem new
-			    label: 'Migrate';
-			    itemValue: [self migrateWindow:view];
-			    enabled:(view windowGroup isModal not);
-			    translateLabel: true).
-
-	submenu addSeparator.
-	submenu addItem:(MenuItem new
-			    label: 'Hardcopy';
-			    itemValue: [self hardcopyOfView:view];
-			    translateLabel: true).
-	submenu addItem:(MenuItem new
-			    label: 'Inspect View';
-			    itemValue: [view inspect];
-			    translateLabel: true).
-	submenu addItem:(MenuItem new
-			    label: 'Inspect Application';
-			    itemValue: [view application inspect];
-			    enabled:(view application notNil);
-			    translateLabel: true).
-	submenu addSeparator.
-	submenu addItem:(MenuItem new
-			    label: 'Browse View Class';
-			    itemValue: [view class browse];
-			    translateLabel: true).
-	submenu addItem:(MenuItem new
-			    label: 'Browse Application Class';
-			    itemValue: [view application class browse];
-			    enabled:(view application notNil);
-			    translateLabel: true).
-	submenu addItem:(MenuItem new
-			    label: 'Debug Application';
-			    itemValue: [Debugger openOn:view windowGroup process];
-			    translateLabel: true).
-
-	submenu addSeparator.
-	submenu addItem:(MenuItem new
-			    label: 'Close';
-			    itemValue: [view destroy];
-			    translateLabel: true).
-
-	likeThis :=
-	    allViewsAndLabels
-		select:[:assoc |
-		    |otherView|
-
-		    otherView := assoc value.
-		    otherView class == view class
-			and:[ otherView application class == view application class]
-		]
-		thenCollect:[:assoc | assoc value ].
-
-	likeThis size > 1 ifTrue:[
-	    info := view application notNil
-			ifTrue:[ view application class name ]
-			ifFalse:[ view class name ].
-	    info := ' ("',info,'")'.
-	] ifFalse:[
-	    info := ''
-	].
-
-	submenu addItem:(MenuItem new
-			    label: ('Close all like This%1' bindWith:info);
-			    itemValue: [likeThis do:[:eachView | eachView destroy]];
-			    translateLabel: true;
-			    enabled:(likeThis size > 1)).
-
-	menu addItem:(MenuItem new
-			    label: label;
-			    submenu: submenu;
-			    itemValue: [view raiseDeiconified; setForegroundWindow];
-			    translateLabel: false).
+        |view label submenu likeThis info|
+
+        view := assoc value.
+        label := assoc key.
+
+        submenu := Menu new.
+        submenu addItem:(MenuItem new
+                            label: 'Raise Deiconified';
+                            itemValue: [view raiseDeiconified; setForegroundWindow];
+                            translateLabel: true).
+        submenu addItem:(MenuItem new
+                            label: 'Iconify';
+                            itemValue: [view collapse];
+                            translateLabel: true).
+        submenu addItem:(MenuItem new
+                            label: 'Migrate';
+                            itemValue: [self migrateWindow:view];
+                            enabled:(view windowGroup isModal not);
+                            translateLabel: true).
+
+        submenu addSeparator.
+        submenu addItem:(MenuItem new
+                            label: 'Hardcopy';
+                            itemValue: [self hardcopyOfView:view];
+                            translateLabel: true).
+        submenu addItem:(MenuItem new
+                            label: 'Inspect View';
+                            itemValue: [view inspect];
+                            translateLabel: true).
+        submenu addItem:(MenuItem new
+                            label: 'Inspect Application';
+                            itemValue: [view application inspect];
+                            enabled:(view application notNil);
+                            translateLabel: true).
+        submenu addSeparator.
+        submenu addItem:(MenuItem new
+                            label: 'Browse View Class';
+                            itemValue: [view class browse];
+                            translateLabel: true).
+        submenu addItem:(MenuItem new
+                            label: 'Browse Application Class';
+                            itemValue: [view application class browse];
+                            enabled:(view application notNil);
+                            translateLabel: true).
+        submenu addItem:(MenuItem new
+                            label: 'Debug Application';
+                            itemValue: [Debugger openOn:view windowGroup process];
+                            translateLabel: true).
+
+        submenu addSeparator.
+        submenu addItem:(MenuItem new
+                            label: 'Close';
+                            itemValue: [view destroy];
+                            translateLabel: true).
+
+        likeThis :=
+            allViewsAndLabels
+                select:[:assoc |
+                    |otherView|
+
+                    otherView := assoc value.
+                    otherView class == view class
+                        and:[ otherView application class == view application class]
+                ]
+                thenCollect:[:assoc | assoc value ].
+
+        likeThis size > 1 ifTrue:[
+            info := view application notNil
+                        ifTrue:[ view application class name ]
+                        ifFalse:[ view class name ].
+            info := ' ("',info,'")'.
+        ] ifFalse:[
+            info := ''
+        ].
+
+        submenu addItem:(MenuItem new
+                            label: ('Close all like This%1' bindWith:info);
+                            itemValue: [likeThis do:[:eachView | eachView destroy]];
+                            translateLabel: true;
+                            enabled:(likeThis size > 1)).
+
+        menu addItem:(MenuItem new
+                            label: label;
+                            submenu: submenu;
+                            itemValue: [view raiseDeiconified; setForegroundWindow];
+                            translateLabel: false).
     ].
 
     menu findGuiResourcesIn:self.
@@ -4229,35 +4242,35 @@
     changeHistory := OrderedCollection new.
 
     [:exit |
-	changeSet reverseDo:[:change |
-	    change isMethodChange ifTrue:[
-		change changeClass notNil ifTrue:[
-		    (changeHistory contains:[:chg | chg className = change className
-						 and:[chg selector = change selector]])
-		    ifFalse:[
-			changeHistory add:change.
-			changeHistory size > 15 ifTrue:[
-			    exit value:nil
-			]
-		    ].
-		].
-	    ].
-	]
+        changeSet reverseDo:[:change |
+            change isMethodChange ifTrue:[
+                change changeClass notNil ifTrue:[
+                    (changeHistory contains:[:chg | chg className = change className
+                                                 and:[chg selector = change selector]])
+                    ifFalse:[
+                        changeHistory add:change.
+                        changeHistory size > 15 ifTrue:[
+                            exit value:nil
+                        ]
+                    ].
+                ].
+            ].
+        ]
     ] valueWithExit.
 
     changeHistory isEmpty ifTrue:[
-	^ nil
+        ^ nil
     ].
 
     menu := Menu new receiver: self.
-    menu addItemGroup:
-	(changeHistory collect:[:change|
-	    MenuItem new
-		translateLabel: false;
-		label: (change className , ' ' , (change selector ? '???'));
-		value: [UserPreferences systemBrowserClass openInClass:change changeClass selector:change selector];
-		activeHelpKey: #classBrowserOnChangedMethod
-	]
+    menu addItemGroup: 
+        (changeHistory collect:[:change|
+            MenuItem new 
+                translateLabel: false;
+                label: (change className , ' ' , (change selector ? '???')); 
+                value: [UserPreferences systemBrowserClass openInClass:change changeClass selector:change selector]; 
+                activeHelpKey: #classBrowserOnChangedMethod
+        ]
     ).
 
     menu findGuiResourcesIn:self.
@@ -4281,25 +4294,25 @@
 
     classHistory := whichBrowserClass classHistory.
     classHistory isEmpty ifTrue:[
-	^ nil
+        ^ nil
     ].
 
     menu := Menu new receiver: self.
-    menu addItemGroup:
-	(classHistory collect:[:histEntry|
-	    MenuItem new
-		translateLabel: false;
-		label: (histEntry className);
-		itemValue: [whichBrowserClass openInClass:histEntry theClass selector:histEntry selector];
-		activeHelpKey: #classesSystemBrowserOnClass
-	]
+    menu addItemGroup: 
+        (classHistory collect:[:histEntry|
+            MenuItem new 
+                translateLabel: false;
+                label: (histEntry className); 
+                itemValue: [whichBrowserClass openInClass:histEntry theClass selector:histEntry selector]; 
+                activeHelpKey: #classesSystemBrowserOnClass
+        ]
     ).
-    menu addItem: (MenuItem new
-			label: 'Clear History';
-			itemValue: [classHistory removeAll];
-			translateLabel: true;
-			enabled:(classHistory notEmpty);
-			activeHelpKey: #historyEmptyMenu).
+    menu addItem: (MenuItem new 
+                        label: 'Clear History'; 
+                        itemValue: [classHistory removeAll]; 
+                        translateLabel: true;
+                        enabled:(classHistory notEmpty);
+                        activeHelpKey: #historyEmptyMenu).
 
     menu findGuiResourcesIn:self.
     ^ menu
@@ -4322,23 +4335,23 @@
     dirHistory isEmpty ifTrue:[^nil].
 
     menu := Menu new receiver: self.
-    menu addItemGroup:
-	(dirHistory collect:[:item|
-	    |dirNameString|
-	    dirNameString := item path.
-	    MenuItem new
-		translateLabel: false;
-		label: dirNameString;
-		itemValue: [UserPreferences fileBrowserClass openOn:dirNameString];
-		activeHelpKey: #FileBrowserOnDirectory
-	]
+    menu addItemGroup: 
+        (dirHistory collect:[:item|
+            |dirNameString| 
+            dirNameString := item path.
+            MenuItem new 
+                translateLabel: false;
+                label: dirNameString; 
+                itemValue: [UserPreferences fileBrowserClass openOn:dirNameString]; 
+                activeHelpKey: #FileBrowserOnDirectory
+        ]
     ).
-    menu addItem: (MenuItem new
-			label: 'Clear History';
-			itemValue: [dirHistory removeAll];
-			translateLabel: true;
-			enabled:(dirHistory notEmpty);
-			activeHelpKey: #historyEmptyMenu).
+    menu addItem: (MenuItem new 
+                        label: 'Clear History'; 
+                        itemValue: [dirHistory removeAll]; 
+                        translateLabel: true;
+                        enabled:(dirHistory notEmpty);
+                        activeHelpKey: #historyEmptyMenu).
 
     menu findGuiResourcesIn:self.
     ^menu
@@ -4353,33 +4366,33 @@
     appHistory isEmpty ifTrue:[^nil].
 
     menu := Menu new receiver: self.
-    menu addItemGroup:
-	(appHistory collect:[:appClassName|
-	    |item appClass label|
-
-	    appClass := Smalltalk classNamed:appClassName.
-	    appClass isNil ifTrue:[
-		label := appClassName.
-	    ] ifFalse:[
-		label := appClass nameWithoutPrefix
-	    ].
-	    item := MenuItem new
-		label: label;
-		itemValue: #openApplication: argument: appClassName.
-
-	    appClass isNil ifTrue:[
-		item enabled:false.
-		item label:(LabelAndIcon icon:(ToolbarIconLibrary erase16x16Icon2) string:appClassName)
-	    ].
-	    item
-	]
+    menu addItemGroup: 
+        (appHistory collect:[:appClassName|
+            |item appClass label|
+
+            appClass := Smalltalk classNamed:appClassName.
+            appClass isNil ifTrue:[
+                label := appClassName.
+            ] ifFalse:[
+                label := appClass nameWithoutPrefix
+            ].
+            item := MenuItem new 
+                label: label; 
+                itemValue: #openApplication: argument: appClassName. 
+
+            appClass isNil ifTrue:[
+                item enabled:false.
+                item label:(LabelAndIcon icon:(ToolbarIconLibrary erase16x16Icon2) string:appClassName)
+            ].
+            item
+        ]
     ).
-    menu addItem: (MenuItem new
-			label: 'Clear History';
-			itemValue: [ ApplicationModel forgetRecentlyOpenedApplications ];
-			translateLabel: true;
-			enabled:(appHistory notEmpty);
-			activeHelpKey: #historyEmptyMenu).
+    menu addItem: (MenuItem new 
+                        label: 'Clear History'; 
+                        itemValue: [ ApplicationModel forgetRecentlyOpenedApplications ]; 
+                        translateLabel: true;
+                        enabled:(appHistory notEmpty);
+                        activeHelpKey: #historyEmptyMenu).
 
     menu findGuiResourcesIn:self.
     ^menu
@@ -4393,25 +4406,26 @@
     <resource: #programMenu >
 
     ^ [
-	|m anyItem hosts|
-
-	m := Menu new.
-
-	hosts := SmallTeam hostsWithChanges asSortedCollection.
-	hosts do:[:eachHost |
-	    |item|
-
-	    item := MenuItem label:eachHost.
-	    item itemValue:#'startBrowserOnChangesOnSmallTeamHost:' argument:eachHost.
-	    m addItem:item.
-	    anyItem := true.
-	].
-	hosts isEmptyOrNil ifTrue:[ nil ] ifFalse:[ m ]
+        |m anyItem hosts|
+
+        m := Menu new.
+
+        hosts := SmallTeam hostsWithChanges asSortedCollection.
+        hosts do:[:eachHost |
+            |item|
+
+            item := MenuItem label:eachHost.
+            item itemValue:#'startBrowserOnChangesOnSmallTeamHost:' argument:eachHost.
+            m addItem:item.
+            anyItem := true.
+        ].
+        hosts isEmptyOrNil ifTrue:[ nil ] ifFalse:[ m ]
     ].
 
     "Created: / 12-11-2006 / 16:06:06 / cg"
 ! !
 
+
 !NewLauncher methodsFor:'private-settings callBacks'!
 
 reopenLauncher
@@ -4428,6 +4442,7 @@
     ^ newLauncher
 ! !
 
+
 !NewLauncher methodsFor:'queries'!
 
 preferredExtent
@@ -4448,6 +4463,7 @@
     ^ XWorkstation notNil
 ! !
 
+
 !NewLauncher methodsFor:'startup & release'!
 
 allButOpenInterface:anInterface
@@ -4457,14 +4473,14 @@
     "/ I am a slave launcher with limited functionality.
 
     Transcript notNil ifTrue:[
-	Transcript ~~ Stderr ifTrue:[
-	    isMainLauncher := (Transcript graphicsDevice == device).
-	    self enableDangerousMenuItemsInRemoteLauncher value: isMainLauncher.
-	] ifFalse:[
-	    isMainLauncher := true
-	]
+        Transcript ~~ Stderr ifTrue:[
+            isMainLauncher := (Transcript graphicsDevice == device).
+            self enableDangerousMenuItemsInRemoteLauncher value: isMainLauncher.
+        ] ifFalse:[
+            isMainLauncher := true
+        ]
     ] ifFalse:[
-	isMainLauncher := true
+        isMainLauncher := true
     ].
 
     super allButOpenInterface:anInterface.
@@ -4492,10 +4508,10 @@
 "/
 
     hMin := (aBuilder window margin * 2)
-	    + aBuilder menuBar preferredHeight
-	    + (aBuilder componentAt:#infoBarSubSpec) height
-	    + (aBuilder componentAt:#menuToolbarView) preferredHeight
-	    -3 "+ 8".   "/ I guess this is menuToolbar level abs + textCollector level abs...
+            + aBuilder menuBar preferredHeight
+            + (aBuilder componentAt:#infoBarSubSpec) height
+            + (aBuilder componentAt:#menuToolbarView) preferredHeight
+            -3 "+ 8".   "/ I guess this is menuToolbar level abs + textCollector level abs...
 
     win minExtent:( win minExtent x @ hMin ).
 
@@ -4509,46 +4525,46 @@
 "/    self windowGroup process priority:(Processor userSchedulingPriority + 1).
     Processor activeProcess priority:(Processor userSchedulingPriority + 1).
 
-    addMenuForToolInfo :=
-	[:eachToolInfo|
-	    |menuItem originalLabel|
-
-	    menuItem := eachToolInfo item.
-	    originalLabel := eachToolInfo originalLabel.
-	    originalLabel notNil ifTrue:[ menuItem label:originalLabel ].
-	    self
-		addMenuItem:menuItem
-		from:(eachToolInfo resourceProvider)
-		in:eachToolInfo where
-		position:eachToolInfo positionSpec
-		space:eachToolInfo space
-	].
+    addMenuForToolInfo := 
+        [:eachToolInfo|
+            |menuItem originalLabel|
+
+            menuItem := eachToolInfo item.
+            originalLabel := eachToolInfo originalLabel.
+            originalLabel notNil ifTrue:[ menuItem label:originalLabel ].
+            self 
+                addMenuItem:menuItem
+                from:(eachToolInfo resourceProvider)
+                in:eachToolInfo where
+                position:eachToolInfo positionSpec
+                space:eachToolInfo space
+        ].
 
     "/ add user tools
     UserAddedToolBarItems notNil ifTrue:[
-	toolInfo := UserAddedToolBarItems.
-	[
-	    UserAddedToolBarItems := nil.
-	     toolInfo do:addMenuForToolInfo.
-	] ifCurtailed:[
-	    UserAddedToolBarItems := toolInfo
-	]
+        toolInfo := UserAddedToolBarItems.
+        [
+            UserAddedToolBarItems := nil.
+             toolInfo do:addMenuForToolInfo.
+        ] ifCurtailed:[
+            UserAddedToolBarItems := toolInfo
+        ]
     ].
     UserAddedMenuItems notNil ifTrue:[
-	toolInfo := UserAddedMenuItems.
-	[
-	    UserAddedMenuItems := nil.
-	    toolInfo do:addMenuForToolInfo.
-	] ifCurtailed:[
-	    UserAddedMenuItems := toolInfo
-	]
+        toolInfo := UserAddedMenuItems.
+        [
+            UserAddedMenuItems := nil.
+            toolInfo do:addMenuForToolInfo.
+        ] ifCurtailed:[
+            UserAddedMenuItems := toolInfo
+        ]
     ].
 
     super postOpenWith:aBuilder.
 
     "/ set the time-block
     UserPreferences current showClockInLauncher ifTrue:[
-	self startClock
+        self startClock
     ].
 
     "Modified: / 16-11-2006 / 12:50:21 / cg"
@@ -4558,24 +4574,24 @@
     |answer|
 
     isMainLauncher ifFalse:[
-	"/ remote launchers may not finish ST/X
-
-	answer := Dialog
-		    confirmWithCancel:(resources string:'Really close %1 (slave)?' with:self class name)
-		    labels:(resources array:#('Cancel' 'Close'))
-		    values:#(nil true)
-		    default:1.
-	answer isNil ifTrue:[
-	    "/ cancel
-	    ^ false
-	].
-	^ true
+        "/ remote launchers may not finish ST/X
+
+        answer := Dialog 
+                    confirmWithCancel:(resources string:'Really close %1 (slave)?' with:self class name)
+                    labels:(resources array:#('Cancel' 'Close'))
+                    values:#(nil true)
+                    default:1.
+        answer isNil ifTrue:[
+            "/ cancel
+            ^ false
+        ].
+        ^ true
     ].
 
     ^ super requestForWindowClose
 !
 
-setupTranscript
+setupTranscript 
     "create the transcript view"
 
     |launcher oldLauncherClass|
@@ -4584,37 +4600,37 @@
     "/ if so, do not close the real launcher.
 
     (Transcript notNil and:[Transcript ~~ Stderr]) ifTrue:[
-	isMainLauncher ifTrue:[
-	    launcher := Transcript topView application
-	] ifFalse:[
-	    launcher := self class current.
-	].
-
-	(launcher notNil and:[launcher ~~ self]) ifTrue:[
-	    launcher window graphicsDevice == device ifTrue:[
-		OpenLaunchers notNil ifTrue:[
-		    OpenLaunchers remove:launcher ifAbsent:nil.
-		].
-		((oldLauncherClass := Smalltalk at:#Launcher) notNil
-		and:[oldLauncherClass isLoaded]) ifTrue: [
-		    oldLauncherClass openLaunchers remove:launcher ifAbsent:nil
-		].
-		launcher close
-	    ]
-	]
+        isMainLauncher ifTrue:[
+            launcher := Transcript topView application
+        ] ifFalse:[
+            launcher := self class current.
+        ].
+
+        (launcher notNil and:[launcher ~~ self]) ifTrue:[
+            launcher window graphicsDevice == device ifTrue:[
+                OpenLaunchers notNil ifTrue:[
+                    OpenLaunchers remove:launcher ifAbsent:nil.
+                ].
+                ((oldLauncherClass := Smalltalk at:#Launcher) notNil 
+                and:[oldLauncherClass isLoaded]) ifTrue: [
+                    oldLauncherClass openLaunchers remove:launcher ifAbsent:nil
+                ].
+                launcher close
+            ]
+        ]
     ].
 
     transcript := self transcriptView. "/ (self componentAt: #transcriptView) subViews first.
 
     isMainLauncher ifTrue:[
-	transcript beTranscript.
+        transcript beTranscript.
     ] ifFalse:[
-	transcript showCR:'**************** Notice ***********************'.
-	transcript showCR:'**       this is NOT the Transcript          **'.
-	transcript showCR:'** The real Transcript is on the main screen **'.
-	transcript showCR:'**                                           **'.
-	transcript showCR:'** Menus affecting common state are disabled **'.
-	transcript showCR:'***********************************************'.
+        transcript showCR:'**************** Notice ***********************'.
+        transcript showCR:'**       this is NOT the Transcript          **'.
+        transcript showCR:'** The real Transcript is on the main screen **'.
+        transcript showCR:'**                                           **'.
+        transcript showCR:'** Menus affecting common state are disabled **'.
+        transcript showCR:'***********************************************'.
     ]
 
     "Modified: / 5.3.1999 / 18:00:36 / cg"
@@ -4628,6 +4644,7 @@
     Project notNil ifTrue:[Project removeDependent:self]
 ! !
 
+
 !NewLauncher methodsFor:'user actions-classes'!
 
 enableGlobalCoverageAnalysis
@@ -4638,7 +4655,7 @@
 
 openMethodFinder
     "open the methodFinder (ported from squeak)"
-
+    
     self openApplication:'MethodFinderWindow'
     "/ MethodFinderWindow open
 
@@ -4648,9 +4665,9 @@
 openTranscriptDebugDialog
     |pattern|
 
-    pattern := Dialog
-		request:('Enter GLOB matchpattern for message text\(Breakpoint if matching text is sent to the Transcript)\\Empty to disable, * for any text.' withCRs)
-		initialAnswer:(Transcript class debugSendersOfMessagePattern).
+    pattern := Dialog 
+                request:('Enter GLOB matchpattern for message text\(Breakpoint if matching text is sent to the Transcript)\\Empty to disable, * for any text.' withCRs)
+                initialAnswer:(Transcript class debugSendersOfMessagePattern).
     pattern isNil ifTrue:[^ self].
 
     Transcript class debugSendersOfMessagePattern:pattern
@@ -4661,9 +4678,9 @@
 openTranscriptTraceDialog
     |pattern|
 
-    pattern := Dialog
-		request:('Enter GLOB matchpattern for message text\(Trace who sends matching text to the Transcript)\\Empty to disable, * for any.' withCRs)
-		initialAnswer:(Transcript class traceSendersOfMessagePattern).
+    pattern := Dialog 
+                request:('Enter GLOB matchpattern for message text\(Trace who sends matching text to the Transcript)\\Empty to disable, * for any.' withCRs)
+                initialAnswer:(Transcript class traceSendersOfMessagePattern).
     pattern isNil ifTrue:[^ self].
 
     Transcript class traceSendersOfMessagePattern:pattern
@@ -4672,8 +4689,8 @@
 !
 
 startBrowserOnChangesOnSmallTeamHost:aHostName
-    (UserPreferences current changeSetBrowserClass)
-	openOn:(SmallTeam changesOnHost:aHostName)
+    (UserPreferences current changeSetBrowserClass) 
+        openOn:(SmallTeam changesOnHost:aHostName)
 
     "Created: / 12-11-2006 / 16:07:12 / cg"
     "Modified: / 01-07-2011 / 16:46:48 / cg"
@@ -4698,6 +4715,7 @@
     DebugView stopIgnoringHalts
 ! !
 
+
 !NewLauncher methodsFor:'user actions-demos'!
 
 openDemo:className
@@ -4710,7 +4728,7 @@
 !
 
 openMandelbrotDemo
-    self openDemo:#ComplexIterationView
+    self openDemo:#ComplexIterationView 
 
     "Created: / 8.7.1998 / 20:36:37 / cg"
 !
@@ -4740,19 +4758,19 @@
 
     cls := self findApplicationClass:className nameSpace:Demos.
     cls isNil ifTrue:[
-	^ self
+        ^ self
     ].
 
     Autoload autoloadFailedSignal handle:[:ex |
-	self warn:(resources string:'Sorry, the %1 class seems to be not available.' with:cls name)
+        self warn:(resources string:'Sorry, the %1 class seems to be not available.' with:cls name)
     ] do:[
-	self withWaitCursorDo:[
-	    cls isRunning ifTrue:[
-		cls stop
-	    ] ifFalse:[
-		cls start
-	    ]
-	]
+        self withWaitCursorDo:[
+            cls isRunning ifTrue:[
+                cls stop
+            ] ifFalse:[
+                cls start
+            ]
+        ]
     ]
 !
 
@@ -4762,6 +4780,7 @@
     self openApplication:'TicTacToeGame' nameSpace:Games with:#open2UserGame
 ! !
 
+
 !NewLauncher methodsFor:'user actions-file'!
 
 clearTranscript
@@ -4774,9 +4793,9 @@
     "save image"
 
     [
-	self saveImageAs:ObjectMemory nameForSnapshot.
+        self saveImageAs:ObjectMemory nameForSnapshot.
     ] on:SnapshotError do:[:ex|
-	self warn:ex description.
+        self warn:ex description.
     ]
 !
 
@@ -4785,31 +4804,32 @@
 
     |imageFilename|
 
-    imageFilename := Dialog
-			requestFileName:(resources string:'Save Image As')
-			default:ObjectMemory nameForSnapshot
-			pattern:'*.img'
-			fromDirectory:Filename currentDirectory.
+    imageFilename := Dialog 
+                        requestFileName:(resources string:'Save Image As') 
+                        default:ObjectMemory nameForSnapshot
+                        pattern:'*.img'
+                        fromDirectory:Filename currentDirectory.
 
     imageFilename notNil ifTrue:[
-	[
-	    self saveImageAs:imageFilename
-	] on:SnapshotError do:[:ex|
-	    self warn:ex description.
-	].
+        [
+            self saveImageAs:imageFilename
+        ] on:SnapshotError do:[:ex|
+            self warn:ex description.
+        ].
     ].
 ! !
 
+
 !NewLauncher methodsFor:'user actions-help'!
 
 activeHelp
 
     helpIsOn isNil ifTrue:[
-	helpIsOn := PluggableAdaptor new
-			getBlock:[:m | UserPreferences current flyByHelpActive]
-			putBlock:[:m :newValue | UserPreferences current flyByHelpActive:newValue]
-			updateBlock:[:m :aspect :param | true].
-	"/ helpIsOn addDependent:self.
+        helpIsOn := PluggableAdaptor new
+                        getBlock:[:m | UserPreferences current flyByHelpActive] 
+                        putBlock:[:m :newValue | UserPreferences current flyByHelpActive:newValue] 
+                        updateBlock:[:m :aspect :param | true].
+        "/ helpIsOn addDependent:self.
     ].
     ^ helpIsOn
 !
@@ -4822,6 +4842,7 @@
     "Modified: / 18.8.1998 / 16:06:27 / cg"
 ! !
 
+
 !NewLauncher methodsFor:'user actions-system'!
 
 initJavaVM
@@ -4834,10 +4855,10 @@
     "open an interruptLatencyMonitor view"
 
     InterruptLatencyMonitor notNil ifTrue:[
-	Autoload autoloadFailedSignal catch:[
-	    InterruptLatencyMonitor open.
-	    ^ self.
-	].
+        Autoload autoloadFailedSignal catch:[
+            InterruptLatencyMonitor open.
+            ^ self.
+        ].
     ].
     self warn:'Sorry - the irq latency monitor is not available
 in this release'.
@@ -4847,10 +4868,10 @@
     "open an ProcessMonitor view"
 
     self openApplication:(
-	(UserPreferences current useProcessMonitorV2
-	and:[ProcessMonitorV2 notNil])
-	    ifTrue:['ProcessMonitorV2']
-	    ifFalse:['ProcessMonitor']).
+        (UserPreferences current useProcessMonitorV2
+        and:[ProcessMonitorV2 notNil]) 
+            ifTrue:['ProcessMonitorV2']
+            ifFalse:['ProcessMonitor']).
 !
 
 startSQLWorkspace
@@ -4861,19 +4882,21 @@
     "Toggle history manager usage."
 
     HistoryManager isActive
-	ifTrue: [HistoryManager deactivate]
-	ifFalse: [HistoryManager activate]
+        ifTrue: [HistoryManager deactivate]
+        ifFalse: [HistoryManager activate]
 
     "Created: / 20-06-2004 / 16:08:09 / masca"
     "Modified: / 20-04-2005 / 18:59:28 / janfrog"
 ! !
 
+
 !NewLauncher methodsFor:'user actions-windows'!
 
 redrawAllWindows
     device redrawAllWindows.
 ! !
 
+
 !NewLauncher::AddedToolInfo methodsFor:'accessing'!
 
 before
@@ -4941,6 +4964,7 @@
     where := something.
 ! !
 
+
 !NewLauncher class methodsFor:'documentation'!
 
 version
--- a/OldLauncher.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/OldLauncher.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1046,5 +1046,5 @@
 !OldLauncher class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/OldLauncher.st,v 1.42 2001-09-10 13:45:26 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/OldLauncher.st,v 1.42 2001/09/10 13:45:26 cg Exp $'
 ! !
--- a/OrderedCollectionInspectorView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/OrderedCollectionInspectorView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -44,6 +44,7 @@
 
 ! !
 
+
 !OrderedCollectionInspectorView methodsFor:'menu'!
 
 fieldMenu
@@ -122,6 +123,7 @@
     "Modified: / 06-08-2012 / 09:01:56 / cg"
 ! !
 
+
 !OrderedCollectionInspectorView methodsFor:'private'!
 
 baseInspectedObjectClass
@@ -164,6 +166,7 @@
     "Created: / 13-06-2012 / 10:13:16 / cg"
 ! !
 
+
 !OrderedCollectionInspectorView methodsFor:'user interaction'!
 
 indexedValueAtIndex:idx
@@ -189,6 +192,7 @@
     ]
 ! !
 
+
 !OrderedCollectionInspectorView class methodsFor:'documentation'!
 
 version
@@ -197,4 +201,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/OrderedCollectionInspectorView.st,v 1.48 2012-08-06 07:02:02 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: OrderedCollectionInspectorView.st 8048 2012-09-07 17:28:09Z vranyj1 $'
 ! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ParseTreeIndex.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,278 @@
+"
+ 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' }"
+
+SortedCollection subclass:#ParseTreeIndex
+	instanceVariableNames:'tree'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-CodeView-Syntax'
+!
+
+Magnitude subclass:#Element
+	instanceVariableNames:'next prev node'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:ParseTreeIndex
+!
+
+!ParseTreeIndex 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.
+"
+!
+
+documentation
+"
+    For given parse tree, a ParseTreeIndex provides an
+    fast access to individual (leave) nodes by keeping
+    an index. Used by CodeView2 for various queries
+
+    Experimental
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!ParseTreeIndex methodsFor:'accessing'!
+
+tree
+    ^ tree
+!
+
+tree:aParseNode
+    tree := aParseNode.
+! !
+
+!ParseTreeIndex methodsFor:'utilities'!
+
+newElementFor: aParseNode
+
+    ^(Element new node: aParseNode)
+
+    "Created: / 16-02-2012 / 21:00:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ParseTreeIndex::Element class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
+              All Rights Reserved
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the 'Software'), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+"
+! !
+
+!ParseTreeIndex::Element methodsFor:'accessing'!
+
+firstElementInChain
+    |first prev|
+
+    first := self.
+    [ (prev := first previousElement) notNil ] whileTrue:[
+        first := prev.
+    ].
+    ^ first
+
+    "Created: / 21-08-2011 / 09:51:35 / cg"
+!
+
+next
+    ^ next
+!
+
+next:aSyntaxElement
+    next := aSyntaxElement.
+    next prev: self.
+
+    "Modified: / 14-02-2010 / 17:44:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+nextElement
+    ^ next
+
+    "Created: / 21-08-2011 / 09:47:11 / cg"
+!
+
+nextElement:aSyntaxElement
+    next := aSyntaxElement.
+    next prev: self.
+
+    "Modified: / 14-02-2010 / 17:44:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-08-2011 / 09:47:15 / cg"
+!
+
+node
+    ^ node
+!
+
+node:something
+    node := something.
+!
+
+prev
+    ^ prev
+!
+
+prev:aSyntaxElement
+    prev := aSyntaxElement.
+!
+
+previousElement
+    ^ prev
+
+    "Created: / 21-08-2011 / 09:47:23 / cg"
+!
+
+previousElement:aSyntaxElement
+    prev := aSyntaxElement.
+
+    "Created: / 21-08-2011 / 09:47:28 / cg"
+!
+
+start
+    ^ node startPosition
+
+    "Modified: / 16-02-2012 / 20:56:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+stop
+    ^ node endPosition
+
+    "Modified: / 16-02-2012 / 20:56:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ParseTreeIndex::Element methodsFor:'comparing'!
+
+< anObject
+
+    anObject isNumber ifTrue:[^self stop < anObject].
+    anObject class == self class ifFalse:[^false].
+
+    ^self stop < anObject start
+
+    "Created: / 14-02-2010 / 13:39:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+= anObject
+
+    anObject class == self class ifFalse:[^false].
+
+    ^self start == (anObject start) and:
+        [self stop == (anObject stop) and:
+            [self node class == (anObject node class)]].
+
+    "Created: / 14-02-2010 / 13:33:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hash
+
+    ^self start hash bitXor:[self stop hash bitXor:[node class hash]].
+
+    "Created: / 14-02-2010 / 13:30:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ParseTreeIndex::Element methodsFor:'double dispatching'!
+
+lessFromInteger:anInteger
+
+    ^self stop < anInteger
+
+    "Created: / 14-02-2010 / 13:49:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ParseTreeIndex::Element methodsFor:'printing & storing'!
+
+printOn:aStream
+    "append a printed representation if the receiver to the argument, aStream"
+
+    super printOn:aStream.
+    aStream nextPutAll:'('.
+    node class name printOn: aStream.
+    aStream nextPut:$).
+
+    "Modified: / 21-08-2011 / 09:33:51 / cg"
+    "Modified: / 16-02-2012 / 19:23:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ParseTreeIndex::Element methodsFor:'queries'!
+
+isSelector
+    ^ node class == SelectorNode
+
+    "Created: / 21-08-2011 / 09:09:19 / cg"
+    "Modified: / 16-02-2012 / 21:04:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isSelf
+    ^ node isSelf
+
+    "Created: / 21-08-2011 / 09:31:20 / cg"
+    "Modified: / 16-02-2012 / 19:25:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isVariable
+    ^ node isVariable
+
+    "Created: / 21-08-2011 / 09:09:00 / cg"
+    "Modified: / 16-02-2012 / 19:24:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isVariableOrSelf
+    ^ self isVariable or:[self isSelf]
+
+    "Created: / 21-08-2011 / 09:31:33 / cg"
+! !
+
+!ParseTreeIndex class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: ParseTreeIndex.st 7911 2012-02-22 09:55:48Z vranyj1 $'
+! !
--- a/PerforceSourceCodeManagementSettingsAppl.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/PerforceSourceCodeManagementSettingsAppl.st	Wed Jan 30 11:15:09 2013 +0000
@@ -54,6 +54,7 @@
 "
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -165,6 +166,7 @@
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[255 207 52 214 168 55 233 238 244 117 121 125 215 219 225 217 222 228 166 169 170 185 189 193 118 113 66 175 127 29 172 137 46 183 143 46 186 146 50 149 132 77 212 161 47 102 106 106 233 202 75 244 197 63 237 243 249 253 208 64 244 197 65 116 121 116 236 242 248 141 145 139 212 219 146 193 198 148 232 179 53 146 149 152 164 168 171 127 97 27 138 106 37 200 204 209 180 136 36 187 140 37 209 152 33 214 218 223 219 166 45 223 228 234 240 194 60 240 194 64 138 131 107 230 183 62 239 191 65 230 184 63 120 122 121 213 164 49 232 237 244 104 109 109 251 215 73 225 231 235 162 166 166 180 184 188 153 111 25 175 126 27 185 134 29 186 141 39 223 228 223 217 221 226 223 227 230 232 237 235 255 235 80 227 199 81 236 241 247 232 185 63 253 216 78 253 217 79 131 135 134 230 234 240 215 159 40 232 182 60 216 221 223 96 97 95 154 158 159 178 183 183 144 110 31 199 204 209 163 130 45 175 133 40 205 150 34 203 156 46 134 121 82 223 172 50 228 233 234 232 183 60 236 243 248 253 216 79 254 241 108 123 127 129 233 184 62 255 196 50 232 182 57 118 122 120 216 220 226 211 164 51 161 167 160 102 81 27 139 107 33 147 120 48 166 132 45 167 134 50 212 217 221 94 100 98 227 233 231 224 229 234 228 183 56 253 208 63 237 243 247 238 243 250 231 235 242 234 239 246 254 208 63 240 194 65 216 168 53 114 120 119 217 221 227 148 152 153 227 232 238 178 182 180 143 110 31 171 125 28 118 105 65 173 137 46 205 150 33 214 159 37 224 166 38 221 167 46 223 170 49 231 179 56 235 239 244 245 203 72 238 190 64 233 181 58 232 184 62 128 131 126 255 230 77 215 162 44 117 121 122 222 227 232 203 152 38 150 153 155 172 176 177 132 102 33 154 121 40 147 118 49 101 101 82 228 233 221 255 235 71 227 233 230 211 164 52 228 233 237 227 181 61 244 196 63 237 242 248 233 182 59 234 184 60 236 241 248 255 205 50 214 166 51 222 226 230 195 202 151 229 233 240 153 156 155 168 172 176 138 101 24 157 117 33 119 99 56 219 225 216 184 158 61 139 130 81 100 101 96 144 149 103 225 175 53 149 154 112 245 200 66 246 202 71 232 184 63 233 183 61 131 134 130 0 0 0 0 64 0 32 96 32 96 192 128 32 128 64 32 160 64 32 128 32 64 64 64 96 96 96 128 128 128 32 32 32 32 64 32]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@C@@@C@@@CA<@CA?OCA??CA??CA??CA??CA??CA?>CC?.CG??CG??#_/?#ON^CF_^C@?LCHL@CG<@CC8@C@@@C') ; yourself); yourself]
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -457,6 +459,7 @@
       )
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl class methodsFor:'menu specs'!
 
 menuPerModule
@@ -488,6 +491,7 @@
       )
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl class methodsFor:'queries'!
 
 managerClass
@@ -498,6 +502,7 @@
     "Created: / 19-04-2011 / 12:52:02 / cg"
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl class methodsFor:'tableColumns specs'!
 
 tableColumns
@@ -543,6 +548,7 @@
     
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl methodsFor:'actions'!
 
 addModule:aModuleManager
@@ -705,6 +711,7 @@
     self updateModifiedChannel.
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl methodsFor:'aspects'!
 
 checkLabel
@@ -808,6 +815,7 @@
     ^ verboseSourceCodeAccess.
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl methodsFor:'change & update'!
 
 selectedPerModuleRootChanged
@@ -836,6 +844,7 @@
     "Modified: / 09-11-2006 / 14:41:10 / cg"
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl methodsFor:'help'!
 
 helpFilename
@@ -844,6 +853,7 @@
     "Modified: / 05-08-2011 / 09:10:03 / cg"
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl methodsFor:'initialization & release'!
 
 initialize
@@ -857,6 +867,7 @@
     "Modified: / 08-11-2006 / 19:20:32 / cg"
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl methodsFor:'queries'!
 
 hasManager
@@ -924,6 +935,7 @@
     ^ repositoryInfoPerModule
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl::ManagerPerModuleApp class methodsFor:'instance creation'!
 
 openFromSourceCodeManagementSettingsApp:something
@@ -936,6 +948,7 @@
     ^ inst
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl::ManagerPerModuleApp class methodsFor:'interface specs'!
 
 windowSpec
@@ -1094,6 +1107,7 @@
       )
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl::ManagerPerModuleApp methodsFor:'accessing'!
 
 canceled
@@ -1116,6 +1130,7 @@
     sourceCodeManagementSettingsApp := something.
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl::ManagerPerModuleApp methodsFor:'aspects'!
 
 acceptChannel
@@ -1191,6 +1206,7 @@
     ^ settingsHolder.
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl::ManagerPerModuleApp methodsFor:'initialization & release'!
 
 doCancel
@@ -1224,6 +1240,7 @@
     ^ super postOpenWith:aBuilder
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl::ModuleManager class methodsFor:'instance creation'!
 
 newForApplication:anApplication
@@ -1234,6 +1251,7 @@
     ^instance
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl::ModuleManager methodsFor:'accessing'!
 
 app
@@ -1299,6 +1317,7 @@
     ].
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl::ModuleManager methodsFor:'actions'!
 
 doubleClick
@@ -1312,6 +1331,7 @@
     self changed.
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl::ModuleManager methodsFor:'comparing'!
 
 < aModuleManager
@@ -1319,6 +1339,7 @@
     ^ self module < aModuleManager module
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl::ModuleManager methodsFor:'queries'!
 
 availableManagerTypeNames
@@ -1330,6 +1351,7 @@
     ^ AbstractSourceCodeManager availableManagers detect:[:cls | cls managerTypeName = manager] ifNone:[nil].
 ! !
 
+
 !PerforceSourceCodeManagementSettingsAppl class methodsFor:'documentation'!
 
 version
@@ -1343,3 +1365,4 @@
 version_SVN
     ^ '§Id§'
 ! !
+
--- a/PerforceSourceCodeManagerUtilities.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/PerforceSourceCodeManagerUtilities.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,3 +1,14 @@
+"
+ 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' }"
 
 SourceCodeManagerUtilities subclass:#PerforceSourceCodeManagerUtilities
@@ -41,6 +52,22 @@
 	privateIn:PerforceSourceCodeManagerUtilities::WorkSpace
 !
 
+!PerforceSourceCodeManagerUtilities 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.
+"
+! !
+
 
 !PerforceSourceCodeManagerUtilities class methodsFor:'class access'!
 
@@ -57,6 +84,7 @@
     "Created: / 01-06-2012 / 11:13:49 / cg"
 ! !
 
+
 !PerforceSourceCodeManagerUtilities methodsFor:'utilities-cvs'!
 
 checkinClass:aClass withInfo:aLogInfoOrNil withCheck:doCheckClass usingManager:managerOrNil
@@ -163,12 +191,14 @@
     "Created: / 21-12-2011 / 18:19:14 / cg"
 ! !
 
+
 !PerforceSourceCodeManagerUtilities methodsFor:'utilities-p4'!
 
 submit
     self defaultManager submit
 ! !
 
+
 !PerforceSourceCodeManagerUtilities methodsFor:'utilities-p4-interaction'!
 
 getCheckinInfoFor:aClassNameOrPackageNameString initialAnswer:initialAnswerOrNil withQuickOption:withQuickOption
@@ -197,6 +227,7 @@
     "Modified: / 06-07-2010 / 11:21:28 / cg"
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::P4CheckinInfoDialog class methodsFor:'documentation'!
 
 copyright
@@ -229,6 +260,7 @@
 "
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::P4CheckinInfoDialog class methodsFor:'interface specs'!
 
 windowSpec
@@ -374,6 +406,7 @@
       )
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::P4CheckinInfoDialog class methodsFor:'opening'!
 
 getCheckinInfoFor:aString initialAnswer:initialAnswer
@@ -441,6 +474,7 @@
     "Created: / 12-03-2012 / 12:36:26 / cg"
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::P4CheckinInfoDialog methodsFor:'accessing'!
 
 allowEmptyLogMessage
@@ -511,6 +545,7 @@
     ^ self quickCheckInVisibleHolder value:aBoolean
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::P4CheckinInfoDialog methodsFor:'aspects'!
 
 descriptionHolder
@@ -598,6 +633,7 @@
     "Created: / 06-07-2010 / 11:30:29 / cg"
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::SubmitInfoDialog class methodsFor:'documentation'!
 
 copyright
@@ -630,6 +666,7 @@
 "
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::SubmitInfoDialog class methodsFor:'interface specs'!
 
 windowSpec
@@ -791,6 +828,7 @@
       )
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::SubmitInfoDialog class methodsFor:'opening'!
 
 getCheckinInfoFor:aClassNameOrPackageNameString initialAnswer:initialAnswer withFileList:fileList
@@ -867,6 +905,7 @@
     "Modified: / 06-07-2010 / 11:40:00 / cg"
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::SubmitInfoDialog methodsFor:'accessing'!
 
 allowEmptyLogMessage
@@ -941,6 +980,7 @@
     ^ self quickCheckInVisibleHolder value:aBoolean
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::SubmitInfoDialog methodsFor:'aspects'!
 
 descriptionHolder
@@ -1034,6 +1074,7 @@
     "Created: / 06-07-2010 / 11:30:29 / cg"
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::WorkSpace class methodsFor:'instance creation'!
 
 newWorkSpaceFor:aSettingsString  
@@ -1058,6 +1099,7 @@
     ^ workSpace newWorkSpaceForSettings:settingsDict
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::WorkSpace methodsFor:'accessing'!
 
 client
@@ -1125,6 +1167,7 @@
     ^ views
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::WorkSpace methodsFor:'actions'!
 
 addCheckIn:checkInDefinition submit:doSubmit
@@ -2474,6 +2517,7 @@
     ^true
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::WorkSpace methodsFor:'basic administration'!
 
 initialRevisionInfo:checkInDefinition
@@ -2570,6 +2614,7 @@
     ^versionInfo getVersionString
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::WorkSpace methodsFor:'command execution'!
 
 executePerforceCommand:perforceCommand inDirectory:dirArg 
@@ -2760,6 +2805,7 @@
     ^ commandStream contents.
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::WorkSpace methodsFor:'dialogs & helpers'!
 
 checkinTroubleDialog:title message:message log:log abortable:abortable option:optionTitle
@@ -2982,6 +3028,7 @@
 "
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::WorkSpace methodsFor:'initialization'!
 
 initialize
@@ -2989,6 +3036,7 @@
     PerforceCommandSemaphore := Semaphore new:10.
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::WorkSpace methodsFor:'queries'!
 
 getDepotPathForLocalPath:aFilename
@@ -3234,6 +3282,7 @@
     ^ 'stxCheckinWorkSpace_', self owner, self host.
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::WorkSpace methodsFor:'read'!
 
 getDefinitionFromServer
@@ -3355,6 +3404,7 @@
     self perforceSettings:settingsDict.
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::WorkSpace::View class methodsFor:'instance creation'!
 
 newFromLine:aLine workspace:aWorkspaceDefinition
@@ -3367,6 +3417,7 @@
     ^instance
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::WorkSpace::View methodsFor:'accessing'!
 
 depot
@@ -3408,6 +3459,7 @@
     workspace := something.
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::WorkSpace::View methodsFor:'queries'!
 
 getDepotPathForLocalPath:aFilename
@@ -3491,6 +3543,7 @@
     ^localPathName pathName 
 ! !
 
+
 !PerforceSourceCodeManagerUtilities::WorkSpace::View methodsFor:'reading'!
 
 newFromLine:aLine
@@ -3535,6 +3588,7 @@
 "
 ! !
 
+
 !PerforceSourceCodeManagerUtilities class methodsFor:'documentation'!
 
 version
@@ -3543,4 +3597,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/PerforceSourceCodeManagerUtilities.st,v 1.2 2012-10-30 14:33:38 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id:: PerforceSourceCodeManagerUtilities.st 8074 2012-11-30 17:23:39Z vranyj1                                                $'
 ! !
+
--- a/ProcessMonitor.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ProcessMonitor.st	Wed Jan 30 11:15:09 2013 +0000
@@ -777,5 +777,5 @@
 !ProcessMonitor class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ProcessMonitor.st,v 1.84 2007-10-05 09:53:00 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ProcessMonitor.st,v 1.84 2007/10/05 09:53:00 cg Exp $'
 ! !
--- a/ProcessMonitorV2.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ProcessMonitorV2.st	Wed Jan 30 11:15:09 2013 +0000
@@ -105,6 +105,7 @@
     "Created: / 14.1.2003 / 11:16:10 / penk"
 ! !
 
+
 !ProcessMonitorV2 class methodsFor:'instance creation'!
 
 openAllowNoModifications
@@ -117,6 +118,7 @@
     application allowModifications value:false.
 ! !
 
+
 !ProcessMonitorV2 class methodsFor:'defaults'!
 
 defaultLabel
@@ -130,6 +132,7 @@
     ^ 'ProcessMonitor'
 ! !
 
+
 !ProcessMonitorV2 class methodsFor:'help'!
 
 aboutThisApplicationText
@@ -240,6 +243,7 @@
     "Modified: / 05-06-2007 / 18:35:47 / cg"
 ! !
 
+
 !ProcessMonitorV2 class methodsFor:'image specs'!
 
 defaultIcon
@@ -710,6 +714,7 @@
 	ifAbsentPut:[(Depth1Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@]+X@@@@@]+X@@@@@]+X@@@@@]+X@@@@@@@@b') ; yourself); yourself]
 ! !
 
+
 !ProcessMonitorV2 class methodsFor:'interface specs'!
 
 windowSpec
@@ -863,6 +868,7 @@
       )
 ! !
 
+
 !ProcessMonitorV2 class methodsFor:'menu specs'!
 
 applicationMenu
@@ -1583,6 +1589,7 @@
       )
 ! !
 
+
 !ProcessMonitorV2 class methodsFor:'tableColumns specs'!
 
 tableColumns
@@ -1818,6 +1825,7 @@
       )
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'accessing'!
 
 visibleBlock
@@ -1828,6 +1836,7 @@
     visibleBlock := aProcessVisibleFilterBlock.
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'actions'!
 
 changeSelectionTo:aSelection
@@ -1946,6 +1955,7 @@
     "Modified: / 07-06-2007 / 12:38:29 / cg"
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'aspects'!
 
 currentSortOrder
@@ -2047,6 +2057,7 @@
     ^ updateListDelayTime.
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'aspects-column'!
 
 showApplication
@@ -2174,6 +2185,7 @@
     "Created: / 17-08-2011 / 10:46:47 / cg"
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'aspects-menu enabling'!
 
 allowModifications
@@ -2317,6 +2329,7 @@
     ^ selectionRestartable
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'change & update'!
 
 selectionChanged
@@ -2440,6 +2453,7 @@
     "Modified: / 17-08-2011 / 11:11:21 / cg"
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'event handling'!
 
 processEvent:anEvent
@@ -2465,6 +2479,7 @@
     ^ false
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'initialization & release'!
 
 commonPostOpen
@@ -2535,6 +2550,7 @@
     self startUpdateProcess.
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'menu accessing'!
 
 tableMenu
@@ -2558,6 +2574,7 @@
     "Modified: / 27-03-2007 / 08:43:43 / cg"
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'menu actions'!
 
 abortProcess
@@ -2672,6 +2689,7 @@
     self updateList.
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'menu actions-application'!
 
 closeApplication
@@ -2714,6 +2732,7 @@
     "Created: / 07-06-2007 / 12:42:09 / cg"
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'menu actions-debug'!
 
 browseApplication
@@ -2801,6 +2820,7 @@
     self selectedProcessesSend:#inspect
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'private queries'!
 
 isApplicationProcess:aProcess
@@ -2821,6 +2841,7 @@
     ^ nil
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'queries - table string'!
 
 getActiveStringFor:aProcess running:isRunning
@@ -3179,6 +3200,7 @@
     "Created: / 17-08-2011 / 11:01:21 / cg"
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'sorting'!
 
 sortProcessListBy:instanceName
@@ -3230,6 +3252,7 @@
    self viewedColumnsChanged.
 ! !
 
+
 !ProcessMonitorV2 methodsFor:'update process'!
 
 fillItemInformationIn:processItem
@@ -3590,6 +3613,7 @@
     ].
 ! !
 
+
 !ProcessMonitorV2::ProcessItem methodsFor:'accessing'!
 
 groupVal
@@ -3810,6 +3834,7 @@
     weakArrayWithProcesses := something.
 ! !
 
+
 !ProcessMonitorV2::ProcessItem methodsFor:'printing'!
 
 printOn:aStream
@@ -3819,6 +3844,7 @@
     aStream nextPut:$].
 ! !
 
+
 !ProcessMonitorV2 class methodsFor:'documentation'!
 
 version
@@ -3827,5 +3853,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/ProcessMonitorV2.st,v 1.63 2013-01-17 11:19:31 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: ProcessMonitorV2.st 8074 2012-11-30 17:23:39Z vranyj1 $'
 ! !
 
--- a/ProjectView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ProjectView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -769,5 +769,5 @@
 !ProjectView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/ProjectView.st,v 1.52 2007-01-23 18:19:38 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/ProjectView.st,v 1.52 2007/01/23 18:19:38 stefan Exp $'
 ! !
--- a/RCSConflictEditTextView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/RCSConflictEditTextView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -9,8 +9,6 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
-
-
 "{ Package: 'stx:libtool' }"
 
 EditTextView subclass:#RCSConflictEditTextView
@@ -154,5 +152,9 @@
 !RCSConflictEditTextView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/RCSConflictEditTextView.st,v 1.3 2006-07-05 07:42:02 fm Exp $'
+    ^ '$Id: RCSConflictEditTextView.st 8016 2012-07-18 09:57:46Z vranyj1 $'
+!
+
+version_SVN
+    ^ '$Id:: RCSConflictEditTextView.st 8016 2012-07-18 09:57:46Z vranyj1                                                           $'
 ! !
--- a/SemaphoreMonitor.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/SemaphoreMonitor.st	Wed Jan 30 11:15:09 2013 +0000
@@ -357,5 +357,5 @@
 !SemaphoreMonitor class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/SemaphoreMonitor.st,v 1.16 2002-11-15 11:40:40 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/SemaphoreMonitor.st,v 1.16 2002/11/15 11:40:40 cg Exp $'
 ! !
--- a/SetInspectorView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/SetInspectorView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -50,6 +50,7 @@
 "
 ! !
 
+
 !SetInspectorView methodsFor:'menu'!
 
 fieldMenu
@@ -76,6 +77,7 @@
     "Modified: / 29.10.1997 / 03:41:47 / cg"
 ! !
 
+
 !SetInspectorView methodsFor:'private'!
 
 baseInspectedObjectClass
@@ -153,6 +155,7 @@
     ^ false
 ! !
 
+
 !SetInspectorView methodsFor:'user interaction'!
 
 doRemoveKey
@@ -204,8 +207,14 @@
 
 ! !
 
+
 !SetInspectorView class methodsFor:'documentation'!
 
 version
     ^ '$Header: /cvs/stx/stx/libtool/SetInspectorView.st,v 1.26 2012-10-22 22:23:59 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: SetInspectorView.st 8074 2012-11-30 17:23:39Z vranyj1 $'
 ! !
+
--- a/SettingsDialog.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/SettingsDialog.st	Wed Jan 30 11:15:09 2013 +0000
@@ -34,6 +34,13 @@
 	privateIn:SettingsDialog::HierarchicalApplicationList
 !
 
+AbstractSettingsApplication subclass:#SettingsFilenameAppl
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:SettingsDialog
+!
+
 !SettingsDialog class methodsFor:'documentation'!
 
 copyright
@@ -117,12 +124,14 @@
 "
 ! !
 
+
 !SettingsDialog class methodsFor:'initialization'!
 
 initialize
     AbstractSettingsApplication autoload.
 ! !
 
+
 !SettingsDialog class methodsFor:'accessing'!
 
 itemClass
@@ -130,6 +139,7 @@
     ^ SettingsDialog::HierarchicalApplicationList::ApplicationItem
 ! !
 
+
 !SettingsDialog class methodsFor:'application icons'!
 
 defaultSettingsAppIcon
@@ -169,6 +179,7 @@
     ^ self settingsIconOld.
 ! !
 
+
 !SettingsDialog class methodsFor:'defaults'!
 
 defaultIcon
@@ -189,6 +200,7 @@
         #('Memory'                              #'AbstractSettingsApplication::MemorySettingsAppl'              )
         #('Processor & Scheduler'               #'AbstractSettingsApplication::ProcessorSchedulerSettingsAppl'  )
         #('Tools'                               #'AbstractSettingsApplication::ToolsSettingsAppl'               )
+        #('Tools/Toolbox'                       #'AbstractSettingsApplication::ToolboxSettingsAppl'             )
         #('Tools/Editor'                        #'AbstractSettingsApplication::EditSettingsAppl'                )
         #('Tools/Editor/Code Editor 2'          #'Tools::CodeView2SettingsAppl'                                 )
         #('Tools/Editor/Syntax Color'           #'AbstractSettingsApplication::SyntaxColorSettingsAppl'         )
@@ -225,8 +237,8 @@
     ) asOrderedCollection
 
     "Modified: / 16-12-2002 / 18:12:28 / penk"
-    "Modified: / 26-07-2011 / 10:42:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 25-11-2011 / 15:28:42 / cg"
+    "Modified: / 14-02-2012 / 19:07:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 expandParents
@@ -241,6 +253,7 @@
     ^ AbstractLauncherApplication resourcePackName
 ! !
 
+
 !SettingsDialog class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -266,6 +279,7 @@
 )
 ! !
 
+
 !SettingsDialog class methodsFor:'interface specs'!
 
 windowSpec
@@ -452,6 +466,7 @@
       )
 ! !
 
+
 !SettingsDialog class methodsFor:'menu actions'!
 
 askForFileAndSaveSettings
@@ -478,8 +493,17 @@
 saveSettingsAsDefaultSettings
     | file |
 
-    file := Filename currentDirectory construct:UserPreferences defaultSettingsFilename.
+    "JV@2012-02-07: Changed to save preferences back to file from which
+     they have been loaded (if known). If no such file is known,
+     save to DEFAULT USER SETTINGS file (default ~/.smalltalk/settings.rc)"
+
+    file := UserPreferences current at: #settingsFilename ifAbsent:[nil].
+    file isNil ifTrue:[
+        file := UserPreferences defaultUserSettingsFile.
+    ].
     self saveSettingsTo:file.
+
+    "Modified: / 07-02-2012 / 00:45:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 saveSettingsTo:file
@@ -497,6 +521,7 @@
     self saveSettingsAsDefaultSettings.
 ! !
 
+
 !SettingsDialog class methodsFor:'menu specs'!
 
 mainMenu
@@ -564,6 +589,7 @@
       )
 ! !
 
+
 !SettingsDialog methodsFor:'accessing'!
 
 requestor
@@ -604,6 +630,7 @@
     "Modified: / 15-10-2011 / 12:06:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !SettingsDialog methodsFor:'actions'!
 
 changeLabelTo:aLabel application:aApplication
@@ -711,6 +738,7 @@
     ^ true
 ! !
 
+
 !SettingsDialog methodsFor:'application list access'!
 
 addApplClass:aClass forApplication:anApplication label:aLabel expand:aBoolean
@@ -1051,6 +1079,7 @@
     item sort:[:a :b| a label < b label].
 ! !
 
+
 !SettingsDialog methodsFor:'application list access-private'!
 
 addCategoriesFor:aName
@@ -1217,6 +1246,7 @@
     self treeName:aName butLast:0 do:aBlock
 ! !
 
+
 !SettingsDialog methodsFor:'aspects'!
 
 applicationList
@@ -1279,6 +1309,7 @@
     "Created: / 25-01-2007 / 17:13:50 / cg"
 ! !
 
+
 !SettingsDialog methodsFor:'change & update'!
 
 modifiedChanged
@@ -1320,6 +1351,9 @@
     ].
 
     item := self selectedItem value.
+
+    item isNil ifTrue:[ item := applicationList root ].
+
     lastSelection := item.
     noApp := (item isNil) ifTrue:true ifFalse:[item isCategory].
     self enableOK value:(noApp not).
@@ -1380,6 +1414,7 @@
     self modifiedChanged.
 
     "Modified: / 29-10-2010 / 11:51:13 / cg"
+    "Modified: / 17-02-2012 / 10:24:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 update:something with:aParameter from:changedObject
@@ -1398,6 +1433,7 @@
     super update:something with:aParameter from:changedObject
 ! !
 
+
 !SettingsDialog methodsFor:'initialization & release'!
 
 closeRequest
@@ -1427,9 +1463,11 @@
     rootItem label:lbl "allBold".
     rootItem nameString:lbl.
     rootItem icon:self class settingsIcon.
+    rootItem applicationClass: SettingsFilenameAppl.
     ^ rootItem
 
     "Created: / 03-11-2007 / 14:22:01 / cg"
+    "Modified: / 07-02-2012 / 01:03:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 initialize
@@ -1458,6 +1496,7 @@
     "Modified: / 03-10-2011 / 16:27:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !SettingsDialog methodsFor:'menu actions'!
 
 askForFileAndSaveSettings
@@ -1507,6 +1546,7 @@
     self class saveSettingsWithoutAskingForFile.
 ! !
 
+
 !SettingsDialog::HierarchicalApplicationList::ApplicationItem methodsFor:'accessing'!
 
 application
@@ -1551,6 +1591,7 @@
     nameString := something.
 ! !
 
+
 !SettingsDialog::HierarchicalApplicationList::ApplicationItem methodsFor:'menu'!
 
 middleButtonMenu
@@ -1563,6 +1604,7 @@
     ^ application settingsDialogPopUpMenu
 ! !
 
+
 !SettingsDialog::HierarchicalApplicationList::ApplicationItem methodsFor:'printing & storing'!
 
 displayString
@@ -1584,6 +1626,7 @@
     ^ super printString, ' [', (label isText ifTrue:[label string] ifFalse:[label]) ,']'
 ! !
 
+
 !SettingsDialog::HierarchicalApplicationList::ApplicationItem methodsFor:'queries'!
 
 canCollapse
@@ -1596,6 +1639,155 @@
     ^ self applicationClass isNil
 ! !
 
+
+!SettingsDialog::SettingsFilenameAppl 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:SettingsDialog::SettingsFilenameAppl andSelector:#windowSpec
+     SettingsDialog::SettingsFilenameAppl new openInterface:#windowSpec
+     SettingsDialog::SettingsFilenameAppl open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: 'Settings File'
+          name: 'Settings File'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'Preferences are stored in file:'
+              name: 'Label1'
+              layout: (LayoutFrame 0 0 -30 0.5 0 1 0 0.5)
+              translateLabel: true
+            )
+           (LinkButtonSpec
+              label: 'LinkButton'
+              name: 'EditPreferences'
+              layout: (LayoutFrame 0 0 0 0.5 0 1 30 0.5)
+              foregroundColor: (Color 0.0 0.0 100.0)
+              translateLabel: true
+              labelChannel: settingsFilenameAspect
+              model: openSettingsFile
+            )
+           (ActionButtonSpec
+              label: 'Edit'
+              name: 'Button1'
+              layout: (LayoutFrame -120 1 60 0.5 -20 1 85 0.5)
+              translateLabel: true
+              model: openSettingsFile
+            )
+           (ActionButtonSpec
+              label: 'Reload'
+              name: 'Button2'
+              layout: (LayoutFrame -230 1 60 0.5 -130 1 85 0.5)
+              translateLabel: true
+              model: reloadSettingsFile
+            )
+           )
+         
+        )
+      )
+! !
+
+
+!SettingsDialog::SettingsFilenameAppl methodsFor:'aspects'!
+
+settingsFilenameAspect
+
+    | filename |
+
+    filename := UserPreferences current 
+                    at:#settingsFilename      
+                    ifAbsent:[UserPreferences defaultUserSettingsFile pathName].
+    ^filename asText
+"/        colorizeAllWith: Color blue;
+"/        actionForAll:[ self openSettingsFile: filename ].
+
+    "Created: / 07-02-2012 / 01:08:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
+!SettingsDialog::SettingsFilenameAppl methodsFor:'private'!
+
+openSettingsFile
+    | filename |
+
+    filename := UserPreferences current 
+                    at:#settingsFilename      
+                    ifAbsent:[UserPreferences defaultUserSettingsFile pathName].
+    self openSettingsFile: filename
+
+    "Created: / 07-02-2012 / 11:15:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+openSettingsFile: filename 
+
+    UserPreferences current fileBrowserClass
+        openOnFileNamed:filename editing:true
+
+    "Created: / 07-02-2012 / 01:08:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+reloadSettingsFile
+    | filename |
+
+    filename := UserPreferences current 
+                    at:#settingsFilename      
+                    ifAbsent:[UserPreferences defaultUserSettingsFile pathName].
+    self reloadSettingsFile: filename
+
+    "Created: / 17-02-2012 / 10:26:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+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>"
+! !
+
+
+!SettingsDialog::SettingsFilenameAppl methodsFor:'protocol'!
+
+basicReadSettings
+    ^self
+
+    "Modified: / 07-02-2012 / 01:02:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+basicSaveSettings
+    ^self
+
+    "Modified: / 07-02-2012 / 01:03:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
+!SettingsDialog::SettingsFilenameAppl methodsFor:'queries'!
+
+hasUnsavedChanges
+    ^false
+
+    "Modified: / 07-02-2012 / 01:03:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
 !SettingsDialog class methodsFor:'documentation'!
 
 version
@@ -1610,4 +1802,5 @@
     ^ '§Id§'
 ! !
 
+
 SettingsDialog initialize!
--- a/SmalltalkCodeGeneratorTool.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/SmalltalkCodeGeneratorTool.st	Wed Jan 30 11:15:09 2013 +0000
@@ -45,6 +45,7 @@
 "
 ! !
 
+
 !SmalltalkCodeGeneratorTool class methodsFor:'code generation'!
 
 initialMenuSpecMethodSourceForApplications
@@ -180,6 +181,7 @@
         self initialWindowSpecForDialogs decodeAsLiteralArray prettyPrintString           
 ! !
 
+
 !SmalltalkCodeGeneratorTool class methodsFor:'code generation-menus'!
 
 createActionMethodFor:aSelector in:aClass category:aCategory redefine:redefine
@@ -254,6 +256,7 @@
     ^ code
 ! !
 
+
 !SmalltalkCodeGeneratorTool class methodsFor:'private'!
 
 methodNameTemplateFor:aSelector
@@ -275,6 +278,7 @@
     ^ method
 ! !
 
+
 !SmalltalkCodeGeneratorTool methodsFor:'code generation'!
 
 createClassInitializeMethodIn:aClass
@@ -1242,6 +1246,7 @@
     self executeCollectedChangesNamed:('Add Widget Code for ' , className).
 ! !
 
+
 !SmalltalkCodeGeneratorTool methodsFor:'code generation-basic'!
 
 createAccessMethodsFor:aCollectionOfVarNames in:aClass withChange:withChange asValueHolder:asValueHolder readersOnly:readersOnly writersOnly:writersOnly lazyInitialization:lazyInitialization
@@ -1553,6 +1558,7 @@
     self executeCollectedChangesNamed:('Add ValueHolder').
 ! !
 
+
 !SmalltalkCodeGeneratorTool methodsFor:'code generation-individual methods'!
 
 createAcceptVisitorMethod:selector in:aClass
@@ -1920,6 +1926,7 @@
     "Modified (comment): / 21-08-2012 / 11:54:57 / cg"
 ! !
 
+
 !SmalltalkCodeGeneratorTool methodsFor:'code templates'!
 
 anyApplicationClassInProjectOf:aClass
@@ -2439,6 +2446,7 @@
 '
 ! !
 
+
 !SmalltalkCodeGeneratorTool methodsFor:'private'!
 
 codeFor_shouldImplementFor:selector inClass:aClass
@@ -2505,6 +2513,7 @@
     ^ methodBodyStream contents
 ! !
 
+
 !SmalltalkCodeGeneratorTool class methodsFor:'documentation'!
 
 version
@@ -2518,3 +2527,4 @@
 version_SVN
     ^ '§Id§'
 ! !
+
--- a/SmalltalkInspectorView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/SmalltalkInspectorView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -70,9 +70,13 @@
 !SmalltalkInspectorView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/SmalltalkInspectorView.st,v 1.4 2010-03-03 11:16:38 cg Exp $'
+    ^ '$Id: SmalltalkInspectorView.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/SmalltalkInspectorView.st,v 1.4 2010-03-03 11:16:38 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/SmalltalkInspectorView.st,v 1.4 2010/03/03 11:16:38 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: SmalltalkInspectorView.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/SourceRevisionItem.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/SourceRevisionItem.st	Wed Jan 30 11:15:09 2013 +0000
@@ -129,5 +129,5 @@
 !SourceRevisionItem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/SourceRevisionItem.st,v 1.6 2000-02-18 14:08:16 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/SourceRevisionItem.st,v 1.6 2000/02/18 14:08:16 cg Exp $'
 ! !
--- a/StoreSourceCodeManagementSettingsAppl.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/StoreSourceCodeManagementSettingsAppl.st	Wed Jan 30 11:15:09 2013 +0000
@@ -53,6 +53,7 @@
 "
 ! !
 
+
 !StoreSourceCodeManagementSettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -81,6 +82,7 @@
 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[219 185 65 198 168 74 219 190 79 243 243 243 247 247 247 212 188 103 224 198 109 222 200 122 234 215 144 254 223 141 240 223 165 253 234 173 253 237 183 241 231 193 188 151 42 211 174 48 191 161 59 254 242 210 208 176 66 242 239 229 220 189 76 242 242 242 245 245 245 255 255 255 222 198 111 244 220 117 237 216 141 255 233 149 254 227 155 250 228 170 196 152 26 252 239 190 253 238 192 212 212 212 249 242 210 207 171 55 211 178 65 225 194 72 230 197 74 255 251 236 250 248 244 231 203 98 246 219 105 245 221 117 227 210 143 241 216 146 253 228 154 249 232 171 253 237 182 174 139 37 239 228 192 202 168 50 209 174 52 210 173 51 214 179 60 222 188 68 210 174 70 224 193 81 208 180 89 254 254 254 225 200 105 232 208 118 220 202 138 252 229 143 252 235 160 205 200 181 186 147 30 202 156 27 251 235 189 255 244 201 216 216 216 233 228 211 193 161 65 207 177 72 230 197 73 252 249 237 252 251 244 208 183 100 213 188 101 231 202 112 206 189 131 252 230 145 254 225 148 254 228 160 254 233 176 187 149 35 198 153 27 211 211 211 215 215 215 248 241 209 225 225 225 223 192 70 231 231 231 231 201 81 225 195 86 253 253 253 219 192 114 251 228 125 243 221 145 253 226 149 247 229 168 252 236 180 201 155 26 253 243 195 255 240 196 255 239 199 217 217 217 220 185 61 254 249 224 223 188 69 232 203 81 244 244 244 252 252 252 211 183 100 236 208 111 227 205 125 252 230 144 253 226 148 236 222 171 197 156 25 202 156 26 190 149 32 187 154 48 197 165 54 203 172 59 215 179 59 224 224 224 228 196 72 236 236 236 210 184 89 249 249 249 250 223 100 251 225 111 217 194 122 233 215 148 246 222 149 253 230 161 186 145 25 200 158 27 251 236 189 209 209 209 205 168 48 218 218 218 208 177 64 0 0 0 0 64 0 32 96 32 96 192 128 32 128 64 32 160 64 32 128 32 64 64 64 96 96 96 128 128 128 32 32 32 32 64 32]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@O0@@?<@A?>@A??@A??@A??@A??@A??@A??@C??@C??@O??@G??@C??@@??@D_>@C>@@A<@@@@@@') ; yourself); yourself]
 ! !
 
+
 !StoreSourceCodeManagementSettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -494,6 +496,7 @@
       )
 ! !
 
+
 !StoreSourceCodeManagementSettingsAppl class methodsFor:'queries'!
 
 managerClass
@@ -504,6 +507,7 @@
     "Created: / 19-04-2011 / 12:48:57 / cg"
 ! !
 
+
 !StoreSourceCodeManagementSettingsAppl methodsFor:'actions'!
 
 addModule:module withData:data
@@ -617,6 +621,7 @@
     "Modified: / 16-08-2006 / 11:07:51 / cg"
 ! !
 
+
 !StoreSourceCodeManagementSettingsAppl methodsFor:'actions - store'!
 
 addPerStoreModuleDB
@@ -722,6 +727,7 @@
     ^ true
 ! !
 
+
 !StoreSourceCodeManagementSettingsAppl methodsFor:'aspects'!
 
 acceptChannel
@@ -943,6 +949,7 @@
     ^ useManager.
 ! !
 
+
 !StoreSourceCodeManagementSettingsAppl methodsFor:'change & update'!
 
 selectedPerModuleRootChanged
@@ -1052,6 +1059,7 @@
                and:[ perStoreModulePasswordHolder value notEmptyOrNil ]]).
 ! !
 
+
 !StoreSourceCodeManagementSettingsAppl methodsFor:'help'!
 
 helpFilename
@@ -1060,6 +1068,7 @@
     "Modified: / 05-08-2011 / 09:20:28 / cg"
 ! !
 
+
 !StoreSourceCodeManagementSettingsAppl methodsFor:'initialization & release'!
 
 initialize
@@ -1087,6 +1096,7 @@
     "Modified: / 14-01-2012 / 20:28:30 / cg"
 ! !
 
+
 !StoreSourceCodeManagementSettingsAppl methodsFor:'queries'!
 
 cvsRootFromCVSRootFileOrNil
@@ -1141,6 +1151,7 @@
     "Modified: / 10-01-2012 / 00:31:49 / cg"
 ! !
 
+
 !StoreSourceCodeManagementSettingsAppl class methodsFor:'documentation'!
 
 version
@@ -1154,3 +1165,4 @@
 version_SVN
     ^ '§Id§'
 ! !
+
--- a/SyntaxElement.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/SyntaxElement.st	Wed Jan 30 11:15:09 2013 +0000
@@ -62,6 +62,7 @@
 "
 ! !
 
+
 !SyntaxElement class methodsFor:'instance creation'!
 
 from: start to: stop
@@ -94,6 +95,7 @@
     "Created: / 14-02-2010 / 17:41:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !SyntaxElement methodsFor:'accessing'!
 
 firstElementInChain
@@ -195,6 +197,7 @@
     value := anObject.
 ! !
 
+
 !SyntaxElement methodsFor:'comparing'!
 
 < anObject
@@ -225,6 +228,7 @@
     "Modified (format): / 27-07-2012 / 21:53:28 / cg"
 ! !
 
+
 !SyntaxElement methodsFor:'double dispatching'!
 
 lessFromInteger:anInteger
@@ -234,6 +238,7 @@
     "Modified (format): / 27-07-2012 / 21:53:33 / cg"
 ! !
 
+
 !SyntaxElement methodsFor:'printing & storing'!
 
 printOn:aStream
@@ -250,6 +255,7 @@
     "Modified: / 21-08-2011 / 09:33:51 / cg"
 ! !
 
+
 !SyntaxElement methodsFor:'queries'!
 
 isSelector
@@ -276,8 +282,13 @@
     "Created: / 21-08-2011 / 09:31:33 / cg"
 ! !
 
+
 !SyntaxElement class methodsFor:'documentation'!
 
+version
+    ^ '$Id: SyntaxElement.st 8048 2012-09-07 17:28:09Z vranyj1 $'
+!
+
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/SyntaxElement.st,v 1.5 2013-01-11 09:56:30 cg Exp $'
 !
--- a/SyntaxHighlighter2.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/SyntaxHighlighter2.st	Wed Jan 30 11:15:09 2013 +0000
@@ -26,7 +26,8 @@
 "{ Package: 'stx:libtool' }"
 
 SyntaxHighlighter subclass:#SyntaxHighlighter2
-	instanceVariableNames:'elements lastVariableElements lastSelectorElement'
+	instanceVariableNames:'elements lastVariableElements lastSelectorElement
+		ignoreBadIdentifier'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-CodeView-Syntax'
@@ -62,6 +63,7 @@
 "
 ! !
 
+
 !SyntaxHighlighter2 class methodsFor:'highlighting'!
 
 formatClassDefinition:aString in:aClass elementsInto: elements
@@ -210,36 +212,46 @@
     "Created: / 05-07-2011 / 10:39:21 / cg"
 ! !
 
+
 !SyntaxHighlighter2 methodsFor:'accessing'!
 
 elements
     ^ elements
 !
 
-elements:something
+elements:aParseTreeIndex
     "the element collection, to collect variables, selectors etc. into"
 
-    elements := something.
+    elements := aParseTreeIndex.
 
     "Modified (comment): / 21-08-2011 / 09:13:31 / cg"
+!
+
+tree: aParseNode
+    super tree: aParseNode.
+    elements tree: aParseNode
+
+    "Created: / 16-02-2012 / 09:56:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !SyntaxHighlighter2 methodsFor:'initialization'!
 
 initialize
 
     super initialize.
-    elements := SortedCollection new.
+    elements := ParseTreeIndex new.
     lastVariableElements := Dictionary new.
 
     "Created: / 14-02-2010 / 13:08:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 25-06-2010 / 13:04:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 21-08-2011 / 09:37:35 / cg"
+    "Modified: / 16-02-2012 / 09:59:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !SyntaxHighlighter2 methodsFor:'parsing-expressions'!
 
-binaryExpressionFor:receiverArg
+_binaryExpressionFor:receiverArg
     "parse a binary-expression; return a node-tree, nil or #Error"
 
     |receiver expr arg sel pos1 pos2 lno|
@@ -313,138 +325,10 @@
     "Modified: / 09-01-1998 / 19:05:18 / stefan"
     "Modified: / 14-02-2010 / 17:54:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 19-01-2012 / 10:46:49 / cg"
+    "Created: / 16-02-2012 / 21:54:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-expression
-    "parse a cascade-expression; return a node-tree, nil or #Error.
-
-     expression ::= keywordExpression
-                    | keywordExpression cascade
-
-     cascade ::= ';' expressionSendPart
-                 | cascade ';' expressionSendPart
-
-     expressionSendPart ::= { KEYWORD binaryExpression }
-                            | BINARYOPERATOR unaryExpression
-                            | IDENTIFIER
-    "
-
-    |receiver arg sel args pos pos2 lno tokenEnd realReceiver positions|
-
-    pos := tokenPosition.
-    receiver := self keywordExpression.
-    (receiver == #Error) ifTrue:[^ #Error].
-    (tokenType == $;) ifTrue:[
-        receiver isMessage ifFalse:[
-            self syntaxError:'left side of cascade must be a message expression'
-                    position:pos to:tokenPosition.
-            realReceiver := receiver. "/ only to allow continuing.
-        ] ifTrue:[
-            realReceiver := receiver receiver.
-        ].
-        [tokenType == $;] whileTrue:[
-            self nextToken.
-            (tokenType == #Identifier) ifTrue:[
-                tokenEnd := tokenPosition + tokenName size - 1.
-                self markSelector:tokenName from:tokenPosition to:tokenEnd receiverNode:realReceiver.
-                sel := tokenName.
-                sel := self selectorCheck:tokenName for:realReceiver position:tokenPosition to:tokenEnd.
-                receiver := CascadeNode receiver:receiver selector:sel.
-                receiver lineNumber:tokenLineNr.
-                self nextToken.
-            ] ifFalse:[
-                (tokenType == #BinaryOperator) ifTrue:[
-                    tokenEnd := tokenPosition + tokenName size - 1.
-                    self markSelector:tokenName from:tokenPosition to:tokenEnd receiverNode:realReceiver.
-                    lastSelectorElement := nil.
-                    sel := tokenName.
-                    sel := self selectorCheck:tokenName for:realReceiver position:tokenPosition to:tokenEnd.
-                    lno := tokenLineNr. 
-                    self nextToken.
-                    arg := self unaryExpression.
-                    (arg == #Error) ifTrue:[^ #Error].
-                    receiver := CascadeNode receiver:receiver selector:sel arg:arg.
-                    receiver lineNumber:lno.
-                ] ifFalse:[
-                    (tokenType == #Keyword) ifTrue:[
-                        tokenEnd := tokenPosition + tokenName size - 1.
-                        positions := OrderedCollection with:(tokenPosition to:tokenEnd).
-                        pos := tokenPosition.
-                        pos2 := tokenEnd.
-                        lno := tokenLineNr. 
-                        sel := tokenName.
-                        self nextToken.
-                        arg := self binaryExpression.
-                        (arg == #Error) ifTrue:[^ #Error].
-                        args := Array with:arg.
-                        [tokenType == #Keyword] whileTrue:[
-                            tokenEnd := tokenPosition + tokenName size - 1.
-                            positions add:(tokenPosition to:tokenEnd).
-                            sel := sel , tokenName.
-                            self nextToken.
-                            arg := self binaryExpression.
-                            (arg == #Error) ifTrue:[^ #Error].
-                            args := args copyWith:arg.
-                            pos2 := tokenEnd
-                        ].
-                        positions do:[:p |
-                            self markSelector:sel from:p start to:p stop receiverNode:realReceiver.
-                        ].
-                        lastSelectorElement := nil.                                
-
-                        sel := self selectorCheck:sel for:realReceiver position:pos to:pos2.
-
-                        receiver := CascadeNode receiver:receiver selector:sel args:args.
-                        receiver lineNumber:lno.
-                    ] ifFalse:[
-                        (tokenType == #Error) ifTrue:[^ #Error].
-                        self syntaxError:('invalid cascade; ' , tokenType printString , ' unexpected')
-                                position:tokenPosition to:source position1Based - 1.
-                        ^ #Error
-                    ]
-                ]
-            ]
-        ].
-
-        "obscure (unspecified ?) if selector follows; Question:
-
-        is
-                'expr sel1; sel2 sel3'
-
-        to be parsed as: 
-                (t := expr.
-                 t sel1.
-                 t sel2) sel3
-
-         or:
-                (t := expr.
-                 t sel1.
-                 t sel2 sel3)
-        "
-        ((tokenType == #Identifier) 
-         or:[(tokenType == #BinaryOperator)
-             or:[tokenType == #Keyword]]) ifTrue:[
-            self syntaxError:'ambigous cascade - please group using (...)'
-                    position:tokenPosition to:source position1Based - 1.
-            ^ #Error
-"/            self warning: "syntaxError:" 'possibly ambigous cascade - please group using (...)'
-"/                    position:tokenPosition to:source position - 1.
-"/            tokenType == #Identifier ifTrue:[
-"/                ^ self unaryExpressionFor:receiver
-"/            ].
-"/            tokenType == #BinaryOperator ifTrue:[
-"/                ^ self binaryExpressionFor:receiver
-"/            ].
-"/            ^ self keywordExpressionFor:receiver
-        ]
-    ].
-    ^ receiver
-
-    "Modified: / 19-01-2000 / 16:22:16 / cg"
-    "Modified: / 14-02-2010 / 17:58:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-keywordExpressionFor:receiverArg
+_keywordExpressionFor:receiverArg
     "parse a keyword-expression; return a node-tree, nil or #Error.
 
      keywordExpression ::= binaryexpression
@@ -583,9 +467,10 @@
 
     "Modified: / 14-02-2010 / 17:58:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 19-01-2012 / 10:47:01 / cg"
+    "Created: / 16-02-2012 / 21:54:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-unaryExpressionFor:receiverArg
+_unaryExpressionFor:receiverArg
     "parse a unary-expression; return a node-tree, nil or #Error"
 
     |receiver expr sel pos pos2 lNr arguments|
@@ -642,95 +527,295 @@
 
     "Modified: / 14-02-2010 / 17:56:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 19-01-2012 / 10:47:37 / cg"
+    "Created: / 16-02-2012 / 21:54:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+binaryExpression
+    | node savedLastSelectorElement |
+
+    savedLastSelectorElement := lastSelectorElement.
+    lastSelectorElement := nil.
+    node := super binaryExpression.
+    (lastSelectorElement notNil and:[node ~~ #Error and:[node isMessage]]) ifTrue:[
+        lastSelectorElement node parent: node.
+    ].
+    lastSelectorElement := savedLastSelectorElement.
+    ^node
+
+    "Modified: / 19-01-2000 / 16:22:16 / cg"
+    "Created: / 16-02-2012 / 21:56:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+binaryExpressionFor:receiverArg
+    "parse a binary-expression; return a node-tree, nil or #Error"
+
+    |receiver expr arg sel pos1 pos2 lno|
+
+    receiver := receiverArg.
+    (receiver == #Error) ifTrue:[^ #Error].
+
+    "special kludge: since Scanner cannot know if -digit is a binary
+     expression or a negative constant, handle cases here"
+
+    [(tokenType == #BinaryOperator) 
+     or:[(tokenType == $|)
+     or:[(tokenType == $^ and:[parserFlags allowCaretAsBinop])
+         or:[((tokenType == #Integer) or:[tokenType == #Float])
+             and:[tokenValue < 0]]]]
+    ] whileTrue:[
+        "/ kludge alarm: in a function-call argList, #, is not a binarySelector
+        inFunctionCallArgument == true ifTrue:[
+            ((tokenType == #BinaryOperator) and:[tokenName = ',']) ifTrue:[
+                ^ receiver
+            ].
+        ].
+
+        pos1 := tokenPosition.
+        lno := tokenLineNr.
+
+        "/ kludge alarm: bar, caret and minus are not scanned as binop
+        (tokenType == $|) ifTrue:[
+            sel := '|'.
+            sel := self selectorCheck:sel for:receiver position:tokenPosition to:tokenPosition.
+            self nextToken.
+        ] ifFalse:[
+            (tokenType == $^) ifTrue:[
+                sel := '^'.
+                sel := self selectorCheck:sel for:receiver position:tokenPosition to:tokenPosition.
+                self nextToken.
+            ] ifFalse:[
+                (tokenType == #BinaryOperator) ifTrue:[
+                    sel := tokenName.
+                    sel := self selectorCheck:sel for:receiver position:tokenPosition to:(tokenPosition + tokenName size - 1).
+                    self nextToken
+                ] ifFalse:[
+                    sel := '-'.
+                    token := tokenValue := tokenValue negated.
+                    tokenPosition := tokenPosition + 1. "/ to skip the sign
+                ]
+            ].
+        ].
+
+        pos2 := pos1 + sel size - 1.
+        self markSelector:sel from:pos1 to:pos2 receiverNode:receiver.
+        lastSelectorElement := nil.
+
+        arg := self unaryExpression.
+        (arg == #Error) ifTrue:[^ #Error].
+
+        expr := BinaryNode receiver:receiver selector:sel arg:arg fold:foldConstants.
+        expr isErrorNode ifTrue:[
+            self parseError:(expr errorString) position:pos1 to:tokenPosition.
+            errorFlag := false. "ok, user wants it - so he'll get it"
+            expr := BinaryNode receiver:receiver selector:sel arg:arg fold:nil.
+        ].
+        expr lineNumber:lno.
+        expr selectorPosition:pos1.
+
+        self checkPlausibilityOf:expr from:pos1 to:pos2.
+        receiver := expr.   "/ for next message
+    ].
+    ^ receiver
+
+    "Modified: / 09-01-1998 / 19:05:18 / stefan"
+    "Modified: / 14-02-2010 / 17:54:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-01-2012 / 10:46:49 / cg"
+!
+
+expression
+    | node savedLastSelectorElement |
+
+    savedLastSelectorElement := lastSelectorElement.
+    lastSelectorElement := nil.
+    node := super expression.
+    ((node ~~ #Error) and:[node isMessage]) ifTrue:[
+        [ lastSelectorElement notNil ] whileTrue:[
+            lastSelectorElement node parent: node.
+            lastSelectorElement := lastSelectorElement prev.            
+        ].
+    ].
+    lastSelectorElement := savedLastSelectorElement.
+    ^node
+
+    "Modified: / 19-01-2000 / 16:22:16 / cg"
+    "Modified: / 16-02-2012 / 23:39:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+
+
+unaryExpressionFor:receiverArg
+    "parse a unary-expression; return a node-tree, nil or #Error"
+
+    |receiver expr sel pos pos2 lNr arguments savedLastSelectorElement|
+
+    savedLastSelectorElement := lastSelectorElement.
+    receiver := receiverArg.
+    (receiver == #Error) ifTrue:[^ #Error].
+
+    [ self isValidUnarySelector:tokenType ] whileTrue:[
+        pos := tokenPosition.
+        pos2 := pos + tokenName size - 1.
+        lNr := tokenLineNr.
+        sel := tokenName.
+
+        lastSelectorElement := nil.
+        self markSelector:sel from:pos to:pos2 receiverNode:receiver.
+
+        self nextToken.
+        tokenType == $( ifTrue:[
+            parserFlags allowSqueakExtensions == true ifTrue:[
+                "/ croquet/squeak extension - c/java-style arguments
+                arguments := self functionCallArgList.
+                "/ synthetic selector: foo[:[with:[with:[...]]]]
+                arguments notEmpty ifTrue:[
+                    sel := sel , ':'.
+                    arguments size - 1 timesRepeat:[ sel := sel , 'with:' ].
+                ].
+                sel := self selectorCheck:sel for:receiver position:pos to:pos2.
+                expr := MessageNode receiver:receiver selector:sel args:arguments fold:foldConstants.
+                expr isErrorNode ifTrue:[
+                    self parseError:(expr errorString) position:pos to:pos2.
+                    errorFlag := false. "ok, user wants it - so he'll get it"
+                    expr := MessageNode receiver:receiver selector:sel args:arguments fold:nil.
+                ].
+                lastSelectorElement node parent: expr.
+                expr lineNumber:lNr.
+                self checkPlausibilityOf:expr from:pos to:pos2.
+                ^ expr.
+            ].
+        ].
+
+        sel := self selectorCheck:sel for:receiver position:pos to:pos2.
+        expr := UnaryNode receiver:receiver selector:sel fold:foldConstants.
+        expr isErrorNode ifTrue:[
+            self warning:(expr errorString , '.\\If you proceed, that error will happen at runtime.') withCRs position:pos to:pos2.
+            errorFlag := false. "ok, user wants it - so he'll get it"
+            expr := UnaryNode receiver:receiver selector:sel fold:nil.
+        ].
+        expr lineNumber:lNr.
+        lastSelectorElement node parent: expr.
+
+        self checkPlausibilityOf:expr from:pos to:pos2.
+
+        receiver := expr.   "/ for next message
+    ].
+    lastSelectorElement := savedLastSelectorElement.
+    ^ receiver
+
+    "Modified: / 19-01-2012 / 10:47:37 / cg"
+    "Created: / 16-02-2012 / 23:50:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+variable
+    | node |
+
+    ignoreBadIdentifier := classToCompileFor isNil.
+    node := super variable.
+    ignoreBadIdentifier := false.
+    node isVariable ifTrue:[
+        | el prevEl |
+
+        el := elements newElementFor: node.
+        prevEl := lastVariableElements at:node name ifAbsent:[nil].
+        prevEl notNil ifTrue:[prevEl next:el].
+        lastVariableElements at:node name put:el.
+        elements add: el.
+    ].
+    ^node
+
+    "Modified: / 19-01-2000 / 16:22:16 / cg"
+    "Created: / 16-02-2012 / 22:21:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !SyntaxHighlighter2 methodsFor:'syntax detection'!
 
 markArgumentIdentifierFrom:pos1 to:pos2
+    | node el prevEl |
+
     super markArgumentIdentifierFrom:pos1 to:pos2.
-    self rememberVariableElementFor:tokenName type:#variable from:pos1 to:pos2
+    node := VariableNode methodArgumentNamed:(sourceText string copyFrom: pos1 to: pos2).
+    node startPosition: pos1 endPosition: pos2.
+    el := elements newElementFor: node.
+    prevEl := lastVariableElements at:node name ifAbsent:[nil].
+    prevEl notNil ifTrue:[prevEl next:el].
+    lastVariableElements at:node name put:el.
+    elements add: el.
 
     "Created: / 24-07-2010 / 09:25:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 21-08-2011 / 09:27:26 / cg"
+    "Modified: / 16-02-2012 / 22:34:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+markBadIdentifierFrom:pos1 to:pos2
+
+    super markBadIdentifierFrom:pos1 to:pos2
+
+    "Created: / 17-03-2012 / 19:02:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-markGlobalClassIdentifierFrom:pos1 to:pos2
 
-    | name env cls |
-
-    super markGlobalClassIdentifierFrom:pos1 to:pos2.
-
-    name := token isString ifTrue:[token asSymbolIfInterned] ifFalse:[nil].
-    name notNil ifTrue:[
-        env := (classToCompileFor ? UndefinedObject) theNonMetaclass environment.
-        cls := env isNameSpace 
-                ifTrue:[env at: name]
-                ifFalse:[nil].
-        cls isNil ifTrue:[
-            cls := Smalltalk at: name
-        ]
-    ].
-
-    elements add:
-        (SyntaxElement from: pos1 to: pos2 type: #class value: cls)
-
-    "Created: / 14-02-2010 / 14:08:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 15-02-2010 / 10:53:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 18-11-2011 / 14:54:53 / cg"
-!
 
 markLocalIdentifierFrom:pos1 to:pos2
-    super markLocalIdentifierFrom:pos1 to:pos2.
+    | node el prevEl |
 
-    self rememberVariableElementFor:tokenName type:#variable from:pos1 to:pos2
+    super markLocalIdentifierFrom:pos1 to:pos2.
+    node := VariableNode methodLocalNamed:(sourceText string copyFrom: pos1 to: pos2).
+    node startPosition: pos1 endPosition: pos2.
+    el := elements newElementFor: node.
+    prevEl := lastVariableElements at:node name ifAbsent:[nil].
+    prevEl notNil ifTrue:[prevEl next:el].
+    lastVariableElements at:node name put:el.
+    elements add: el.
 
-    "Created: / 24-07-2010 / 09:28:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 21-08-2011 / 09:27:12 / cg"
+    "Modified: / 21-08-2011 / 09:27:26 / cg"
+    "Created: / 16-02-2012 / 22:36:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode
 
     | element |
 
-    super markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode.
+    "Special hack for Java class references - I would like to have them
+     marked specially (and not as an error when the class is not yet loaded -
+     the code is correct as JavaClassAccessor loads it lazily"
+    (aReceiverNode isJavaPackageReference) ifTrue:[
+        self
+            markFrom:pos1 to:pos2 
+            withEmphasis:preferences globalClassIdentifierEmphasis 
+            color: preferences globalClassIdentifierColor
+    ] ifFalse:[
+        super markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode.
+    ].
 
-    element := SyntaxElement from: pos1 to: pos2 type: #selector value: selectorString asSymbol.
-    lastSelectorElement ifNotNil:[lastSelectorElement next: element].
+    element := elements newElementFor: (SelectorNode value: selectorString from: pos1 to: pos2).
+
+    (lastSelectorElement notNil "and:[lastSelectorElement value = selectorString]") ifTrue:[
+        lastSelectorElement next: element.
+    ].
     elements add: element.
-    lastSelectorElement := element.
+    lastSelectorElement := "(self isValidUnarySelector:tokenType)"false
+                                ifTrue:[nil] 
+                                ifFalse:[element].
 
     "Created: / 14-02-2010 / 17:40:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 14-02-2010 / 19:24:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (format): / 21-08-2011 / 09:18:21 / cg"
+    "Modified: / 19-04-2012 / 09:53:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-markSelfFrom:pos1 to:pos2
-    super markSelfFrom:pos1 to:pos2.
-    self rememberVariableElementFor:'self' type:#self from:pos1 to:pos2
 
-    "Created: / 21-08-2011 / 09:15:45 / cg"
-!
 
 markUnknownIdentifierFrom:pos1 to:pos2
 
-    classToCompileFor notNil 
-        ifTrue:[super markUnknownIdentifierFrom:pos1 to:pos2]
-        ifFalse:[self markLocalIdentifierFrom: pos1 to: pos2].
+    ignoreBadIdentifier == true ifTrue:[ ^ self ].
 
-    "Created: / 24-07-2010 / 09:51:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 02-08-2011 / 09:35:02 / cg"
+    super markUnknownIdentifierFrom:pos1 to:pos2
+
+    "Created: / 31.3.1998 / 19:09:26 / cg"
+    "Modified: / 31.3.1998 / 19:10:30 / cg"
 !
 
-markVariable:v from:pos1 to:pos2
-    super markVariable:v from:pos1 to:pos2.
-    (v type == #GlobalVariable) ifTrue:[^self].
 
-    self rememberVariableElementFor:v name type:#variable from:pos1 to:pos2
-
-    "Created: / 25-06-2010 / 13:03:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 25-06-2010 / 14:23:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 21-08-2011 / 09:26:30 / cg"
-!
 
 rememberVariableElementFor:name type:typeSymbol from:pos1 to:pos2
     |element prev|
@@ -748,6 +833,7 @@
     "Created: / 21-08-2011 / 09:26:24 / cg"
 ! !
 
+
 !SyntaxHighlighter2 class methodsFor:'documentation'!
 
 version_CVS
@@ -757,3 +843,4 @@
 version_SVN
     ^ '§Id: SyntaxHighlighter2.st 7715 2011-04-10 16:32:58Z vranyj1 §'
 ! !
+
--- a/SystemBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/SystemBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -60,6 +60,7 @@
 "
 ! !
 
+
 !SystemBrowser class methodsFor:'initialization'!
 
 initialize
@@ -85,6 +86,7 @@
     "
 ! !
 
+
 !SystemBrowser class methodsFor:'instance creation'!
 
 open
@@ -230,6 +232,7 @@
     "
 ! !
 
+
 !SystemBrowser class methodsFor:'Compatibility-ST80'!
 
 newOnClass:aClass
@@ -238,6 +241,7 @@
     "Created: / 27.10.1997 / 20:10:39 / cg"
 ! !
 
+
 !SystemBrowser class methodsFor:'accessing-history'!
 
 addToHistory:aClass selector:aSelectorOrNil
@@ -344,6 +348,7 @@
         thenSelect:[:nm | nm notEmptyOrNil]
 ! !
 
+
 !SystemBrowser class methodsFor:'defaults'!
 
 classHistoryMaxLevels
@@ -366,6 +371,7 @@
     ^ 15
 ! !
 
+
 !SystemBrowser class methodsFor:'defaults-presentation'!
 
 emphasisForChangedCode
@@ -529,6 +535,7 @@
     "Created: / 17-08-2006 / 09:08:11 / cg"
 ! !
 
+
 !SystemBrowser class methodsFor:'dialogs'!
 
 askForClassNameMatching:matchStringArg inEnvironment:anEnvironmentOrClassOrNil for:aBrowserOrNil
@@ -763,6 +770,7 @@
     ^ box
 ! !
 
+
 !SystemBrowser class methodsFor:'image specs'!
 
 abstractMethodIcon
@@ -1796,6 +1804,7 @@
     "Created: / 5.11.2001 / 09:39:03 / cg"
 ! !
 
+
 !SystemBrowser class methodsFor:'interface specs'!
 
 metaSpec
@@ -1917,6 +1926,7 @@
     "Modified: 25.6.1997 / 13:46:44 / cg"
 ! !
 
+
 !SystemBrowser class methodsFor:'private-helpers'!
 
 askForPackageChangeFrom:oldPkg to:newPkg
@@ -1970,6 +1980,7 @@
     self information:((rs string:what) , (rs string:'...\\... none found.')) withCRs.
 ! !
 
+
 !SystemBrowser class methodsFor:'private-instance creation'!
 
 newWithLabel:aString setupBlock:aBlock
@@ -2009,6 +2020,7 @@
     ^ newBrowser
 ! !
 
+
 !SystemBrowser class methodsFor:'special search startup'!
 
 allCallsOn:aSelectorString
@@ -5016,6 +5028,7 @@
     "Created: / 22-03-2012 / 06:56:51 / cg"
 ! !
 
+
 !SystemBrowser class methodsFor:'startup'!
 
 browseAllSelect:aBlock
@@ -5540,6 +5553,7 @@
         where:aBlock
 ! !
 
+
 !SystemBrowser class methodsFor:'startup with query'!
 
 askThenBrowseClass
@@ -5593,6 +5607,7 @@
     "Modified: / 10-08-2006 / 12:54:20 / cg"
 ! !
 
+
 !SystemBrowser class methodsFor:'utilities'!
 
 classWithNameSimilarTo:className
@@ -5846,6 +5861,7 @@
     ^ nil
 ! !
 
+
 !SystemBrowser::BrowserHistoryEntry methodsFor:'accessing'!
 
 className
@@ -5908,6 +5924,7 @@
     ^ Smalltalk at:className asSymbol
 ! !
 
+
 !SystemBrowser::BrowserHistoryEntry methodsFor:'comparing'!
 
 = anEntry
@@ -5916,6 +5933,7 @@
       and:[selector = anEntry selector]]
 ! !
 
+
 !SystemBrowser::BrowserHistoryEntry methodsFor:'displaying'!
 
 displayString
@@ -5929,6 +5947,7 @@
     "Modified: / 03-07-2011 / 13:44:32 / cg"
 ! !
 
+
 !SystemBrowser class methodsFor:'documentation'!
 
 version_CVS
@@ -5939,4 +5958,5 @@
     ^ '§Id: SystemBrowser.st 7772 2011-06-08 21:59:15Z vranyj1 §'
 ! !
 
+
 SystemBrowser initialize!
--- a/SystemStatusMonitor.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/SystemStatusMonitor.st	Wed Jan 30 11:15:09 2013 +0000
@@ -9,7 +9,6 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
-
 "{ Package: 'stx:libtool' }"
 
 SimpleView subclass:#SystemStatusMonitor
@@ -257,5 +256,9 @@
 !SystemStatusMonitor class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/SystemStatusMonitor.st,v 1.17 2004-12-14 15:01:54 cg Exp $'
+    ^ '$Id: SystemStatusMonitor.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+!
+
+version_SVN
+    ^ '$Id: SystemStatusMonitor.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/TerminalApplication.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/TerminalApplication.st	Wed Jan 30 11:15:09 2013 +0000
@@ -355,17 +355,17 @@
 "/    #startShellInSelectedWindow leads to infinite loop.
 "/    further investigation needed.        
 
-"/    (OperatingSystem isUNIXlike and:[XTermView notNil]) ifTrue:[
-"/        scr := XTermView new.
-"/        scr workingDirectory: initialDirectory.
-"/    ] ifFalse:[
+    (OperatingSystem isUNIXlike and:[XTermView notNil]) ifTrue:[
+        scr := XTermView new.
+        scr workingDirectory: initialDirectory.
+    ] ifFalse:[
         VT100TerminalView isNil ifTrue:[
             self error:'missing: VT100TerminalView'
         ].
         scr := (HVScrollableView for:VT100TerminalView).
         scr autoHideScrollBars:false.
         scr horizontalMini:true.
-"/    ].
+    ].
 
     self window realized ifTrue:[
         self window sensor pushUserEvent:#startShellInSelectedWindow for:self.
@@ -373,7 +373,7 @@
     ^ scr
 
     "Modified: / 08-04-2011 / 14:56:57 / cg"
-    "Modified (format): / 30-11-2011 / 11:06:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 03-04-2012 / 10:19:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 doKill
@@ -471,10 +471,15 @@
     vt shellTerminateAction:[self shellFinishedInWorkspace:vt].
 
     "Modified: / 07-04-2011 / 09:03:55 / cg"
+    "Modified: / 03-04-2012 / 10:31:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !TerminalApplication class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/TerminalApplication.st,v 1.11 2011-11-30 10:06:32 vrany Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/TerminalApplication.st,v 1.11 2011/11/30 10:06:32 vrany Exp §'
+!
+
+version_SVN
+    ^ '$Id: TerminalApplication.st 7963 2012-04-03 12:32:03Z vranyj1 $'
 ! !
--- a/TextDiffTests.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/TextDiffTests.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,3 +1,14 @@
+"
+ 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' }"
 
 TestCase subclass:#TextDiffTests
@@ -13,6 +24,20 @@
 
 !TextDiffTests 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.
+"
+!
+
 documentation
 "
 
@@ -643,9 +668,9 @@
 !TextDiffTests class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/TextDiffTests.st,v 1.1 2011-07-01 14:12:24 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/TextDiffTests.st,v 1.1 2011/07/01 14:12:24 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: TextDiffTests.st 7546 2010-02-25 21:31:39Z vranyj1 §'
+    ^ '$Id: TextDiffTests.st 7927 2012-03-16 19:30:50Z vranyj1 $'
 ! !
--- a/Tools_FullMethodCategoryList.st	Sun Jan 27 02:50:59 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,127 +0,0 @@
-"
- COPYRIGHT (c) 2004 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 }"
-
-MethodCategoryList subclass:#FullMethodCategoryList
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	category:'Interface-Browsers-New'
-!
-
-!FullMethodCategoryList class methodsFor:'documentation'!
-
-copyright
-"
- COPYRIGHT (c) 2004 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.
-"
-!
-
-documentation
-"
-    embeddable application displaying the classes as listed by
-    the inputGenerator.
-    Provides an outputGenerator, which enumerates the classes and
-    their protocols (method-categories) in the selected classes.
-
-    [author:]
-	Claus Gittinger (cg@exept.de)
-"
-
-
-! !
-
-!FullMethodCategoryList methodsFor:'generators'!
-
-makeGenerator
-    "return a generator which enumerates the methods from the selected protocol;
-     that generator generates 4-element elements (includes the class and protocol), 
-     in order to make the consumers only depend on one input 
-     (i.e. to pass multiple-class and multiple-protocol info
-      without a need for another classHolder/protocolHolder in the methodList)."
-
-    ^ Iterator on:[:whatToDo |
-                        |protocols all packages theProtocol|
-
-                        protocols := self selectedProtocols value ? #().
-
-                        all := protocols includes:(self class nameListEntryForALL).
-                        packages := packageFilter value value.
-
-                        protocols size > 0 ifTrue:[
-                            protocols size == 1 ifTrue:[
-                                theProtocol := protocols first.
-                                Smalltalk allClassesDo:[:eachClass |
-                                    eachClass instAndClassSelectorsAndMethodsDo:[:sel :eachMethod |
-                                        |cat|
-
-                                        cat := eachMethod category.
-                                        (all 
-                                        or:[theProtocol = cat]) ifTrue:[
-                                            (packages isNil
-                                            or:[packages includes:eachMethod package])
-                                            ifTrue:[
-                                                whatToDo value:eachClass value:cat value:sel value:eachMethod.
-                                            ].
-                                        ].
-                                    ].
-                                ]
-                            ] ifFalse:[
-                                Smalltalk allClassesDo:[:eachClass |
-                                    eachClass instAndClassSelectorsAndMethodsDo:[:sel :eachMethod |
-                                        |cat|
-
-                                        cat := eachMethod category.
-                                        (all 
-                                        or:[protocols includes:cat]) ifTrue:[
-                                            (packages isNil
-                                            or:[packages includes:eachMethod package])
-                                            ifTrue:[
-                                                whatToDo value:eachClass value:cat value:sel value:eachMethod.
-                                            ].
-                                        ].
-                                    ].
-                                ]
-                            ]
-                        ]
-                  ]
-! !
-
-!FullMethodCategoryList methodsFor:'private'!
-
-listOfMethodCategories
-    |categories|
-
-    categories := Set new.
-
-    categories addAll:MethodCategoryCache new allMethodCategories.    
-
-    categories := categories asOrderedCollection sort.
-    categories addFirst:(self class nameListEntryForALL).
-    ^ categories
-! !
-
-!FullMethodCategoryList class methodsFor:'documentation'!
-
-version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_FullMethodCategoryList.st,v 1.5 2009-09-22 11:25:53 cg Exp $'
-! !
--- a/Tools_HierarchicalClassCategoryList.st	Sun Jan 27 02:50:59 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,410 +0,0 @@
-"
- COPYRIGHT (c) 2004 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 }"
-
-ClassCategoryList subclass:#HierarchicalClassCategoryList
-	instanceVariableNames:'hierarchicalCategoryTree hierarchicalCategoryList
-		hierarchicalCategorySelection categoryToItemDictionary'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'Interface-Browsers-New'
-!
-
-HierarchicalItemWithLabel subclass:#ClassCategoryItem
-	instanceVariableNames:'category'
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:HierarchicalClassCategoryList
-!
-
-!HierarchicalClassCategoryList class methodsFor:'documentation'!
-
-copyright
-"
- COPYRIGHT (c) 2004 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.
-"
-!
-
-documentation
-"
-    embeddable application displaying the classes as listed by
-    the inputGenerator.
-    Provides an outputGenerator, which enumerates the classes and
-    their protocols (method-categories) in the selected classes.
-
-    [author:]
-	Claus Gittinger (cg@exept.de)
-"
-
-
-! !
-
-!HierarchicalClassCategoryList 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:HierarchicalClassCategoryList andSelector:#windowSpec
-     HierarchicalClassCategoryList new openInterface:#windowSpec
-     HierarchicalClassCategoryList open
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #windowSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'ClassCategoryList'
-          #name: 'ClassCategoryList'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 16 46 316 346)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#HierarchicalListViewSpec
-              #name: 'List'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #tabable: true
-              #model: #hierarchicalCategorySelection
-              #menu: #menuHolder
-              #hasHorizontalScrollBar: true
-              #hasVerticalScrollBar: true
-              #miniScrollerHorizontal: true
-              #listModel: #hierarchicalCategoryList
-              #multipleSelectOk: true
-              #highlightMode: #line
-              #doubleClickSelector: #doubleClicked:
-              #showLines: false
-              #indicatorSelector: #indicatorPressed:
-              #useDefaultIcons: false
-              #properties: 
-             #(#PropertyListDictionary
-                #dragArgument: nil
-                #dropArgument: nil
-                #canDropSelector: #canDrop:
-                #dropSelector: #doDrop:
-              )
-            )
-           )
-         
-        )
-      )
-! !
-
-!HierarchicalClassCategoryList class methodsFor:'plugIn spec'!
-
-aspectSelectors
-    "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."
-
-    "Return a description of exported aspects;
-     these can be connected to aspects of an embedding application
-     (if this app is embedded in a subCanvas)."
-
-    ^ #(
-        #(#doubleClickChannel #action )
-        #forceGeneratorTrigger
-        #hideUnloadedClasses
-        #immediateUpdate
-        #inGeneratorHolder
-        #menuHolder
-        #nameSpaceFilter
-        #organizerMode
-        #outGeneratorHolder
-        #packageFilter
-        #selectedCategories
-        #selectionChangeCondition
-        #slaveMode
-        #updateTrigger
-        #showCoverageInformation
-      ).
-
-    "Modified: / 20-07-2011 / 14:29:15 / cg"
-! !
-
-!HierarchicalClassCategoryList methodsFor:'aspects'!
-
-addCategory:category
-    |item path parentPath parentCategory parentItem|
-
-    item:= categoryToItemDictionary at:category ifAbsent:nil.
-    item isNil ifTrue:[
-	path := category asCollectionOfSubstringsSeparatedBy:$-.
-
-	item := ClassCategoryItem new.
-	item category:category.
-	item label:(path last).
-	categoryToItemDictionary at:category put:item.
-
-	category size > 0 ifTrue:[
-	    "/ find the parent ...
-	    parentPath := path copyWithoutLast:1.
-	    parentCategory := parentPath asStringWith:$-.
-
-	    parentItem := self addCategory:parentCategory .
-
-	    parentItem add:item sortBlock:[:i1 :i2 | i1 category asLowercase < i2 category asLowercase].
-	]
-    ].
-    ^ item
-!
-
-generateHierarchicalCategoryTree
-    |anchor|
-
-    self categoryList value isNil ifTrue:[
-	self updateList.
-	self categoryList value isNil ifTrue:[
-	    ^ nil.
-	]
-    ].
-
-    anchor := ClassCategoryItem new.
-    anchor category:nil.
-    anchor label:nil.
-
-    categoryToItemDictionary := Dictionary new.
-    categoryToItemDictionary at:'' asSymbol put:anchor.
-
-    self categoryList value do:[:eachCategory |
-	(categoryToItemDictionary includesKey:eachCategory) ifFalse:[
-	    self addCategory:eachCategory 
-	].
-    ].
-
-    anchor recursiveSortChildren:[:i1 :i2 | i1 category asLowercase < i2 category asLowercase].
-    anchor expand.
-
-    ^ anchor
-!
-
-hierarchicalCategoryList
-    |anchor |
-
-    hierarchicalCategoryList isNil ifTrue:[
-	hierarchicalCategoryList := HierarchicalList new.
-	hierarchicalCategoryList showRoot:false.
-
-	(self slaveMode value ~~ true) ifTrue:[
-	    anchor := self generateHierarchicalCategoryTree.
-	    hierarchicalCategoryList root:anchor.
-	    listValid := true
-	] ifFalse:[
-	    listValid := false
-	]
-    ].
-    ^ hierarchicalCategoryList
-!
-
-hierarchicalCategorySelection
-    hierarchicalCategorySelection isNil ifTrue:[
-	hierarchicalCategorySelection := #() asValue.
-	hierarchicalCategorySelection addDependent:self.
-    ].
-    ^ hierarchicalCategorySelection.
-! !
-
-!HierarchicalClassCategoryList methodsFor:'change & update'!
-
-delayedUpdate:something with:aParameter from:changedObject
-    |cls sel oldMethod newMethod newPackage|
-
-    self inSlaveModeOrInvisible ifTrue:[
-	super delayedUpdate:something with:aParameter from:changedObject.
-	^ self.
-    ].
-
-    changedObject == updateTrigger ifTrue:[
-	hierarchicalCategoryTree := nil.
-	self hierarchicalCategoryList.
-	self updateTreeSelectionFromList.
-	^ self        
-    ].
-
-    changedObject == slaveMode ifTrue:[
-	listValid ~~ true ifTrue:[
-	    self enqueueDelayedUpdateList
-	].
-	"/ self invalidateList.
-	^  self
-    ].
-
-    changedObject == hierarchicalCategorySelection ifTrue:[
-	self updateSelectionFromTree.
-	^ self        
-    ].
-    changedObject == self selectedCategories ifTrue:[
-	"/ update the trees selection as appropriate
-"/        self updateTreeSelection.
-	self updateTreeSelectionFromList.
-    ].
-    changedObject == categoryList ifTrue:[
-	"/ update the tree
-	self hierarchicalCategoryList root:(self generateHierarchicalCategoryTree).
-	^ self.
-    ].
-
-    super delayedUpdate:something with:aParameter from:changedObject
-
-    "Created: / 17.2.2000 / 23:41:02 / cg"
-    "Modified: / 26.2.2000 / 01:21:49 / cg"
-!
-
-updateSelectionFromTree
-    |treeSelection|
-
-    treeSelection := hierarchicalCategorySelection value 
-		    collect:[:eachIndex |  |item|
-				    item := hierarchicalCategoryList at:eachIndex ifAbsent:nil.
-				    item category
-			    ].
-
-    treeSelection asSet ~= (self selectedCategories value ? #()) asSet ifTrue:[
-	self selectedCategories value:treeSelection.
-    ]
-!
-
-updateTreeSelectionFromList
-    |listSelection selectedTreeItems treeSelection|
-
-    listSelection := self selectedCategories value.
-    selectedTreeItems := listSelection collect:[:itemString | self treeItemForString:itemString string].
-    treeSelection := selectedTreeItems collect:[:eachItem | hierarchicalCategoryList identityIndexOf:eachItem].
-    treeSelection := treeSelection asOrderedCollection.
-"/hierarchicalCategorySelection value 
-"/                    collect:[:eachIndex |  |item|
-"/                                    item := hierarchicalCategoryList at:eachIndex ifAbsent:nil.
-"/                                    item category
-"/                            ].
-"/
-"/    treeSelection asSet ~= (self selectedCategories value ? #()) asSet ifTrue:[
-"/        self selectedCategories value:treeSelection.
-"/    ]
-    self hierarchicalCategorySelection value:treeSelection
-! !
-
-!HierarchicalClassCategoryList methodsFor:'private'!
-
-makeItemVisible:itemString
-    |treeItem idx listView|
-
-    treeItem := self treeItemForString:itemString.
-    idx := hierarchicalCategoryList identityIndexOf:treeItem.
-    idx ~~ 0 ifTrue:[
-	(listView := self listView) notNil ifTrue:[
-	    listView makeLineVisible:idx.
-	]
-    ]
-!
-
-release
-    super release.
-
-    hierarchicalCategorySelection removeDependent:self.
-!
-
-treeItemForString:itemString
-    |itemPath treeItem|
-
-    itemPath := itemString string asCollectionOfSubstringsSeparatedBy:$-.
-    treeItem := hierarchicalCategoryList root.
-    [itemPath notEmpty] whileTrue:[
-	treeItem expand.
-	treeItem := treeItem detect:[:childItem | childItem label string = itemPath first] ifNone:nil.
-	itemPath := itemPath copyFrom:2.
-    ].
-    ^ treeItem
-! !
-
-!HierarchicalClassCategoryList methodsFor:'user actions'!
-
-doubleClicked:anIndex
-    |item|
-
-    item := hierarchicalCategoryList at:anIndex ifAbsent:nil.
-    item isNil ifTrue:[
-	^ self
-    ].        
-
-    (item canExpand not or:[item isExpanded]) ifTrue:[
-	doubleClickChannel notNil ifTrue:[
-	    doubleClickChannel value:anIndex.
-	] ifFalse:[
-	    item collapse.
-	].
-	^ self
-    ].
-
-    item expand.
-!
-
-indicatorPressed:anIndex
-    |item sensor|
-
-    item := hierarchicalCategoryList at:anIndex ifAbsent:nil.
-
-    item isNil ifTrue:[
-	^ self
-    ].
-
-    sensor := self window sensor.
-    (sensor ctrlDown or:[sensor shiftDown]) ifTrue:[
-	item recursiveToggleExpand
-    ] ifFalse:[
-	item toggleExpand
-    ].
-! !
-
-!HierarchicalClassCategoryList::ClassCategoryItem methodsFor:'accessing'!
-
-category
-    ^ category
-!
-
-category:something
-    category := something.
-!
-
-icon
-    ^ nil "/ SystemBrowser packageIcon
-! !
-
-!HierarchicalClassCategoryList class methodsFor:'documentation'!
-
-version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_HierarchicalClassCategoryList.st,v 1.9 2011-07-20 12:54:09 cg Exp $'
-!
-
-version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_HierarchicalClassCategoryList.st,v 1.9 2011-07-20 12:54:09 cg Exp $'
-! !
--- a/Tools_HierarchicalProjectList.st	Sun Jan 27 02:50:59 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,526 +0,0 @@
-"
- COPYRIGHT (c) 2004 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 }"
-
-ProjectList subclass:#HierarchicalProjectList
-	instanceVariableNames:'hierarchicalProjectTree selectedProjectItems packageIcon
-		hierarchicalProjectList hierarchicalProjectSelection
-		packageToItemDictionary'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'Interface-Browsers-New'
-!
-
-HierarchicalItemWithLabel subclass:#ProjectItem
-	instanceVariableNames:'packageID'
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:HierarchicalProjectList
-!
-
-!HierarchicalProjectList class methodsFor:'documentation'!
-
-copyright
-"
- COPYRIGHT (c) 2004 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.
-"
-!
-
-documentation
-"
-    Like a ClassList, but shows classes hierarchical.
-
-    If topClassHolders value is non-nil, only that classes hierarchy
-    is shown.
-
-    embeddable application displaying the classes as listed by
-    the inputGenerator.
-    Provides an outputGenerator, which enumerates the classes and
-    their protocols (method-categories) in the selected classes.
-
-    [author:]
-	Claus Gittinger (cg@exept.de)
-"
-
-
-! !
-
-!HierarchicalProjectList 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:HierarchicalProjectList andSelector:#windowSpec
-     HierarchicalProjectList new openInterface:#windowSpec
-     HierarchicalProjectList open
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #windowSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'ProjectList'
-          #name: 'ProjectList'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 16 46 316 346)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#HierarchicalListViewSpec
-              #name: 'HierarchicalListView1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #tabable: true
-              #model: #hierarchicalProjectSelection
-              #menu: #menuHolder
-              #hasHorizontalScrollBar: true
-              #hasVerticalScrollBar: true
-              #miniScrollerHorizontal: true
-              #listModel: #hierarchicalProjectList
-              #multipleSelectOk: true
-              #highlightMode: #line
-              #doubleClickSelector: #doubleClicked:
-              #indicatorSelector: #indicatorPressed:
-              #properties: 
-             #(#PropertyListDictionary
-                #dragArgument: nil
-                #dropArgument: nil
-                #canDropSelector: #canDrop:
-                #dropSelector: #doDrop:
-              )
-            )
-           )
-         
-        )
-      )
-!
-
-xxwindowSpec
-    "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:HierarchicalProjectList andSelector:#windowSpec
-     HierarchicalProjectList new openInterface:#windowSpec
-     HierarchicalProjectList open
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-	#name: #windowSpec
-	#window: 
-       #(#WindowSpec
-	  #label: 'ProjectList'
-	  #name: 'ProjectList'
-	  #min: #(#Point 0 0)
-	  #max: #(#Point 1024 721)
-	  #bounds: #(#Rectangle 12 22 312 322)
-	)
-	#component: 
-       #(#SpecCollection
-	  #collection: #(
-	   #(#SelectionInTreeViewSpec
-	      #name: 'List'
-	      #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-	      #model: #selectedProjectItems
-	      #menu: #menuHolder
-	      #hasHorizontalScrollBar: true
-	      #hasVerticalScrollBar: true
-	      #miniScrollerHorizontal: true
-	      #showRoot: false
-	      #showDirectoryIndicator: true
-	      #isMultiSelect: true
-	      #valueChangeSelector: #selectionChangedByClick
-	      #hierarchicalList: #hierarchicalProjectTree
-	      #childrenSelector: #actionToRetrieveChildren
-	      #highlightMode: #line
-	      #doubleClickChannel: #doubleClickChannel
-	    )
-	   #(#HierarchicalListViewSpec
-	      #name: 'HierarchicalListView1'
-	      #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-	      #tabable: true
-	      #hasHorizontalScrollBar: true
-	      #hasVerticalScrollBar: true
-	      #miniScrollerHorizontal: true
-	      #listModel: #hierarchicalProjectList
-	      #multipleSelectOk: true
-	      #highlightMode: #line
-	      #doubleClickSelector: #doubleClicked:
-	      #indicatorSelector: #indicatorPressed:
-	      "/ #showLeftIndicators: false
-	    )
-	   )
-         
-	)
-      )
-! !
-
-!HierarchicalProjectList class methodsFor:'plugIn spec'!
-
-aspectSelectors
-    "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."
-
-    "Return a description of exported aspects;
-     these can be connected to aspects of an embedding application
-     (if this app is embedded in a subCanvas)."
-
-    ^ #(
-        #(#doubleClickChannel #action )
-        #forceGeneratorTrigger
-        #hideUnloadedClasses
-        #immediateUpdate
-        #inGeneratorHolder
-        #menuHolder
-        #organizerMode
-        #outGeneratorHolder
-        #selectedProjects
-        #selectionChangeCondition
-        #slaveMode
-        #updateTrigger
-        #showCoverageInformation
-      ).
-
-    "Modified: / 20-07-2011 / 14:29:26 / cg"
-! !
-
-!HierarchicalProjectList methodsFor:'aspects'!
-
-generateHierarchicalProjectTree
-    |anchor|
-
-    self projectList value isNil ifTrue:[
-	self updateList.
-	self projectList value isNil ifTrue:[
-	    ^ nil.
-	]
-    ].
-
-    anchor := ProjectItem new.
-    anchor package:''.
-    anchor label:nil.
-
-    packageToItemDictionary := IdentityDictionary new.
-    packageToItemDictionary at:'' asSymbol put:anchor.
-
-    self projectList value do:[:eachPackageString |
-	|package|
-
-	package := eachPackageString asSymbol.
-	(packageToItemDictionary includesKey:package) ifFalse:[
-	    self addPackage:package 
-	].
-    ].
-
-"/    Smalltalk allClassesDo:[:eachClass |
-"/        |package|
-"/
-"/        package := eachClass package asSymbol.
-"/        (packageToItemDictionary includesKey:package) ifFalse:[
-"/            self addPackage:package 
-"/        ].
-"/    ].
-    anchor recursiveSortChildren:[:i1 :i2 | i1 label asLowercase < i2 label asLowercase].
-    anchor expand.
-
-    ^ anchor
-!
-
-hierarchicalProjectList
-    |anchor |
-
-    hierarchicalProjectList isNil ifTrue:[
-	hierarchicalProjectList := HierarchicalList new.
-	hierarchicalProjectList showRoot:false.
-
-	(self slaveMode value ~~ true) ifTrue:[
-	    anchor := self generateHierarchicalProjectTree.
-	    hierarchicalProjectList root:anchor.
-	    listValid := true
-	] ifFalse:[
-	    listValid := false
-	]
-    ].
-    ^ hierarchicalProjectList
-!
-
-hierarchicalProjectSelection
-    hierarchicalProjectSelection isNil ifTrue:[
-	hierarchicalProjectSelection := #() asValue.
-	hierarchicalProjectSelection addDependent:self.
-    ].
-    ^ hierarchicalProjectSelection.
-!
-
-updateTreeSelection
-    "/ must expand items as required
-    |itemsToSelect oldSelection newSelection|
-
-    itemsToSelect := OrderedCollection new.
-
-    (self selectedProjects value ? #()) do:[:eachSelectedProject |
-        |item child|
-
-        item := hierarchicalProjectList root.
-        item notNil ifTrue:[
-            (eachSelectedProject asCollectionOfSubstringsSeparatedByAny:':/') do:[:part |
-                item expand.
-                child := item detect:[:child | child label = part] ifNone:nil.
-                child notNil ifTrue:[
-                    item := child.
-                ].
-            ].
-            itemsToSelect add:child.
-        ].
-    ].
-    oldSelection := hierarchicalProjectSelection value.
-    newSelection := itemsToSelect collect:[:eachItem | hierarchicalProjectList identityIndexOf:eachItem].
-    oldSelection ~= newSelection ifTrue:[
-        hierarchicalProjectSelection value:newSelection.
-    ].
-
-    "Modified: / 17-08-2006 / 09:56:32 / cg"
-! !
-
-!HierarchicalProjectList methodsFor:'change & update'!
-
-delayedUpdate:something with:aParameter from:changedObject
-    |cls sel oldMethod newMethod newPackage|
-
-    self inSlaveModeOrInvisible ifTrue:[
-	super delayedUpdate:something with:aParameter from:changedObject.
-	^ self.
-    ].
-
-"/    (self slaveMode value == true) ifTrue:[
-"/        super delayedUpdate:something with:aParameter from:changedObject.
-"/        ^ self
-"/    ].
-
-    changedObject == updateTrigger ifTrue:[
-	hierarchicalProjectList := nil.
-	self hierarchicalProjectList.
-	self updateTreeSelection.
-	^ self        
-    ].
-
-    changedObject == slaveMode ifTrue:[
-	listValid ~~ true ifTrue:[
-	    self enqueueDelayedUpdateList
-	].
-	"/ self invalidateList.
-	self updateTreeSelection.
-	^  self
-    ].
-
-    changedObject == hierarchicalProjectSelection ifTrue:[
-	self updateSelectionFromTree.
-	^ self        
-    ].
-"/    changedObject == self selectedProjects ifTrue:[
-"/        "/ update the trees selection as appropriate
-"/        self updateTreeSelection.
-"/    ].
-    changedObject == projectList ifTrue:[
-	"/ update the tree
-	self hierarchicalProjectList root:(self generateHierarchicalProjectTree).
-	^ self.
-    ].
-        
-    super delayedUpdate:something with:aParameter from:changedObject
-
-    "Created: / 17.2.2000 / 23:41:02 / cg"
-    "Modified: / 26.2.2000 / 01:21:49 / cg"
-!
-
-enqueueDelayedAddPackage:package
-    (NewSystemBrowser synchronousUpdate == true
-    or:[ immediateUpdate value == true ])
-    ifTrue:[
-        self addPackage:package.
-        ^ self
-    ].
-    ^ self
-        enqueueMessage:#addPackage:
-        for:self
-        arguments:(Array with:package)
-!
-
-update:something with:aParameter from:changedObject
-    something == #methodTrap ifTrue:[
-	"/ dont care for that.
-	^ self.
-    ].
-    changedObject == organizerMode ifTrue:[
-	"/ dont care for that.
-	^ self.
-    ].
-    super update:something with:aParameter from:changedObject
-!
-
-updateSelectionFromTree
-    |treeSelection|
-
-    treeSelection := hierarchicalProjectSelection value 
-		    collect:[:eachIndex |  |item|
-				    item := hierarchicalProjectList at:eachIndex ifAbsent:nil.
-				    item package
-			    ].
-
-    treeSelection asSet ~= (self selectedProjects value ? #()) asSet ifTrue:[
-	self selectedProjects value:treeSelection.
-    ]
-! !
-
-!HierarchicalProjectList methodsFor:'private'!
-
-addPackage:package
-    |i p pp l parentPackage parentItem idx|
-
-    i:= packageToItemDictionary at:package asSymbol ifAbsent:nil.
-    i isNil ifTrue:[
-	i := ProjectItem new.
-	i package:package.
-	packageToItemDictionary at:package asSymbol put:i.
-
-	package size > 0 ifTrue:[
-	    "/ find the parent ...
-	    p := package asCollectionOfSubstringsSeparatedByAny:':/.'.
-	    pp := p copyWithoutLast:1.
-	    l := (pp asStringWith:$/) size.
-	    parentPackage := package copyTo:l.
-
-	    parentItem := self addPackage:parentPackage asSymbol .
-
-	    parentPackage size == 0 ifTrue:[
-		idx := 1.
-	    ] ifFalse:[
-		idx := parentPackage size + 2
-	    ].
-	    i label:(package copyFrom:idx).
-
-	    parentItem add:i sortBlock:[:i1 :i2 | i1 label asLowercase < i2 label asLowercase].
-
-	    "/ TODO: special items for classes, resources etc.
-        
-	]
-    ].
-    ^ i
-!
-
-release
-    super release.
-
-    hierarchicalProjectSelection removeDependent:self.
-! !
-
-!HierarchicalProjectList methodsFor:'user actions'!
-
-doubleClicked:anIndex
-    |item|
-
-    item := hierarchicalProjectList at:anIndex ifAbsent:nil.
-    item isNil ifTrue:[
-	^ self
-    ].        
-
-    (item canExpand not or:[item isExpanded]) ifTrue:[
-	doubleClickChannel notNil ifTrue:[
-	    doubleClickChannel value:anIndex.
-	].
-	^ self
-    ].
-
-    item expand.
-!
-
-indicatorPressed:anIndex
-    |item sensor|
-
-    item := hierarchicalProjectList at:anIndex ifAbsent:nil.
-
-    item isNil ifTrue:[
-	^ self
-    ].
-
-    sensor := self window sensor.
-    (sensor ctrlDown or:[sensor shiftDown]) ifTrue:[
-	item recursiveToggleExpand
-    ] ifFalse:[
-	item toggleExpand
-    ].
-! !
-
-!HierarchicalProjectList::ProjectItem methodsFor:'accessing'!
-
-children
-    children isNil ifTrue:[
-        children := #()
-    ].
-    ^ children
-!
-
-icon
-    ^ SystemBrowser packageIcon
-!
-
-label:aString
-    label ~= aString ifTrue:[
-        label := aString.
-        self changed:#label
-    ].
-!
-
-package
-    ^ packageID
-!
-
-package:prefixOrPackageID
-    packageID := prefixOrPackageID
-! !
-
-!HierarchicalProjectList class methodsFor:'documentation'!
-
-version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_HierarchicalProjectList.st,v 1.10 2011-07-20 12:54:00 cg Exp $'
-!
-
-version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_HierarchicalProjectList.st,v 1.10 2011-07-20 12:54:00 cg Exp $'
-! !
--- a/Tools_ImplementingClassList.st	Sun Jan 27 02:50:59 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,122 +0,0 @@
-"
- COPYRIGHT (c) 2004 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 }"
-
-MethodList subclass:#ImplementingClassList
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	category:'Interface-Browsers-New'
-!
-
-!ImplementingClassList class methodsFor:'documentation'!
-
-copyright
-"
- COPYRIGHT (c) 2004 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.
-"
-!
-
-documentation
-"
-    Like a ClassList, but shows classes hierarchical.
-
-    If topClassHolders value is non-nil, only that classes hierarchy
-    is shown.
-
-    embeddable application displaying the classes as listed by
-    the inputGenerator.
-    Provides an outputGenerator, which enumerates the classes and
-    their protocols (method-categories) in the selected classes.
-
-    [author:]
-	Claus Gittinger (cg@exept.de)
-"
-
-
-! !
-
-!ImplementingClassList methodsFor:'private'!
-
-listOfMethodNames
-    |methods entries newNameList 
-     allCategories classUses allSelectors generator 
-     "theMethod"|
-
-    generator := inGeneratorHolder value.
-    generator isNil ifTrue:[^ #() ].
-
-    classUses := Bag identityNew.
-    allSelectors := IdentitySet new.
-    allCategories := Set new.
-    entries := OrderedCollection new.
-
-    "/ generator generates nil-selector entries
-    "/ to pass multiple-class and multiple-protocol info
-    generator do:[:cls :cat :sel :mthd | 
-			sel notNil ifTrue:[
-			    entries add:(Array with:cls with:sel with:mthd).
-			    classUses add:cls.
-			    allSelectors add:sel.
-			    allCategories add:mthd category.
-			]
-		 ].
-
-    entries sort:[:a :b | |clsNmA clsNmB|
-			   clsNmA := (a at:1) name.
-			   clsNmB := (b at:1) name.
-			   clsNmA < clsNmB
-		 ].
-
-    newNameList := entries collect:[:entry | 
-					|class nm|
-
-					class := (entry at:1).
-					nm := class name.
-					((allSelectors size > 1)
-					or:[(classUses occurrencesOf:class) > 1]) ifTrue:[
-					    nm := nm , ' ' , (entry at:2)
-					].
-					allCategories size > 1 ifTrue:[
-					    nm := nm , ' {' , (entry at:3) category , '}'
-					].
-"/                                        class name , ' ' , (entry at:2)
-					nm
-				   ].
-    methods := entries collect:[:entry | (entry at:3)].
-    methodList := methods.
-"/    methods size == 1 ifTrue:[
-"/        theMethod := methods first.
-"/        self methodLabelHolder value:(theMethod mclass name , ' ' , theMethod selector).
-"/    ].
-    ^ newNameList.
-
-    "Created: / 5.2.2000 / 22:43:40 / cg"
-    "Modified: / 1.3.2000 / 21:00:26 / cg"
-! !
-
-!ImplementingClassList class methodsFor:'documentation'!
-
-version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_ImplementingClassList.st,v 1.3 2005-02-02 11:02:27 cg Exp $'
-! !
--- a/Tools_ImplementingMethodList.st	Sun Jan 27 02:50:59 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,292 +0,0 @@
-"
- COPYRIGHT (c) 2004 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 }"
-
-MethodList subclass:#ImplementingMethodList
-	instanceVariableNames:'selectorList selectedSelectors'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'Interface-Browsers-New'
-!
-
-!ImplementingMethodList class methodsFor:'documentation'!
-
-copyright
-"
- COPYRIGHT (c) 2004 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.
-"
-!
-
-documentation
-"
-    Like a ClassList, but shows classes hierarchical.
-
-    If topClassHolders value is non-nil, only that classes hierarchy
-    is shown.
-
-    embeddable application displaying the classes as listed by
-    the inputGenerator.
-    Provides an outputGenerator, which enumerates the classes and
-    their protocols (method-categories) in the selected classes.
-
-    [author:]
-	Claus Gittinger (cg@exept.de)
-"
-
-
-! !
-
-!ImplementingMethodList class methodsFor:'plugIn spec'!
-
-aspectSelectors
-    "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."
-
-    "Return a description of exported aspects;
-     these can be connected to aspects of an embedding application
-     (if this app is embedded in a subCanvas)."
-
-    ^ #(
-	#classHolder
-	#(#doubleClickChannel #action )
-	#forceGeneratorTrigger
-	#immediateUpdate
-	#inGeneratorHolder
-	#outGeneratorHolder
-	#menuHolder
-	#methodCategoryHolder
-	#packageFilter
-	#selectedMethods
-	#selectionChangeCondition
-	#updateTrigger
-      ).
-
-
-
-! !
-
-!ImplementingMethodList methodsFor:'aspects'!
-
-selectedSelectors
-    selectedSelectors isNil ifTrue:[
-	selectedSelectors := ValueHolder new.
-	selectedSelectors addDependent:self
-    ].
-    ^ selectedSelectors.
-
-
-! !
-
-!ImplementingMethodList methodsFor:'change & update'!
-
-delayedUpdate:something with:aParameter from:changedObject
-    changedObject == selectedMethodNameIndices ifTrue:[
-"/        self selectedMethods value:(self selectedMethodNameIndices value collect:[:idx | methodList at:idx]).
-"/        lastSelectedMethods := self selectedMethods value.
-        
-	self selectedSelectors value:(self selectedMethodNameIndices value collect:[:idx | selectorList at:idx]).
-	"/ lastSelectedSelectors := self selectedSelectors value.
-	^ self 
-    ].
-    changedObject == selectedSelectors ifTrue:[
-	self updateOutputGenerator.
-	^ self
-    ].
-    super delayedUpdate:something with:aParameter from:changedObject
-
-    "Created: / 5.2.2000 / 13:42:14 / cg"
-    "Modified: / 6.2.2000 / 00:05:26 / cg"
-!
-
-selectedMethodsChanged
-    self updateOutputGenerator
-!
-
-selectionChanged
-    self halt:'should not happen'
-! !
-
-!ImplementingMethodList methodsFor:'generators'!
-
-makeGenerator
-    "return a generator which enumerates the methods from the selected protocol;
-     that generator generates 4-element elements (includes the class and protocol), 
-     in order to make the consumers only depend on one input 
-     (i.e. to pass multiple-class and multiple-protocol info
-      without a need for another classHolder/protocolHolder in the methodList)."
-
-    ^ Iterator on:[:whatToDo |
-			|selectors items packages|
-
-			items := OrderedCollection new.
-
-			selectors := self selectedSelectors value ? #().
-			selectors size > 0 ifTrue:[
-			    packages := packageFilter value value.
-			    selectors do:[:eachSelector |
-				classes do:[:eachClass | |mthd|
-				    mthd := eachClass compiledMethodAt:eachSelector.
-				    mthd notNil ifTrue:[
-					(packages isNil
-					or:[packages includes:mthd package]) ifTrue:[
-					    items add:(Array with:eachClass with:mthd category with:eachSelector with:mthd)
-					]
-				    ]
-				]
-			    ]
-			].
-			items sort:[:a :b |
-					|nm1 nm2 sel1 sel2|
-
-					nm1 := (a at:1) name.
-					nm2 := (b at:1) name.
-					nm1 < nm2 ifTrue:[ true ]
-					ifFalse:[
-					    nm1 = nm2 ifFalse:[ false ]
-					    ifTrue:[
-						sel1 := a at:3.
-						sel2 := b at:3.
-						sel1 < sel2
-					    ]
-					]
-				    ].
-			items do:[:eachItem | whatToDo valueWithArguments:eachItem].
-		  ]
-
-
-
-! !
-
-!ImplementingMethodList methodsFor:'private'!
-
-listOfMethodNames
-    |entries selectorsAlready newNameList 
-     newClasses allCategories allSelectors generator 
-     "showCategory"  categoryOrCountPerSelector|
-
-    generator := inGeneratorHolder value.
-    generator isNil ifTrue:[^ #() ].
-
-    newClasses := IdentitySet new.
-    selectorsAlready := IdentitySet new.
-    entries := OrderedCollection new.
-    allCategories := Set new.
-    allSelectors := Bag identityNew.
-    categoryOrCountPerSelector := IdentityDictionary new.
-
-    "/ generator generates nil-selector entries
-    "/ to pass multiple-class and multiple-protocol info
-    generator do:[:cls :cat :sel :mthd | 
-			|catsAlready|
-
-			sel notNil ifTrue:[
-			    (selectorsAlready includes:sel) ifFalse:[
-				entries add:(Array with:cls with:sel with:mthd).
-				selectorsAlready add:sel
-			    ].
-			    newClasses add:cls.
-			    allCategories add:cat.    
-			    allSelectors add:sel.
-
-			    catsAlready := categoryOrCountPerSelector at:sel ifAbsent:nil.
-			    catsAlready isNil ifTrue:[
-				categoryOrCountPerSelector at:sel put:cat.
-			    ] ifFalse:[
-				catsAlready isInteger ifTrue:[
-				    categoryOrCountPerSelector at:sel put:(catsAlready + 1).
-				] ifFalse:[
-				    catsAlready ~= cat ifTrue:[
-					categoryOrCountPerSelector at:sel put:2.
-				    ]
-				]
-			    ]
-			]
-		 ].
-
-    entries sort:[:a :b | |nmA nmB clsNmA clsNmB|
-			   nmA := (a at:2).
-			   nmB := (b at:2).
-			   nmA = nmB ifTrue:[
-			       clsNmA := (a at:1) name.
-			       clsNmB := (b at:1) name.
-			       clsNmA < clsNmB
-			   ] ifFalse:[
-			       nmA < nmB
-			   ]
-		 ].
-
-    newNameList := OrderedCollection new.
-    selectorList := OrderedCollection new.
-
-    "/ showCategory := allCategories size > 1.
-
-    entries do:[:entry |
-	|cls sel mthd s catOrCounts|
-
-	cls := entry at:1.
-	sel := entry at:2.
-	mthd := entry at:3.
-"/        s := self 
-"/                listEntryForMethod:mthd 
-"/                selector:sel 
-"/                class:cls 
-"/                showClass:false 
-"/                showCategory:showCategory
-"/                classFirst:false.
-"/        newNameList add:s.
-        
-	selectorList add:sel.
-	s := sel.
-
-	catOrCounts := categoryOrCountPerSelector at:sel.
-	catOrCounts isInteger ifTrue:[
-	    s := s , ' { ... }'  "/ in multiple categories
-	] ifFalse:[
-	    allCategories size > 1 ifTrue:[
-		s := s , ' {' , catOrCounts , '}'
-	    ]
-	].
-	newNameList add:s.
-    ].
-
-    classes := newClasses.
-    ^ newNameList.
-
-    "Created: / 5.2.2000 / 22:43:40 / cg"
-    "Modified: / 1.3.2000 / 21:00:26 / cg"
-!
-
-release
-    super release.
-
-    selectedSelectors removeDependent:self.
-! !
-
-!ImplementingMethodList class methodsFor:'documentation'!
-
-version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_ImplementingMethodList.st,v 1.3 2005-02-02 11:01:11 cg Exp $'
-! !
--- a/Tools_NavigatorCanvas.st	Sun Jan 27 02:50:59 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,6838 +0,0 @@
-"
- COPYRIGHT (c) 2000 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 }"
-
-NavigatorModel subclass:#NavigatorCanvas
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	category:'Interface-Browsers-New'
-!
-
-!NavigatorCanvas class methodsFor:'documentation'!
-
-copyright
-"
- COPYRIGHT (c) 2000 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.
-"
-! !
-
-!NavigatorCanvas class methodsFor:'interface specs'!
-
-categoryAndClassOnlySpec
-    "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:NavigatorCanvas andSelector:#categoryAndClassOnlySpec
-     NavigatorCanvas new openInterface:#categoryAndClassOnlySpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #fullClassSourceBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'Full Class Browser'
-          #name: 'Full Class Browser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 18 51 480 351)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#SubCanvasSpec
-              #name: 'Organizer'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #majorKey: #'OrganizerCanvas'
-              #minorKey: #windowSpecWithoutMetaToggles
-              #subAspectHolders: 
-             #(#Array
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #classCategoryListMenuHolder
-                  #aspect: #categoryPopUpMenu
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #classCategoryDoubleClickChannel
-                  #callBack: #classCategoryDoubleClicked
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #classDoubleClickChannel
-                  #callBack: #classDoubleClicked
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #nameSpaceDoubleClickChannel
-                  #callBack: #nameSpaceDoubleClicked
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #projectDoubleClickChannel
-                  #callBack: #projectDoubleClicked
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #variableDoubleClickChannel
-                  #callBack: #variableDoubleClicked
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #classHierarchyListMenuHolder
-                  #aspect: #hierarchyPopUpMenu
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #classHierarchyTopClass
-                  #aspect: #classHierarchyTopClass
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #classListMenuHolder
-                  #aspect: #classPopUpMenu
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #hidePrivateClasses
-                  #aspect: #hidePrivateClasses
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #hideUnloadedClasses
-                  #aspect: #hideUnloadedClasses
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #showClassPackages
-                  #aspect: #showClassPackages
-                )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-"/                     #(#SubChannelInfoSpec
-"/                        #subAspect: #showMethodComplexity
-"/                        #aspect: #showMethodComplexity
-"/                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #immediateUpdate
-                  #aspect: #immediateUpdate
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #meta
-                  #aspect: #meta
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #metaToggleLabelHolder
-                  #aspect: #metaToggleLabelHolder
-                )
-
-               #(#SubChannelInfoSpec
-                  #subAspect: #nameSpaceListMenuHolder
-                  #aspect: #nameSpacePopUpMenu
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #organizerMode
-                  #aspect: #organizerMode
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #outGeneratorHolder
-                  #aspect: #protocolListGenerator
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #packageFilter
-                  #aspect: #packageFilter
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #projectListMenuHolder
-                  #aspect: #projectPopUpMenu
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #selectedCategories
-                  #aspect: #selectedCategories
-                  #callBack: #categorySelectionChanged
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #selectedClasses
-                  #aspect: #selectedClasses
-                  #callBack: #classSelectionChanged
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #selectedNamespaces
-                  #aspect: #selectedNamespaces
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #selectedProjects
-                  #aspect: #selectedProjects
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #selectionChangeCondition
-                  #aspect: #selectionChangeConditionHolder
-                )
-              )
-              #createNewApplication: true
-              #createNewBuilder: true
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 20-07-2011 / 14:19:31 / cg"
-!
-
-categoryAndSingleClassOnlySpec
-    "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:NavigatorCanvas andSelector:#categoryAndSingleClassOnlySpec
-     NavigatorCanvas new openInterface:#categoryAndSingleClassOnlySpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #categoryAndSingleClassOnlySpec
-        #window: 
-       #(#WindowSpec
-          #label: 'Full Class Browser'
-          #name: 'Full Class Browser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 12 22 474 322)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#SubCanvasSpec
-              #name: 'Organizer'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #majorKey: #'OrganizerCanvas'
-              #minorKey: #windowSpecWithoutMetaToggles
-              #subAspectHolders: 
-             #(#Array
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #classCategoryListMenuHolder
-                  #aspect: #categoryPopUpMenu
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #classCategoryDoubleClickChannel
-                  #callBack: #classCategoryDoubleClicked
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #classDoubleClickChannel
-                  #callBack: #classDoubleClicked
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #nameSpaceDoubleClickChannel
-                  #callBack: #nameSpaceDoubleClicked
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #projectDoubleClickChannel
-                  #callBack: #projectDoubleClicked
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #variableDoubleClickChannel
-                  #callBack: #variableDoubleClicked
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #classHierarchyListMenuHolder
-                  #aspect: #hierarchyPopUpMenu
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #classHierarchyTopClass
-                  #aspect: #classHierarchyTopClass
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #classListMenuHolder
-                  #aspect: #classPopUpMenu
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #hidePrivateClasses
-                  #aspect: #hidePrivateClasses
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #hideUnloadedClasses
-                  #aspect: #hideUnloadedClasses
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #showClassPackages
-                  #aspect: #showClassPackages
-                )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-"/                     #(#SubChannelInfoSpec
-"/                        #subAspect: #showMethodComplexity
-"/                        #aspect: #showMethodComplexity
-"/                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #immediateUpdate
-                  #aspect: #immediateUpdate
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #meta
-                  #aspect: #meta
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #nameSpaceListMenuHolder
-                  #aspect: #nameSpacePopUpMenu
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #organizerMode
-                  #aspect: #organizerMode
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #outGeneratorHolder
-                  #aspect: #protocolListGenerator
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #packageFilter
-                  #aspect: #packageFilter
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #projectListMenuHolder
-                  #aspect: #projectPopUpMenu
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #selectedCategories
-                  #aspect: #selectedCategories
-                  #callBack: #categorySelectionChanged
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #selectedClasses
-                  #aspect: #selectedClasses
-                  #callBack: #classSelectionChanged
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #selectedNamespaces
-                  #aspect: #selectedNamespaces
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #selectedProjects
-                  #aspect: #selectedProjects
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #selectionChangeCondition
-                  #aspect: #selectionChangeConditionHolder
-                )
-              )
-              #createNewApplication: true
-              #createNewBuilder: true
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 20-07-2011 / 14:19:38 / cg"
-!
-
-fullBrowserSpec
-
-    ^UserPreferences current showEmbeddedTestRunnerInBrowser
-        ifTrue: [self fullBrowserSpecWithEmbeddedTestRunner]
-        ifFalse:[self fullBrowserSpecPlain]
-
-    "Modified: / 11-03-2010 / 10:15:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-fullBrowserSpecPlain
-    "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:NavigatorCanvas andSelector:#fullBrowserSpec
-     NavigatorCanvas new openInterface:#fullBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #fullBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'SystemBrowser'
-          #name: 'SystemBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 18 51 480 351)
-          #icon: #defaultIcon
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#SubCanvasSpec
-                    #name: 'Organizer'
-                    #majorKey: #'OrganizerCanvas'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #classCategoryListMenuHolder
-                        #aspect: #categoryPopUpMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #classCategoryDoubleClickChannel
-                        #callBack: #classCategoryDoubleClicked
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #classDoubleClickChannel
-                        #callBack: #classDoubleClicked
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #nameSpaceDoubleClickChannel
-                        #callBack: #nameSpaceDoubleClicked
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #projectDoubleClickChannel
-                        #callBack: #projectDoubleClicked
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableDoubleClickChannel
-                        #callBack: #variableDoubleClicked
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #classHierarchyListMenuHolder
-                        #aspect: #hierarchyPopUpMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #classHierarchyTopClass
-                        #aspect: #classHierarchyTopClass
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #classListMenuHolder
-                        #aspect: #classPopUpMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #hideUnloadedClasses
-                        #aspect: #hideUnloadedClasses
-                      )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showClassPackages
-                        #aspect: #showClassPackages
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #meta
-                        #aspect: #meta
-                      ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #metaToggleLabelHolder
-                  #aspect: #metaToggleLabelHolder
-                )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #nameSpaceListMenuHolder
-                        #aspect: #nameSpacePopUpMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #organizerMode
-                        #aspect: #organizerMode
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #projectListMenuHolder
-                        #aspect: #projectPopUpMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedCategories
-                        #aspect: #selectedCategories
-                        #callBack: #categorySelectionChanged
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedClasses
-                        #aspect: #selectedClasses
-                        #callBack: #classSelectionChanged
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedNamespaces
-                        #aspect: #selectedNamespaces
-                        #callBack: #nameSpaceSelectionChanged
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProjects
-                        #aspect: #selectedProjects
-                        #callBack: #projectSelectionChanged
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #nameSpaceFilter
-                        #aspect: #nameSpaceFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                        #callBack: #variableSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variablesMenuHolder
-                        #aspect: #variablesPopUpMenu
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #sortVariablesByName
-                        #aspect: #sortVariablesByName
-                      )
-
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodCategoryList'
-                    #majorKey: #'MethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showPseudoProtocols
-                        #aspect: #showPseudoProtocols
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                        #callBack: #protocolSelectionChanged
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                        #callBack: #variableSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                        #callBack: #variableSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodComplexity
-                        #aspect: #showMethodComplexity
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.5 0.75 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Created: / 11-03-2010 / 08:41:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 20-07-2011 / 14:20:41 / cg"
-!
-
-fullBrowserSpecWithEmbeddedTestRunner
-    "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:Tools::NavigatorCanvas andSelector:#fullBrowserSpec_new
-     Tools::NavigatorCanvas new openInterface:#fullBrowserSpec_new
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(FullSpec
-        name: #'fullBrowserSpec_new'
-        window: 
-       (WindowSpec
-          label: 'SystemBrowser'
-          name: 'SystemBrowser'
-          min: (Point 0 0)
-          bounds: (Rectangle 0 0 462 300)
-          icon: defaultIcon
-        )
-        component: 
-       (SpecCollection
-          collection: (
-           (VariableHorizontalPanelSpec
-              name: 'VariableHorizontalPanel1'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              barWidth: 2
-              showHandle: false
-              component: 
-             (SpecCollection
-                collection: (
-                 (SubCanvasSpec
-                    name: 'Organizer'
-                    majorKey: OrganizerCanvas
-                    subAspectHolders: 
-                   (Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: classCategoryListMenuHolder
-                        aspect: categoryPopUpMenu
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: classCategoryDoubleClickChannel
-                        callBack: classCategoryDoubleClicked
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: classDoubleClickChannel
-                        callBack: classDoubleClicked
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: nameSpaceDoubleClickChannel
-                        callBack: nameSpaceDoubleClicked
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: projectDoubleClickChannel
-                        callBack: projectDoubleClicked
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: variableDoubleClickChannel
-                        callBack: variableDoubleClicked
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: classHierarchyListMenuHolder
-                        aspect: hierarchyPopUpMenu
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: classHierarchyTopClass
-                        aspect: classHierarchyTopClass
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: classListMenuHolder
-                        aspect: classPopUpMenu
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: hideUnloadedClasses
-                        aspect: hideUnloadedClasses
-                      )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: markApplicationsHolder
-                        aspect: markApplicationsHolder
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: showClassPackages
-                        aspect: showClassPackages
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: immediateUpdate
-                        aspect: immediateUpdate
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: meta
-                        aspect: meta
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: metaToggleLabelHolder
-                        aspect: metaToggleLabelHolder
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: nameSpaceListMenuHolder
-                        aspect: nameSpacePopUpMenu
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: organizerMode
-                        aspect: organizerMode
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: outGeneratorHolder
-                        aspect: protocolListGenerator
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: packageFilter
-                        aspect: packageFilter
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: projectListMenuHolder
-                        aspect: projectPopUpMenu
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: selectedCategories
-                        aspect: selectedCategories
-                        callBack: categorySelectionChanged
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: selectedClasses
-                        aspect: selectedClasses
-                        callBack: classSelectionChanged
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: selectedNamespaces
-                        aspect: selectedNamespaces
-                        callBack: nameSpaceSelectionChanged
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: selectedProjects
-                        aspect: selectedProjects
-                        callBack: projectSelectionChanged
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: selectionChangeCondition
-                        aspect: selectionChangeConditionHolder
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: nameSpaceFilter
-                        aspect: nameSpaceFilter
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: variableFilter
-                        aspect: variableFilter
-                        callBack: variableSelectionChanged
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: filterClassVars
-                        aspect: filterClassVars
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: variablesMenuHolder
-                        aspect: variablesPopUpMenu
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: sortVariablesByName
-                        aspect: sortVariablesByName
-                      )
-                    )
-                    createNewApplication: true
-                    createNewBuilder: true
-                  )
-                 (SubCanvasSpec
-                    name: 'CategoryAndMethodList'
-                    hasHorizontalScrollBar: false
-                    hasVerticalScrollBar: false
-                    majorKey: #'Tools::NavigatorCanvas'
-                    minorKey: protocolAndMethodListSpec
-                    createNewBuilder: false
-                  )
-                 )
-               
-              )
-              handles: (Any 0.5 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Created: / 11-03-2010 / 08:41:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 20-07-2011 / 14:43:02 / cg"
-!
-
-multipleCategoryBrowserSpec
-    "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:NavigatorCanvas andSelector:#multipleCategoryBrowserSpec
-     NavigatorCanvas new openInterface:#multipleCategoryBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #multipleCategoryBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'CategoryBrowser'
-          #name: 'CategoryBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 18 51 480 351)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableVerticalPanelSpec
-              #name: 'VariableVerticalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#VariableHorizontalPanelSpec
-                    #name: 'VariableHorizontalPanel1'
-                    #barWidth: 2
-                    #showHandle: false
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#SubCanvasSpec
-                          #name: 'CategoryList'
-                          #majorKey: #'ClassCategoryList'
-                          #subAspectHolders: 
-                         #(#Array
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #hideUnloadedClasses
-                              #aspect: #hideUnloadedClasses
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #showClassPackages
-                              #aspect: #showClassPackages
-                            )
-                          #(#SubChannelInfoSpec
-                             #subAspect: #doubleClickChannel
-                             #callBack: #classCategoryDoubleClicked
-                           )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #inGeneratorHolder
-                              #aspect: #categoryListGenerator
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #categoryPopUpMenu
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #outGeneratorHolder
-                              #aspect: #classListGenerator
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedCategories
-                              #aspect: #selectedCategories
-                              #callBack: #categorySelectionChanged
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectionChangeCondition
-                              #aspect: #selectionChangeConditionHolder
-                            )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                       #(#ViewSpec
-                          #name: 'Box1'
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#VariableVerticalPanelSpec
-                                #name: 'VariableVerticalPanel2'
-                                #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
-                                #showHandle: false
-                                #handlePosition: #left
-                                #snapMode: #both
-                                #component: 
-                               #(#SpecCollection
-                                  #collection: #(
-                                   #(#SubCanvasSpec
-                                      #name: 'ClassList'
-                                      #majorKey: #'ClassList'
-                                      #subAspectHolders: 
-                                     #(#Array
-                                        
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                                       #(#SubChannelInfoSpec
-                                          #subAspect: #doubleClickChannel
-                                          #callBack: #classDoubleClicked
-                                        ) 
-                                       #(#SubChannelInfoSpec
-                                          #subAspect: #hideUnloadedClasses
-                                          #aspect: #hideUnloadedClasses
-                                        )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-                                        
-                                       #(#SubChannelInfoSpec
-                                          #subAspect: #immediateUpdate
-                                          #aspect: #immediateUpdate
-                                        ) 
-                                       #(#SubChannelInfoSpec
-                                          #subAspect: #inGeneratorHolder
-                                          #aspect: #classListGenerator
-                                        )
-                                        
-                                       #(#SubChannelInfoSpec
-                                          #subAspect: #menuHolder
-                                          #aspect: #classPopUpMenu
-                                        ) 
-                                       #(#SubChannelInfoSpec
-                                          #subAspect: #meta
-                                          #aspect: #meta
-                                        )
-                                        
-                                       #(#SubChannelInfoSpec
-                                          #subAspect: #organizerMode
-                                          #aspect: #organizerMode
-                                        ) 
-                                       #(#SubChannelInfoSpec
-                                          #subAspect: #outGeneratorHolder
-                                          #aspect: #protocolListGenerator
-                                        )
-                                        
-                                       #(#SubChannelInfoSpec
-                                          #subAspect: #packageFilter
-                                          #aspect: #packageFilter
-                                        ) 
-                                       #(#SubChannelInfoSpec
-                                          #subAspect: #selectedClasses
-                                          #aspect: #selectedClasses
-                                          #callBack: #classSelectionChanged
-                                        )
-                                        
-                                       #(#SubChannelInfoSpec
-                                          #subAspect: #selectionChangeCondition
-                                          #aspect: #selectionChangeConditionHolder
-                                        )
-                                      )
-                                      #createNewApplication: true
-                                      #createNewBuilder: true
-                                    )
-                                   #(#SubCanvasSpec
-                                      #name: 'VariableList'
-                                      #majorKey: #'VariableList'
-                                      #subAspectHolders: 
-                                       #(#Array
-
-                                         #(#SubChannelInfoSpec
-                                            #subAspect: #classHolder
-                                            #aspect: #selectedClasses
-                                          ) 
-                                         #(#SubChannelInfoSpec
-                                            #subAspect: #doubleClickChannel
-                                            #callBack: #variableDoubleClicked
-                                          )
-                                         #(#SubChannelInfoSpec
-                                            #subAspect: #menuHolder
-                                            #aspect: #variablesPopUpMenu
-                                          )
-
-                                         #(#SubChannelInfoSpec
-                                            #subAspect: #selectedVariables
-                                            #aspect: #variableFilter
-                                          )
-                                         #(#SubChannelInfoSpec
-                                            #subAspect: #showClassVarsInVariableList
-                                            #aspect: #filterClassVars
-                                          )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortVariablesByName
-                                    #aspect: #sortVariablesByName
-                                  )
-                                        )
-                                      #createNewApplication: true
-                                      #createNewBuilder: true
-                                    )
-                                   )
-                                 
-                                )
-                                #handles: #(#Any 0.5 1.0)
-                              )
-                             #(#UISubSpecification
-                                #name: 'MetaToggles'
-                                #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
-                                #majorKey: #'NavigatorModel'
-                                #minorKey: #metaSpec
-                              )
-                             )
-                           
-                          )
-                        )
-                       #(#SubCanvasSpec
-                          #name: 'MethodCategoryList'
-                          #majorKey: #'MethodCategoryList'
-                          #subAspectHolders: 
-                         #(#Array
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #inGeneratorHolder
-                              #aspect: #protocolListGenerator
-                            )
-                           #(#SubChannelInfoSpec
-                              #subAspect: #doubleClickChannel
-                              #callBack: #protocolDoubleClicked
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #protocolMenu
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #outGeneratorHolder
-                              #aspect: #selectorListGenerator
-                            )
-                            
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showPseudoProtocols
-                        #aspect: #showPseudoProtocols
-                      )
-                           #(#SubChannelInfoSpec
-                              #subAspect: #packageFilter
-                              #aspect: #packageFilter
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedProtocols
-                              #aspect: #selectedProtocols
-                              #callBack: #protocolSelectionChanged
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectionChangeCondition
-                              #aspect: #selectionChangeConditionHolder
-                            )
-                           #(#SubChannelInfoSpec
-                              #subAspect: #variableFilter
-                              #aspect: #variableFilter
-                            )
-                           #(#SubChannelInfoSpec
-                              #subAspect: #filterClassVars
-                              #aspect: #filterClassVars
-                            )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                       #(#SubCanvasSpec
-                          #name: 'MethodList'
-                          #majorKey: #'MethodList'
-                          #subAspectHolders: 
-                         #(#Array
-                            
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #doubleClickChannel
-                              #callBack: #methodDoubleClicked
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #inGeneratorHolder
-                              #aspect: #selectorListGenerator
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #selectorPopUpMenu
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #packageFilter
-                              #aspect: #packageFilter
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #variableFilter
-                              #aspect: #variableFilter
-                            )
-                           #(#SubChannelInfoSpec
-                              #subAspect: #filterClassVars
-                              #aspect: #filterClassVars
-                            )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodComplexity
-                        #aspect: #showMethodComplexity
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedMethods
-                              #aspect: #selectedMethods
-                              #callBack: #methodsSelectionChanged
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectionChangeCondition
-                              #aspect: #selectionChangeConditionHolder
-                            )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                       )
-                     
-                    )
-                    #handles: #(#Any 0.25 0.5 0.75 1.0)
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 04-07-2011 / 18:35:49 / cg"
-!
-
-multipleClassBrowserSpec
-    "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:NavigatorCanvas andSelector:#multipleClassBrowserSpec
-     NavigatorCanvas new openInterface:#multipleClassBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #multipleClassBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'ClassBrowser'
-          #name: 'ClassBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 18 51 480 351)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ViewSpec
-                    #name: 'Box1'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#VariableVerticalPanelSpec
-                          #name: 'VariableVerticalPanel1'
-                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#SubCanvasSpec
-                                #name: 'ClassList'
-                                #majorKey: #'ClassList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #classDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #hideUnloadedClasses
-                                    #aspect: #hideUnloadedClasses
-                                  )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #showClassPackages
-                                    #aspect: #showClassPackages
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #immediateUpdate
-                                    #aspect: #immediateUpdate
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #inGeneratorHolder
-                                    #aspect: #classListGenerator
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #classPopUpMenu
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortBy
-                                    #aspect: #sortBy
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #meta
-                                    #aspect: #meta
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #organizerMode
-                                    #aspect: #organizerMode
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #outGeneratorHolder
-                                    #aspect: #protocolListGenerator
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #packageFilter
-                                    #aspect: #packageFilter
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedClasses
-                                    #aspect: #selectedClasses
-                                    #callBack: #classSelectionChanged
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectionChangeCondition
-                                    #aspect: #selectionChangeConditionHolder
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             #(#SubCanvasSpec
-                                #name: 'VariableList'
-                                #majorKey: #'VariableList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #variableDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #classHolder
-                                    #aspect: #selectedClasses
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #variablesPopUpMenu
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedVariables
-                                    #aspect: #variableFilter
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #showClassVarsInVariableList
-                                    #aspect: #variableFilter
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortVariablesByName
-                                    #aspect: #sortVariablesByName
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             )
-                           
-                          )
-                          #showHandle: false
-                          #handlePosition: #left
-                          #snapMode: #both
-                          #handles: #(#Any 0.5 1.0)
-                        )
-                       #(#UISubSpecification
-                          #name: 'MetaToggles'
-                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
-                          #majorKey: #'NavigatorModel'
-                          #minorKey: #metaSpec
-                        )
-                       )
-                     
-                    )
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodCategoryList'
-                    #majorKey: #'MethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showPseudoProtocols
-                        #aspect: #showPseudoProtocols
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                        #callBack: #protocolSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodComplexity
-                        #aspect: #showMethodComplexity
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.333333 0.666667 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 04-07-2011 / 18:36:29 / cg"
-!
-
-multipleClassDiffBrowserSpec
-    "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:NavigatorCanvas andSelector:#multipleClassDiffBrowserSpec
-     NavigatorCanvas new openInterface:#multipleClassDiffBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #multipleClassDiffBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'ClassBrowser'
-          #name: 'ClassBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 12 22 474 322)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#SubCanvasSpec
-              #name: 'ClassList'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -30 1.0)
-              #majorKey: #'ClassList'
-              #subAspectHolders: 
-             #(#Array
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #doubleClickChannel
-                  #callBack: #classDoubleClicked
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #hideUnloadedClasses
-                  #aspect: #hideUnloadedClasses
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #showClassPackages
-                  #aspect: #showClassPackages
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #immediateUpdate
-                  #aspect: #immediateUpdate
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #inGeneratorHolder
-                  #aspect: #classListGenerator
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #menuHolder
-                  #aspect: #classPopUpMenu
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortBy
-                  #aspect: #sortBy
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #meta
-                  #aspect: #meta
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #organizerMode
-                  #aspect: #organizerMode
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #outGeneratorHolder
-                  #aspect: #protocolListGenerator
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #packageFilter
-                  #aspect: #packageFilter
-                ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #selectedClasses
-                  #aspect: #selectedClasses
-                  #callBack: #classSelectionChanged
-                )
-                
-               #(#SubChannelInfoSpec
-                  #subAspect: #selectionChangeCondition
-                  #aspect: #selectionChangeConditionHolder
-                )
-              )
-              #createNewApplication: true
-              #createNewBuilder: true
-            )
-           #(#LabelSpec
-              #label: 'projectInfo'
-              #name: 'Label1'
-              #layout: #(#LayoutFrame 0 0 -30 1 0 1 0 1)
-              #level: -1
-              #labelChannel: #classesProjectInfoHolder
-              #adjust: #left
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 04-07-2011 / 18:36:38 / cg"
-!
-
-multipleClassExtensionBrowserSpec
-    "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:NavigatorCanvas andSelector:#multipleClassExtensionBrowserSpec
-     NavigatorCanvas new openInterface:#multipleClassExtensionBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #multipleClassExtensionBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'ClassBrowser'
-          #name: 'ClassBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 16 46 478 346)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ViewSpec
-                    #name: 'Box1'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#VariableVerticalPanelSpec
-                          #name: 'VariableVerticalPanel1'
-                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#SubCanvasSpec
-                                #name: 'ClassList'
-                                #majorKey: #'ClassList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #classDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #hideUnloadedClasses
-                                    #aspect: #hideUnloadedClasses
-                                  )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #showClassPackages
-                                    #aspect: #showClassPackages
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #immediateUpdate
-                                    #aspect: #immediateUpdate
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #inGeneratorHolder
-                                    #aspect: #classListGenerator
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #classPopUpMenu
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortBy
-                                    #aspect: #sortBy
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #meta
-                                    #aspect: #meta
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #organizerMode
-                                    #aspect: #organizerMode
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #outGeneratorHolder
-                                    #aspect: #protocolListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedClasses
-                                    #aspect: #selectedClasses
-                                    #callBack: #classSelectionChanged
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectionChangeCondition
-                                    #aspect: #selectionChangeConditionHolder
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             #(#SubCanvasSpec
-                                #name: 'ProjectList'
-                                #majorKey: #'ProjectList'
-                                #subAspectHolders: 
-                               #(#Array
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #immediateUpdate
-                                    #aspect: #immediateUpdate
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #inGeneratorHolder
-                                    #aspect: #projectListGenerator
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedProjects
-                                    #aspect: #selectedProjects
-                                    #callBack: #projectSelectionChangedForFilter
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectionChangeCondition
-                                    #aspect: #selectionChangeConditionHolder
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #projectPopUpMenu
-                                  ) 
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             #(#SubCanvasSpec
-                                #name: 'VariableList'
-                                #majorKey: #'VariableList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #variableDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #classHolder
-                                    #aspect: #selectedClasses
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #variablesPopUpMenu
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedVariables
-                                    #aspect: #variableFilter
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #showClassVarsInVariableList
-                                    #aspect: #filterClassVars "/variableFilter
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortVariablesByName
-                                    #aspect: #sortVariablesByName
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             )
-                           
-                          )
-                          "/ #handles: #(#Any 0.333333 0.666667 1.0)
-                          #handles: #(#Any 0.7 1.0 1.0)
-                        )
-                       #(#UISubSpecification                 
-                          #name: 'MetaToggles'
-                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
-                          #majorKey: #'NavigatorModel'
-                          #minorKey: #metaSpec
-                        )
-                       )
-                     
-                    )
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodCategoryList'
-                    #majorKey: #'MethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showPseudoProtocols
-                        #aspect: #showPseudoProtocols
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                        #callBack: #variableSelectionChanged
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilterOnInput
-                        #aspect: #packageFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                        #callBack: #protocolSelectionChanged
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                        #callBack: #variableSelectionChanged
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodComplexity
-                        #aspect: #showMethodComplexity
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.333333 0.666667 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 04-07-2011 / 18:36:44 / cg"
-!
-
-multipleFullProtocolBrowserSpec
-    "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:NavigatorCanvas andSelector:#multipleFullProtocolBrowserSpec
-     NavigatorCanvas new openInterface:#multipleFullProtocolBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #multipleFullProtocolBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'ProtocolBrowser'
-          #name: 'ProtocolBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 12 22 474 322)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#SubCanvasSpec
-                    #name: 'MethodCategoryList'
-                    #majorKey: #'MethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #noAllItem
-                        #aspect: #noAllItem
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #sortBy
-                        #aspect: #sortBy
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.5 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 20-07-2011 / 14:39:15 / cg"
-!
-
-multipleNameSpaceBrowserSpec
-    "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:NavigatorCanvas andSelector:#multipleNameSpaceBrowserSpec
-     NavigatorCanvas new openInterface:#multipleNameSpaceBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #multipleNameSpaceBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'NameSpaceBrowser'
-          #name: 'NameSpaceBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 18 51 480 351)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#SubCanvasSpec
-                    #name: 'NameSpaceList'
-                    #majorKey: #'NameSpaceList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #nameSpacePopUpMenu
-                            ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #hideUnloadedClasses
-                        #aspect: #hideUnloadedClasses
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showClassPackages
-                        #aspect: #showClassPackages
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #nameSpaceDoubleClicked
-                      ) 
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #nameSpaceListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #classListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedNamespaces
-                        #aspect: #selectedNamespaces
-                        #callBack: #nameSpaceSelectionChanged
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#ViewSpec
-                    #name: 'Box1'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#VariableVerticalPanelSpec
-                          #name: 'VariableVerticalPanel1'
-                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
-                          #showHandle: false
-                          #handlePosition: #left
-                          #snapMode: #both
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#SubCanvasSpec
-                                #name: 'ClassList'
-                                #majorKey: #'ClassList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #classDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #hideUnloadedClasses
-                                    #aspect: #hideUnloadedClasses
-                                  )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #immediateUpdate
-                                    #aspect: #immediateUpdate
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #inGeneratorHolder
-                                    #aspect: #classListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #meta
-                                    #aspect: #meta
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #organizerMode
-                                    #aspect: #organizerMode
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #outGeneratorHolder
-                                    #aspect: #protocolListGenerator
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #packageFilter
-                                    #aspect: #packageFilter
-                                  )
-                           #(#SubChannelInfoSpec
-                              #subAspect: #nameSpaceFilter
-                              #aspect: #selectedNamespaces
-                            ) 
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedClasses
-                                    #aspect: #selectedClasses
-                                    #callBack: #classSelectionChanged
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectionChangeCondition
-                                    #aspect: #selectionChangeConditionHolder
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             #(#SubCanvasSpec
-                                #name: 'VariableList'
-                                #majorKey: #'VariableList'
-                                #subAspectHolders: 
-                               #(#Array
-
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #variableDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #classHolder
-                                    #aspect: #selectedClasses
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #variablesPopUpMenu
-                                  )
-
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedVariables
-                                    #aspect: #variableFilter
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #showClassVarsInVariableList
-                                    #aspect: #filterClassVars
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortVariablesByName
-                                    #aspect: #sortVariablesByName
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             )
-                           
-                          )
-                          #handles: #(#Any 0.5 1.0)
-                        )
-                       #(#UISubSpecification
-                          #name: 'MetaToggles'
-                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
-                          #majorKey: #'NavigatorModel'
-                          #minorKey: #metaSpec
-                        )
-                       )
-                     
-                    )
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodCategoryList'
-                    #majorKey: #'MethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showPseudoProtocols
-                        #aspect: #showPseudoProtocols
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      ) 
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                        #callBack: #protocolSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodComplexity
-                        #aspect: #showMethodComplexity
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.25 0.5 0.75 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 04-07-2011 / 18:36:54 / cg"
-!
-
-multipleNameSpaceFullBrowserSpec
-    "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:NavigatorCanvas andSelector:#multipleNameSpaceFullBrowserSpec
-     NavigatorCanvas new openInterface:#multipleNameSpaceFullBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #multipleNameSpaceFullBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'NameSpaceBrowser'
-          #name: 'NameSpaceBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 127 62 589 362)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#VariableVerticalPanelSpec
-                    #name: 'VariableVerticalPanel2'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#SubCanvasSpec
-                          #name: 'NameSpaceList'
-                          #majorKey: #'NamespaceList'
-                          #subAspectHolders: 
-                         #(#Array
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #nameSpacePopUpMenu
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #hideUnloadedClasses
-                              #aspect: #hideUnloadedClasses
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #showClassPackages
-                              #aspect: #showClassPackages
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #doubleClickChannel
-                              #callBack: #nameSpaceDoubleClicked
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #inGeneratorHolder
-                              #aspect: #nameSpaceListGenerator
-                            ) 
-"/                           #(#SubChannelInfoSpec
-"/                              #subAspect: #outGeneratorHolder
-"/                              #aspect: #classListGenerator
-"/                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedNamespaces
-                              #aspect: #selectedNamespaces
-                              #callBack: #nameSpaceSelectionChanged
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectionChangeCondition
-                              #aspect: #selectionChangeConditionHolder
-                            )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                       #(#SubCanvasSpec
-                          #name: 'ClassCategoryList'
-                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-                          #majorKey: #'ClassCategoryList'
-                          #subAspectHolders: 
-                         #(#Array
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #nameSpaceFilter
-                              #aspect: #selectedNamespaces
-                            ) 
-                          #(#SubChannelInfoSpec
-                             #subAspect: #doubleClickChannel
-                             #callBack: #classCategoryDoubleClicked
-                           )
-                           #(#SubChannelInfoSpec
-                              #subAspect: #forceGeneratorTrigger
-                              #aspect: #forceClassCategoryGeneratorTrigger
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #hideUnloadedClasses
-                              #aspect: #hideUnloadedClasses
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #categoryPopUpMenu
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #organizerMode
-                              #aspect: #organizerMode
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #outGeneratorHolder
-                              #aspect: #classListGenerator
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedCategories
-                              #aspect: #selectedCategories
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectionChangeCondition
-                              #aspect: #selectionChangeCondition
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #slaveMode
-                              #aspect: #categoryListSlaveMode
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #updateTrigger
-                              #aspect: #classCategoryListUpdateTrigger
-                            )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                       )
-                     
-                    )
-                    #handles: #(#Any 0.5 1.0)
-                  )
-                 #(#ViewSpec
-                    #name: 'Box1'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#VariableVerticalPanelSpec
-                          #name: 'VariableVerticalPanel1'
-                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
-                          #showHandle: false
-                          #handlePosition: #left
-                          #snapMode: #both
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#SubCanvasSpec
-                                #name: 'ClassList'
-                                #majorKey: #'ClassList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #classPopUpMenu
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #nameSpaceFilter
-                                    #aspect: #selectedNamespaces
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #classDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #hideUnloadedClasses
-                                    #aspect: #hideUnloadedClasses
-                                  )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #immediateUpdate
-                                    #aspect: #immediateUpdate
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #inGeneratorHolder
-                                    #aspect: #classListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #meta
-                                    #aspect: #meta
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #organizerMode
-                                    #aspect: #organizerMode
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #outGeneratorHolder
-                                    #aspect: #protocolListGenerator
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #packageFilter
-                                    #aspect: #packageFilter
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedClasses
-                                    #aspect: #selectedClasses
-                                    #callBack: #classSelectionChanged
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectionChangeCondition
-                                    #aspect: #selectionChangeConditionHolder
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             #(#SubCanvasSpec
-                                #name: 'VariableList'
-                                #majorKey: #'VariableList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #variableDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #classHolder
-                                    #aspect: #selectedClasses
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #variablesPopUpMenu
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedVariables
-                                    #aspect: #variableFilter
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #showClassVarsInVariableList
-                                    #aspect: #filterClassVars
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortVariablesByName
-                                    #aspect: #sortVariablesByName
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             )
-                           
-                          )
-                          #handles: #(#Any 0.5 1.0)
-                        )
-                       #(#UISubSpecification
-                          #name: 'MetaToggles'
-                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
-                          #majorKey: #'NavigatorModel'
-                          #minorKey: #metaSpec
-                        )
-                       )
-                     
-                    )
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodCategoryList'
-                    #majorKey: #'MethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showPseudoProtocols
-                        #aspect: #showPseudoProtocols
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                        #callBack: #protocolSelectionChanged
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodComplexity
-                        #aspect: #showMethodComplexity
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.25 0.5 0.75 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 04-07-2011 / 18:37:01 / cg"
-!
-
-multipleProjectBrowserSpec
-    "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:NavigatorCanvas andSelector:#multipleProjectBrowserSpec
-     NavigatorCanvas new openInterface:#multipleProjectBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #multipleProjectBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'ProjectBrowser'
-          #name: 'ProjectBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 18 51 480 351)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#SubCanvasSpec
-                    #name: 'ProjectList'
-                    #majorKey: #'ProjectList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #projectPopUpMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #hideUnloadedClasses
-                        #aspect: #hideUnloadedClasses
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #projectDoubleClicked
-                      ) 
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showClassPackages
-                        #aspect: #showClassPackages
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #projectListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #classListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProjects
-                        #aspect: #selectedProjects
-                        #callBack: #projectSelectionChanged
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#ViewSpec
-                    #name: 'Box1'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#VariableVerticalPanelSpec
-                          #name: 'VariableVerticalPanel1'
-                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
-                          #showHandle: false
-                          #handlePosition: #left
-                          #snapMode: #both
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#SubCanvasSpec
-                                #name: 'ClassList'
-                                #majorKey: #'ClassList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #classDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #hideUnloadedClasses
-                                    #aspect: #hideUnloadedClasses
-                                  )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #immediateUpdate
-                                    #aspect: #immediateUpdate
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #inGeneratorHolder
-                                    #aspect: #classListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #meta
-                                    #aspect: #meta
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #organizerMode
-                                    #aspect: #organizerMode
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #outGeneratorHolder
-                                    #aspect: #protocolListGenerator
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #packageFilter
-                                    #aspect: #packageFilter
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedClasses
-                                    #aspect: #selectedClasses
-                                    #callBack: #classSelectionChanged
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectionChangeCondition
-                                    #aspect: #selectionChangeConditionHolder
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             #(#SubCanvasSpec
-                                #name: 'VariableList'
-                                #majorKey: #'VariableList'
-                                #subAspectHolders: 
-                               #(#Array
-
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #variableDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #classHolder
-                                    #aspect: #selectedClasses
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #variablesPopUpMenu
-                                  )
-
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedVariables
-                                    #aspect: #variableFilter
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #showClassVarsInVariableList
-                                    #aspect: #filterClassVars
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortVariablesByName
-                                    #aspect: #sortVariablesByName
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             )
-                           
-                          )
-                          #handles: #(#Any 0.5 1.0)
-                        )
-                       #(#UISubSpecification
-                          #name: 'MetaToggles'
-                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
-                          #majorKey: #'NavigatorModel'
-                          #minorKey: #metaSpec
-                        )
-                       )
-                     
-                    )
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodCategoryList'
-                    #majorKey: #'MethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showPseudoProtocols
-                        #aspect: #showPseudoProtocols
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                        #callBack: #variableSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                        #callBack: #protocolSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                        #callBack: #variableSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodComplexity
-                        #aspect: #showMethodComplexity
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.25 0.5 0.75 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 04-07-2011 / 18:37:12 / cg"
-!
-
-multipleProjectFullBrowserSpec
-    "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:NavigatorCanvas andSelector:#multipleProjectFullBrowserSpec
-     NavigatorCanvas new openInterface:#multipleProjectFullBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #multipleProjectFullBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'ProjectBrowser'
-          #name: 'ProjectBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 23 111 485 411)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#VariableVerticalPanelSpec
-                    #name: 'VariableVerticalPanel2'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#SubCanvasSpec
-                          #name: 'ProjectList'
-                          #majorKey: #'ProjectList'
-                          #subAspectHolders: 
-                         #(#Array
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #projectPopUpMenu
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #hideUnloadedClasses
-                              #aspect: #hideUnloadedClasses
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #doubleClickChannel
-                              #callBack: #projectDoubleClicked
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #showClassPackages
-                              #aspect: #showClassPackages
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #inGeneratorHolder
-                              #aspect: #projectListGenerator
-                            )
-                            
-"/                           #(#SubChannelInfoSpec
-"/                              #subAspect: #outGeneratorHolder
-"/                              #aspect: #classListGenerator
-"/                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedProjects
-                              #aspect: #selectedProjects
-                              #callBack: #projectSelectionChanged
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectionChangeCondition
-                              #aspect: #selectionChangeConditionHolder
-                            )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                        #(#SubCanvasSpec
-                          #name: 'ClassCategoryList'
-                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-                          #majorKey: #'ClassCategoryList'
-                          #subAspectHolders: 
-                         #(#Array
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #packageFilter
-                              #aspect: #selectedProjects
-                            ) 
-                          #(#SubChannelInfoSpec
-                             #subAspect: #doubleClickChannel
-                             #callBack: #classCategoryDoubleClicked
-                           )
-                           #(#SubChannelInfoSpec
-                              #subAspect: #forceGeneratorTrigger
-                              #aspect: #forceClassCategoryGeneratorTrigger
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #hideUnloadedClasses
-                              #aspect: #hideUnloadedClasses
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #categoryPopUpMenu
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #organizerMode
-                              #aspect: #organizerMode
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #outGeneratorHolder
-                              #aspect: #classListGenerator
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedCategories
-                              #aspect: #selectedCategories
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectionChangeCondition
-                              #aspect: #selectionChangeCondition
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #slaveMode
-                              #aspect: #categoryListSlaveMode
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #updateTrigger
-                              #aspect: #classCategoryListUpdateTrigger
-                            )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                       )
-                     
-                    )
-                    #handles: #(#Any 0.5 1.0)
-                  )
-                 #(#ViewSpec
-                    #name: 'Box1'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#VariableVerticalPanelSpec
-                          #name: 'VariableVerticalPanel1'
-                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
-                          #showHandle: false
-                          #handlePosition: #left
-                          #snapMode: #both
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#SubCanvasSpec
-                                #name: 'ClassList'
-                                #majorKey: #'ClassList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #classPopUpMenu
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #packageFilter
-                                    #aspect: #selectedProjects
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #classDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #hideUnloadedClasses
-                                    #aspect: #hideUnloadedClasses
-                                  )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #immediateUpdate
-                                    #aspect: #immediateUpdate
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #inGeneratorHolder
-                                    #aspect: #classListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #meta
-                                    #aspect: #meta
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #organizerMode
-                                    #aspect: #organizerMode
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #outGeneratorHolder
-                                    #aspect: #protocolListGenerator
-                                  ) 
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedClasses
-                                    #aspect: #selectedClasses
-                                    #callBack: #classSelectionChanged
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectionChangeCondition
-                                    #aspect: #selectionChangeConditionHolder
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             #(#SubCanvasSpec
-                                #name: 'VariableList'
-                                #majorKey: #'VariableList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #variableDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #classHolder
-                                    #aspect: #selectedClasses
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #variablesPopUpMenu
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedVariables
-                                    #aspect: #variableFilter
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #showClassVarsInVariableList
-                                    #aspect: #filterClassVars
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortVariablesByName
-                                    #aspect: #sortVariablesByName
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             )
-                           
-                          )
-                          #handles: #(#Any 0.5 1.0)
-                        )
-                       #(#UISubSpecification
-                          #name: 'MetaToggles'
-                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
-                          #majorKey: #'NavigatorModel'
-                          #minorKey: #metaSpec
-                        )
-                       )
-                     
-                    )
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodCategoryList'
-                    #majorKey: #'MethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showPseudoProtocols
-                        #aspect: #showPseudoProtocols
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                        #callBack: #variableSelectionChanged
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                        #callBack: #protocolSelectionChanged
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                        #callBack: #variableSelectionChanged
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodComplexity
-                        #aspect: #showMethodComplexity
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.25 0.5 0.75 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 04-07-2011 / 18:37:24 / cg"
-!
-
-multipleProtocolBrowserSpec
-    "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:NavigatorCanvas andSelector:#multipleProtocolBrowserSpec
-     NavigatorCanvas new openInterface:#multipleProtocolBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #multipleProtocolBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'ProtocolBrowser'
-          #name: 'ProtocolBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 12 22 474 322)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#SubCanvasSpec
-                    #name: 'MethodCategoryList'
-                    #majorKey: #'MethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #noAllItem
-                        #aspect: #noAllItem
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #sortBy
-                        #aspect: #sortBy
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.5 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 27-04-2010 / 16:43:01 / cg"
-!
-
-protocolAndMethodListSpec
-    "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:Tools::NavigatorCanvas andSelector:#protocolAndMethodListSpec
-     Tools::NavigatorCanvas new openInterface:#protocolAndMethodListSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(FullSpec
-        name: protocolAndMethodListSpec
-        window: 
-       (WindowSpec
-          label: 'Protocol and Method List'
-          name: 'Protocol and Method List'
-          min: (Point 0 0)
-          bounds: (Rectangle 0 0 498 456)
-          icon: defaultIcon
-        )
-        component: 
-       (SpecCollection
-          collection: (
-           (SubCanvasSpec
-              name: 'ProtocolAndMethodListCanvas'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              hasHorizontalScrollBar: false
-              hasVerticalScrollBar: false
-              majorKey: #'Tools::NavigatorCanvas'
-              minorKey: #'protocolAndMethodListSpec_Both'
-              specHolder: organizerProtocolAndMethodListSpecHolder
-              createNewBuilder: false
-            )
-           (SubCanvasSpec
-              name: 'TestRunnerEmbedded'
-              layout: (LayoutFrame 0 0 -50 1 0 1 0 1)
-              initiallyInvisible: true
-              hasHorizontalScrollBar: false
-              hasVerticalScrollBar: false
-              majorKey: #'Tools::TestRunnerEmbedded'
-              subAspectHolders: 
-             (Array
-                
-               (SubChannelInfoSpec
-                  subAspect: methodGeneratorHolder
-                  aspect: selectorListGenerator
-                ) 
-               (SubChannelInfoSpec
-                  subAspect: selectedClassesHolder
-                  aspect: selectedClasses
-                )
-                
-               (SubChannelInfoSpec
-                  subAspect: selectedMethodsHolder
-                  aspect: selectedMethods
-                ) 
-               (SubChannelInfoSpec
-                  subAspect: selectedProtocolsHolder
-                  aspect: selectedProtocols
-                )
-                
-               (SubChannelInfoSpec
-                  subAspect: infoHolder
-                  aspect: infoLabelHolder
-                )
-              )
-              createNewApplication: true
-              createNewBuilder: true
-            )
-           )
-         
-        )
-      )
-!
-
-selectorBrowserSpec
-    "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:NavigatorCanvas andSelector:#selectorBrowserSpec
-     NavigatorCanvas new openInterface:#selectorBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #selectorBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'SelectorBrowser'
-          #name: 'SelectorBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 12 22 474 322)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#SubCanvasSpec
-                    #name: 'AllMethodCategoryList'
-                    #majorKey: #'FullMethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                        #callBack: #protocolSelectionChanged
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'ImplementedMethodList'
-                    #majorKey: #'ImplementingMethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #xxxDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #implementingClassListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'ImplementingClassList'
-                    #majorKey: #'ImplementingClassList'
-                    #minorKey: #windowSpec
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #implementingClassListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.333333 0.666667 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 27-04-2010 / 16:43:16 / cg"
-!
-
-singleCategoryBrowserSpec
-    "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:NavigatorCanvas andSelector:#singleCategoryBrowserSpec
-     NavigatorCanvas new openInterface:#singleCategoryBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #singleCategoryBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'CategoryBrowser'
-          #name: 'CategoryBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 18 51 480 351)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ViewSpec
-                    #name: 'Box1'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#SubCanvasSpec
-                          #name: 'PseudoCategoryList'
-                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
-                          #majorKey: #'ClassCategoryList'
-                          #minorKey: #singleCategoryWindowSpec
-                          #subAspectHolders: 
-                         #(#Array
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #categoryPopUpMenu
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #hideUnloadedClasses
-                              #aspect: #hideUnloadedClasses
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #showClassPackages
-                              #aspect: #showClassPackages
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #inGeneratorHolder
-                              #aspect: #categoryListGenerator
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #outGeneratorHolder
-                              #aspect: #classListGenerator
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedCategories
-                              #aspect: #selectedCategories
-                            )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                       #(#VariableVerticalPanelSpec
-                          #name: 'VariableVerticalPanel1'
-                          #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 -25 1.0)
-                          #showHandle: false
-                          #handlePosition: #left
-                          #snapMode: #both
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#SubCanvasSpec
-                                #name: 'ClassList'
-                                #majorKey: #'ClassList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #classDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #hideUnloadedClasses
-                                    #aspect: #hideUnloadedClasses
-                                  )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #immediateUpdate
-                                    #aspect: #immediateUpdate
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #inGeneratorHolder
-                                    #aspect: #classListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #classPopUpMenu
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #meta
-                                    #aspect: #meta
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #organizerMode
-                                    #aspect: #organizerMode
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #outGeneratorHolder
-                                    #aspect: #protocolListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #packageFilter
-                                    #aspect: #packageFilter
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedClasses
-                                    #aspect: #selectedClasses
-                                    #callBack: #classSelectionChanged
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectionChangeCondition
-                                    #aspect: #selectionChangeConditionHolder
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             #(#SubCanvasSpec
-                                #name: 'VariableList'
-                                #majorKey: #'VariableList'
-                                #subAspectHolders: 
-                               #(#Array
-
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #variableDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #classHolder
-                                    #aspect: #selectedClasses
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #variablesMenuHolder
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #variablesPopUpMenu
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedVariables
-                                    #aspect: #variableFilter
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #showClassVarsInVariableList
-                                    #aspect: #filterClassVars
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortVariablesByName
-                                    #aspect: #sortVariablesByName
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             )
-                           
-                          )
-                          #handles: #(#Any 0.5 1.0)
-                        )
-                       #(#UISubSpecification
-                          #name: 'MetaToggles'
-                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
-                          #majorKey: #'NavigatorModel'
-                          #minorKey: #metaSpec
-                        )
-                       )
-                     
-                    )
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodCategoryList'
-                    #majorKey: #'MethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showPseudoProtocols
-                        #aspect: #showPseudoProtocols
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                        #callBack: #protocolSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders:                          
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodComplexity
-                        #aspect: #showMethodComplexity
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      )                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.333333 0.666667 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 04-07-2011 / 18:37:34 / cg"
-!
-
-singleClassBrowserSpec
-    "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:NavigatorCanvas andSelector:#singleClassBrowserSpec
-     NavigatorCanvas new openInterface:#singleClassBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #singleClassBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'ClassBrowser'
-          #name: 'ClassBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 16 46 478 346)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ViewSpec
-                    #name: 'Box1'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#SubCanvasSpec
-                          #name: 'PseudoClassList'
-                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
-                          #majorKey: #'ClassList'
-                          #minorKey: #singleClassWindowSpec
-                          #subAspectHolders: 
-                         #(#Array
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #hideUnloadedClasses
-                              #aspect: #hideUnloadedClasses
-                            ) 
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-                           #(#SubChannelInfoSpec
-                              #subAspect: #showClassPackages
-                              #aspect: #showClassPackages
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #inGeneratorHolder
-                              #aspect: #classListGenerator
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #meta
-                              #aspect: #meta
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #outGeneratorHolder
-                              #aspect: #protocolListGenerator
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedClasses
-                              #aspect: #selectedClasses
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #classPopUpMenu
-                            )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                       #(#VariableVerticalPanelSpec
-                          #name: 'VariableVerticalPanel1'
-                          #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 -25 1.0)
-                          #showHandle: false
-                          #snapMode: #both
-                          #handlePosition: #left
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#SubCanvasSpec
-                                #name: 'MethodCategoryList'
-                                #majorKey: #'MethodCategoryList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showPseudoProtocols
-                        #aspect: #showPseudoProtocols
-                      )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #immediateUpdate
-                                    #aspect: #immediateUpdate
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #inGeneratorHolder
-                                    #aspect: #protocolListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #protocolDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #protocolMenu
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #outGeneratorHolder
-                                    #aspect: #selectorListGenerator
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #variableFilter
-                                    #aspect: #variableFilter
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #filterClassVars
-                                    #aspect: #filterClassVars
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #packageFilter
-                                    #aspect: #packageFilter
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedProtocols
-                                    #aspect: #selectedProtocols
-                                    #callBack: #protocolSelectionChanged
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectionChangeCondition
-                                    #aspect: #selectionChangeConditionHolder
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             #(#SubCanvasSpec
-                                #name: 'VariableList'
-                                #majorKey: #'VariableList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #variableDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #classHolder
-                                    #aspect: #selectedClasses
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #variablesPopUpMenu
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedVariables
-                                    #aspect: #variableFilter
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #showClassVarsInVariableList
-                                    #aspect: #filterClassVars
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortVariablesByName
-                                    #aspect: #sortVariablesByName
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             )
-                           
-                          )
-                          #handles: #(#Any 0.5 1.0)
-                        )
-                       #(#UISubSpecification
-                          #name: 'MetaToggles'
-                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
-                          #majorKey: #'NavigatorModel'
-                          #minorKey: #metaSpec
-                        )
-                       )
-                     
-                    )
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodComplexity
-                        #aspect: #showMethodComplexity
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.5 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 04-07-2011 / 18:37:41 / cg"
-!
-
-singleFullProtocolBrowserSpec
-    "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:NavigatorCanvas andSelector:#singleFullProtocolBrowserSpec
-     NavigatorCanvas new openInterface:#singleFullProtocolBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #singleFullProtocolBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'ProtocolBrowser'
-          #name: 'ProtocolBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 12 22 474 322)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#ViewSpec
-              #name: 'Box1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#SubCanvasSpec
-                    #name: 'PseudoProtocolList'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
-                    #majorKey: #'MethodCategoryList'
-                    #minorKey: #singleProtocolWindowSpec
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                      #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                    #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 0 1.0)
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #sortBy
-                        #aspect: #sortBy
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 20-07-2011 / 14:40:48 / cg"
-!
-
-singleNameSpaceBrowserSpec
-    "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:NavigatorCanvas andSelector:#singleNameSpaceBrowserSpec
-     NavigatorCanvas new openInterface:#singleNameSpaceBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #singleNameSpaceBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'NameSpaceBrowser'
-          #name: 'NameSpaceBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 18 51 480 351)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ViewSpec
-                    #name: 'Box1'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#SubCanvasSpec
-                          #name: 'PseudoNameSpaceList'
-                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
-                          #majorKey: #'NamespaceList'
-                          #minorKey: #singleNameSpaceWindowSpec
-                          #subAspectHolders: 
-                         #(#Array
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #hideUnloadedClasses
-                              #aspect: #hideUnloadedClasses
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #showClassPackages
-                              #aspect: #showClassPackages
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #inGeneratorHolder
-                              #aspect: #nameSpaceListGenerator
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #outGeneratorHolder
-                              #aspect: #classListGenerator
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedNamespaces
-                              #aspect: #selectedNamespaces
-                            )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                       #(#VariableVerticalPanelSpec
-                          #name: 'VariableVerticalPanel1'
-                          #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 -25 1.0)
-                          #showHandle: false
-                          #handlePosition: #left
-                          #snapMode: #both
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#SubCanvasSpec
-                                #name: 'ClassList'
-                                #majorKey: #'ClassList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #classDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #hideUnloadedClasses
-                                    #aspect: #hideUnloadedClasses
-                                  )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #immediateUpdate
-                                    #aspect: #immediateUpdate
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #inGeneratorHolder
-                                    #aspect: #classListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #classPopUpMenu
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #meta
-                                    #aspect: #meta
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #organizerMode
-                                    #aspect: #organizerMode
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #outGeneratorHolder
-                                    #aspect: #protocolListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #packageFilter
-                                    #callBack: #packageFilter
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedClasses
-                                    #aspect: #selectedClasses
-                                    #callBack: #classSelectionChanged
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectionChangeCondition
-                                    #aspect: #selectionChangeConditionHolder
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             #(#SubCanvasSpec
-                                #name: 'VariableList'
-                                #majorKey: #'VariableList'
-                                #subAspectHolders: 
-                               #(#Array
-
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #variableDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #classHolder
-                                    #aspect: #selectedClasses
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #variablesPopUpMenu
-                                  )
-
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedVariables
-                                    #aspect: #variableFilter
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #showClassVarsInVariableList
-                                    #aspect: #filterClassVars
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortVariablesByName
-                                    #aspect: #sortVariablesByName
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             )
-                           
-                          )
-                          #handles: #(#Any 0.5 1.0)
-                        )
-                       #(#UISubSpecification
-                          #name: 'MetaToggles'
-                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
-                          #majorKey: #'NavigatorModel'
-                          #minorKey: #metaSpec
-                        )
-                       )
-                     
-                    )
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodCategoryList'
-                    #majorKey: #'MethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showPseudoProtocols
-                        #aspect: #showPseudoProtocols
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                        #callBack: #protocolSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodComplexity
-                        #aspect: #showMethodComplexity
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.333333 0.666667 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 04-07-2011 / 18:37:52 / cg"
-!
-
-singleNameSpaceFullBrowserSpec
-    "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:NavigatorCanvas andSelector:#singleNameSpaceFullBrowserSpec
-     NavigatorCanvas new openInterface:#singleNameSpaceFullBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #singleNameSpaceFullBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'NameSpaceBrowser'
-          #name: 'NameSpaceBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 102 220 564 520)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ViewSpec
-                    #name: 'Box1'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#SubCanvasSpec
-                          #name: 'PseudoNameSpaceList'
-                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
-                          #majorKey: #'NamespaceList'
-                          #minorKey: #singleNameSpaceWindowSpec
-                          #subAspectHolders: 
-                         #(#Array
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #hideUnloadedClasses
-                              #aspect: #hideUnloadedClasses
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #showClassPackages
-                              #aspect: #showClassPackages
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #inGeneratorHolder
-                              #aspect: #nameSpaceListGenerator
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #outGeneratorHolder
-                              #aspect: #classListPerNameSpaceGenerator
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedNamespaces
-                              #aspect: #selectedNamespaces
-                            )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                       #(#SubCanvasSpec
-                          #name: 'ClassCategoryList'
-                          #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 0 1.0)
-                          #majorKey: #'ClassCategoryList'
-                          #subAspectHolders: 
-                         #(#Array
-                            
-                          #(#SubChannelInfoSpec
-                             #subAspect: #doubleClickChannel
-                             #callBack: #classCategoryDoubleClicked
-                           )
-                           #(#SubChannelInfoSpec
-                              #subAspect: #forceGeneratorTrigger
-                              #aspect: #forceClassCategoryGeneratorTrigger
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #nameSpaceFilter
-                              #aspect: #selectedNamespaces
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #hideUnloadedClasses
-                              #aspect: #hideUnloadedClasses
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #categoryPopUpMenu
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #organizerMode
-                              #aspect: #organizerMode
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #outGeneratorHolder
-                              #aspect: #classListGenerator
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedCategories
-                              #aspect: #selectedCategories
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectionChangeCondition
-                              #aspect: #selectionChangeCondition
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #slaveMode
-                              #aspect: #categoryListSlaveMode
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #updateTrigger
-                              #aspect: #classCategoryListUpdateTrigger
-                            )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                       )
-                     
-                    )
-                  )
-                 #(#ViewSpec
-                    #name: 'Box2'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#VariableVerticalPanelSpec
-                          #name: 'VariableVerticalPanel2'
-                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
-                          #showHandle: false
-                          #handlePosition: #left
-                          #snapMode: #both
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#SubCanvasSpec
-                                #name: 'ClassList'
-                                #majorKey: #'ClassList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                               #(#SubChannelInfoSpec
-                                  #subAspect: #nameSpaceFilter
-                                  #aspect: #selectedNamespaces
-                                ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #classDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #hideUnloadedClasses
-                                    #aspect: #hideUnloadedClasses
-                                  )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #immediateUpdate
-                                    #aspect: #immediateUpdate
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #inGeneratorHolder
-                                    #aspect: #classListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #classPopUpMenu
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #meta
-                                    #aspect: #meta
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #organizerMode
-                                    #aspect: #organizerMode
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #outGeneratorHolder
-                                    #aspect: #protocolListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #packageFilter
-                                    #callBack: #packageFilter
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedClasses
-                                    #aspect: #selectedClasses
-                                    #callBack: #classSelectionChanged
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectionChangeCondition
-                                    #aspect: #selectionChangeConditionHolder
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             #(#SubCanvasSpec
-                                #name: 'VariableList'
-                                #majorKey: #'VariableList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #variableDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #classHolder
-                                    #aspect: #selectedClasses
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #variablesPopUpMenu
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedVariables
-                                    #aspect: #variableFilter
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #showClassVarsInVariableList
-                                    #aspect: #filterClassVars
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortVariablesByName
-                                    #aspect: #sortVariablesByName
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             )
-                           
-                          )
-                          #handles: #(#Any 0.5 1.0)
-                        )
-                       #(#UISubSpecification
-                          #name: 'MetaToggles'
-                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
-                          #majorKey: #'NavigatorModel'
-                          #minorKey: #metaSpec
-                        )
-                       )
-                     
-                    )
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodCategoryList'
-                    #majorKey: #'MethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showPseudoProtocols
-                        #aspect: #showPseudoProtocols
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                        #callBack: #protocolSelectionChanged
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodComplexity
-                        #aspect: #showMethodComplexity
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.25 0.5 0.75 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 04-07-2011 / 18:37:57 / cg"
-!
-
-singleProjectBrowserSpec
-    "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:NavigatorCanvas andSelector:#singleProjectBrowserSpec
-     NavigatorCanvas new openInterface:#singleProjectBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #singleProjectBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'ProjectBrowser'
-          #name: 'ProjectBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 18 51 480 351)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ViewSpec
-                    #name: 'Box1'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#SubCanvasSpec
-                          #name: 'PseudoProjectList'
-                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
-                          #majorKey: #'ProjectList'
-                          #minorKey: #singleProjectWindowSpec
-                          #subAspectHolders: 
-                         #(#Array
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #projectPopUpMenu
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #hideUnloadedClasses
-                              #aspect: #hideUnloadedClasses
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #showClassPackages
-                              #aspect: #showClassPackages
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #inGeneratorHolder
-                              #aspect: #projectListGenerator
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #outGeneratorHolder
-                              #aspect: #classListGenerator
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedProjects
-                              #aspect: #selectedProjects
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                       #(#VariableVerticalPanelSpec
-                          #name: 'VariableVerticalPanel1'
-                          #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 -25 1.0)
-                          #showHandle: false
-                          #handlePosition: #left
-                          #snapMode: #both
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#SubCanvasSpec
-                                #name: 'ClassList'
-                                #majorKey: #'ClassList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #classDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #hideUnloadedClasses
-                                    #aspect: #hideUnloadedClasses
-                                  )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #immediateUpdate
-                                    #aspect: #immediateUpdate
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #inGeneratorHolder
-                                    #aspect: #classListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #classPopUpMenu
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #meta
-                                    #aspect: #meta
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #organizerMode
-                                    #aspect: #organizerMode
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #outGeneratorHolder
-                                    #aspect: #protocolListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #packageFilter
-                                    #aspect: #packageFilter
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedClasses
-                                    #aspect: #selectedClasses
-                                    #callBack: #classSelectionChanged
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectionChangeCondition
-                                    #aspect: #selectionChangeConditionHolder
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             #(#SubCanvasSpec
-                                #name: 'VariableList'
-                                #majorKey: #'VariableList'
-                                #subAspectHolders: 
-                               #(#Array
-
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #variableDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #classHolder
-                                    #aspect: #selectedClasses
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #variablesPopUpMenu
-                                  )
-
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedVariables
-                                    #aspect: #variableFilter
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #showClassVarsInVariableList
-                                    #aspect: #filterClassVars
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortVariablesByName
-                                    #aspect: #sortVariablesByName
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             )
-                           
-                          )
-                          #handles: #(#Any 0.5 1.0)
-                        )
-                       #(#UISubSpecification
-                          #name: 'MetaToggles'
-                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
-                          #majorKey: #'NavigatorModel'
-                          #minorKey: #metaSpec
-                        )
-                       )
-                     
-                    )
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodCategoryList'
-                    #majorKey: #'MethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showPseudoProtocols
-                        #aspect: #showPseudoProtocols
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      ) 
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                        #callBack: #protocolSelectionChanged
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodComplexity
-                        #aspect: #showMethodComplexity
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.333333 0.666667 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 04-07-2011 / 18:38:02 / cg"
-!
-
-singleProjectFullBrowserSpec
-    "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:NavigatorCanvas andSelector:#singleProjectFullBrowserSpec
-     NavigatorCanvas new openInterface:#singleProjectFullBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #singleProjectFullBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'ProjectBrowser'
-          #name: 'ProjectBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 30 74 492 374)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableHorizontalPanelSpec
-              #name: 'VariableHorizontalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#ViewSpec
-                    #name: 'Box1'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#SubCanvasSpec
-                          #name: 'PseudoProjectList'
-                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
-                          #majorKey: #'ProjectList'
-                          #minorKey: #singleProjectWindowSpec
-                          #subAspectHolders: 
-                         #(#Array
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #projectPopUpMenu
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #hideUnloadedClasses
-                              #aspect: #hideUnloadedClasses
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #showClassPackages
-                              #aspect: #showClassPackages
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #inGeneratorHolder
-                              #aspect: #projectListGenerator
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #outGeneratorHolder
-                              #aspect: #classListGenerator
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedProjects
-                              #aspect: #selectedProjects
-                            )
-                            
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                        #(#SubCanvasSpec
-                          #name: 'ClassCategoryList'
-                          #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 0 1.0)
-                          #majorKey: #'ClassCategoryList'
-                          #subAspectHolders: 
-                         #(#Array
-
-                          #(#SubChannelInfoSpec
-                             #subAspect: #doubleClickChannel
-                             #callBack: #classCategoryDoubleClicked
-                           )
-                           #(#SubChannelInfoSpec
-                              #subAspect: #forceGeneratorTrigger
-                              #aspect: #forceClassCategoryGeneratorTrigger
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #packageFilter
-                              #aspect: #selectedProjects
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #hideUnloadedClasses
-                              #aspect: #hideUnloadedClasses
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #categoryPopUpMenu
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #organizerMode
-                              #aspect: #organizerMode
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #outGeneratorHolder
-                              #aspect: #classListGenerator
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedCategories
-                              #aspect: #selectedCategories
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectionChangeCondition
-                              #aspect: #selectionChangeCondition
-                            ) 
-                           #(#SubChannelInfoSpec
-                              #subAspect: #slaveMode
-                              #aspect: #categoryListSlaveMode
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #updateTrigger
-                              #aspect: #classCategoryListUpdateTrigger
-                            )
-                          )
-                          #createNewApplication: true
-                          #createNewBuilder: true
-                        )
-                       )
-                     
-                    )
-                  )
-                 #(#ViewSpec
-                    #name: 'Box2'
-                    #component: 
-                   #(#SpecCollection
-                      #collection: #(
-                       #(#VariableVerticalPanelSpec
-                          #name: 'VariableVerticalPanel2'
-                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
-                          #showHandle: false
-                          #handlePosition: #left
-                          #snapMode: #both
-                          #component: 
-                         #(#SpecCollection
-                            #collection: #(
-                             #(#SubCanvasSpec
-                                #name: 'SubCanvas2'
-                                #majorKey: #'ClassList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #classDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #hideUnloadedClasses
-                                    #aspect: #hideUnloadedClasses
-                                  )
-               #(#SubChannelInfoSpec
-                  #subAspect: #sortByNameAndInheritance
-                  #aspect: #sortByNameAndInheritance
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #markApplicationsHolder
-                  #aspect: #markApplicationsHolder
-                ) 
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #immediateUpdate
-                                    #aspect: #immediateUpdate
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #inGeneratorHolder
-                                    #aspect: #classListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #classPopUpMenu
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #meta
-                                    #aspect: #meta
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #organizerMode
-                                    #aspect: #organizerMode
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #outGeneratorHolder
-                                    #aspect: #protocolListGenerator
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #packageFilter
-                                    #aspect: #selectedProjects
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedClasses
-                                    #aspect: #selectedClasses
-                                    #callBack: #classSelectionChanged
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectionChangeCondition
-                                    #aspect: #selectionChangeConditionHolder
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             #(#SubCanvasSpec
-                                #name: 'SubCanvas3'
-                                #majorKey: #'VariableList'
-                                #subAspectHolders: 
-                               #(#Array
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #doubleClickChannel
-                                    #callBack: #variableDoubleClicked
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #classHolder
-                                    #aspect: #selectedClasses
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #menuHolder
-                                    #aspect: #variablesPopUpMenu
-                                  ) 
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #selectedVariables
-                                    #aspect: #variableFilter
-                                  )
-                                  
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #showClassVarsInVariableList
-                                    #aspect: #filterClassVars
-                                  )
-                                 #(#SubChannelInfoSpec
-                                    #subAspect: #sortVariablesByName
-                                    #aspect: #sortVariablesByName
-                                  )
-                                )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                             )
-                           
-                          )
-                          #handles: #(#Any 0.5 1.0)
-                        )
-                       #(#UISubSpecification
-                          #name: 'SubSpecification1'
-                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
-                          #majorKey: #'NavigatorModel'
-                          #minorKey: #metaSpec
-                        )
-                       )
-                     
-                    )
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodCategoryList'
-                    #majorKey: #'MethodCategoryList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showPseudoProtocols
-                        #aspect: #showPseudoProtocols
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #protocolDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #methodVisibilityHolder
-                        #aspect: #methodVisibilityHolder
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                        #callBack: #protocolSelectionChanged
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #variableFilter
-                        #aspect: #variableFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #filterClassVars
-                        #aspect: #filterClassVars
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodInheritance
-                        #aspect: #showMethodInheritance
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodComplexity
-                        #aspect: #showMethodComplexity
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showMethodTypeIcon
-                        #aspect: #showMethodTypeIcon
-                      )
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-              #handles: #(#Any 0.25 0.5 0.75 1.0)
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 04-07-2011 / 18:38:13 / cg"
-!
-
-singleProtocolBrowserSpec
-    "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:NavigatorCanvas andSelector:#singleProtocolBrowserSpec
-     NavigatorCanvas new openInterface:#singleProtocolBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #singleProtocolBrowserSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'ProtocolBrowser'
-          #name: 'ProtocolBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 12 22 474 322)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #(
-           #(#ViewSpec
-              #name: 'Box1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #component: 
-             #(#SpecCollection
-                #collection: #(
-                 #(#SubCanvasSpec
-                    #name: 'PseudoProtocolList'
-                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
-                    #majorKey: #'MethodCategoryList'
-                    #minorKey: #singleProtocolWindowSpec
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #protocolListGenerator
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #outGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedProtocols
-                        #aspect: #selectedProtocols
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #protocolMenu
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'MethodList'
-                    #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 0 1.0)
-                    #majorKey: #'MethodList'
-                    #subAspectHolders: 
-                   #(#Array
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #showCoverageInformation
-                        #aspect: #showCoverageInformation
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #doubleClickChannel
-                        #callBack: #methodDoubleClicked
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #immediateUpdate
-                        #aspect: #immediateUpdate
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #inGeneratorHolder
-                        #aspect: #selectorListGenerator
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #menuHolder
-                        #aspect: #selectorPopUpMenu
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #packageFilter
-                        #aspect: #packageFilter
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #sortBy
-                        #aspect: #sortBy
-                      )
-                      
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectedMethods
-                        #aspect: #selectedMethods
-                        #callBack: #methodsSelectionChanged
-                      ) 
-                     #(#SubChannelInfoSpec
-                        #subAspect: #selectionChangeCondition
-                        #aspect: #selectionChangeConditionHolder
-                      )
-                    )
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
-      )
-
-    "Modified: / 27-04-2010 / 16:44:12 / cg"
-!
-
-windowSpec
-    ^ self fullBrowserSpec
-! !
-
-!NavigatorCanvas class methodsFor:'misc'!
-
-classResources
-    ^ NewSystemBrowser classResources
-! !
-
-!NavigatorCanvas methodsFor:'accessing'!
-
-initialOrganizerMode
-    ^ nil  "/ dummy
-! !
-
-!NavigatorCanvas methodsFor:'actions'!
-
-classDoubleClicked
-    self subclassResponsibility
-! !
-
-!NavigatorCanvas methodsFor:'queries'!
-
-showAllClassesInNameSpaceOrganisation
-    ^ true
-! !
-
-!NavigatorCanvas class methodsFor:'documentation'!
-
-version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_NavigatorCanvas.st,v 1.17 2011-08-07 18:41:11 vrany Exp $'
-! !
--- a/Tools_SpecialCodeView.st	Sun Jan 27 02:50:59 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-"
- COPYRIGHT (c) 2000 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 }"
-
-ApplicationModel subclass:#SpecialCodeView
-	instanceVariableNames:'displayMode'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'Interface-Browsers-New'
-!
-
-!SpecialCodeView class methodsFor:'documentation'!
-
-copyright
-"
- COPYRIGHT (c) 2000 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.
-"
-! !
-
-!SpecialCodeView 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:SpecialCodeView andSelector:#windowSpec
-     SpecialCodeView new openInterface:#windowSpec
-     SpecialCodeView open
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(#FullSpec
-        #name: #windowSpec
-        #window: 
-       #(#WindowSpec
-          #label: 'SpecialCodeView'
-          #name: 'SpecialCodeView'
-          #min: #(#Point 10 10)
-          #bounds: #(#Rectangle 12 22 312 322)
-        )
-        #component: 
-       #(#SpecCollection
-          #collection: #()
-        )
-      )
-! !
-
-!SpecialCodeView class methodsFor:'documentation'!
-
-version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_SpecialCodeView.st,v 1.3 2010-05-07 12:27:43 cg Exp $'
-!
-
-version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_SpecialCodeView.st,v 1.3 2010-05-07 12:27:43 cg Exp $'
-! !
--- a/Tools__AbstractTestRunner.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__AbstractTestRunner.st	Wed Jan 30 11:15:09 2013 +0000
@@ -65,6 +65,7 @@
 "
 ! !
 
+
 !AbstractTestRunner class methodsFor:'initialization'!
 
 initialize
@@ -80,6 +81,7 @@
     "Modified: / 05-07-2011 / 14:12:34 / cg"
 ! !
 
+
 !AbstractTestRunner class methodsFor:'accessing'!
 
 currentlyRunningColor
@@ -114,6 +116,7 @@
     "Modified: / 15-03-2010 / 21:54:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !AbstractTestRunner methodsFor:'private'!
 
 buildSuiteFromClass:testCaseCls
@@ -130,6 +133,7 @@
     "Modified: / 28-02-2011 / 21:31:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !AbstractTestRunner methodsFor:'utilities'!
 
 suiteNameFromClasses: classes
@@ -178,6 +182,7 @@
     "Modified: / 18-10-2011 / 22:59:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !AbstractTestRunner class methodsFor:'documentation'!
 
 version
@@ -192,4 +197,5 @@
     ^ '§Id: Tools__AbstractTestRunner.st 7681 2011-03-04 11:30:02Z vranyj1 §'
 ! !
 
+
 AbstractTestRunner initialize!
--- a/Tools__BackgroundSourceProcessingService.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__BackgroundSourceProcessingService.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,8 +1,19 @@
+"
+ 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 }"
 
-CodeViewService subclass:#BackgroundSourceProcessingService
+Tools::CodeViewService subclass:#BackgroundSourceProcessingService
 	instanceVariableNames:'job done modified'
 	classVariableNames:''
 	poolDictionaries:''
@@ -11,6 +22,20 @@
 
 !BackgroundSourceProcessingService 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.
+"
+!
+
 documentation
 "
     An abstract base class for all services that process current
@@ -30,6 +55,7 @@
 "
 ! !
 
+
 !BackgroundSourceProcessingService class methodsFor:'testing'!
 
 isAbstract
@@ -39,6 +65,7 @@
     "Created: / 24-01-2012 / 12:27:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BackgroundSourceProcessingService methodsFor:'acessing-defaults'!
 
 defaultJobName
@@ -49,28 +76,41 @@
     "Created: / 24-01-2012 / 12:05:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BackgroundSourceProcessingService methodsFor:'change & update'!
 
+modelChanged
+    "Model has changed (i.e., value holder keeping displayed text"
+
+    self sourceChanged: true
+
+    "Created: / 17-03-2012 / 15:45:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 sourceChanged:force
     "Called when codeview's text changes"
 
-    (force or:[codeView textView modified]) ifTrue:[
+    (force or:[codeView reallyModified]) ifTrue:[
         self process
     ].
 
     "Modified: / 22-08-2011 / 13:51:53 / cg"
     "Modified (format): / 05-09-2011 / 05:06:40 / cg"
-    "Modified: / 24-01-2012 / 12:25:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-03-2012 / 16:04:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 update:aspect with:param from:sender 
     textView notNil ifTrue:[
         "/sender == textView modifiedChannel ifTrue:[^self codeChanged: false].
         sender == textView model ifTrue:[
-            ^ self sourceChanged:true
+            sender value ~= textView contents ifTrue:[
+                self modelChanged.
+                ^self.
+            ].
         ].
         (sender == textView and:[aspect == #sizeOfContents]) ifTrue:[
-            ^ self sourceChanged:true
+            self sourceChanged:true.
+            ^self.
         ].
     ].
     codeView notNil ifTrue:[
@@ -88,9 +128,11 @@
 
     "Created: / 06-03-2010 / 19:38:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 13-09-2011 / 12:00:29 / cg"
-    "Modified: / 16-09-2011 / 17:30:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-02-2012 / 15:02:16 / jv"
+    "Modified: / 17-03-2012 / 16:06:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BackgroundSourceProcessingService methodsFor:'event handling'!
 
 linesDeletedFrom:start to:end 
@@ -114,6 +156,7 @@
     "Created: / 16-09-2011 / 15:15:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BackgroundSourceProcessingService methodsFor:'initialization'!
 
 initialize
@@ -135,6 +178,7 @@
     "Modified: / 19-07-2012 / 16:17:21 / cg"
 ! !
 
+
 !BackgroundSourceProcessingService methodsFor:'processing'!
 
 process
@@ -177,6 +221,7 @@
     "Created: / 24-01-2012 / 12:25:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BackgroundSourceProcessingService methodsFor:'registering'!
 
 registerIn: aCodeView
@@ -187,6 +232,7 @@
     "Created: / 27-07-2011 / 13:25:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BackgroundSourceProcessingService class methodsFor:'documentation'!
 
 version
@@ -195,4 +241,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/Tools__BackgroundSourceProcessingService.st,v 1.3 2012-07-19 15:19:59 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: Tools__BackgroundSourceProcessingService.st 8022 2012-07-25 09:51:30Z vranyj1 $'
 ! !
+
--- a/Tools__BreakpointBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__BreakpointBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -32,7 +32,7 @@
 	privateIn:BreakpointBrowser
 !
 
-BreakpointBrowser::BreakpointListEntry subclass:#BreakpointListEntryForLineBreak
+Tools::BreakpointBrowser::BreakpointListEntry subclass:#BreakpointListEntryForLineBreak
 	instanceVariableNames:'breakPoint'
 	classVariableNames:''
 	poolDictionaries:''
@@ -71,6 +71,7 @@
 "
 ! !
 
+
 !BreakpointBrowser class methodsFor:'initialization'!
 
 defaultListOfMessagesAndTypes
@@ -94,6 +95,7 @@
     MessagesAndTypes := self defaultListOfMessagesAndTypes
 ! !
 
+
 !BreakpointBrowser class methodsFor:'defaults'!
 
 defaultIcon
@@ -102,6 +104,7 @@
     ^ ToolbarIconLibrary openBreakpointBrowserIcon
 ! !
 
+
 !BreakpointBrowser class methodsFor:'interface specs'!
 
 windowSpec
@@ -204,6 +207,7 @@
       )
 ! !
 
+
 !BreakpointBrowser class methodsFor:'menu specs'!
 
 itemMenu
@@ -495,6 +499,7 @@
       )
 ! !
 
+
 !BreakpointBrowser class methodsFor:'tableColumns specs'!
 
 tableColumns
@@ -762,6 +767,7 @@
       )
 ! !
 
+
 !BreakpointBrowser methodsFor:'accessing'!
 
 aboutThisApplicationText
@@ -812,6 +818,7 @@
     ^ updatingLabelShown
 ! !
 
+
 !BreakpointBrowser methodsFor:'aspects'!
 
 enableAssertions
@@ -945,6 +952,7 @@
     ^ showWhichHaltsHolder
 ! !
 
+
 !BreakpointBrowser methodsFor:'change & update'!
 
 delayedUpdate:something with:aParameter from:changedObject
@@ -1310,6 +1318,7 @@
     ].
 ! !
 
+
 !BreakpointBrowser methodsFor:'initialization & release'!
 
 codeViewClass
@@ -1355,6 +1364,7 @@
     super release
 ! !
 
+
 !BreakpointBrowser methodsFor:'menu actions-item'!
 
 browseItem
@@ -1383,6 +1393,7 @@
     "Modified: / 18-02-2007 / 12:57:58 / cg"
 ! !
 
+
 !BreakpointBrowser methodsFor:'menus-dynamic'!
 
 codeBreakpointMenu
@@ -1492,6 +1503,7 @@
     "Modified: / 09-09-2012 / 13:11:30 / cg"
 ! !
 
+
 !BreakpointBrowser methodsFor:'tests'!
 
 aMethodWith_assert
@@ -1555,6 +1567,7 @@
     self todo
 ! !
 
+
 !BreakpointBrowser methodsFor:'user actions'!
 
 browseSelectedItem
@@ -1663,6 +1676,7 @@
     self showOthers:(self showOthers not).
 ! !
 
+
 !BreakpointBrowser::BreakpointListEntry methodsFor:'accessing'!
 
 arg
@@ -1711,6 +1725,7 @@
     enabled := enabledArg.
 ! !
 
+
 !BreakpointBrowser::BreakpointListEntry methodsFor:'actions'!
 
 browse
@@ -1730,6 +1745,7 @@
     ^ (Smalltalk classNamed:className) compiledMethodAt:selector.
 ! !
 
+
 !BreakpointBrowser::BreakpointListEntry methodsFor:'testing'!
 
 isAssertion
@@ -1761,6 +1777,7 @@
     ^ type == #other
 ! !
 
+
 !BreakpointBrowser::BreakpointListEntryForLineBreak methodsFor:'accessing'!
 
 breakPoint
@@ -1773,6 +1790,7 @@
     breakPoint := something.
 ! !
 
+
 !BreakpointBrowser::MessageArgumentExtractor methodsFor:'accessing'!
 
 callBack:something
@@ -1783,6 +1801,7 @@
     selectorToSearch := something.
 ! !
 
+
 !BreakpointBrowser::MessageArgumentExtractor methodsFor:'visiting'!
 
 acceptMessageNode: aMessageNode
@@ -1833,6 +1852,7 @@
     super acceptMessageNode: aMessageNode
 ! !
 
+
 !BreakpointBrowser class methodsFor:'documentation'!
 
 version
@@ -1841,6 +1861,11 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/Tools__BreakpointBrowser.st,v 1.39 2012-11-04 14:02:58 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: Tools__BreakpointBrowser.st 8074 2012-11-30 17:23:39Z vranyj1 $'
 ! !
 
+
 BreakpointBrowser initialize!
--- a/Tools__BreakpointService.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__BreakpointService.st	Wed Jan 30 11:15:09 2013 +0000
@@ -27,7 +27,7 @@
 
 "{ NameSpace: Tools }"
 
-CodeViewService subclass:#BreakpointService
+Tools::CodeViewService subclass:#BreakpointService
 	instanceVariableNames:'breakpoints currentMethod'
 	classVariableNames:''
 	poolDictionaries:''
@@ -64,12 +64,14 @@
 "
 ! !
 
+
 !BreakpointService methodsFor:'accessing'!
 
 breakpoints
     ^ breakpoints
 ! !
 
+
 !BreakpointService methodsFor:'change & update'!
 
 update: aspect with: param from: sender
@@ -103,6 +105,7 @@
     "Modified: / 06-07-2011 / 17:32:54 / jv"
 ! !
 
+
 !BreakpointService methodsFor:'event handling'!
 
 buttonPress:button x:x y:y in:view
@@ -144,6 +147,7 @@
     "Created: / 06-07-2011 / 17:16:36 / jv"
 ! !
 
+
 !BreakpointService methodsFor:'initialization'!
 
 initialize
@@ -154,6 +158,7 @@
     "Created: / 17-06-2011 / 13:49:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BreakpointService methodsFor:'private'!
 
 breakpointAtLine:line
@@ -284,6 +289,7 @@
     "Modified: / 02-08-2012 / 09:26:38 / cg"
 ! !
 
+
 !BreakpointService methodsFor:'redrawing'!
 
 drawLine:lineNo in:view atX:x y:y width:w height:h from:startCol to:endColOrNil with:fg and:bg
@@ -318,6 +324,7 @@
     "Modified (format): / 05-07-2011 / 22:14:33 / cg"
 ! !
 
+
 !BreakpointService class methodsFor:'documentation'!
 
 version_CVS
@@ -328,3 +335,4 @@
 version_SVN
     ^ '§Id§'
 ! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__BrowserList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,1884 @@
+"
+ COPYRIGHT (c) 2004 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 }"
+
+NavigatorModel subclass:#BrowserList
+	instanceVariableNames:'menuHolder inGeneratorHolder outGeneratorHolder
+		selectionChangeCondition immediateUpdate doubleClickChannel
+		filter updateTrigger forceGeneratorTrigger hideUnloadedClasses
+		showClassPackages selectionHolder packageFilter nameSpaceFilter
+		organizerMode slaveMode listValid pseudoListLabelHolder icons
+		sortBy autoSelect showAllClassesInNameSpaceOrganisation
+		nameFilter showCoverageInformation searchHandler
+		autoUpdateOnChange'
+	classVariableNames:'SynchronousUpdate Icons'
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+Object subclass:#SearchHandler
+	instanceVariableNames:'listView listHolder listSelectionHolder searchField searchWindow
+		searchHolder'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:BrowserList
+!
+
+!BrowserList class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2004 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.
+"
+!
+
+documentation
+"
+    embeddable application displaying the class-categories.
+    Provides an outputGenerator, which enumerates the classes in
+    the selected categories.
+
+    [author:]
+        Claus Gittinger (cg@exept.de)
+
+    [instance variables:]
+        can someone please write a  few words here...
+
+        menuHolder 
+        inGeneratorHolder 
+        outGeneratorHolder
+        selectionChangeCondition 
+        immediateUpdate 
+        doubleClickChannel
+        filter                          a filterblock by the one who embedds this
+        updateTrigger 
+        forceGeneratorTrigger 
+        hideUnloadedClasses
+        showClassPackages 
+        selectionHolder 
+        packageFilter 
+        nameSpaceFilter
+        organizerMode 
+        slaveMode 
+        listValid 
+        pseudoListLabelHolder 
+        icons
+        sortBy 
+        autoSelect 
+        showAllClassesInNameSpaceOrganisation
+        nameFilter                      a string or glob pattern (from the user, if a GUI for that is present)
+"
+! !
+
+!BrowserList class methodsFor:'image specs'!
+
+checkedIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self checkedIcon inspect
+     ImageEditor openOnClass:self andSelector:#checkedIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^ MenuPanel iconIndicationOn
+
+"/    ^Icon
+"/        constantNamed:#'Tools::HierarchicalPackageFilterList::PackageItem class checkedIcon'
+"/        ifAbsentPut:[(Depth1Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@C?<O?0??C?<O?0??C?<O?07?C?<O?0??@@@@@@b') ; colorMapFromArray:#[0 0 0 33 161 33]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+"/?????<@C0@O@D<@30GOH8<7C38OG@<HC0@O@@?????<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+"/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+"/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]
+
+    "Created: / 06-11-2008 / 16:32:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 04-12-2011 / 15:35:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+nameSpaceIcon
+    ^ SystemBrowser nameSpaceIcon
+!
+
+packageIcon
+    ^ SystemBrowser packageIcon
+!
+
+padLockBlueMiniIcon
+    ^ SystemBrowser padLockBlueMiniIcon
+!
+
+padLockGrayMiniIcon
+    ^ SystemBrowser padLockGrayMiniIcon
+!
+
+padLockGreenMiniIcon
+    ^ SystemBrowser padLockGreenMiniIcon
+!
+
+padLockRedMiniIcon
+    ^ SystemBrowser padLockRedMiniIcon
+!
+
+programImageIcon
+    ^ SystemBrowser programImageIcon
+!
+
+protectedMethod
+    ^ self padLockRedMiniIcon
+!
+
+redLockIcon
+    ^ SystemBrowser redLockIcon
+!
+
+uncheckedIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self checkFrameForm inspect
+     ImageEditor openOnClass:self andSelector:#checkFrameForm
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^MenuPanel iconIndicationOff
+
+"/    ^Icon
+"/        constantNamed:#'Tools::HierarchicalPackageFilterList::PackageItem class checkFrameForm'
+"/        ifAbsentPut:[(Depth1Image new) width: 16; height: 16; photometric:(#palette); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@C?<O?0??C?<O?0??C?<O?0??C?<O?0??@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255]; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+"/?????<@C0@O@@<@C0@O@@<@C0@O@@<@C0@O@@?????<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+"/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+"/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]
+
+    "Created: / 06-11-2008 / 16:32:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 04-12-2011 / 15:35:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BrowserList methodsFor:'accessing'!
+
+nameFilter:something
+    nameFilter := something.
+! !
+
+!BrowserList methodsFor:'aspects'!
+
+autoUpdateOnChange
+    "automatic update of the list, when the system changes.
+     For some (slow) search lists (such as string-search), autoupdate is
+     disabled as it would otherwise make the browser unusable.
+     Those lists need an explicit menu-update action."
+
+    ^ autoUpdateOnChange ? true.
+
+    "Modified: / 24-02-2000 / 23:57:13 / cg"
+    "Created: / 15-05-2012 / 11:16:07 / cg"
+!
+
+autoUpdateOnChange: aBoolean
+    "automatic update of the list, when the system changes.
+     For some (slow) search lists (such as string-search), autoupdate is
+     disabled as it would otherwise make the browser unusable.
+     Those lists need an explicit menu-update action."
+
+    autoUpdateOnChange := aBoolean
+
+    "Modified: / 24-02-2000 / 23:57:13 / cg"
+    "Created: / 15-05-2012 / 11:17:18 / cg"
+!
+
+defaultSlaveModeValue
+    ^ nil.
+
+    "Created: / 25.2.2000 / 22:36:40 / cg"
+!
+
+doubleClickChannel
+    doubleClickChannel isNil ifTrue:[
+	doubleClickChannel := TriggerValue new.
+    ].
+    ^ doubleClickChannel.
+
+    "Modified: / 31.1.2000 / 00:42:44 / cg"
+    "Created: / 5.2.2000 / 22:38:32 / cg"
+!
+
+doubleClickChannel:aChannel
+    doubleClickChannel := aChannel
+!
+
+filter:aValueHolder
+    filter notNil ifTrue:[
+	filter removeDependent:self
+    ].
+    filter := aValueHolder.
+    filter notNil ifTrue:[
+	filter addDependent:self
+    ].
+
+    "Modified: / 4.2.2000 / 23:29:30 / cg"
+    "Created: / 5.2.2000 / 13:42:12 / cg"
+!
+
+forceGeneratorTrigger
+    forceGeneratorTrigger isNil ifTrue:[
+	forceGeneratorTrigger := TriggerValue new.
+	forceGeneratorTrigger addDependent:self.
+    ].
+    ^ forceGeneratorTrigger.
+
+    "Modified: / 18.2.2000 / 02:02:52 / cg"
+    "Created: / 18.2.2000 / 02:46:40 / cg"
+!
+
+forceGeneratorTrigger:aTriggerValue
+    forceGeneratorTrigger notNil ifTrue:[
+	forceGeneratorTrigger removeDependent:self
+    ].
+    forceGeneratorTrigger := aTriggerValue.
+    forceGeneratorTrigger notNil ifTrue:[
+	forceGeneratorTrigger addDependent:self
+    ].
+
+    "Modified: / 4.2.2000 / 23:29:30 / cg"
+    "Created: / 18.2.2000 / 02:46:52 / cg"
+!
+
+hideUnloadedClasses
+    hideUnloadedClasses isNil ifTrue:[
+	hideUnloadedClasses := false asValue.
+	hideUnloadedClasses addDependent:self.
+    ].
+    ^ hideUnloadedClasses.
+
+    "Modified: / 18.2.2000 / 02:02:52 / cg"
+    "Created: / 18.2.2000 / 17:36:30 / cg"
+!
+
+hideUnloadedClasses:aValueHolder
+    hideUnloadedClasses notNil ifTrue:[
+	hideUnloadedClasses removeDependent:self
+    ].
+    hideUnloadedClasses := aValueHolder.
+    hideUnloadedClasses notNil ifTrue:[
+	hideUnloadedClasses addDependent:self
+    ].
+
+    "Modified: / 4.2.2000 / 23:29:30 / cg"
+    "Created: / 18.2.2000 / 17:46:36 / cg"
+!
+
+menuHolder
+    ^ menuHolder
+
+    "Created: / 5.2.2000 / 13:42:06 / cg"
+!
+
+menuHolder:aValueHolder
+    menuHolder := aValueHolder.
+
+    "Created: / 5.2.2000 / 13:42:06 / cg"
+!
+
+nameSpaceFilter
+    nameSpaceFilter isNil ifTrue:[
+	nameSpaceFilter := ValueHolder new.
+	nameSpaceFilter addDependent:self.
+    ].
+    ^ nameSpaceFilter.
+
+    "Modified: / 24.2.2000 / 23:57:13 / cg"
+    "Created: / 18.8.2000 / 14:18:56 / cg"
+!
+
+nameSpaceFilter:aValueHolder
+    nameSpaceFilter notNil ifTrue:[
+	nameSpaceFilter removeDependent:self
+    ].
+    nameSpaceFilter := aValueHolder.
+    nameSpaceFilter notNil ifTrue:[
+	nameSpaceFilter addDependent:self
+    ].
+
+    "Modified: / 24.2.2000 / 23:56:22 / cg"
+    "Created: / 18.8.2000 / 14:19:06 / cg"
+!
+
+organizerMode
+    organizerMode isNil ifTrue:[
+        organizerMode := OrganizerCanvas organizerModeCategory asValue.
+        organizerMode addDependent:self.
+    ].
+    ^ organizerMode
+
+    "Modified: / 31.1.2000 / 00:51:06 / cg"
+    "Created: / 25.2.2000 / 22:36:15 / cg"
+!
+
+organizerMode:aValueHolder
+    organizerMode notNil ifTrue:[
+	organizerMode removeDependent:self
+    ].
+    organizerMode := aValueHolder.
+    organizerMode notNil ifTrue:[
+	organizerMode addDependent:self
+    ].
+
+    "Modified: / 4.2.2000 / 23:34:28 / cg"
+    "Created: / 25.2.2000 / 22:36:28 / cg"
+!
+
+packageFilter
+    packageFilter isNil ifTrue:[
+	packageFilter := ValueHolder new.
+	packageFilter addDependent:self.
+
+"/ debug-check only
+"/ packageFilter onChangeEvaluate:[packageFilter value isValueModel ifTrue:[self halt:'debug halt']].
+    ].
+    ^ packageFilter.
+
+    "Modified: / 18.8.2000 / 19:26:36 / cg"
+!
+
+packageFilter:aValueHolder
+    packageFilter notNil ifTrue:[
+	packageFilter removeDependent:self
+    ].
+    packageFilter := aValueHolder.
+    packageFilter notNil ifTrue:[
+	packageFilter addDependent:self.
+
+"/ debug-check only
+"/ packageFilter onChangeEvaluate:[packageFilter value isValueModel ifTrue:[self halt:'debug halt']].
+    ].
+
+    "Modified: / 18.8.2000 / 19:26:40 / cg"
+!
+
+pseudoListLabelHolder
+    pseudoListLabelHolder isNil ifTrue:[
+	pseudoListLabelHolder := '' asValue.
+    ].
+    ^ pseudoListLabelHolder
+!
+
+selectionChangeCondition:aBlockOrValueHolder
+    selectionChangeCondition := aBlockOrValueHolder
+!
+
+selectionHolder
+    selectionHolder isNil ifTrue:[
+	selectionHolder := ValueHolder new.
+	selectionHolder addDependent:self
+    ].
+    ^ selectionHolder.
+
+!
+
+selectionHolder:aValueHolder
+    |prevSelection|
+
+    prevSelection := selectionHolder value ? #().
+
+    selectionHolder notNil ifTrue:[
+	selectionHolder removeDependent:self
+    ].
+    selectionHolder := aValueHolder.
+    selectionHolder notNil ifTrue:[
+	selectionHolder addDependent:self
+    ].
+    (selectionHolder value ? #()) ~= prevSelection ifTrue:[
+	"/ update
+	self update:#value with:nil from:selectionHolder
+    ].
+
+
+!
+
+showAllClassesInNameSpaceOrganisation
+    ^[
+        |holder|
+
+        showAllClassesInNameSpaceOrganisation notNil ifTrue:[
+            holder := showAllClassesInNameSpaceOrganisation
+        ] ifFalse:[
+            masterApplication notNil ifTrue:[
+                holder := masterApplication perform:#showAllClassesInNameSpaceOrganisation ifNotUnderstood:nil.
+            ].
+            holder notNil ifTrue:[
+                holder addDependent:self.
+            ] ifFalse:[
+                showAllClassesInNameSpaceOrganisation isNil ifTrue:[
+                    showAllClassesInNameSpaceOrganisation := false asValue.
+                    showAllClassesInNameSpaceOrganisation addDependent:self.
+                ].
+                holder := showAllClassesInNameSpaceOrganisation.
+            ].
+        ].
+        holder value
+    ].
+
+    "Created: / 05-03-2007 / 16:47:03 / cg"
+    "Modified: / 04-07-2011 / 21:49:10 / cg"
+!
+
+showAllClassesInNameSpaceOrganisation:aValueHolder
+    showAllClassesInNameSpaceOrganisation notNil ifTrue:[
+        showAllClassesInNameSpaceOrganisation removeDependent:self
+    ].
+    showAllClassesInNameSpaceOrganisation := aValueHolder.
+    showAllClassesInNameSpaceOrganisation notNil ifTrue:[
+        showAllClassesInNameSpaceOrganisation addDependent:self
+    ].
+
+    "Created: / 05-03-2007 / 16:47:13 / cg"
+!
+
+showClassPackages
+    showClassPackages isNil ifTrue:[
+	showClassPackages := false asValue.
+	showClassPackages addDependent:self.
+    ].
+    ^ showClassPackages.
+
+    "Modified: / 18.2.2000 / 02:02:52 / cg"
+    "Created: / 18.2.2000 / 17:36:30 / cg"
+!
+
+showClassPackages:aValueHolder
+    showClassPackages notNil ifTrue:[
+	showClassPackages removeDependent:self
+    ].
+    showClassPackages := aValueHolder.
+    showClassPackages notNil ifTrue:[
+	showClassPackages addDependent:self
+    ].
+!
+
+showCoverageInformation
+    showCoverageInformation isNil ifTrue:[
+        showCoverageInformation := false asValue.
+        showCoverageInformation addDependent:self.
+    ].
+    ^ showCoverageInformation.
+
+    "Created: / 27-04-2010 / 16:13:16 / cg"
+!
+
+showCoverageInformation:aValueHolder
+    showCoverageInformation notNil ifTrue:[
+        showCoverageInformation removeDependent:self
+    ].
+    showCoverageInformation := aValueHolder.
+    showCoverageInformation notNil ifTrue:[
+        showCoverageInformation  addDependent:self
+    ].
+
+    "Created: / 27-04-2010 / 16:13:20 / cg"
+!
+
+slaveMode
+    slaveMode isNil ifTrue:[
+	slaveMode := self defaultSlaveModeValue asValue.
+	slaveMode addDependent:self.
+    ].
+    ^ slaveMode.
+
+    "Created: / 25.2.2000 / 22:36:40 / cg"
+!
+
+slaveMode:aValueHolder
+    |prev|
+
+    slaveMode notNil ifTrue:[
+	slaveMode removeDependent:self.
+	prev := slaveMode value.
+    ].
+    slaveMode := aValueHolder.
+    slaveMode notNil ifTrue:[
+	slaveMode addDependent:self
+    ].
+    prev ~~ slaveMode value ifTrue:[
+	(prev isNil and:[slaveMode value]) ifFalse:[
+	    self update:#value with:nil from:slaveMode.
+	]
+    ].
+!
+
+sortBy
+    sortBy isNil ifTrue:[
+	sortBy := nil asValue.
+	sortBy addDependent:self.
+    ].
+    ^ sortBy.
+
+    "Created: / 25.2.2000 / 22:36:40 / cg"
+!
+
+sortBy:aValueHolder
+    |prev|
+
+    prev := sortBy value.
+    sortBy notNil ifTrue:[
+	sortBy removeDependent:self
+    ].
+    sortBy := aValueHolder.
+    sortBy notNil ifTrue:[
+	sortBy addDependent:self
+    ].
+    prev ~~ sortBy value ifTrue:[
+	self update:#value with:nil from:sortBy.
+    ].
+
+    "Modified: / 4.2.2000 / 23:29:30 / cg"
+    "Created: / 5.2.2000 / 13:42:12 / cg"
+!
+
+updateTrigger
+    updateTrigger isNil ifTrue:[
+	updateTrigger := TriggerValue new.
+	updateTrigger addDependent:self.
+    ].
+    ^ updateTrigger.
+
+    "Created: / 18.2.2000 / 01:59:58 / cg"
+    "Modified: / 18.2.2000 / 02:02:52 / cg"
+!
+
+updateTrigger:aTriggerValue
+    updateTrigger notNil ifTrue:[
+	updateTrigger removeDependent:self
+    ].
+    updateTrigger := aTriggerValue.
+    updateTrigger notNil ifTrue:[
+	updateTrigger addDependent:self
+    ].
+
+    "Modified: / 4.2.2000 / 23:29:30 / cg"
+    "Created: / 18.2.2000 / 02:03:15 / cg"
+! !
+
+!BrowserList methodsFor:'change & update'!
+
+applicationIsActive
+    "true if I am the active view"
+
+    |wg activeView|
+
+    (wg := self windowGroup) isNil ifTrue:[ ^ true ].   "/ I am being initialized  
+    self device isNil ifTrue:[ ^ true ].   "/ I am being initialized   
+
+    (activeView := self device activeView) isNil ifTrue:[ "Transcript showCR:'nil active'." ^ false ].   
+"/Transcript showCR:'active view: ',(activeView printString). 
+"/Transcript showCR:'active wg: ',(activeView windowGroup printString). 
+"/Transcript showCR:'my wg: ',wg printString. 
+    ^ activeView windowGroup == wg
+!
+
+delayedUpdate:something with:aParameter from:changedObject
+
+    "/ if any of my subclasses want those, they should look for them.
+    changedObject == Smalltalk ifTrue:[
+	(something == #Language or:[something == #LanguageTerritory]) ifTrue:[
+	    ^ self
+	].
+	something == #organization ifTrue:[
+	    ^ self
+	].
+	something == #classDefinition ifTrue:[
+	    ^ self
+	].
+	something == #classVariables ifTrue:[
+	    ^ self
+	].
+	something == #methodTrap ifTrue:[
+	    ^ self
+	].
+	something == #methodInClassRemoved ifTrue:[
+	    ^ self.
+	].
+	something == #methodDictionary ifTrue:[
+	    ^ self 
+	].
+	something == #newClass ifTrue:[
+	    ^ self 
+	].
+    ].
+
+    changedObject == slaveMode ifTrue:[
+	slaveMode value ~~ true ifTrue:[
+	    listValid ~~ true ifTrue:[
+		self updateList.
+	    ].
+	    self updateOutputGenerator.
+	].
+	^ self.
+    ].
+
+    changedObject == selectionHolder ifTrue:[
+	listValid ifFalse:[
+	    self updateList.
+	].
+	^ self selectionChanged
+    ].
+
+    changedObject == forceGeneratorTrigger ifTrue:[
+	self updateOutputGenerator.
+	^ self.
+    ].
+
+    changedObject == hideUnloadedClasses ifTrue:[
+	self invalidateList.
+	slaveMode value ~~ true ifTrue:[
+	    self updateOutputGenerator.
+	].
+	^ self.
+    ].
+
+    changedObject == updateTrigger ifTrue:[
+	self enqueueDelayedUpdateList.
+	^ self 
+    ].
+
+    changedObject == inGeneratorHolder ifTrue:[
+	self invalidateList.
+	^ self 
+    ].
+
+"/    changedObject == outGeneratorHolder ifTrue:[
+"/        self enqueueDelayedUpdateList.
+"/        ^ self 
+"/    ].
+
+    changedObject == packageFilter ifTrue:[
+	self invalidateList.
+	^ self 
+    ].
+    changedObject == nameSpaceFilter ifTrue:[
+	self invalidateList.
+	^ self 
+    ].
+
+    changedObject == organizerMode ifTrue:[
+	^ self
+    ].
+
+    self invalidateList.
+    ^ self
+
+    "Created: / 5.2.2000 / 13:42:06 / cg"
+    "Modified: / 18.8.2000 / 14:19:24 / cg"
+!
+
+enqueueDelayedUpdateList
+    listValid := false.
+
+    (NewSystemBrowser synchronousUpdate == true
+    or:[ immediateUpdate value == true ])
+    ifTrue:[
+        self updateList.
+        ^ self.
+    ].
+
+    (self applicationIsActive) ifTrue:[
+        self enqueueMessage:#updateList for:self arguments:#()
+    ] ifFalse:[
+        self enqueueMessage:#updateListInBackground for:self arguments:#()
+    ].
+
+    "Modified: / 05-06-2012 / 23:38:18 / cg"
+!
+
+enqueueDelayedUpdateOutputGenerator
+    slaveMode value == true ifTrue:[
+        self halt:'should not be invoked'
+    ].
+    (NewSystemBrowser synchronousUpdate == true
+    or:[ immediateUpdate value == true ])
+    ifTrue:[
+        self updateOutputGenerator.
+        ^ self.
+    ].
+    "/ listValid := false.
+    self enqueueMessage:#updateOutputGenerator for:self arguments:#()
+!
+
+forceReselect
+    |selectionHolder prevSelection|
+
+    selectionHolder := self selectionHolder.
+    prevSelection := selectionHolder value.
+
+    selectionHolder class == ValueHolder ifTrue:[
+        selectionHolder changed:#value with:prevSelection.
+    ] ifFalse:[
+        selectionHolder setValue:nil.
+        selectionHolder value:prevSelection.
+    ]
+!
+
+forceSelectionClear
+    self selectionHolder setValue:nil
+!
+
+forceUpdateList
+"/    |listView|
+"/
+"/    listView := builder componentAt:#List.
+"/    listView notNil ifTrue:[    
+"/        listView list:#()
+"/    ].
+    self updateList
+!
+
+immediateUpdate:aBooleanOrBooleanHolder
+    immediateUpdate := aBooleanOrBooleanHolder
+
+    "Created: / 13.2.2000 / 22:26:06 / cg"
+    "Modified: / 13.2.2000 / 22:28:09 / cg"
+!
+
+prioDelayedUpdate:something with:aParameter from:changedObject
+    Processor activeProcess withLowerPriorityDo:[
+        self delayedUpdate:something with:aParameter from:changedObject
+    ]
+!
+
+selectionChangeAllowed
+    selectionChangeCondition isNil ifTrue:[^ true].
+    selectionChangeCondition isBlock ifTrue:[
+	selectionChangeCondition numArgs == 1 ifTrue:[
+	    ^ selectionChangeCondition value:self
+	]
+    ].
+    ^ selectionChangeCondition value
+!
+
+selectionChanged
+    slaveMode value ~~ true ifTrue:[
+	self enqueueDelayedUpdateOutputGenerator
+	"/ self updateOutputGenerator.
+    ]
+
+    "Modified: / 4.2.2000 / 15:49:23 / cg"
+    "Created: / 5.2.2000 / 13:42:07 / cg"
+!
+
+selectionChangedByClick
+
+    "Created: / 25.2.2000 / 21:19:25 / cg"
+!
+
+syncDelayedUpdateList
+    |sensor|
+
+    sensor := self window sensor.
+    sensor isNil ifTrue:[
+	^ self
+    ].
+
+    "/
+    "/ if an update is in the queue, process it.
+    "/
+    (sensor 
+      hasEvent:#updateList
+      for:self
+      withArguments:#()
+    ) ifTrue:[
+	sensor flushEventsFor:self withType:#updateList.
+	self updateList.
+	^ self
+    ].
+!
+
+update:something with:aParameter from:changedObject
+    (NewSystemBrowser synchronousUpdate == true
+    or:[ immediateUpdate value == true ])
+    ifTrue:[
+        self delayedUpdate:something with:aParameter from:changedObject.
+        ^ self.
+    ].
+
+"/    changedObject == selectionHolder ifTrue:[
+"/        listValid ifFalse:[
+"/            self inSlaveMode ifTrue:[
+"/                ^ self
+"/            ]
+"/        ]
+"/    ].
+
+    changedObject == inGeneratorHolder ifTrue:[
+        listValid := false.
+        "/ if not already shown, avoid the processing until shown
+        "/ cg: does not work (for whatever reason) - try implementors...
+        true "self window shown" ifFalse:[
+            ^ self
+        ].
+    ].
+    self enqueueDelayedUpdate:something with:aParameter from:changedObject.
+
+    "Created: / 5.2.2000 / 13:42:07 / cg"
+    "Modified: / 13.11.2001 / 11:30:19 / cg"
+!
+
+updateListInBackground
+    self executeInBackground:[self updateList] 
+! !
+
+!BrowserList methodsFor:'drag & drop'!
+
+canDrop: aDropContext
+    ^ self canDropContext: aDropContext
+
+    "Created: / 03-07-2007 / 15:59:06 / cg"
+!
+
+doDrop: aDropContext
+    ^ self doDropContext: aDropContext
+
+    "Created: / 03-07-2007 / 15:59:33 / cg"
+!
+
+dropClassFiles:files
+    files do:[:fn |
+        (Dialog confirm:(resources string:'FileIn %1 ?' with:fn baseName allBold)) ifTrue:[
+            Smalltalk fileIn:fn logged:true.
+        ]
+    ].
+
+    "Created: / 17-10-2006 / 18:24:36 / cg"
+!
+
+objectsAreClassFiles:objects
+    (objects conform:[:anObject | anObject isFilename]) ifTrue:[
+        |files|
+
+        files := objects.
+        ^ files conform:[:aFilename | aFilename exists
+                                      and:[ aFilename suffix = 'st'
+                                      and:[ aFilename isRegularFile ]]]
+    ].
+    ^ false
+
+    "Created: / 17-10-2006 / 18:25:40 / cg"
+! !
+
+!BrowserList methodsFor:'generators'!
+
+inGeneratorHolder
+    ^ inGeneratorHolder
+
+    "Created: / 5.2.2000 / 13:42:07 / cg"
+!
+
+inGeneratorHolder:aConditionBlockHolder
+    |prevHolder|
+
+    (prevHolder := inGeneratorHolder) notNil ifTrue:[
+        inGeneratorHolder removeDependent:self
+    ].
+    inGeneratorHolder := aConditionBlockHolder.
+    inGeneratorHolder notNil ifTrue:[
+        inGeneratorHolder addDependent:self
+    ].
+    (prevHolder notNil or:[inGeneratorHolder notNil]) ifTrue:[
+        true "self window shown" ifFalse:[
+            "/ self enqueueDelayedUpdateList - will be done anyway, when shown
+        ] ifTrue:[
+            (prevHolder value isNil and:[ inGeneratorHolder value isEmptyOrNil]) 
+            ifFalse:[
+                self update:#value with:nil from:inGeneratorHolder
+            ].
+        ].
+    ].
+
+    "Modified: / 12-03-2007 / 11:31:23 / cg"
+!
+
+makeGenerator
+    self subclassResponsibility
+
+    "Created: / 5.2.2000 / 13:42:07 / cg"
+!
+
+outGeneratorHolder
+    outGeneratorHolder isNil ifTrue:[
+	outGeneratorHolder := ValueHolder new
+    ].
+    ^ outGeneratorHolder
+
+    "Modified: / 4.2.2000 / 17:17:16 / cg"
+    "Created: / 5.2.2000 / 13:42:07 / cg"
+!
+
+outGeneratorHolder:aConditionBlockHolder
+    outGeneratorHolder := aConditionBlockHolder.
+
+    "Created: / 5.2.2000 / 13:42:08 / cg"
+!
+
+updateOutputGenerator
+    "create a generator which enumerates my elements, 
+     and place it into the outputGenerator holder"
+
+    self outGeneratorHolder value: self makeGenerator.
+
+    "Modified: / 4.2.2000 / 17:16:34 / cg"
+    "Created: / 5.2.2000 / 13:42:08 / cg"
+! !
+
+!BrowserList methodsFor:'icons'!
+
+abstractMethodIcon
+    "answer an icon to mark abstract methods"
+
+    ^ self fetchIcon:#abstractMethod selector:#abstractMethodIcon
+!
+
+canvasIcon
+    "answer an icon to mark canvas spec methods"
+
+    ^ self fetchIcon:#canvas selector:#canvasIcon
+
+!
+
+deprecatedMethodIcon
+    ^ self fetchIcon:#deprecatedMethodIcon selector:#deprecatedMethodIcon
+!
+
+fetchIcon:name selector:fetchSelector
+    "answer an icon to mark methods"
+
+    icons isNil ifTrue:[icons := IdentityDictionary new].
+    Icons isNil ifTrue:[Icons := IdentityDictionary new].
+
+    ^ icons at:name ifAbsentPut:[
+        |fh icn h|
+
+        (icn := Icons at:name ifAbsent:nil) isNil ifTrue: [
+            Icons at:name put:(icn := (SystemBrowser perform:fetchSelector) onDevice:Display).
+            icn clearMaskedPixels.
+        ].
+        h := icn height.
+        h > (fh := SelectionInListView defaultFont heightOn:device) ifTrue:[
+            icn := icn magnifiedBy:(fh / h)
+        ].
+        icn onDevice:device
+      ]
+
+    "
+     Icons := nil
+     Icon flushCachedIcons
+    "
+!
+
+fileImageIcon
+    "answer an icon to mark file-image spec methods"
+
+    ^ self fetchIcon:#fileImage selector:#fileImageIcon
+!
+
+helpIcon
+    "answer an icon to mark help spec methods"
+
+    ^ self fetchIcon:#help selector:#helpIcon
+
+!
+
+hierarchicalListIcon
+    "answer an icon to mark hierarchicalList spec methods"
+
+    ^ self fetchIcon:#hierarchicalList selector:#hierarchicalListIcon
+
+!
+
+ignoredMethodIcon
+    "answer an icon to mark ignored methods"
+
+    ^ self fetchIcon:#ignoredMethod selector:#ignoredMethodIcon
+!
+
+imageIcon
+    "answer an icon to mark image spec methods"
+
+    ^ self fetchIcon:#image selector:#imageIcon
+!
+
+instrumentationIcon
+    "answer an icon to mark instrumented methods"
+
+"/    ^ self fetchIcon:#watch selector:#watchIcon
+    ^ self fetchIcon:#instrumentation selector:#instrumentationIcon
+!
+
+menuIcon
+    "answer an icon to mark menu spec methods"
+
+    ^ self fetchIcon:#menu selector:#menuIcon
+
+!
+
+methodEmptyInheritedIcon
+    ^ self fetchIcon:#methodEmptyInherited selector:#methodEmptyInheritedIcon
+!
+
+methodInheritedFromAboveAndRedefinedBelowIcon
+    ^ self fetchIcon:#methodInheritedFromAboveAndRedefinedBelow selector:#methodInheritedFromAboveAndRedefinedBelowIcon
+!
+
+methodInheritedFromAboveIcon
+    ^ self fetchIcon:#methodInheritedFromAbove selector:#methodInheritedFromAboveIcon
+!
+
+methodIsSubclassResponsibilityAndRedefinedBelowIcon
+    ^ self fetchIcon:#methodIsSubclassResponsibilityAndRedefinedBelowIcon selector:#methodIsSubclassResponsibilityAndRedefinedBelowIcon
+!
+
+methodIsSubclassResponsibilityIcon
+    ^ self fetchIcon:#methodIsSubclassResponsibilityIcon selector:#methodIsSubclassResponsibilityIcon
+!
+
+methodRedefinedBelowIcon
+    ^ self fetchIcon:#methodRedefinedBelow selector:#methodRedefinedBelowIcon
+!
+
+privateMethodIcon
+    "answer an icon to mark private methods"
+
+    ^ self fetchIcon:#privateMethod selector:#privateMethodIcon
+!
+
+programImageIcon
+    "answer an icon to mark image spec methods"
+
+    ^ self fetchIcon:#programImage selector:#programImageIcon
+!
+
+programMenuIcon
+    "answer an icon to mark program generated menu methods"
+
+    ^ self fetchIcon:#programMenu selector:#programMenuIcon
+
+!
+
+protectedMethodIcon
+    "answer an icon to mark protected methods"
+
+    ^ self fetchIcon:#protectedMethod selector:#protectedMethodIcon
+!
+
+stopIcon
+    "answer an icon to mark breakPointed methods"
+
+    ^ self fetchIcon:#stop selector:#stopIcon
+
+
+!
+
+tabListIcon
+    "answer an icon to mark tabList spec methods"
+
+    ^ self fetchIcon:#tabList selector:#tabListIcon
+
+!
+
+tableColumnsIcon
+    "answer an icon to mark tableColumns spec methods"
+
+    ^ self fetchIcon:#tableColumns selector:#tableColumnsIcon
+
+!
+
+timeIcon
+    "answer an icon to mark timed methods"
+
+    ^ self fetchIcon:#time selector:#timeIcon
+
+!
+
+traceIcon
+    "answer an icon to mark traced methods"
+
+"/    ^ self fetchIcon:#watch selector:#watchIcon
+    ^ self fetchIcon:#trace selector:#traceIcon
+! !
+
+!BrowserList methodsFor:'initialize-release'!
+
+initialize
+    listValid := false.
+    super initialize.
+!
+
+release
+    self makeIndependent.
+    super release.
+
+    filter removeDependent:self.
+    forceGeneratorTrigger removeDependent:self.
+    hideUnloadedClasses removeDependent:self.
+    inGeneratorHolder removeDependent:self.
+    nameSpaceFilter removeDependent:self.
+    organizerMode removeDependent:self.
+    packageFilter removeDependent:self.
+    selectionHolder removeDependent:self.
+    showClassPackages removeDependent:self.
+    slaveMode removeDependent:self.
+    sortBy removeDependent:self.
+    updateTrigger removeDependent:self.
+
+    "Created: / 5.2.2000 / 13:42:09 / cg"
+    "Modified: / 13.2.2000 / 23:32:23 / cg"
+! !
+
+!BrowserList methodsFor:'misc'!
+
+invalidateList
+    listValid := false.
+    slaveMode value ~~ true ifTrue:[
+	self enqueueDelayedUpdateList.
+    ]
+! !
+
+!BrowserList methodsFor:'private'!
+
+browserNameList
+    self subclassResponsibility
+!
+
+classesToProcessForClasses:classes withVisibility:visibility
+    "for methodCategory and methodList, depending on the setting
+     of visibility (allButObject, includeAllSupers or class only),
+     return a combined hull set of classes for a given set."
+
+    |classesToProcess classesToProcessInOrder|
+
+    visibility isNil ifTrue:[^classes].
+    visibility == #class ifTrue:[^classes].
+
+    classesToProcess := IdentitySet new.
+    classesToProcessInOrder := OrderedCollection new.
+    classes notNil ifTrue:[
+        classes do:[:eachClass |
+            |withAllSupers|
+
+            withAllSupers := eachClass withAllSuperclasses.
+            visibility == #allButObject ifTrue:[
+                eachClass isMeta ifTrue:[
+                    withAllSupers removeAllFoundIn:(Object class withAllSuperclasses)
+                ] ifFalse:[
+                    withAllSupers remove:Object ifAbsent:nil
+                ]
+            ].
+            withAllSupers do:[:each |
+                (classesToProcess includes:each) ifFalse:[
+                    classesToProcess add:each. 
+                    classesToProcessInOrder add:each. 
+                ]
+            ]
+        ].
+    ].
+    ^ classesToProcessInOrder
+
+    "Modified (comment): / 06-07-2011 / 11:21:16 / cg"
+!
+
+colorize:aString with:emphasis
+    ^ aString asText emphasisAllAdd:emphasis
+
+    "Created: / 27-04-2010 / 15:36:34 / cg"
+!
+
+colorizeForChangedCode:someString
+    ^ someString asText emphasisAllAdd:(UserPreferences current emphasisForChangedCode)
+
+    "Created: / 31.10.2001 / 10:17:56 / cg"
+!
+
+colorizeForChangedCodeInSmallTeam:someString
+    ^ someString asText emphasisAllAdd:(UserPreferences current emphasisForChangedCodeInSmallTeam)
+
+    "Created: / 10-11-2006 / 16:53:53 / cg"
+!
+
+colorizeForDifferentPackage:someString
+    ^ someString asText emphasisAllAdd:(UserPreferences current emphasisForDifferentPackage)
+!
+
+colorizeForInstrumentedFullyCoveredCode:someString
+    ^ self colorize:someString with:(UserPreferences current emphasisForInstrumentedFullyCoveredCode)
+
+    "Created: / 27-04-2010 / 13:01:24 / cg"
+    "Modified: / 27-04-2010 / 15:36:49 / cg"
+!
+
+colorizeForInstrumentedNeverCalledCode:someString
+    ^ self colorize:someString with:(UserPreferences current emphasisForInstrumentedNeverCalledCode)
+
+    "Created: / 27-04-2010 / 12:59:56 / cg"
+    "Modified: / 27-04-2010 / 15:37:02 / cg"
+!
+
+colorizeForInstrumentedPartiallyCoveredCode:someString
+    ^ self colorize:someString with:(UserPreferences current emphasisForInstrumentedPartiallyCoveredCode)
+
+    "Created: / 27-04-2010 / 13:01:31 / cg"
+    "Modified: / 27-04-2010 / 15:37:06 / cg"
+!
+
+colorizeGrey:someString
+    ^ someString asText emphasisAllAdd:(#color->Color darkGrey)
+!
+
+emphasizeForChangedCode:someString
+    ^ self colorizeForChangedCode:someString
+
+    "Modified: / 31.10.2001 / 10:18:57 / cg"
+!
+
+emphasizeForDifferentPackage:someString
+    ^ self colorizeForDifferentPackage:(' [' , (' ' , someString , ' ') "allItalic" , ']')
+
+    "Modified: / 31.10.2001 / 10:13:35 / cg"
+!
+
+executeInBackground:aBlock
+    "used to update when I do not have the focus (i.e. being iconified or non-active).
+     Run aBlock at suerBackgroundPrio, but go back to normal prio, if I get the focus"
+
+    |activeProcess watcher done|
+
+    activeProcess := Processor activeProcess.
+
+    done := false.
+
+    watcher :=
+        [
+            |wg|
+
+            [done] whileFalse:[
+                Delay waitForSeconds:0.2.
+                self applicationIsActive ifTrue:[
+                    activeProcess priority:(Processor userSchedulingPriority).
+                    done := true.
+                ].
+            ].
+        ] fork.
+
+    [
+        activeProcess withUserBackgroundPriorityDo:aBlock
+    ] ensure:[ 
+        done := true. 
+        watcher terminate 
+    ].
+!
+
+inSlaveMode
+    ^ (self slaveMode value == true)
+!
+
+inSlaveModeOrInvisible
+    (self slaveMode value == true) ifTrue:[^ true].
+"/    self slaveMode value isNil ifTrue:[
+"/        self window shown ifFalse:[
+"/            ^ true
+"/        ].
+"/    ].
+    ^ false
+!
+
+isClass:aClass shownWithNameSpaceFilter:nameSpaceFilter
+    |nsName|
+
+    nameSpaceFilter isNil ifTrue:[^ true].
+    nsName := aClass topNameSpace name.
+
+    (nameSpaceFilter includes:nsName) ifTrue:[^ true].
+    (nameSpaceFilter contains:[:ns | nsName startsWith:(ns , '::')]) ifTrue:[^ true].
+    ^ false
+!
+
+isClass:aClass shownWithPackageFilter:packageFilter
+    |classPackage|
+
+    packageFilter isNil ifTrue:[^ true].
+    classPackage := aClass package.
+    (packageFilter includes:classPackage) ifTrue:[^ true].
+    (packageFilter includes:self class nameListEntryForChanged) ifTrue:[^ true].
+
+    aClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
+        |mthdPackage|
+
+        mthdPackage := mthd package.
+        mthdPackage ~~ classPackage ifTrue:[
+            (packageFilter includes:mthdPackage) ifTrue:[^ true].
+        ].
+    ].
+    ^ false
+
+    "Modified: / 11-08-2006 / 15:15:28 / cg"
+!
+
+makeDependent
+    self subclassResponsibility
+
+    "Created: / 5.2.2000 / 13:42:08 / cg"
+!
+
+makeIndependent
+    self subclassResponsibility
+
+    "Created: / 5.2.2000 / 13:42:08 / cg"
+!
+
+releaseAsSubCanvas
+    self makeIndependent.
+    super releaseAsSubCanvas.
+
+    "Created: / 13.2.2000 / 23:11:29 / cg"
+    "Modified: / 13.2.2000 / 23:32:29 / cg"
+!
+
+updateList
+    self subclassResponsibility.
+!
+
+updateListFor:newList
+    "update the browsers list in a way which avoids scrolls
+     and flicker; returns true, if the newList is the same."
+
+    |"oldListSize newListSize" sameContents sameStrings oldEntry browserNameList
+     "firstDifferentFromBeginning firstDifferentFromEnd" listView prevMode sav|
+
+    browserNameList := self browserNameList value.
+    sameContents := sameStrings := (newList size == browserNameList size).
+
+    sameContents ifTrue:[
+        newList with:browserNameList do:[:newLine :oldLine |
+            sameStrings ifTrue:[
+                sameStrings := ((newLine ? '')  = (oldLine ? '')).    
+            ].
+            sameContents ifTrue:[
+                ((newLine ? '') sameStringAndEmphasisAs:(oldLine ? '')) ifFalse:[
+                    sameContents := false
+                ]
+            ].
+        ]
+    ].
+
+    listView := builder componentAt:#List.
+    listView isNil ifTrue:[
+        "/ called early during setup ...
+        browserNameList contents:newList.
+        ^ sameContents.
+    ].
+
+    sameContents ifTrue:[
+        ^ sameContents
+    ].
+    sameStrings ifTrue:[
+        newList keysAndValuesDo:[:lineNr :line |
+            oldEntry := browserNameList at:lineNr.    
+            (oldEntry sameStringAndEmphasisAs:line) ifFalse:[
+                browserNameList at:lineNr put:line.
+            ]
+        ].
+        ^ sameContents
+    ].
+
+    listView := listView scrolledView.
+    listView isNil ifTrue:[^ false].
+    prevMode := listView scrollWhenUpdating.
+    listView scrollWhenUpdating:nil.
+
+    [
+        "/ dont want to be called if selection is changed by selListView
+        sav := listView action.
+        listView action:nil.
+        browserNameList contents:newList.
+    ] ensure:[
+        listView action:sav.
+    ].
+
+    listView scrollWhenUpdating:prevMode.
+    ^ sameContents.
+
+"/    oldListSize := browserNameList size.
+"/    newListSize := newList size.
+"/    newListSize == 0 ifTrue:[
+"/        oldListSize == 0 ifTrue:[
+"/            ^ true "/ same
+"/        ].
+"/        browserNameList removeAll.
+"/        ^ false "/ not same
+"/    ].
+"/
+"/    oldListSize == 0 ifTrue:[
+"/        browserNameList contents:newList.
+"/        ^ false. "/ not same
+"/    ].
+"/
+"/    (newListSize between:(oldListSize-1) and:(oldListSize+1)) ifTrue:[
+"/        "/ individually exchange changed lines, to avoid flicker.
+"/        "/ the old code was: self browserNameList value:newList
+"/        "/ but if only a single method is changed (or an instrumentation icon changes),
+"/        "/ this results in avoidable flicker.
+"/
+"/        newListSize > oldListSize ifTrue:[
+"/            "/ an entry seems to be added
+"/            "/ try to find it.
+"/            firstDifferentFromBeginning := 1.
+"/
+"/            [firstDifferentFromBeginning <= oldListSize
+"/             and:[(newList at:firstDifferentFromBeginning) sameStringAndEmphasisAs: (browserNameList at:firstDifferentFromBeginning)]]   
+"/            whileTrue:[
+"/                firstDifferentFromBeginning := firstDifferentFromBeginning + 1.
+"/            ].
+"/            firstDifferentFromEnd := newListSize.
+"/            [firstDifferentFromEnd >= 1
+"/             and:[(newList at:firstDifferentFromEnd) sameStringAndEmphasisAs: (browserNameList at:firstDifferentFromEnd-1)]]   
+"/            whileTrue:[
+"/                firstDifferentFromEnd := firstDifferentFromEnd - 1.
+"/            ].
+"/            (firstDifferentFromEnd - firstDifferentFromBeginning) > (newList size // 10) ifTrue:[
+"/                "/ too many differences - exchange the list en-bloque
+"/                browserNameList contents:newList.
+"/                ^ false. "/ not same
+"/            ].
+"/            "/ entries from firstDifferentFromBeginning to firstDifferentFromEnd in newList are different
+"/
+"/            (firstDifferentFromEnd - firstDifferentFromBeginning + 1 "number of different items") == (newListSize - oldListSize) ifTrue:[
+"/                "/ for now, only handle single-added-item case
+"/                firstDifferentFromEnd ~~ firstDifferentFromBeginning ifTrue:[
+"/                    self halt
+"/                ].
+"/
+"/                "/ item at firstDifferentFromBeginning has been inserted.
+"/                browserNameList add:(newList at:firstDifferentFromBeginning) beforeIndex:firstDifferentFromEnd.
+"/               ^ false "/ not the same
+"/            ].
+"/        ] ifFalse:[
+"/            newListSize < oldListSize ifTrue:[
+"/                "/ an entry seems to be removed
+"/                "/ try to find it.
+"/                firstDifferentFromBeginning := 1.
+"/
+"/                [firstDifferentFromBeginning <= newListSize
+"/                 and:[(newList at:firstDifferentFromBeginning) sameStringAndEmphasisAs: (browserNameList at:firstDifferentFromBeginning)]]   
+"/                whileTrue:[
+"/                    firstDifferentFromBeginning := firstDifferentFromBeginning + 1.
+"/                ].
+"/                firstDifferentFromEnd := newListSize.
+"/                [firstDifferentFromEnd >= 1
+"/                 and:[(newList at:firstDifferentFromEnd) sameStringAndEmphasisAs: (browserNameList at:firstDifferentFromEnd+1)]]   
+"/                whileTrue:[
+"/                    firstDifferentFromEnd := firstDifferentFromEnd - 1.
+"/                ].
+"/                (firstDifferentFromEnd - firstDifferentFromBeginning) > (newList size // 10) ifTrue:[
+"/                    "/ too many differences - exchange the list en-bloque
+"/                    browserNameList contents:newList.
+"/                    ^ false. "/ not same
+"/                ].
+"/                "/ entries from firstDifferentFromBeginning to firstDifferentFromEnd in newList are different
+"/
+"/                (firstDifferentFromBeginning - firstDifferentFromEnd) == (oldListSize - newListSize) ifTrue:[
+"/                    "/ for now, only handle single-removed-item case
+"/                    firstDifferentFromEnd ~~ (firstDifferentFromBeginning-1) ifTrue:[self halt].
+"/
+"/                    "/ item at firstDifferentFromBeginning has been removed.
+"/                    browserNameList removeFromIndex:firstDifferentFromBeginning toIndex:firstDifferentFromBeginning.
+"/                   ^ false "/ not the same
+"/                ].
+"/            ]
+"/        ].
+"/
+"/        sameContents := true.
+"/        newList keysAndValuesDo:[:lineNr :line |
+"/            lineNr > browserNameList size ifTrue:[
+"/                browserNameList add:line.
+"/                sameContents := false.
+"/            ] ifFalse:[
+"/                oldEntry := browserNameList at:lineNr.    
+"/                (oldEntry ~= line 
+"/                or:[(oldEntry sameStringAndEmphasisAs:line) not]) ifTrue:[
+"/                    browserNameList at:lineNr put:line.
+"/                    sameContents := false.
+"/                ]
+"/            ]
+"/        ].
+"/        newList size < browserNameList size ifTrue:[
+"/            browserNameList removeFromIndex:(newList size + 1) toIndex:(browserNameList size).
+"/            sameContents := false.
+"/        ].
+"/        ^ sameContents
+"/    ].
+"/
+"/    browserNameList contents:newList.
+"/    ^ false "/ not the same
+! !
+
+!BrowserList methodsFor:'queries'!
+
+supportsSearch
+
+    ^true
+
+    "Created: / 27-07-2011 / 20:31:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BrowserList methodsFor:'setup'!
+
+autoSelect:aBoolean
+    autoSelect := aBoolean.
+!
+
+commonPostBuild
+    |list|
+
+    self inSlaveMode ifFalse:[
+        "/ listValid ifFalse:[self enqueueDelayedUpdateList "updateList"].
+        listValid := false.
+    ] ifTrue:[
+        listValid := false.
+        "/ self enqueueDelayedUpdateList.
+        "/ self invalidateList
+    ].
+
+    self makeDependent.
+
+    list := builder componentAt:#List.
+    list notNil ifTrue:[
+        list selectConditionBlock:[:item | self selectionChangeAllowed].
+        list ignoreReselect:false.
+    ].
+
+    UserPreferences current useInPlaceSearchInBrowserLists ifTrue:[
+        self supportsSearch ifTrue:[
+            list notNil ifTrue:[
+                searchHandler := SearchHandler for: list
+            ] ifFalse:[ 
+                self breakPoint: #jv info: 'Should support search but list is nil. Wrong spec?'
+            ].
+        ]
+    ]
+
+    "Modified: / 28-07-2011 / 09:39:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+commonPostOpen
+    super commonPostOpen.
+    listValid ifFalse:[
+        "/ self enqueueDelayedUpdateList.
+    ]. 
+! !
+
+!BrowserList::SearchHandler class methodsFor:'instance creation'!
+
+for: aView
+
+    ^self new initializeFor: aView.
+
+    "Created: / 27-07-2011 / 20:30:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BrowserList::SearchHandler methodsFor:'event handling'!
+
+keyPress:key x:x y:y view:aView
+
+    | v |
+
+    aView == listView ifTrue:[
+
+        "Forward the event to the view under pointer.
+         Therefore, the seach is started only iff the
+         pointer points to the list. Based on experience,
+         this improves usability because: does not require 
+         to click in the list to focus it (which may change 
+         the selection)"
+        (v := aView windowGroup pointerView) ~~ aView ifTrue:[
+            v notNil ifTrue:[
+                aView windowGroup focusView: v.
+                v sensor keyPress:key x:x y:y view:v.
+                ^self.
+            ].
+        ].
+
+        searchWindow isNil ifTrue:[
+            key isCharacter ifTrue:[
+                searchHolder setValue: key asString.
+                self startSearch
+            ]
+        ] ifFalse:[
+            key == #Escape ifTrue:[self stopSearch].
+            key == #Accept ifTrue:[self stopSearch].
+            key == #Return ifTrue:[self stopSearch].
+        ]
+    ].
+
+    aView == searchField ifTrue:[
+        key == #Escape ifTrue:[self stopSearch].
+        key == #Accept ifTrue:[self stopSearch].
+        key == #Return ifTrue:[self stopSearch].
+        (key == #CursorUp or:[key == #CursorDown]) ifTrue:[
+            listView sensor setCtrlDown: false.
+            listView sensor setShiftDown: false.
+            listView keyPress:key x:x y:y
+        ].
+
+    ]
+
+    "Created: / 27-07-2011 / 20:39:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BrowserList::SearchHandler methodsFor:'event handling-queries'!
+
+handlesKeyPress:key inView:aView
+
+    aView == listView ifTrue:[
+        key isCharacter ifTrue:[
+            ^true
+        ]
+    ].
+    aView == searchField ifTrue:[
+        (#(#Escape #Accept #Return #CursorUp CursorDown) includes: key) ifTrue:[
+            ^true
+        ]
+    ].
+    ^false
+
+    "Created: / 27-07-2011 / 20:39:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BrowserList::SearchHandler methodsFor:'initialization'!
+
+initializeFor: aView
+
+    aView isScrollWrapper ifTrue:[
+        listView := aView scrolledView
+    ] ifFalse:[
+        listView := aView.
+    ].
+    listView delegate: self.
+    searchHolder := ValueHolder with: nil.
+    searchHolder onChangeSend: #updateList to: self.
+
+    "Created: / 27-07-2011 / 20:32:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BrowserList::SearchHandler methodsFor:'private'!
+
+absoluteLeftOfListView
+
+    | absoluteLeft view |
+    absoluteLeft := 1.
+    view := listView.
+    [ view notNil ] whileTrue:
+        [absoluteLeft := absoluteLeft + view left - 2.
+        view := view superView].
+    ^absoluteLeft
+
+    "Created: / 08-08-2009 / 22:30:07 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Created: / 27-07-2011 / 21:54:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+absoluteTopOfListView
+
+    | absoluteTop view |
+    absoluteTop := 1.
+    view := listView.
+    [ view notNil ] whileTrue:
+        [absoluteTop := absoluteTop + view top - 1.
+        view := view superView].
+    ^absoluteTop
+
+    "Created: / 08-08-2009 / 22:30:16 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Created: / 27-07-2011 / 21:54:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+filter
+
+    | pattern |
+    pattern := StringPattern fromString: searchHolder value.
+
+    ^[:entry :relax|
+    pattern match: entry asString trimSeparators relax: relax
+    ]
+
+    "Created: / 27-07-2011 / 22:18:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hideSearchWindow
+
+    searchWindow
+        ifNotNil:[
+            searchWindow destroy.
+            searchWindow := nil.
+            searchField := nil.
+        ]
+
+    "Created: / 27-07-2011 / 21:38:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+restoreList
+
+    self updateSelection.
+    listView listHolder: listHolder.
+    listSelectionHolder notNil ifTrue:[
+        listView model: listSelectionHolder.    
+    ].
+    listSelectionHolder changed: #value
+
+    "Created: / 27-07-2011 / 22:14:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+saveList
+
+    listHolder := listView listHolder.  
+    listSelectionHolder := listView model.
+
+    "Created: / 27-07-2011 / 22:14:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showSearchWindow
+
+    searchWindow := StandardSystemView new
+        bePopUpView;
+        beSlave;        
+        origin:(self absoluteLeftOfListView + 5" - optionsView textStartLeft") 
+                    @ (self absoluteTopOfListView + listView height + 1 + 5)
+        extent:(listView width + 0"((optionsView textStartLeft) * 2)") @ (listView font height * 1.5) ceiling.
+
+    searchField := (EditField 
+                    origin: 0.0@0.0
+                    corner: 1.0@1.0
+                    in: searchWindow)
+                    model: searchHolder;
+                    immediateAccept: true;
+                    delegate: self;
+                    yourself.
+
+    searchWindow openModal.
+
+    "Created: / 27-07-2011 / 21:37:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+startSearch
+
+    self saveList.
+    self updateList.
+    self showSearchWindow.
+
+    "Created: / 27-07-2011 / 21:37:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+stopSearch
+
+    self hideSearchWindow.
+    self restoreList.
+
+    "Created: / 27-07-2011 / 21:37:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateList
+
+    | filter filteredList |
+    filter := self filter.
+
+    filteredList := listHolder value select:[:each|filter value: each value: 1].
+    filteredList isEmpty ifTrue:[
+    filteredList := listHolder value select:[:each|filter value: each value: 2].
+    filteredList isEmpty ifTrue:[
+    filteredList := listHolder value select:[:each|filter value: each value: 3].
+    ]].
+
+
+    listView listHolder == listHolder ifTrue:[
+        listView listHolder: (ValueHolder with: filteredList)
+    ] ifFalse:[
+        listView listHolder value: filteredList.
+    ].
+    listView model == listSelectionHolder ifTrue:[
+        listView model: ValueHolder new.
+        listView model onChangeSend: #updateSelection to: self.
+    ].
+    filteredList size == 1 ifTrue:[
+        listView selection: 1
+    ]
+
+    "Created: / 27-07-2011 / 22:18:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateSelection
+
+    | sel |
+
+    listSelectionHolder isNil ifTrue:[^self].
+
+    sel := listView selection.
+    sel notNil ifTrue:[
+        sel isInteger ifTrue:[
+            sel := listHolder identityIndexOf: (listView list at: sel)
+        ] ifFalse:[
+            sel := sel collect:[:each|listHolder value identityIndexOf: (listView list at: each)]
+        ].
+    ] ifFalse:[
+        listView multipleSelectOk ifTrue:[
+            sel := #()
+        ]
+    ].
+    listView useIndex ifFalse:[
+        sel isInteger ifTrue:[
+            sel := listHolder value at: sel
+        ] ifFalse:[
+            sel := sel collect:[:each|listHolder value at: each].
+        ]
+    ].
+
+
+    listSelectionHolder value: sel.
+
+    "Created: / 02-08-2011 / 09:08:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!BrowserList class methodsFor:'documentation'!
+
+version
+    ^ '$Id: Tools__BrowserList.st 8086 2013-01-15 12:03:21Z vranyj1 $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_BrowserList.st,v 1.54 2012/12/12 15:38:00 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id:: Tools__BrowserList.st 8086 2013-01-15 12:03:21Z vranyj1                                                                $'
+! !
--- a/Tools__BrowserListWithFilter.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__BrowserListWithFilter.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,8 +1,19 @@
+"
+ 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 }"
 
-BrowserList subclass:#BrowserListWithFilter
+Tools::BrowserList subclass:#BrowserListWithFilter
 	instanceVariableNames:'listView filterView filterPatternHolder showFilterHolder'
 	classVariableNames:''
 	poolDictionaries:''
@@ -11,6 +22,20 @@
 
 !BrowserListWithFilter 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.
+"
+!
+
 documentation
 "
     Abstract superclass for a browser list with user filter.
@@ -29,6 +54,19 @@
 "
 ! !
 
+
+!BrowserListWithFilter class methodsFor:'plugIn spec'!
+
+aspectSelectors
+
+    ^#(
+        showFilterHolder
+    )
+
+    "Created: / 11-02-2012 / 22:44:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
 !BrowserListWithFilter methodsFor:'accessing'!
 
 filterPattern
@@ -51,6 +89,7 @@
     "Created: / 29-11-2011 / 15:27:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BrowserListWithFilter methodsFor:'aspects'!
 
 filterPatternHolder
@@ -111,6 +150,7 @@
     ].
 ! !
 
+
 !BrowserListWithFilter methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
@@ -130,6 +170,30 @@
     "Modified (format): / 06-06-2012 / 00:01:37 / cg"
 ! !
 
+
+!BrowserListWithFilter methodsFor:'event handling-delegation'!
+
+handlesKeyPress:key inView:aView
+    ^ aView == filterView and:[key == #CursorDown]
+
+    "Created: / 06-02-2012 / 23:02:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+keyPress:key x:x y:y view:aView
+
+    (aView == filterView and:[key == #CursorDown]) ifTrue:[
+        listView scrolledView notNil ifTrue:[
+            listView scrolledView 
+                takeFocus;
+                keyPress: key x:x y:y.
+        ].
+    ].
+
+    "Created: / 06-02-2012 / 23:06:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-01-2013 / 21:28:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
 !BrowserListWithFilter methodsFor:'hooks'!
 
 commonPostBuild
@@ -138,6 +202,9 @@
     listView isNil ifTrue:[self breakPoint: #jv].
     filterView isNil ifTrue:[self breakPoint: #jv].
 
+    filterView delegate: self.
+    self showFilter: showFilterHolder value.
+
     "Created: / 29-11-2011 / 14:47:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
@@ -155,6 +222,7 @@
     "Created: / 29-11-2011 / 14:47:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BrowserListWithFilter methodsFor:'private'!
 
 filterList: list
@@ -177,6 +245,8 @@
 showFilter: aBoolean
     | offset |
 
+    listView isNil ifTrue:[ ^ self ].
+
     aBoolean ifTrue:[
         offset := filterView height.
     ] ifFalse:[
@@ -188,6 +258,7 @@
     "Created: / 29-11-2011 / 14:55:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !BrowserListWithFilter class methodsFor:'documentation'!
 
 version
@@ -196,4 +267,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/Tools__BrowserListWithFilter.st,v 1.4 2012-06-05 22:03:39 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: Tools__BrowserListWithFilter.st 8090 2013-01-17 21:52:18Z vranyj1 $'
 ! !
+
--- a/Tools__Browslet.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__Browslet.st	Wed Jan 30 11:15:09 2013 +0000
@@ -150,9 +150,9 @@
 !Browslet class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__Browslet.st,v 1.2 2011-07-03 13:40:42 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__Browslet.st,v 1.2 2011/07/03 13:40:42 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: Tools__Browslet.st 7637 2010-10-04 21:44:44Z vranyj1 §'
-! !
+    ^ '$Id: Tools__Browslet.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
\ No newline at end of file
--- a/Tools__BrowsletCanvas.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__BrowsletCanvas.st	Wed Jan 30 11:15:09 2013 +0000
@@ -292,9 +292,9 @@
 !BrowsletCanvas class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__BrowsletCanvas.st,v 1.2 2011-07-03 13:40:28 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__BrowsletCanvas.st,v 1.2 2011/07/03 13:40:28 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: Tools__BrowsletCanvas.st 7637 2010-10-04 21:44:44Z vranyj1 §'
-! !
+    ^ '$Id: Tools__BrowsletCanvas.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
\ No newline at end of file
--- a/Tools__CachedTags.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__CachedTags.st	Wed Jan 30 11:15:09 2013 +0000
@@ -67,5 +67,9 @@
 !CachedTags class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__CachedTags.st,v 1.1 2011-05-06 08:34:57 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__CachedTags.st,v 1.1 2011/05/06 08:34:57 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__CachedTags.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/Tools__ChangeList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ChangeList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
-              All Rights Reserved
+	      All Rights Reserved
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
@@ -27,9 +27,9 @@
 
 "{ NameSpace: Tools }"
 
-BrowserListWithFilter subclass:#ChangeList
-	instanceVariableNames:'listHolder showRemovedHolder showSameHolder allowRemoveHolder
-		allowAcceptHolder applyAction'
+Tools::BrowserListWithFilter subclass:#ChangeList
+	instanceVariableNames:'listHolder showRemovedHolder showSameHolder showTimestampHolder
+		allowRemoveHolder allowAcceptHolder scrollToBottom applyAction'
 	classVariableNames:'LastSelectionConditionString'
 	poolDictionaries:''
 	category:'Interface-Browsers-ChangeSet'
@@ -47,7 +47,7 @@
 copyright
 "
  COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
-              All Rights Reserved
+	      All Rights Reserved
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
@@ -72,6 +72,7 @@
 "
 ! !
 
+
 !ChangeList class methodsFor:'image specs'!
 
 iconEqual
@@ -110,6 +111,7 @@
     "Modified: / 31-08-2011 / 10:54:46 / cg"
 ! !
 
+
 !ChangeList class methodsFor:'interface specs'!
 
 windowSpec
@@ -127,56 +129,175 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Change List'
-          name: 'Change List'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 300 300)
-        )
-        component: 
+	  label: 'Change List'
+	  name: 'Change List'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 300 300)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (SelectionInListModelViewSpec
-              name: 'List'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              model: selectionHolder
-              menu: menuHolderWithShowFilter
-              hasHorizontalScrollBar: true
-              hasVerticalScrollBar: true
-              listModel: listHolder
-              multipleSelectOk: true
-              useIndex: false
-              highlightMode: line
-              doubleClickSelector: selectionDoubleclicked
-              postBuildCallback: postBuildListView:
-            )
-           (InputFieldSpec
-              name: 'Filter'
-              layout: (LayoutFrame 0 0 0 0 0 1 26 0)
-              initiallyInvisible: true
-              model: filterPatternHolder
-              immediateAccept: true
-              acceptOnLeave: false
-              acceptOnReturn: false
-              acceptOnTab: false
-              acceptOnPointerLeave: false
-              emptyFieldReplacementText: 'Search Filter...'
-              usePreferredHeight: true
-              useDynamicPreferredHeight: true
-              postBuildCallback: postBuildFilterView:
-            )
-           )
-         
-        )
+	  collection: (
+	   (InputFieldSpec
+	      name: 'Filter'
+	      layout: (LayoutFrame 0 0 0 0 0 1 25 0)
+	      initiallyInvisible: true
+	      model: filterPatternHolder
+	      immediateAccept: true
+	      acceptOnLeave: false
+	      acceptOnReturn: false
+	      acceptOnTab: false
+	      acceptOnPointerLeave: false
+	      emptyFieldReplacementText: 'Search Filter...'
+	      postBuildCallback: postBuildFilterView:
+	    )
+	   (DataSetSpec
+	      name: 'List'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      model: selectionHolder
+	      menu: menuHolderWithShowFilter
+	      hasHorizontalScrollBar: true
+	      hasVerticalScrollBar: true
+	      dataList: listHolder
+	      useIndex: false
+	      doubleClickSelector: selectionDoubleclicked
+	      columnHolder: listColumns
+	      showLabels: false
+	      multipleSelectOk: true
+	      postBuildCallback: postBuildListView:
+	      properties:
+	     (PropertyListDictionary
+		startDragSelector: nil
+		dropObjectSelector: dragObjects:
+		canDropSelector: canDrop:
+		dropSelector: dropObjects:
+	      )
+	    )
+	   )
+
+	)
+      )
+! !
+
+
+!ChangeList class methodsFor:'list specs'!
+
+listColumnSpec
+    "This resource specification was automatically generated
+     by the DataSetBuilder of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the DataSetBuilder may not be able to read the specification."
+
+    "
+     DataSetBuilder new openOnClass:Tools::ChangeList andSelector:#listColumnSpec
+    "
+
+    <resource: #tableColumns>
+
+    ^#(
+      (DataSetColumnSpec
+	 label: 'Removed'
+	 id: 'removed'
+	 labelButtonType: Button
+	 width: 20
+	 minWidth: 20
+	 editorType: CheckToggle
+	 rendererType: CheckToggle
+	 model: notRemoved
+	 menuFromApplication: false
+	 printSelector: notRemoved
+	 isResizeable: false
+	 showRowSeparator: false
+	 showSelectionHighLighted: false
+	 showColSeparator: false
+       )
+      (DataSetColumnSpec
+	 label: 'Delta'
+	 id: 'delta'
+	 labelButtonType: Button
+	 width: 20
+	 minWidth: 20
+	 menuFromApplication: false
+	 printSelector: iconDelta
+	 canSelect: false
+	 isResizeable: false
+	 showRowSeparator: false
+	 showSelectionHighLighted: false
+	 showColSeparator: false
+       )
+      (DataSetColumnSpec
+	 label: 'Change'
+	 id: change
+	 labelAlignment: left
+	 labelButtonType: Button
+	 menuFromApplication: false
+	 printSelector: label
+	 canSelect: false
+	 showRowSeparator: false
+	 showColSeparator: false
+       )
+      (DataSetColumnSpec
+	 label: 'Class'
+	 id: 'className'
+	 labelAlignment: left
+	 activeHelpKey: ''
+	 activeHelpKeyForLabel: ''
+	 labelButtonType: Button
+	 usePreferredWidth: true
+	 model: className
+	 menuFromApplication: false
+	 canSelect: false
+	 showRowSeparator: false
+	 showColSeparator: false
+       )
+      (DataSetColumnSpec
+	 label: 'Selector'
+	 id: 'selector'
+	 labelAlignment: left
+	 activeHelpKey: ''
+	 activeHelpKeyForLabel: ''
+	 labelButtonType: Button
+	 usePreferredWidth: true
+	 model: selector
+	 menuFromApplication: false
+	 canSelect: false
+	 showRowSeparator: false
+	 showColSeparator: false
+       )
+      (DataSetColumnSpec
+	 label: 'Category'
+	 id: category
+	 labelAlignment: left
+	 labelButtonType: Button
+	 usePreferredWidth: true
+	 model: category
+	 menuFromApplication: false
+	 canSelect: false
+	 showRowSeparator: false
+	 showColSeparator: false
+       )
+      (DataSetColumnSpec
+	 label: 'Time Stamp'
+	 id: timeStamp
+	 labelAlignment: left
+	 labelButtonType: Button
+	 usePreferredWidth: true
+	 model: timeStamp
+	 menuFromApplication: false
+	 canSelect: false
+	 showRowSeparator: false
+	 showColSeparator: false
+       )
       )
 
-    "Modified: / 29-11-2011 / 15:52:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeList class methodsFor:'menu specs'!
 
 listMenu
@@ -194,111 +315,112 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            enabled: hasChangeSelectedAndNotRemoved
-            label: 'Apply'
-            itemValue: listMenuApply
-            translateLabel: true
-            isVisible: allowAcceptHolder
-            shortcutKey: Accept
-          )
-         (MenuItem
-            label: 'Apply all'
-            itemValue: listMenuApplyAll
-            translateLabel: true
-            isVisible: allowAcceptHolder
-          )
-         (MenuItem
-            enabled: hasSingleChangeSelectedAndCanBrowse
-            label: 'Browse'
-            itemValue: listMenuBrowse
-            translateLabel: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Delete'
-            itemValue: listMenuDeleteSelection
-            nameKey: Delete
-            translateLabel: true
-            isVisible: allowRemoveHolder
-            shortcutKey: Delete
-          )
-         (MenuItem
-            label: '-'
-            isVisible: allowRemoveHolder
-          )
-         (MenuItem
-            label: 'Select...'
-            translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Select same'
-                  itemValue: listMenuSelectSame
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Select additions (new classes/methods)'
-                  itemValue: listMenuSelectAdditions
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Select removals'
-                  itemValue: listMenuSelectRemovals
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Select all'
-                  itemValue: listMenuSelectAll
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Select none'
-                  itemValue: listMenuSelectNone
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Select using block'
-                  itemValue: listMenuSelectUsingBlock
-                  translateLabel: true
-                )
-               )
-              nil
-              nil
-            )
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Show Deleted'
-            translateLabel: true
-            isVisible: allowRemoveHolder
-            indication: showRemovedHolder
-          )
-         (MenuItem
-            label: 'Inspect change'
-            itemValue: listMenuInspect
-            translateLabel: true
-          )
-         )
-        nil
-        nil
+	(
+	 (MenuItem
+	    enabled: hasChangeSelectedAndNotRemoved
+	    label: 'Apply'
+	    itemValue: listMenuApply
+	    translateLabel: true
+	    isVisible: allowAcceptHolder
+	    shortcutKey: Accept
+	  )
+	 (MenuItem
+	    label: 'Apply all'
+	    itemValue: listMenuApplyAll
+	    translateLabel: true
+	    isVisible: allowAcceptHolder
+	  )
+	 (MenuItem
+	    enabled: hasSingleChangeSelectedAndCanBrowse
+	    label: 'Browse'
+	    itemValue: listMenuBrowse
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    label: 'Delete'
+	    itemValue: listMenuDeleteSelection
+	    nameKey: Delete
+	    translateLabel: true
+	    isVisible: allowRemoveHolder
+	    shortcutKey: Delete
+	  )
+	 (MenuItem
+	    label: '-'
+	    isVisible: allowRemoveHolder
+	  )
+	 (MenuItem
+	    label: 'Select...'
+	    translateLabel: true
+	    submenu:
+	   (Menu
+	      (
+	       (MenuItem
+		  label: 'Select same'
+		  itemValue: listMenuSelectSame
+		  translateLabel: true
+		)
+	       (MenuItem
+		  label: 'Select additions (new classes/methods)'
+		  itemValue: listMenuSelectAdditions
+		  translateLabel: true
+		)
+	       (MenuItem
+		  label: 'Select removals'
+		  itemValue: listMenuSelectRemovals
+		  translateLabel: true
+		)
+	       (MenuItem
+		  label: '-'
+		)
+	       (MenuItem
+		  label: 'Select all'
+		  itemValue: listMenuSelectAll
+		  translateLabel: true
+		)
+	       (MenuItem
+		  label: 'Select none'
+		  itemValue: listMenuSelectNone
+		  translateLabel: true
+		)
+	       (MenuItem
+		  label: '-'
+		)
+	       (MenuItem
+		  label: 'Select using block'
+		  itemValue: listMenuSelectUsingBlock
+		  translateLabel: true
+		)
+	       )
+	      nil
+	      nil
+	    )
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    label: 'Show Deleted'
+	    translateLabel: true
+	    isVisible: allowRemoveHolder
+	    indication: showRemovedHolder
+	  )
+	 (MenuItem
+	    label: 'Inspect change'
+	    itemValue: listMenuInspect
+	    translateLabel: true
+	  )
+	 )
+	nil
+	nil
       )
 ! !
 
+
 !ChangeList class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -313,20 +435,21 @@
      (if this app is embedded in a subCanvas)."
 
     ^ #(
-        #allowAcceptHolder
-        #allowRemoveHolder
-
-        #inGeneratorHolder
-        #menuHolder
-        #outGeneratorHolder
-        #selectionHolder
-        #showRemovedHolder
-        #showSameHolder
+	#allowAcceptHolder
+	#allowRemoveHolder
+	#inGeneratorHolder
+	#menuHolder
+	#outGeneratorHolder
+	#selectionHolder
+	#showFilterHolder
+	#showRemovedHolder
+	#showSameHolder
+	#showTimestampHolder
       ).
 
-    "Modified: / 24-01-2012 / 19:54:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeList methodsFor:'accessing'!
 
 acceptEnabled
@@ -366,13 +489,31 @@
     "Created: / 27-12-2011 / 14:18:25 / cg"
 !
 
+scrollToBottom:aBoolean
+    "If set to true, list will automaticallu scroll to bottom
+     ehen the list is updated and clears this flag.
+
+     This is required as the list is updated asynchronously"
+
+    scrollToBottom := aBoolean.
+
+    "Modified (comment): / 30-03-2012 / 17:05:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 selection
 
-    ^self selectionHolder value
+    ^(self selectionHolder value ? #()) reject:[:e|e isNil].
 
     "Created: / 05-12-2009 / 14:48:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+selection: selection
+
+    self selectionHolder value: selection
+
+    "Created: / 30-03-2012 / 12:29:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 selectionIndices
     |sel|
 
@@ -390,6 +531,7 @@
     "Created: / 05-12-2009 / 14:28:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeList methodsFor:'actions'!
 
 selectionDoubleclicked
@@ -405,13 +547,14 @@
     "Modified: / 24-01-2012 / 22:01:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeList methodsFor:'aspects'!
 
 allowAcceptHolder
     "return/create the valueHolder 'acceptEnabledHolder'"
 
     allowAcceptHolder isNil ifTrue:[
-        allowAcceptHolder := ValueHolder with:nil "defaultValue here".
+	allowAcceptHolder := ValueHolder with:nil "defaultValue here".
     ].
     ^ allowAcceptHolder
 
@@ -426,41 +569,54 @@
 
 allowRemoveHolder
     "return/create the 'allowRemoveHolder' value holder (automatically generated)"
-    
+
     allowRemoveHolder isNil ifTrue:[
-        allowRemoveHolder := ValueHolder with:true.
-        allowRemoveHolder addDependent:self.
+	allowRemoveHolder := ValueHolder with:true.
+	allowRemoveHolder addDependent:self.
     ].
     ^ allowRemoveHolder
 
     "Modified (comment): / 24-01-2012 / 19:44:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-allowRemoveHolder:something 
+allowRemoveHolder:something
     "set the 'showRemovedHolder' value holder (automatically generated)"
-    
+
     |oldValue newValue|
 
     allowRemoveHolder notNil ifTrue:[
-        oldValue := allowRemoveHolder value.
-        allowRemoveHolder removeDependent:self.
+	oldValue := allowRemoveHolder value.
+	allowRemoveHolder removeDependent:self.
     ].
     allowRemoveHolder := something.
     allowRemoveHolder notNil ifTrue:[
-        allowRemoveHolder addDependent:self.
+	allowRemoveHolder addDependent:self.
     ].
     newValue := allowRemoveHolder value.
     oldValue ~~ newValue ifTrue:[
-        self 
-            update:#value
-            with:newValue
-            from:allowRemoveHolder.
+	self
+	    update:#value
+	    with:newValue
+	    from:allowRemoveHolder.
     ].
 !
 
+listColumns
+
+    |holder|
+    (holder := builder bindingAt:#listColumns) isNil ifTrue:[
+	builder aspectAt:#listColumns put:(holder := List new).
+	self listColumnShow: #delta.
+	self listColumnShow: #change.
+    ].
+    ^ holder
+
+    "Created: / 26-07-2012 / 18:03:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 listHolder
     listHolder isNil ifTrue:[
-        listHolder := ValueHolder new.
+	listHolder := ValueHolder new.
     ].
     ^ listHolder
 !
@@ -469,8 +625,8 @@
     "return/create the 'showRemovedHolder' value holder (automatically generated)"
 
     showRemovedHolder isNil ifTrue:[
-        showRemovedHolder := ValueHolder with: true.
-        showRemovedHolder addDependent: self.
+	showRemovedHolder := ValueHolder with: true.
+	showRemovedHolder addDependent: self.
     ].
     ^ showRemovedHolder
 !
@@ -481,16 +637,16 @@
     |oldValue newValue|
 
     showRemovedHolder notNil ifTrue:[
-        oldValue := showRemovedHolder value.
-        showRemovedHolder removeDependent:self.
+	oldValue := showRemovedHolder value.
+	showRemovedHolder removeDependent:self.
     ].
     showRemovedHolder := something.
     showRemovedHolder notNil ifTrue:[
-        showRemovedHolder addDependent:self.
+	showRemovedHolder addDependent:self.
     ].
     newValue := showRemovedHolder value.
     oldValue ~~ newValue ifTrue:[
-        self update:#value with:newValue from:showRemovedHolder.
+	self update:#value with:newValue from:showRemovedHolder.
     ].
 !
 
@@ -498,8 +654,8 @@
     "return/create the 'showSameHolder' value holder (automatically generated)"
 
     showSameHolder isNil ifTrue:[
-        showSameHolder := ValueHolder with: true.
-        showSameHolder addDependent:self.
+	showSameHolder := ValueHolder with: true.
+	showSameHolder addDependent:self.
     ].
     ^ showSameHolder
 
@@ -512,70 +668,122 @@
     |oldValue newValue|
 
     showSameHolder notNil ifTrue:[
-        oldValue := showSameHolder value.
-        showSameHolder removeDependent:self.
+	oldValue := showSameHolder value.
+	showSameHolder removeDependent:self.
     ].
     showSameHolder := something.
     showSameHolder notNil ifTrue:[
-        showSameHolder addDependent:self.
+	showSameHolder addDependent:self.
     ].
     newValue := showSameHolder value.
     oldValue ~~ newValue ifTrue:[
-        self update:#value with:newValue from:showSameHolder.
+	self update:#value with:newValue from:showSameHolder.
+    ].
+!
+
+showTimestampHolder
+    "return/create the 'showTimestampHolder' value holder (automatically generated)"
+
+    showTimestampHolder isNil ifTrue:[
+	showTimestampHolder := ValueHolder new.
+	showTimestampHolder addDependent:self.
+    ].
+    ^ showTimestampHolder
+!
+
+showTimestampHolder:something
+    "set the 'showTimestampHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    showTimestampHolder notNil ifTrue:[
+	oldValue := showTimestampHolder value.
+	showTimestampHolder removeDependent:self.
+    ].
+    showTimestampHolder := something.
+    showTimestampHolder notNil ifTrue:[
+	showTimestampHolder addDependent:self.
+    ].
+    newValue := showTimestampHolder value.
+    oldValue ~~ newValue ifTrue:[
+	self update:#value with:newValue from:showTimestampHolder.
     ].
 ! !
 
+
 !ChangeList methodsFor:'change & update'!
 
 update: aspect with: param from: sender
 
+    sender == allowRemoveHolder ifTrue:[
+	self listColumn: #removed visible: allowRemoveHolder value.
+	^self.
+    ].
+
+    sender == showTimestampHolder ifTrue:[
+	self listColumn: #timeStamp visible: showTimestampHolder value.
+	^self.
+    ].
+
+
     sender == selectionHolder ifTrue:[
-        self selectionChanged.
-        ^self
+	self selectionChanged.
+	^self
     ].
     sender == showSameHolder ifTrue:[
-        self updateList
+	self updateList.
+	^self.
     ].
     sender == showRemovedHolder ifTrue:[
-        self updateList
+	self updateList.
+	^self.
     ].
 
     ^super update: aspect with: param from: sender
 
     "Created: / 24-10-2009 / 19:47:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (format): / 27-12-2011 / 14:20:30 / cg"
+    "Modified: / 26-07-2012 / 18:44:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
+!ChangeList methodsFor:'drag & drop'!
+
+canDrop: aDropContext
+
+    ^(self inGeneratorHolder value isKindOf: Iterator) not
+	and:[aDropContext dropObjects allSatisfy:[:obj|(obj theObject isKindOf: Change)]].
+
+    "Created: / 01-08-2012 / 17:53:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+dragObjects: aDropSource
+
+    ^self selection collect:[:item|(DropObject new: item change) displayObject: (item labelAndIcon)]
+
+    "Created: / 01-08-2012 / 17:50:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+dropObjects:aDropContext
+    "drop manager wants to drop.
+     This is ony sent, if #canDrop: returned true.
+     Must be redefined in order for drop to work."
+
+    | changes |
+
+    changes := self inGeneratorHolder value.
+    aDropContext dropObjects do:[:obj|changes add: obj theObject].
+    self inGeneratorHolder changed: #value
+
+    "Modified: / 01-08-2012 / 18:15:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
 !ChangeList methodsFor:'event processing'!
 
-buttonPress:button x:x y:y view:aView
 
-    | itemIndex item |
-
-    button ~= 1 ifTrue:[^aView buttonPress:button x:x y:y].
-
-    itemIndex := aView yVisibleToLineNr:y.
-    itemIndex isNil ifTrue:[^self].
-    itemIndex == 0 ifTrue:[^self].
-    itemIndex > aView list size ifTrue:[^self].
-    item := aView list at: itemIndex.
 
-    ((aView left + x) between: (item x) and: (item x + 16))
-        ifFalse:[^aView buttonPress:button x:x y:y].
 
-    item removed: item removed not.
-    aView invalidate
-
-    "Created: / 08-12-2009 / 14:12:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 18-11-2011 / 14:55:41 / cg"
-!
-
-handlesButtonPress:button inView:aView
-
-    ^listView scrolledView == aView
-
-    "Created: / 08-12-2009 / 14:08:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
 
 handlesKeyPress:key inView:aView
     <resource: #keyboard (#Accept #Ctrls)>
@@ -587,33 +795,34 @@
 !
 
 keyPress:key x:x y:y view:aView
-    <resource: #keyboard (#Ctrls #Accept)>
-
     (key == #Accept or:[ key == #Ctrls]) ifTrue:[
-        self listMenuApply.
-        ^ self
+	self listMenuApply.
+	^ self
     ].
 
     "Created: / 08-02-2012 / 14:42:18 / cg"
 ! !
 
+
 !ChangeList methodsFor:'generators'!
 
 makeGenerator
     "Superclass Tools::BrowserList says that I am responsible to implement this method"
 
     ^Iterator on:
-        [:whatToDo|
-        selectionHolder value do:
-            [:changeListItem| | change |
-            change := changeListItem change.
-            change isCompositeChange ifTrue:
-                [change changes do: whatToDo]]].
+	[:whatToDo|
+	selectionHolder value do:
+	    [:changeListItem| | change |
+	    changeListItem notNil ifTrue:[
+		change := changeListItem change.
+		change isCompositeChange ifTrue:
+		    [change changes do: whatToDo]]]]
 
     "Modified: / 24-07-2009 / 23:00:41 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 24-10-2009 / 20:00:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-07-2012 / 15:39:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeList methodsFor:'hooks'!
 
 postBuildListView: aView
@@ -624,20 +833,22 @@
     "Created: / 29-11-2011 / 14:56:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeList methodsFor:'initialization'!
 
 initialize
+
     super initialize.
-
     menuHolder := [self menuFor: #listMenu].
+    scrollToBottom := false.
     applyAction isNil ifTrue:[
-        applyAction := [:change | change apply ].
+	applyAction := [:change | change apply ].
     ].
 
     "Created: / 29-10-2010 / 12:50:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 10-09-2012 / 13:57:20 / cg"
 ! !
 
+
 !ChangeList methodsFor:'menu actions'!
 
 listMenuApply
@@ -647,13 +858,13 @@
 
     (sel := self selectionHolder value) do:[:e| applyAction value:e change].
     sel size == 1 ifTrue:[
-        list := self listHolder value. 
-        idx := list indexOf:(sel first). 
-        idx < list size ifTrue:[
-            self selectionHolder value:(Array with:(list at:idx+1))
-        ] ifFalse:[
-            self selectionHolder value:#()
-        ].
+	list := self listHolder value.
+	idx := list indexOf:(sel first).
+	idx < list size ifTrue:[
+	    self selectionHolder value:(Array with:(list at:idx+1))
+	] ifFalse:[
+	    self selectionHolder value:#()
+	].
     ].
 
     "Modified: / 24-10-2009 / 22:02:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -665,7 +876,7 @@
     self acceptEnabled ifFalse:[^self].
 
     self selection value do:
-        [:e|e removed ifFalse:[applyAction value:e change]].
+	[:e|e removed ifFalse:[applyAction value:e change]].
 
     "Created: / 05-12-2009 / 14:53:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 10-09-2012 / 13:57:58 / cg"
@@ -674,7 +885,7 @@
 listMenuBrowse
 
     self listMenuBrowseChanges:
-        ((self selectionHolder value ? #()) collect:[:e|e change])
+	((self selectionHolder value ? #()) collect:[:e|e change])
 
     "Modified: / 24-01-2012 / 22:00:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -686,25 +897,25 @@
     methods := Set new.
     methodsOnly := true.
     changes do:
-        [:each|
-        each  isClassChange ifTrue:
-            [each  changeClass ifNotNil:
-                [classes add: each  changeClass.
-                each isMethodCodeChange 
-                    ifTrue:
-                        [each changeMethod ifNotNil:
-                            [methods add:each changeMethod]]
-                    ifFalse:
-                        [methodsOnly := false]]]].
-    methodsOnly 
-        ifTrue:
-            [methods size = 1 
-                ifTrue:[Smalltalk browserClass openInMethod: methods anyOne]
-                ifFalse:[Smalltalk browserClass browseMethods: methods asArray title: 'Selected methods from changeset' sort: true]]
-        ifFalse:
-            [classes size = 1
-                ifTrue:[Smalltalk browserClass browseClass: classes anyOne]
-                ifFalse:[Smalltalk browserClass browseClasses: classes]]
+	[:each|
+	each  isClassChange ifTrue:
+	    [each  changeClass ifNotNil:
+		[classes add: each  changeClass.
+		each isMethodCodeChange
+		    ifTrue:
+			[each changeMethod ifNotNil:
+			    [methods add:each changeMethod]]
+		    ifFalse:
+			[methodsOnly := false]]]].
+    methodsOnly
+	ifTrue:
+	    [methods size = 1
+		ifTrue:[Smalltalk browserClass openInMethod: methods anyOne]
+		ifFalse:[Smalltalk browserClass browseMethods: methods asArray title: 'Selected methods from changeset' sort: true]]
+	ifFalse:
+	    [classes size = 1
+		ifTrue:[Smalltalk browserClass browseClass: classes anyOne]
+		ifFalse:[Smalltalk browserClass browseClasses: classes]]
 
     "Modified: / 24-10-2009 / 22:02:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 24-01-2012 / 22:00:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -713,7 +924,7 @@
 listMenuDeleteSelection
 
     self selectionHolder value do:
-        [:each|each removed: true].
+	[:each|each removed: true].
     self updateList
 !
 
@@ -723,8 +934,8 @@
 
     selection := self selectionHolder value collect:[:e|e change].
     selection size = 1
-        ifTrue:[selection anyOne inspect]
-        ifFalse:[selection inspect].
+	ifTrue:[selection anyOne inspect]
+	ifFalse:[selection inspect].
 
     "Modified: / 24-10-2009 / 22:02:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -739,11 +950,11 @@
     self listMenuSelectAllSuchThat:[:change|true]
 !
 
-listMenuSelectAllSuchThat:conditionBlock 
+listMenuSelectAllSuchThat:conditionBlock
     |newSelection|
 
-    newSelection := self listHolder value 
-                select:[:entry | conditionBlock value:entry change ].
+    newSelection := self listHolder value
+		select:[:entry | conditionBlock value:entry change ].
     self selectionHolder value:newSelection
 !
 
@@ -772,23 +983,23 @@
      "/ change is an instance of Change
      "/ change will be selected if and only if block returns true
 
-    
+
      true"/always select the change
 ]
 '.
 
     LastSelectionConditionString isNil ifTrue:[
-        LastSelectionConditionString := template.
+	LastSelectionConditionString := template.
     ].
 
 
     textHolder := ValueHolder new.
     dialog := Dialog
-                 forRequestText:(resources string:'Enter condition for selection')
-                 lines:20
-                 columns:70
-                 initialAnswer:LastSelectionConditionString
-                 model:textHolder.
+		 forRequestText:(resources string:'Enter condition for selection')
+		 lines:20
+		 columns:70
+		 initialAnswer:LastSelectionConditionString
+		 model:textHolder.
     dialog addButton:(Button label:'Template' action:[textHolder value:template. textHolder changed:#value.]).
     dialog open.
     dialog accepted ifFalse:[^ self].
@@ -798,8 +1009,8 @@
 
     conditionBlock := Parser evaluate:conditionBlockString.
     conditionBlock isBlock ifFalse:[
-        self error:'Bad selection block (syntax error?)'.
-        ^ self
+	self error:'Bad selection block (syntax error?)'.
+	^ self
     ].
 
     self listMenuSelectAllSuchThat: conditionBlock
@@ -808,10 +1019,11 @@
 listMenuUndeleteSelection
 
     self selectionHolder value do:
-        [:each|each removed: false].
+	[:each|each removed: false].
     self updateList
 ! !
 
+
 !ChangeList methodsFor:'private'!
 
 application
@@ -828,7 +1040,63 @@
     "Modified: / 24-07-2009 / 22:06:53 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
-listEntryFor:chg 
+listColumn: columnId visible: visible
+    visible ifTrue:[
+        self listColumnShow: columnId
+    ] ifFalse:[
+        self listColumnHide: columnId
+    ]
+
+    "Created: / 26-07-2012 / 18:20:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+listColumnHide: columnId
+    self listColumns do:[:spec|
+	spec id = columnId ifTrue:[
+	    self listColumns remove: spec.
+	    listView notNil ifTrue:[
+		listView invalidate.
+	    ].
+	    ^self
+	].
+    ]
+
+    "Created: / 26-07-2012 / 18:19:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+listColumnShow: columnId
+
+    | columns |
+    columns := self listColumns.
+
+    columns do:[:spec|
+	spec id = columnId ifTrue:[
+	    ^self.
+	]
+    ].
+
+    self class listColumnSpec do:[:specArray|
+	| spec |
+
+	spec := specArray decodeAsLiteralArray.
+	spec id = columnId ifTrue:[
+	    columnId == #removed ifTrue:[
+		columns addFirst: spec.
+	    ] ifFalse:[
+		columns add: spec.
+	    ].
+	    listView notNil ifTrue:[
+		listView invalidate.
+	    ].
+	    ^self.
+	]
+
+    ].
+
+    "Created: / 26-07-2012 / 17:56:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+listEntryFor:chg
     ^ListEntry change:chg application: self
 
     "Modified: / 05-12-2009 / 14:39:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -852,26 +1120,50 @@
 !
 
 updateList
-    |inGenerator changeset newList |
+    |inGenerator changeset firstLineShown oldSel newList newSel |
 
     inGenerator := self inGeneratorHolder value.
-    changeset := inGenerator ifNil:[ #() ] ifNotNil:[ inGenerator ].
-    newList := changeset 
-                select:
-                    [:chg | 
-                    (self showRemovedHolder value or:[ chg removed not ])
-                        and:[self showSameHolder value or:[chg delta ~~ #=]]
-                    ].
+    listView notNil ifTrue:[
+	((listView isKindOf: ScrollableView) not or:[listView scrolledView notNil]) ifTrue:[
+	    firstLineShown := listView firstLineShown
+	].
+    ].
+    oldSel := self selection.
+
+    changeset := inGenerator isNil ifTrue:[ #() ] ifFalse:[ inGenerator ].
+    newList := changeset
+		select:
+		    [:chg |
+		    (self showRemovedHolder value or:[ chg removed not ])
+			and:[self showSameHolder value or:[chg delta ~~ #=]]
+		    ].
     newList := self filterList: newList.
     newList := newList collect:[:chg | self listEntryFor:chg ].
     self listHolder value ~= newList ifTrue:[
-        self listHolder value: newList.
+	self listHolder value: newList.
+	((newList size ~~ 0) and:[scrollToBottom]) ifTrue:[
+	    self selection: { newList last }
+	] ifFalse:[
+	    oldSel notEmptyOrNil ifTrue:[
+		newSel := OrderedCollection new: oldSel size.
+		oldSel := oldSel reject:[:e|e isNil].
+		oldSel := oldSel collect:[:e|e change].
+		newList do:[:e|(oldSel includes:e change) ifTrue:[newSel add:e]].
+		self selection: newSel.
+	    ].
+	    (listView notNil and:[firstLineShown notNil]) ifTrue:[
+		listView scrollToLine: (newList size min: firstLineShown).
+	    ].
+	].
+	scrollToBottom := false.
+
     ]
 
-    "Modified: / 29-11-2011 / 15:38:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 28-12-2011 / 15:46:15 / cg"
+    "Modified: / 01-08-2012 / 18:10:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeList methodsFor:'queries'!
 
 hasChangeSelected
@@ -884,7 +1176,7 @@
     | selection |
     selection := self selectionHolder value ? #().
     ^selection size > 0 and:
-        [selection allSatisfy:[:e|e removed not]].
+	[selection allSatisfy:[:e|e removed not]].
 !
 
 hasSingleChangeSelected
@@ -896,13 +1188,21 @@
 
 
     self selectionHolder value ? #() do:
-        [:each|
-        (each change isClassChange and:
-            [each change isMethodChange not
-                or:[each change isMethodCodeChange]]) ifFalse:[^false]].
+	[:each|
+	(each change isClassChange and:
+	    [each change isMethodChange not
+		or:[each change isMethodCodeChange]]) ifFalse:[^false]].
     ^true
+!
+
+showColumn: columnSymbol
+
+    ^self showColumnSpecHolder value includes: columnSymbol.
+
+    "Created: / 03-04-2012 / 11:28:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeList::ListEntry class methodsFor:'instance creation'!
 
 change: aChange
@@ -926,6 +1226,7 @@
     "Created: / 25-07-2009 / 23:33:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !ChangeList::ListEntry methodsFor:'accessing'!
 
 application
@@ -969,18 +1270,18 @@
 children
 
     children isNil ifTrue:[
-        change isCompositeChange ifTrue:[
-            children := OrderedCollection new: change changes size.
-            change changes do:[:chg|
-                ((self application showRemovedHolder value or:[ chg removed not ])
-                    and:[self application showSameHolder value or:[chg delta ~~ #=]]) 
-                        ifTrue:[
-                            children add: ((self application listEntryFor: chg) parent: self)
-                        ]
-            ].
-        ] ifFalse:[
-            children :=  #()
-        ]
+	change isCompositeChange ifTrue:[
+	    children := OrderedCollection new: change changes size.
+	    change changes do:[:chg|
+		((self application showRemovedHolder value or:[ chg removed not ])
+		    and:[self application showSameHolder value or:[chg delta ~~ #=]])
+			ifTrue:[
+			    children add: ((self application listEntryFor: chg) parent: self)
+			]
+	    ].
+	] ifFalse:[
+	    children :=  #()
+	]
     ].
     ^children
 
@@ -1020,9 +1321,9 @@
 
 iconRemoved
 
-    ^self removed 
-        ifTrue: [self application class uncheckedIcon ]
-        ifFalse:[self application class checkedIcon ]
+    ^self removed
+	ifTrue: [self application class uncheckedIcon ]
+	ifFalse:[self application class checkedIcon ]
 
     "Created: / 05-12-2009 / 14:11:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -1040,6 +1341,23 @@
     | label |
 
     label := change displayString.
+
+    "Hack: if the printString contains multiple lines, then
+     if there are just 2 lines, then merge them, otherwise add
+     ... to the first line"
+    (label includes: Character cr) ifTrue:[
+        | firstCR secondCR |
+        firstCR := label indexOf: Character cr.
+        firstCR ~~ label size ifTrue:[
+            secondCR := label indexOf: Character cr startingAt: firstCR + 1.
+        ].
+        secondCR isNil ifTrue:[
+            "/2 lines only
+            label := label copy at: firstCR put: Character space.
+        ] ifFalse:[
+            label := (label copyTo: firstCR - 1) , '...'
+        ].
+    ].
     self removed ifTrue:[label := label asText colorizeAllWith: Color gray].
     ^label
 
@@ -1049,8 +1367,28 @@
     "Modified (format): / 27-07-2012 / 21:26:34 / cg"
 !
 
+labelAndIcon
+    ^(LabelAndIcon label: self label icon: self iconDelta)
+
+    "Created: / 01-08-2012 / 18:14:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+notRemoved
+    ^ self removed not
+
+    "Created: / 26-07-2012 / 18:31:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+notRemoved: aBoolean
+    ^ self removed: aBoolean not
+
+    "Created: / 26-07-2012 / 18:31:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 removed
-    ^ change removed
+    ^ change removed == true
+
+    "Modified: / 26-07-2012 / 18:30:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 removed:aBoolean
@@ -1062,33 +1400,54 @@
     ^change source
 !
 
+timeStamp
+    ^change timeOfChangeIfKnown
+
+    "Created: / 26-07-2012 / 18:38:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 x
     ^ x
 ! !
 
+
 !ChangeList::ListEntry methodsFor:'displaying'!
 
-displayLabel:aLabel h:lH on:aGC x:newX y:y h:h 
-    | cx icon |
+displayLabel:aLabel h:lH on:aGC x:newX y:y h:h
 
+    | list cx icon colW colS |
+    list := self application.
     cx := x := newX.
-    self application allowRemoveHolder value ifTrue:[
-        (icon := self iconRemoved) notNil ifTrue:[
-            icon displayOn: aGC x: cx y: y + (h / 2) - (icon height / 2) 
-        ].
-        cx := cx + 22."experimental value - this looks good"
+    (list allowRemoveHolder value and:[list showRemovedHolder value]) ifTrue: [
+	(icon := self iconRemoved) notNil ifTrue:[
+	    icon displayOn: aGC x: cx y: y + (h / 2) - (icon height / 2)
+	].
+	cx := cx + 22."experimental value - this looks good"
     ].
     (icon := self iconDelta) notNil ifTrue:[
-        icon displayOn: aGC x: cx y: y + (h / 2) - (icon height / 2) 
+	icon displayOn: aGC x: cx y: y + (h / 2) - (icon height / 2)
     ].
-    cx := cx + 16."12 + 2px gap"                
+    cx := cx + 16."12 + 2px gap"
+
+    super displayLabel:aLabel h:lH on:aGC x:cx y:y h:h.
 
-    super displayLabel:aLabel h:lH on:aGC x:cx y:y h:h
+"/    "Now, display additional columns..."
+"/    (list showColumn: #timestamp) ifTrue:[
+"/        cx := cx + (aLabel widthOn: aGC) + 5."px - padding"
+"/        colS := change timeOfChangeIfKnown notNil
+"/                    ifTrue:[change timeOfChangeIfKnown printString]
+"/                    ifFalse:['???'].
+"/        [ (colW := colS widthOn: aGC) > (aGC width - cx - 5) ] whileTrue:[
+"/            colS = '...' ifTrue:[ ^ self ].
+"/            colS := '...' , (colS copyFrom: 6).
+"/        ].
+"/        super displayLabel:colS h:lH on:aGC x: (aGC width - 5 - colW) y:y h:h.
+"/    ].
 
-    "Modified: / 24-01-2012 / 21:44:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 27-07-2012 / 21:26:23 / cg"
+    "Modified: / 27-07-2012 / 17:13:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeList::ListEntry methodsFor:'private'!
 
 iconSelector
@@ -1104,6 +1463,7 @@
     "Modified: / 31-08-2011 / 10:39:32 / cg"
 ! !
 
+
 !ChangeList::ListEntry methodsFor:'protocol-queries'!
 
 hasChildren
@@ -1113,6 +1473,7 @@
     "Modified (format): / 27-07-2012 / 21:25:34 / cg"
 ! !
 
+
 !ChangeList class methodsFor:'documentation'!
 
 version
--- a/Tools__ChangeSetBrowser2.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ChangeSetBrowser2.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
-              All Rights Reserved
+	      All Rights Reserved
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
@@ -32,9 +32,11 @@
 		navigatorChangesetHolder navigatorSpecHolder list1 list1Holder
 		selection1Holder list2 list2Holder selection2Holder classHolder
 		languageHolder codeAspectHolder showRemovedAspect showSameAspect
-		sourceView changeSourceHolder imageSourceHolder targetPackage
-		targetNamespace updateChangefileHolder allowRemoveHolder
-		allowAcceptHolder'
+		showTimestampHolder sourceView changeSourceHolder
+		imageSourceHolder targetPackage targetNamespace allowRemoveHolder
+		allowAcceptHolder infoPanel updateChangeFileHolder
+		showFilterHolder showingRegularChangesetHolder isWorkingHolder
+		isWorkingNotHolder hasSelectionHolder'
 	classVariableNames:'ShowRemoved LastSelectionConditionString RecentTargetPackages'
 	poolDictionaries:''
 	category:'Interface-Browsers-ChangeSet'
@@ -53,7 +55,7 @@
 copyright
 "
  COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
-              All Rights Reserved
+	      All Rights Reserved
 
 Permission is hereby granted, free of charge, to any person
 obtaining a copy of this software and associated documentation
@@ -78,13 +80,21 @@
 "
 ! !
 
+
 !ChangeSetBrowser2 class methodsFor:'instance creation'!
 
-on: aChangeSet
-
-    ^self on: aChangeSet label: aChangeSet name
-
-    "Modified: / 26-10-2010 / 22:51:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+on: aStringOrChangeSet
+    "Opens a browser on given changeset. If the argument is
+    string, then loads the changeset from given file - for
+    compatibility with other tools"
+
+    ^aStringOrChangeSet isString ifTrue:[
+	self onFile: aStringOrChangeSet
+    ] ifFalse:[
+	self on: aStringOrChangeSet label: aStringOrChangeSet name
+    ]
+
+    "Modified: / 21-05-2012 / 13:55:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 on: aChangeSet label: aString
@@ -100,14 +110,25 @@
 
     browser := self new.
     browser
-        changeset: aChangeSet;
-        title: label.
+	changeset: aChangeSet;
+	title: label.
     aBlock value: browser.
     ^browser
 
     "Created: / 26-10-2010 / 22:50:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+onFile: aString
+    | browser |
+
+    browser := self new.
+    browser enqueueDelayedAction:[browser doOpenFile: aString].
+    ^browser
+
+    "Created: / 17-05-2012 / 23:36:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeSetBrowser2 class methodsFor:'accessing'!
 
 showRemoved
@@ -120,6 +141,7 @@
     ShowRemoved := aBoolean
 ! !
 
+
 !ChangeSetBrowser2 class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -143,11 +165,478 @@
 #fileSave
 'Save the changeset in a file'
 
+#applyAll
+'Apply all changes.'
+
+#applyForClassToEnd
+'Apply changes which affect this class to the end.'
+
+#applyFromLastSnapshot
+'Apply changes from the last snapshot to the end.'
+
+#applyLine
+'Apply the selected change.'
+
+#applyToEnd
+'Apply all changes from the selected one to the end.'
+
+#deleteAll
+'Deletes all changes.'
+
+#deleteCompress
+'Deletes all obsolete changes.'
+
+#deleteCompressForClass
+'Deletes obsolete changes for this class, leaving the last one.'
+
+#deleteForClassToEnd
+'Deletes changes for this class from the selection to the end.'
+
+#deleteLine
+'Deletes the selected change.'
+
+#deleteToEnd
+'Deletes changes from the selected one to the end.'
+
+#fileLoad
+'Opens a dialog for selecting and loading another changes file.'
+
+#fileReload
+'Reloads the changes file (undo your modifications).'
+
+#fileSave
+'Saves the list of changes into the current changes file.'
+
+#filterField
+'Matching patterns filtering the changes (separate patterns by blanks).'
+
+#settingsAutoUpdate
+'Toggle automatic update.'
+
+#settingsColumns
+'Configure which columns are shown in the list.'
+
+#settingsColumnsCategory
+'Toggle display of the changes category in the list.'
+
+#settingsColumnsDeltaInfo
+'Toggle display of the delta-info in the list.'
+
+#settingsColumnsPosition
+'Togle display of the changes file-position in the list.'
+
+#settingsColumnsTimeStamp
+'Toggle display of the changes time stamp in the list.'
+
+#settingsColumnsType
+'Toggle display of the change-type in the list.'
+
+#settingsPrivateAsSeparate
+'Toggle if changes for private private are included when applying, deleting, or compressing for a class.'
+
+#testCompareWithCurrentVersion
+'Opens a info dialog showing the difference between the changes code and the method current code.'
+
+#testFindPreviousSnapshot
+'Searches backward for the previous snapshot entry.'
+
+#testFindNextSnapshot
+'Searches forward for the next snapshot entry.'
+
 )
 
     "Created: / 27-12-2011 / 10:37:47 / cg"
+    "Modified: / 29-03-2012 / 12:13:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+helpSpec
+    "This resource specification was automatically generated
+     by the UIHelpTool of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIHelpTool may not be able to read the specification."
+
+    "
+     UIHelpTool openOnClass:Tools::ChangeSetBrowser2
+    "
+
+    <resource: #help>
+
+    ^ super helpSpec addPairsFrom:#(
+
+#applyAll
+'Apply all changes.'
+
+#applyForClassToEnd
+'Apply changes to the end which affect this class.'
+
+#applyFromLastSnapshot
+'Apply changes from the last snapshot to the end.'
+
+#applyLine
+'Apply the selected change.'
+
+#applyToEnd
+'Apply all changes from the selected one to the end.'
+
+#deleteAll
+'Deletes all changes.'
+
+#deleteCompress
+'Deletes all obsolete changes.'
+
+#deleteCompressForClass
+'Deletes obsolete changes for this class, leaving the last one.'
+
+#deleteForClassToEnd
+'Deletes changes for this class from the selection to the end.'
+
+#deleteLine
+'Deletes the selected change.'
+
+#deleteToEnd
+'Deletes changes from the selected one to the end.'
+
+#fileLoad
+'Open a changeset file (.chg or .st)'
+
+#fileOpenSelection
+''
+
+#fileReload
+'Reloads the changes file (undo your modifications).'
+
+#fileSave
+'Saves changes to current change file.'
+
+#fileSaveAs
+'Save changes to a file'
+
+#filterField
+'Matching patterns filtering the changes (separate patterns by blanks).'
+
+#settingsAutoUpdate
+'Toggle automatic update.'
+
+#settingsColumns
+'Configure which columns are shown in the list.'
+
+#settingsColumnsCategory
+'Toggle display of the changes category in the list.'
+
+#settingsColumnsClassName
+'Toggle display of the className in the list.'
+
+#settingsColumnsDeltaInfo
+'Toggle display of the delta-info in the list.'
+
+#settingsColumnsPosition
+'Togle display of the changes file-position in the list.'
+
+#settingsColumnsTimeStamp
+'Toggle display of the changes time stamp in the list.'
+
+#settingsColumnsType
+'Toggle display of the change-type in the list.'
+
+#settingsPrivateAsSeparate
+'Toggle if changes for private private are included when applying, deleting, or compressing for a class.'
+
+#testCompareWithCurrentVersion
+'Opens a info dialog showing the difference between the changes code and the method current code.'
+
+#testFindLastSnapshot
+'Searches backward for the previous snapshot entry.'
+
+#testFindNextSnapshot
+'Searches forward for the next snapshot entry.'
+
+#testFindPreviousSnapshot
+'Searches backward for the previous snapshot entry.'
+
+#fileOpenCurrent
+'Open current system changeset'
+
+#fileOpenSelection
+'Opens a new browser on currently selected changes'
+
+)
+
+    "Modified: / 01-08-2012 / 18:40:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
+!ChangeSetBrowser2 class methodsFor:'image specs'!
+
+applyFromLastSnapshotIcon
+    ^ self applyFromLastSnapshotIcon2
+!
+
+applyFromLastSnapshotIcon1
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self applyFromLastSnapshotIcon inspect
+     ImageEditor openOnClass:self andSelector:#applyFromLastSnapshotIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+	constantNamed:#'NewChangesBrowser class applyFromLastSnapshotIcon'
+	ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BH"H"H@@@@@@@@@H"H"H @@@@@@@@@@@@@B@@@@@@
+@@;.;.; H@@@@@@@C.;.;.@@@@@@@@@@@@@@8@@N@@@@C?????C @@@N@@@O????<@@@8@@@@@@@@@C0@@@@8@@O????<O@@C @@@@?????0@@@@C @@@@@@
+@O@@@N@@@@DQDQDP<@C @@@@@_??DQ@@@@@@@@@A????D@@@@@@@@@DQDQDP@@@@C @@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 0 255 0 0 0 255 0 255 255 255 255 0 255 0 255 127 0 0 0 127 0 0 0 127 0 127 127 127 127 0 127 0 127 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@C?0@B@P@B@P@O?P@O?P@O?0@??@@??@@??LC?<\C?<\C?<8O?08O?10O?10??C ??[@??_@?<^@?<_@?<_@') ; yourself); yourself]
+!
+
+applyFromLastSnapshotIcon2
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self applyFromLastSnapshotIcon1 inspect
+     ImageEditor openOnClass:self andSelector:#applyFromLastSnapshotIcon1
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+	constantNamed:#'NewChangesBrowser class applyFromLastSnapshotIcon1'
+	ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(4)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@BH@@@@@@QDQ<@@BH @@@@@AH"H@@@H"@@@@@@D"H H H"@@@@@@@RH"@"H"@@@@@@@AH"H@H"H@@@@@@@<@@@@BH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@;.;.; @@@@@@@@C.;.;.@@@@@@@@@@@@@@8@@N@@@@C?????C @@@N@@@O????<@@@8@@@@@@@@@C0@@@@8@@O????<O@@C @@@@?????0@@@@C @@@@@@
+@O@@@N@@@@DQDQDP<@C @@@@@_??DQ@@@@@@@@@A????D@@@@@@@@@DQDQDP@@@@C @@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 0 255 0 0 0 255 0 255 255 255 255 0 255 0 255 127 0 0 0 127 0 0 0 127 0 127 127 127 127 0 127 0 127 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A@C<C@C<C@C<&@C<<@C<\@C<H@@@@?<@@?<@@?<LC?<\C?<\C?<8O?08O?10O?10??C ??[@??_@?<^@?<_@?<_@') ; yourself); yourself]
+!
+
+applyIcon
+    ^ self applyIcon2
+!
+
+applyIcon1
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self applyIcon inspect
+     ImageEditor openOnClass:self andSelector:#applyIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+	constantNamed:#'NewChangesBrowser class applyIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+UUUUUUUPUUUUUU?PUUUUUU?[UUUUUW=PP@@@@C<QQUUU=_4PQUUU?_4VQ**U_?TPQUUUW?TPQUUUW=TXQ***U=TPQ**UUUTPQ*****TPQ***%UTPQ****)TP
+QUUUUUTPQUUUUUTUP@@@@@@PUUUUUUUPUUUUUUUPUUUUUUUPUUUUUUUP') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 255 0 0]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@8@@@8@@A0_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]
+!
+
+applyIcon2
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self applyIcon2 inspect
+     ImageEditor openOnClass:self andSelector:#applyIcon2
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+	constantNamed:#'NewChangesBrowser class applyIcon2'
+	ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[4]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+DQDQDQDQDQDQP3PQDQDQDQDQDQECMADQDQDQDQDQECMADQDQDQEDPQDTL4DP@@@@@DL4@DL4@Q@QDQDQP3MAP3PADADQDQDTL3P3PPDPD"H"HQECL3MA@Q@Q
+DQDQDQP3MADADADQDQDQDTL4DPDPD"H"H"HQEDDQ@Q@RH"H!!DQDQDQDADAH"H"H"H"H"DPDPD"H"H"H!!DQDQ@Q@RH"H"H"H"HQDADADQDQDQDQDQDPDPDQDQ
+DQDQDQDQ@Q@@@@@@@@@@@@@ADQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDQDb') ; colorMapFromArray:#[0 0 0 255 255 255 170 170 170 255 0 0 85 85 85]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@<@@@<@@A8@C!!8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8_??8@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; yourself); yourself]
+!
+
+applyToEndIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self applyToEndIcon inspect
+     ImageEditor openOnClass:self andSelector:#applyToEndIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+	constantNamed:#'NewChangesBrowser class applyToEndIcon'
+	ifAbsentPut:[(Depth4Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[4]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@DP@@@@@@@@@@@@DQ@@@@@@@@@@@@@QD@@@"H"H"@@Q@QD@@@BH"H"H@ADQD@@@@@@@@@ @@QDP@@BH"H"HB@@@DP@@@H"H"H @@@@@@@@@@@@@B@@@@@@
+@@L3L3L0H@@@@@@@@3L3L3@@@@@@@@@@@@@@L@@B@@@@@3L3L3@0@@@B@@@CL3L3L@@@H@@@@@@@@@@0@@@@H@@ADQDQDC@@@ @@@@DQDQDP@@@@@ @@@@@@
+@A@@@B@@@@DQDQDPD@@ @@@@@SL3DQ@@@@@@@@@AL3L3D@@@@@@@@@DQDQDP@@@@@ @@@@@@@@@@@@@@@@@b') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170 255 0 0]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'A@@@CC?0CC?0&C?0<O?0\O?0HO?0@??@@??@@??LC?<\C?<\C?<8O?08O?10O?10??C ??[@??_@?<^@?<_@?<_@') ; yourself); yourself]
+!
+
+compressIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     ImageEditor openOnClass:self andSelector:#compressIcon
+    "
+
+    <resource: #image>
+
+    ^Icon
+	constantNamed:#'NewChangesBrowser compressIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@????<@@@:***(@@@8@@@8@@@8@@@8@@@@@@@8@@@@@@@8A@@@@@@8@@:**0@8HC**+@@8@@@@@@@8H@@@@@@8@@@@@@@8@@@@@@@8@@@@@@@8@@C????8@@C****(@@@@@@@@H@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 124 124 124 170 170 170 255 255 255]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@??0A??8A??8A??8A8A8G>A8@@A8G?98O?18_?!!8??A8@@A8G>A8@0A8C??8C??8C??8C??0@0@@D2@@G>@@D2@@') ; yourself); yourself]
+!
+
+deleteIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     ImageEditor openOnClass:self andSelector:#deleteIcon
+    "
+
+    <resource: #image>
+
+    ^Icon
+	constantNamed:#'NewChangesBrowser deleteIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@AUUUU@@OA??UU@@@AUUUU@@@AUUUU@B@A???U@H@A??5U@@@A???0@@@AUUUB@B@@@@@@@@@@@@@A@BK@@@@A_:@@@@@AO2G@@@@AL2@@@@@AL2C@@@@AL2@@@@@AL2@@@@@AL2H@@@@AL2@@@@@A\:@@@@@H_8 @@@@@@@H') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'_?<@_?<@_?<P_?<P_?<X_?<X_?<H_? H_?O<_?XL@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@G0') ; yourself); yourself]
+!
+
+deleteToEndIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     ImageEditor openOnClass:self andSelector:#deleteToEndIcon
+    "
+
+    <resource: #image>
+
+    ^Icon
+	constantNamed:#'NewChangesBrowser deleteToEndIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@B** @@O@B** @@@@@@@ @@@@??< @B@@??<@@H@@@@L@@@@EUUL@@@@G?U@B@B@G?=@@@@@EUU@A@BK@@@@A_:@@@@@AO2G@@@@AL2@@@@@AL2C@@@@AL2@@@@@AL2@@@@@AL2H@@@@AL2@@@@@A\:@@@@@H_8 @@@@@@@H') ; colorMapFromArray:#[0 0 0 255 255 255 127 127 127 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C?0@C?0@C?0PO?0PO?0XO?0X??@H??@H??O<?<XL?<_<?<_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@_<@@G0') ; yourself); yourself]
+!
+
+findLastSnapshotIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     ImageEditor openOnClass:self andSelector:#findLastSnapshotIcon
+    "
+
+    <resource: #image>
+
+    ^Icon
+	constantNamed:#'NewChangesBrowser findLastSnapshotIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@EUUUW@A@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@A@F***(@M@F***(@H@F***(@@@F***(@@@F***(@I@L@@@@@@@@@@@@@A@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??B@@@B@C@B@G B@O0@@_8@@G @@G @@G @') ; yourself); yourself]
+!
+
+findNextSnapshotIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     ImageEditor openOnClass:self andSelector:#findNextSnapshotIcon
+    "
+
+    <resource: #image>
+
+    ^Icon
+	constantNamed:#'NewChangesBrowser findNextSnapshotIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@DA@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D@B@@@@@@@@@@@@@@@E@@@@@@@@@EUUUW@N@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@V***(@H@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@L@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1 )); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@G @@G @@G @@_8@@O0@@G @@C@@@@@@C??@C??@C??@C??@C??@C??BC??BC??BC??BC??@C??@C??@C??@C??@') ; yourself); yourself]
+!
+
+findPreviousForClassIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self findPreviousForClassIcon inspect
+     ImageEditor openOnClass:self andSelector:#findPreviousForClassIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+	constantNamed:#'NewChangesBrowser class findPreviousForClassIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@EUUUW@A@G???<@@@G???<@@@G???<@@@G???<@@@G???<@@@G???<@@@G???<@A@G???<@M@G???<@H@G???<@@@G???<@@@G???<@I@L@@@@@@@@@@@@@A
+@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??B@@@B@C@B@G B@O0@@_8@@G @@G @@G @') ; yourself); yourself]
+!
+
+findPreviousSnapshotIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self findPreviousSnapshotIcon inspect
+     ImageEditor openOnClass:self andSelector:#findPreviousSnapshotIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+	constantNamed:#'NewChangesBrowser class findPreviousSnapshotIcon'
+	ifAbsentPut:[(Depth2Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#(2)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@EUUUW@A@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@@@F***(@A@F***(@M@F***(@H@F***(@@@F***(@@@F***(@I@L@@@@@@@@@@@@@A
+@P@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; colorMapFromArray:#[0 0 0 255 255 255 255 0 0 170 170 170]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??@C??B@@@B@C@B@G B@O0@@_8@@G @@G @@G @') ; yourself); yourself]
+! !
+
+
 !ChangeSetBrowser2 class methodsFor:'interface opening'!
 
 confirmChanges: aChangeSet
@@ -166,48 +655,59 @@
     browser := self on: aChangeSet.
     browser allowAccept: false.
     browser allowRemove: true.
+    browser showRemovedAspect: true asValue.
+    browser beHierarchical.
     browserView := ApplicationSubView new
-                client:browser
-                spec:#windowSpecForEmbedding.
+		client:browser
+		spec:#windowSpecForEmbedding.
     dialog := (Dialog new)
-                addComponent:browserView withHeight: 300;
-                addAbortAndOkButtons;
-                yourself.
+		addComponent:browserView withHeight: 300;
+		addAbortAndOkButtons;
+		yourself.
     dialog label: aString.
     dialog buttonPanel
-        layout:(LayoutFrame fractions:(0.0 @ 1.0 corner:1.0 @ 1.0)
-                offsets:(0 @ -30 corner:0 @ 0)).
+	layout:(LayoutFrame fractions:(0.0 @ 1.0 corner:1.0 @ 1.0)
+		offsets:(0 @ -30 corner:0 @ 0)).
     browserView layout:(LayoutFrame fractions:(0.0 @ 0.0 corner:1.0 @ 1.0)
-                offsets:(0 @ 0 corner:0 @ -30)).
+		offsets:(0 @ 0 corner:0 @ -30)).
     dialog
-        okAction:
-            [^browser list1Holder value condenseChangesForRemoved];
-        abortAction:
-            [^#()].
+	okAction:
+	    [^browser list1Holder value condenseChangesForRemoved];
+	abortAction:
+	    [^#()].
     dialog openWithExtent: 800@700.
     ^#()
 
     "
-         Tools::ChangeSetBrowser2
-            confirmChanges:
-                (ChangeSet current copyFrom: ((ChangeSet current size - 10) max: 1) to: ChangeSet current size)
-            label: 'Last 10 changes...'
+	 Tools::ChangeSetBrowser2
+	    confirmChanges:
+		(ChangeSet current copyFrom: ((ChangeSet current size - 10) max: 1) to: ChangeSet current size)
+	    label: 'Last 10 changes...'
     "
 
     "Created: / 08-11-2010 / 17:59:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 07-09-2011 / 20:19:44 / cg"
-    "Modified: / 24-01-2012 / 20:00:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 27-07-2012 / 17:12:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 open
     "Open browser and load current changefile"
 
-    |app|
-
-    (app := super open application) 
-        enqueueMessage:#loadCurrentChangeFile
-        for:app
-        arguments:#().
+    | browser |
+
+    browser := self new.
+    browser open.
+    "JV: I would like to open current changefile only if the tool is opened from
+     launcher toolbar button"
+
+    (thisContext sender sender receiver isKindOf: AbstractLauncherApplication) ifTrue:[
+	browser builder window sensor
+	    pushUserEvent: #doOpenCurrent for: browser.
+    ] ifFalse:[
+	browser builder window sensor
+	    pushUserEvent: #doOpenNew for: browser.
+
+    ]
 
     "Created: / 25-01-2012 / 17:16:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 27-07-2012 / 21:24:19 / cg"
@@ -241,6 +741,7 @@
     "Modified: / 26-07-2012 / 13:19:30 / cg"
 ! !
 
+
 !ChangeSetBrowser2 class methodsFor:'interface specs'!
 
 hierarchicalNavigatorSpec
@@ -259,68 +760,70 @@
 
     ^
      #(FullSpec
-        name: hierarchicalNavigatorSpec
-        window:
+	name: hierarchicalNavigatorSpec
+	window:
        (WindowSpec
-          label: 'Hierarchical Navigator'
-          name: 'Hierarchical Navigator'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 300 300)
-        )
-        component:
+	  label: 'Hierarchical Navigator'
+	  name: 'Hierarchical Navigator'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 300 300)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (SubCanvasSpec
-              name: 'ChangeList'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              hasHorizontalScrollBar: false
-              hasVerticalScrollBar: false
-              majorKey: #'Tools::HierarchicalChangeList'
-              subAspectHolders:
-             (Array
-
-              (SubChannelInfoSpec
-                  subAspect: allowAcceptHolder
-                  aspect: allowAcceptHolder
-                ) 
-               (SubChannelInfoSpec
-                  subAspect: allowRemoveHolder
-                  aspect: allowRemoveHolder
-                )
-               (SubChannelInfoSpec
-                  subAspect: inGeneratorHolder
-                  aspect: list1Holder
-                )
-
-               (SubChannelInfoSpec
-                  subAspect: menuHolder
-                  aspect: list1MenuHolder
-                )
-               (SubChannelInfoSpec
-                  subAspect: selectionHolder
-                  aspect: selection1Holder
-                )
-
-               (SubChannelInfoSpec
-                  subAspect: showRemovedHolder
-                  aspect: showRemovedAspect
-                )
-               (SubChannelInfoSpec
-                  subAspect: showSameHolder
-                  aspect: showSameAspect
-                )
-
-              )
-              createNewApplication: true
-              createNewBuilder: true
-              postBuildCallback: list1View:
-            )
-           )
-
-        )
+	  collection: (
+	   (SubCanvasSpec
+	      name: 'ChangeList'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      hasHorizontalScrollBar: false
+	      hasVerticalScrollBar: false
+	      majorKey: #'Tools::HierarchicalChangeList'
+	      subAspectHolders:
+	     (Array
+
+	       (SubChannelInfoSpec
+		  subAspect: allowAcceptHolder
+		  aspect: allowAcceptHolder
+		)
+	       (SubChannelInfoSpec
+		  subAspect: allowRemoveHolder
+		  aspect: allowRemoveHolder
+		)
+
+	       (SubChannelInfoSpec
+		  subAspect: inGeneratorHolder
+		  aspect: list1Holder
+		)
+	       (SubChannelInfoSpec
+		  subAspect: menuHolder
+		  aspect: list1MenuHolder
+		)
+
+	       (SubChannelInfoSpec
+		  subAspect: selectionHolder
+		  aspect: selection1Holder
+		)
+	       (SubChannelInfoSpec
+		  subAspect: showFilterHolder
+		  aspect: showFilterHolder
+		)
+
+	       (SubChannelInfoSpec
+		  subAspect: showRemovedHolder
+		  aspect: showRemovedAspect
+		)
+	       (SubChannelInfoSpec
+		  subAspect: showSameHolder
+		  aspect: showSameAspect
+		)
+	      )
+	      createNewApplication: true
+	      createNewBuilder: true
+	      postBuildCallback: list1View:
+	    )
+	   )
+
+	)
       )
-
-    "Modified: / 24-01-2012 / 19:57:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 oneColumnNavigatorSpec
@@ -337,67 +840,76 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: oneColumnNavigatorSpec
-        window: 
+	name: oneColumnNavigatorSpec
+	window:
        (WindowSpec
-          label: 'One Column Navigator'
-          name: 'One Column Navigator'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 300 300)
-        )
-        component: 
+	  label: 'One Column Navigator'
+	  name: 'One Column Navigator'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 300 300)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (SubCanvasSpec
-              name: 'ChangeList'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              hasHorizontalScrollBar: false
-              hasVerticalScrollBar: false
-              majorKey: #'Tools::ChangeList'
-              subAspectHolders: 
-             (Array
-                
-               (SubChannelInfoSpec
-                  subAspect: allowAcceptHolder
-                  aspect: allowAcceptHolder
-                ) 
-               (SubChannelInfoSpec
-                  subAspect: allowRemoveHolder
-                  aspect: allowRemoveHolder
-                )
-                
-               (SubChannelInfoSpec
-                  subAspect: inGeneratorHolder
-                  aspect: list1Holder
-                ) 
-               (SubChannelInfoSpec
-                  subAspect: menuHolder
-                  aspect: list1MenuHolder
-                )
-                
-               (SubChannelInfoSpec
-                  subAspect: selectionHolder
-                  aspect: selection1Holder
-                ) 
-               (SubChannelInfoSpec
-                  subAspect: showRemovedHolder
-                  aspect: showRemovedAspect
-                )
-                
-               (SubChannelInfoSpec
-                  subAspect: showSameHolder
-                  aspect: showSameAspect
-                )
-              )
-              createNewApplication: true
-              createNewBuilder: true
-              postBuildCallback: list1View:
-            )
-           )
-         
-        )
+	  collection: (
+	   (SubCanvasSpec
+	      name: 'ChangeList'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      hasHorizontalScrollBar: false
+	      hasVerticalScrollBar: false
+	      majorKey: #'Tools::ChangeList'
+	      subAspectHolders:
+	     (Array
+
+	       (SubChannelInfoSpec
+		  subAspect: allowAcceptHolder
+		  aspect: allowAcceptHolder
+		)
+	       (SubChannelInfoSpec
+		  subAspect: allowRemoveHolder
+		  aspect: allowRemoveHolder
+		)
+
+	       (SubChannelInfoSpec
+		  subAspect: inGeneratorHolder
+		  aspect: list1Holder
+		)
+	       (SubChannelInfoSpec
+		  subAspect: menuHolder
+		  aspect: list1MenuHolder
+		)
+
+	       (SubChannelInfoSpec
+		  subAspect: selectionHolder
+		  aspect: selection1Holder
+		)
+	       (SubChannelInfoSpec
+		  subAspect: showFilterHolder
+		  aspect: showFilterHolder
+		)
+
+	       (SubChannelInfoSpec
+		  subAspect: showRemovedHolder
+		  aspect: showRemovedAspect
+		)
+	       (SubChannelInfoSpec
+		  subAspect: showSameHolder
+		  aspect: showSameAspect
+		)
+
+	       (SubChannelInfoSpec
+		  subAspect: showTimestampHolder
+		  aspect: showTimestampHolder
+		)
+	      )
+	      createNewApplication: true
+	      createNewBuilder: true
+	      postBuildCallback: list1View:
+	    )
+	   )
+
+	)
       )
 !
 
@@ -417,124 +929,142 @@
 
     ^
      #(FullSpec
-        name: twoColumnNavigatorSpec
-        window:
+	name: twoColumnNavigatorSpec
+	window:
        (WindowSpec
-          label: 'Two Column Navigator'
-          name: 'Two Column Navigator'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 300 300)
-        )
-        component:
+	  label: 'Two Column Navigator'
+	  name: 'Two Column Navigator'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 300 300)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VariableHorizontalPanelSpec
-              name: 'Columns'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              component:
-             (SpecCollection
-                collection: (
-                 (SubCanvasSpec
-                    name: 'FirstColumn'
-                    hasHorizontalScrollBar: false
-                    hasVerticalScrollBar: false
-                    majorKey: #'Tools::ChangeList'
-                    subAspectHolders:
-                   (Array
-
-                     (SubChannelInfoSpec
-                        subAspect: allowAcceptHolder
-                        aspect: allowAcceptHolder
-                     ) 
-                     (SubChannelInfoSpec
-                        subAspect: allowRemoveHolder
-                        aspect: allowRemoveHolder
-                     )
-                     (SubChannelInfoSpec
-                        subAspect: inGeneratorHolder
-                        aspect: list1Holder
-                      )
-
-                     (SubChannelInfoSpec
-                        subAspect: menuHolder
-                        aspect: list1MenuHolder
-                      )
-                     (SubChannelInfoSpec
-                        subAspect: outGeneratorHolder
-                        aspect: list2Holder
-                      )
-
-                     (SubChannelInfoSpec
-                        subAspect: selectionHolder
-                        aspect: selection1Holder
-                      )
-                     (SubChannelInfoSpec
-                        subAspect: showRemovedHolder
-                        aspect: showRemovedAspect
-                      )
-                    (SubChannelInfoSpec
-                        subAspect: showSameHolder
-                        aspect: showSameAspect
-                      )
-                    )
-                    createNewApplication: true
-                    createNewBuilder: true
-                    postBuildCallback: list1View:
-                  )
-                 (SubCanvasSpec
-                    name: 'SecondColumn'
-                    hasHorizontalScrollBar: false
-                    hasVerticalScrollBar: false
-                    majorKey: #'Tools::ChangeList'
-                    subAspectHolders:
-                   (Array
-
-                     (SubChannelInfoSpec
-                        subAspect: allowAcceptHolder
-                        aspect: allowAcceptHolder
-                     ) 
-                     (SubChannelInfoSpec
-                        subAspect: allowRemoveHolder
-                        aspect: allowRemoveHolder
-                     )
-                     (SubChannelInfoSpec
-                        subAspect: inGeneratorHolder
-                        aspect: list2Holder
-                      )
-
-                     (SubChannelInfoSpec
-                        subAspect: menuHolder
-                        aspect: list2MenuHolder
-                      )
-                     (SubChannelInfoSpec
-                        subAspect: selectionHolder
-                        aspect: selection2Holder
-                      )
-
-                     (SubChannelInfoSpec
-                        subAspect: showRemovedHolder
-                        aspect: showRemovedAspect
-                      )
-                    (SubChannelInfoSpec
-                        subAspect: showSameHolder
-                        aspect: showSameAspect
-                      )
-                    )
-                    createNewApplication: true
-                    createNewBuilder: true
-                    postBuildCallback: list2View:
-                  )
-                 )
-
-              )
-              handles: (Any 0.5 1.0)
-            )
-           )
-
-        )
+	  collection: (
+	   (VariableHorizontalPanelSpec
+	      name: 'Columns'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      component:
+	     (SpecCollection
+		collection: (
+		 (SubCanvasSpec
+		    name: 'FirstColumn'
+		    hasHorizontalScrollBar: false
+		    hasVerticalScrollBar: false
+		    majorKey: #'Tools::ChangeList'
+		    subAspectHolders:
+		   (Array
+
+		     (SubChannelInfoSpec
+			subAspect: allowAcceptHolder
+			aspect: allowAcceptHolder
+		      )
+		     (SubChannelInfoSpec
+			subAspect: allowRemoveHolder
+			aspect: allowRemoveHolder
+		      )
+
+		     (SubChannelInfoSpec
+			subAspect: inGeneratorHolder
+			aspect: list1Holder
+		      )
+		     (SubChannelInfoSpec
+			subAspect: menuHolder
+			aspect: list1MenuHolder
+		      )
+
+		     (SubChannelInfoSpec
+			subAspect: outGeneratorHolder
+			aspect: list2Holder
+		      )
+		     (SubChannelInfoSpec
+			subAspect: selectionHolder
+			aspect: selection1Holder
+		      )
+
+		     (SubChannelInfoSpec
+			subAspect: showFilterHolder
+			aspect: showFilterHolder
+		      )
+		     (SubChannelInfoSpec
+			subAspect: showRemovedHolder
+			aspect: showRemovedAspect
+		      )
+
+		     (SubChannelInfoSpec
+			subAspect: showSameHolder
+			aspect: showSameAspect
+		      )
+		     (SubChannelInfoSpec
+			subAspect: showTimestampHolder
+			aspect: showTimestampHolder
+		      )
+		    )
+		    createNewApplication: true
+		    createNewBuilder: true
+		    postBuildCallback: list1View:
+		  )
+		 (SubCanvasSpec
+		    name: 'SecondColumn'
+		    hasHorizontalScrollBar: false
+		    hasVerticalScrollBar: false
+		    majorKey: #'Tools::ChangeList'
+		    subAspectHolders:
+		   (Array
+
+		     (SubChannelInfoSpec
+			subAspect: allowAcceptHolder
+			aspect: allowAcceptHolder
+		      )
+		     (SubChannelInfoSpec
+			subAspect: allowRemoveHolder
+			aspect: allowRemoveHolder
+		      )
+
+		     (SubChannelInfoSpec
+			subAspect: inGeneratorHolder
+			aspect: list2Holder
+		      )
+		     (SubChannelInfoSpec
+			subAspect: menuHolder
+			aspect: list2MenuHolder
+		      )
+
+		     (SubChannelInfoSpec
+			subAspect: selectionHolder
+			aspect: selection2Holder
+		      )
+		     (SubChannelInfoSpec
+			subAspect: showFilterHolder
+			aspect: showFilterHolder
+		      )
+
+		     (SubChannelInfoSpec
+			subAspect: showRemovedHolder
+			aspect: showRemovedAspect
+		      )
+		     (SubChannelInfoSpec
+			subAspect: showSameHolder
+			aspect: showSameAspect
+		      )
+
+		     (SubChannelInfoSpec
+			subAspect: showTimestampHolder
+			aspect: showTimestampHolder
+		      )
+		    )
+		    createNewApplication: true
+		    createNewBuilder: true
+		    postBuildCallback: list2View:
+		  )
+		 )
+
+	      )
+	      handles: (Any 0.5 1.0)
+	    )
+	   )
+
+	)
       )
-
-    "Modified: / 24-01-2012 / 19:57:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 windowSpec
@@ -545,42 +1075,52 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:Tools::ChangeSetBrowser andSelector:#windowSpec
-     Tools::ChangeSetBrowser new openInterface:#windowSpec
-     Tools::ChangeSetBrowser open
+     UIPainter new openOnClass:Tools::ChangeSetBrowser2 andSelector:#windowSpec
+     Tools::ChangeSetBrowser2 new openInterface:#windowSpec
+     Tools::ChangeSetBrowser2 open
     "
 
     <resource: #canvas>
 
     ^
      #(FullSpec
-        name: windowSpec
-        window:
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'ChangeSet browser'
-          name: 'ChangeSet browser'
-          labelChannel: titleHolder
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 653 488)
-          menu: mainMenu
-        )
-        component:
+	  label: 'ChangeSet browser'
+	  name: 'ChangeSet browser'
+	  labelChannel: titleHolder
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 800 600)
+	  menu: mainMenu
+	)
+	component:
        (SpecCollection
-          collection: (
-           (MenuPanelSpec
-              name: 'ToolBar'
-              layout: (LayoutFrame 0 0 0 0 0 1 30 0)
-              menu: toolbarMenu
-              textDefault: true
-            )
-           (UISubSpecification
-              name: 'Contents'
-              layout: (LayoutFrame 0 0 30 0 0 1 0 1)
-              minorKey: windowSpecWithoutToolbar
-            )
-           )
-
-        )
+	  collection: (
+	   (MenuPanelSpec
+	      name: 'ToolBar'
+	      layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+	      menu: toolbarMenu
+	      textDefault: true
+	    )
+	   (SubCanvasSpec
+	      name: 'InfoPanel'
+	      layout: (LayoutFrame 0 0 30 0 0 1 70 0)
+	      level: 0
+	      initiallyInvisible: true
+	      hasHorizontalScrollBar: false
+	      hasVerticalScrollBar: false
+	      clientKey: infoPanel
+	      createNewBuilder: false
+	    )
+	   (UISubSpecification
+	      name: 'Contents'
+	      layout: (LayoutFrame 0 0 30 0 0 1 0 1)
+	      minorKey: windowSpecWithoutToolbar
+	    )
+	   )
+
+	)
       )
 !
 
@@ -605,87 +1145,89 @@
 
     ^
      #(FullSpec
-        name: windowSpecWithoutToolbar
-        window:
+	name: windowSpecWithoutToolbar
+	window:
        (WindowSpec
-          label: 'ChangeSet browser'
-          name: 'ChangeSet browser'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 653 488)
-          menu: mainMenu
-        )
-        component:
+	  label: 'ChangeSet browser'
+	  name: 'ChangeSet browser'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 653 488)
+	  menu: mainMenu
+	)
+	component:
        (SpecCollection
-          collection: (
-           (VariableVerticalPanelSpec
-              name: 'VerticalPanel'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              component:
-             (SpecCollection
-                collection: (
-                 (SubCanvasSpec
-                    name: 'NavigatorPanel'
-                    hasHorizontalScrollBar: false
-                    hasVerticalScrollBar: false
-                    specHolder: navigatorSpecHolder
-                    createNewBuilder: false
-                  )
-                 (SubCanvasSpec
-                    name: 'TextDiffTool'
-                    hasHorizontalScrollBar: false
-                    hasVerticalScrollBar: false
-                    majorKey: #'Tools::TextDiffTool'
-                    minorKey: windowSpecForEmbedding
-                    subAspectHolders:
-                   (Array
-
-                     (SubChannelInfoSpec
-                        subAspect: classHolder
-                        aspect: classHolder
-                      )
-                     (SubChannelInfoSpec
-                        subAspect: languageHolder
-                        aspect: languageHolder
-                      )
-                     (SubChannelInfoSpec
-                        subAspect: codeAspectHolder
-                        aspect: codeAspectHolder
-                      )
-
-                     (SubChannelInfoSpec
-                        subAspect: labelAHolder
-                        aspect: labelAHolder
-                      )
-                     (SubChannelInfoSpec
-                        subAspect: labelBHolder
-                        aspect: labelBHolder
-                      )
-
-                     (SubChannelInfoSpec
-                        subAspect: textAHolder
-                        aspect: changeSourceHolder
-                      )
-                     (SubChannelInfoSpec
-                        subAspect: textBHolder
-                        aspect: imageSourceHolder
-                      )
-                    )
-                    createNewApplication: true
-                    createNewBuilder: true
-                  )
-                 )
-
-              )
-              handles: (Any 0.5 1.0)
-            )
-           )
-
-        )
+	  collection: (
+	   (VariableVerticalPanelSpec
+	      name: 'VerticalPanel'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      component:
+	     (SpecCollection
+		collection: (
+		 (SubCanvasSpec
+		    name: 'NavigatorPanel'
+		    hasHorizontalScrollBar: false
+		    hasVerticalScrollBar: false
+		    specHolder: navigatorSpecHolder
+		    createNewBuilder: false
+		  )
+		 (SubCanvasSpec
+		    name: 'TextDiffTool'
+		    hasHorizontalScrollBar: false
+		    hasVerticalScrollBar: false
+		    majorKey: #'Tools::TextDiff2Tool'
+		    minorKey: windowSpecForEmbedding
+		    subAspectHolders:
+		   (Array
+
+		     (SubChannelInfoSpec
+			subAspect: classHolder
+			aspect: classHolder
+		      )
+		     (SubChannelInfoSpec
+			subAspect: languageHolder
+			aspect: languageHolder
+		      )
+		     (SubChannelInfoSpec
+			subAspect: codeAspectHolder
+			aspect: codeAspectHolder
+		      )
+
+		     (SubChannelInfoSpec
+			subAspect: labelAHolder
+			aspect: labelAHolder
+		      )
+		     (SubChannelInfoSpec
+			subAspect: labelBHolder
+			aspect: labelBHolder
+		      )
+
+		     (SubChannelInfoSpec
+			subAspect: textAHolder
+			aspect: changeSourceHolder
+		      )
+		     (SubChannelInfoSpec
+			subAspect: textBHolder
+			aspect: imageSourceHolder
+		      )
+		    )
+		    createNewApplication: true
+		    createNewBuilder: true
+		  )
+		 )
+
+	      )
+	      handles: (Any 0.5 1.0)
+	    )
+	   )
+
+	)
       )
 
     "Modified: / 03-12-2011 / 10:36:40 / cg"
+    "Modified: / 16-03-2012 / 13:09:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeSetBrowser2 class methodsFor:'menu specs'!
 
 changeMenu
@@ -703,431 +1245,160 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            enabled: hasChangeSelectedAndNotRemoved:
-            label: 'Apply'
-            itemValue: changeMenuApplySelection:
-            translateLabel: true
-            isVisible: allowAcceptHolder
-            shortcutKey: Accept
-            auxValue: 100
-          )
-         (MenuItem
-            label: 'Apply all'
-            itemValue: changeMenuApply:
-            translateLabel: true
-            isVisible: allowAcceptHolder
-          )
-         (MenuItem
-            label: '-'
-            isVisible: allowAcceptHolder
-          )
-         (MenuItem
-            label: 'Delete'
-            itemValue: changeMenuDeleteSelection:
-            nameKey: Delete
-            translateLabel: true
-            isVisible: allowRemoveHolder
-            shortcutKey: Delete
-          )
-         (MenuItem
-            label: 'Undelete'
-            itemValue: changeMenuUndeleteSelection:
-            nameKey: Undelete
-            translateLabel: true
-            isVisible: allowRemoveHolder
-          )
-         (MenuItem
-            label: '-'
-            isVisible: allowRemoveHolder
-          )
-         (MenuItem
-            label: 'Select...'
-            translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Select same'
-                  itemValue: changeMenuSelectSame:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Select additions (new classes/methods)'
-                  itemValue: changeMenuSelectAdditions:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Select removals'
-                  itemValue: changeMenuSelectRemovals:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Select differences'
-                  itemValue: changeMenuSelectDifferences:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Select all'
-                  itemValue: changeMenuSelectAll:
-                  translateLabel: true
-                  shortcutKey: SelectAll
-                )
-               (MenuItem
-                  label: 'Select none'
-                  itemValue: changeMenuSelectNone:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Select using block'
-                  itemValue: changeMenuSelectUsingBlock:
-                  translateLabel: true
-                )
-               )
-              nil
-              nil
-            )
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Show Deleted'
-            translateLabel: true
-            isVisible: allowRemoveHolder
-            indication: showRemovedAspect
-          )
-         (MenuItem
-            label: 'Show Same'
-            translateLabel: true
-            indication: showSameAspect
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Inspect change'
-            itemValue: changeMenuInspect:
-            translateLabel: true
-          )
-         (MenuItem
-            enabled: hasSingleChangeSelectedAndCanBrowse:
-            label: 'Browse Method(s)'
-            itemValue: changeMenuBrowse:
-            translateLabel: true
-          )
-         )
-        nil
-        nil
+	(
+	 (MenuItem
+	    enabled: hasChangeSelectedAndNotRemoved:
+	    label: 'Apply'
+	    itemValue: changeMenuApplySelection:
+	    translateLabel: true
+	    isVisible: allowAcceptHolder
+	    shortcutKey: Accept
+	    auxValue: 100
+	  )
+	 (MenuItem
+	    label: 'Apply all'
+	    itemValue: changeMenuApply:
+	    translateLabel: true
+	    isVisible: allowAcceptHolder
+	  )
+	 (MenuItem
+	    label: '-'
+	    isVisible: allowAcceptHolder
+	  )
+	 (MenuItem
+	    label: 'Delete (selected)'
+	    itemValue: changeMenuDeleteSelection:
+	    nameKey: Delete
+	    translateLabel: true
+	    isVisible: allowRemoveHolder
+	    shortcutKey: Delete
+	  )
+	 (MenuItem
+	    label: 'Delete (unselected)'
+	    itemValue: changeMenuDeleteSelectionInverted:
+	    nameKey: Delete
+	    translateLabel: true
+	    isVisible: allowRemoveHolder
+	  )
+	 (MenuItem
+	    label: 'Undelete'
+	    itemValue: changeMenuUndeleteSelection:
+	    nameKey: Undelete
+	    translateLabel: true
+	    isVisible: allowRemoveHolder
+	  )
+	 (MenuItem
+	    label: '-'
+	    isVisible: allowRemoveHolder
+	  )
+	 (MenuItem
+	    label: 'Select...'
+	    translateLabel: true
+	    submenu:
+	   (Menu
+	      (
+	       (MenuItem
+		  label: 'Select same'
+		  itemValue: changeMenuSelectSame:
+		  translateLabel: true
+		)
+	       (MenuItem
+		  label: 'Select additions (new classes/methods)'
+		  itemValue: changeMenuSelectAdditions:
+		  translateLabel: true
+		)
+	       (MenuItem
+		  label: 'Select removals'
+		  itemValue: changeMenuSelectRemovals:
+		  translateLabel: true
+		)
+	       (MenuItem
+		  label: 'Select differences'
+		  itemValue: changeMenuSelectDifferences:
+		  translateLabel: true
+		)
+	       (MenuItem
+		  label: '-'
+		)
+	       (MenuItem
+		  label: 'Select all'
+		  itemValue: changeMenuSelectAll:
+		  translateLabel: true
+		  shortcutKey: SelectAll
+		)
+	       (MenuItem
+		  label: 'Select none'
+		  itemValue: changeMenuSelectNone:
+		  translateLabel: true
+		)
+	       (MenuItem
+		  label: 'Invert Selection'
+		  itemValue: changeMenuSelectInversion:
+		  translateLabel: true
+		)
+	       (MenuItem
+		  label: '-'
+		)
+	       (MenuItem
+		  label: 'Select Using Block...'
+		  itemValue: changeMenuSelectUsingBlock:
+		  translateLabel: true
+		)
+	       )
+	      nil
+	      nil
+	    )
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    label: 'Show Deleted'
+	    translateLabel: true
+	    isVisible: allowRemoveHolder
+	    indication: showRemovedAspect
+	  )
+	 (MenuItem
+	    label: 'Show Same'
+	    translateLabel: true
+	    indication: showSameAspect
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    label: 'Inspect change'
+	    itemValue: changeMenuInspect:
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    enabled: hasSingleChangeSelectedAndCanBrowse:
+	    label: 'Browse Method(s)'
+	    itemValue: changeMenuBrowse:
+	    translateLabel: true
+	  )
+	 )
+	nil
+	nil
       )
 !
 
 changeMenu1
-    "This resource specification was automatically generated
-     by the MenuEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the MenuEditor may not be able to read the specification."
-
-
-    "
-     MenuEditor new openOnClass:Tools::ChangeSetBrowser2 andSelector:#changeMenu1
-     (Menu new fromLiteralArrayEncoding:(Tools::ChangeSetBrowser2 changeMenu1)) startUp
-    "
-
     <resource: #menu>
 
-    ^ 
-     #(Menu
-        (
-         (MenuItem
-            enabled: hasChangeSelectedAndNotRemoved:
-            label: 'Apply'
-            itemValue: changeMenuApplySelection:
-            translateLabel: true
-            isVisible: allowAcceptHolder
-            shortcutKey: Accept
-            auxValue: 100
-          )
-         (MenuItem
-            label: 'Apply All'
-            itemValue: changeMenuApply:
-            translateLabel: true
-            isVisible: allowAcceptHolder
-          )
-         (MenuItem
-            label: '-'
-            isVisible: allowAcceptHolder
-          )
-         (MenuItem
-            label: 'Delete'
-            itemValue: changeMenuDeleteSelection:
-            nameKey: Delete
-            translateLabel: true
-            isVisible: allowRemoveHolder
-            shortcutKey: Delete
-          )
-         (MenuItem
-            label: 'Undelete'
-            itemValue: changeMenuUndeleteSelection:
-            nameKey: Undelete
-            translateLabel: true
-            isVisible: allowRemoveHolder
-          )
-         (MenuItem
-            label: '-'
-            isVisible: allowRemoveHolder
-          )
-         (MenuItem
-            label: 'Select...'
-            translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Select Same'
-                  itemValue: changeMenuSelectSame:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Select Additions (new Classes/Methods)'
-                  itemValue: changeMenuSelectAdditions:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Select Removals'
-                  itemValue: changeMenuSelectRemovals:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Select Differences'
-                  itemValue: changeMenuSelectDifferences:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Select All'
-                  itemValue: changeMenuSelectAll:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Select None'
-                  itemValue: changeMenuSelectNone:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Select using Block'
-                  itemValue: changeMenuSelectUsingBlock:
-                  translateLabel: true
-                )
-               )
-              nil
-              nil
-            )
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Show Deleted'
-            translateLabel: true
-            isVisible: allowRemoveHolder
-            indication: showRemovedAspect
-          )
-         (MenuItem
-            label: 'Show Same'
-            translateLabel: true
-            indication: showSameAspect
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Inspect Change'
-            itemValue: changeMenuInspect:
-            translateLabel: true
-          )
-         (MenuItem
-            enabled: hasSingleChangeSelectedAndCanBrowse:
-            label: 'Browse Method(s)'
-            itemValue: changeMenuBrowse:
-            translateLabel: true
-          )
-         (MenuItem
-            enabled: hasSingleChangeSelectedAndCanBrowse:
-            label: 'Browse Class(s)'
-            itemValue: changeMenuBrowseClass:
-            translateLabel: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasSingleChangeSelectedAndCanBrowse:
-            label: 'Compare Class Against...'
-            itemValue: changeMenuCompareClass:
-            translateLabel: true
-          )
-         )
-        nil
-        nil
-      )
+    ^self changeMenu
+
+    "Modified: / 17-05-2012 / 22:51:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 changeMenu2
-    "This resource specification was automatically generated
-     by the MenuEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the MenuEditor may not be able to read the specification."
-
-
-    "
-     MenuEditor new openOnClass:Tools::ChangeSetBrowser2 andSelector:#changeMenu2
-     (Menu new fromLiteralArrayEncoding:(Tools::ChangeSetBrowser2 changeMenu2)) startUp
-    "
-
     <resource: #menu>
 
-    ^ 
-     #(Menu
-        (
-         (MenuItem
-            enabled: hasChangeSelectedAndNotRemoved:
-            label: 'Apply'
-            itemValue: changeMenuApplySelection:
-            translateLabel: true
-            isVisible: allowAcceptHolder
-            shortcutKey: Accept
-            auxValue: 100
-          )
-         (MenuItem
-            label: 'Apply to End'
-            itemValue: changeMenuApplyToEnd:
-            translateLabel: true
-            isVisible: allowAcceptHolder
-          )
-         (MenuItem
-            label: '-'
-            isVisible: allowAcceptHolder
-          )
-         (MenuItem
-            label: 'Delete'
-            itemValue: changeMenuDeleteSelection:
-            nameKey: Delete
-            translateLabel: true
-            isVisible: allowRemoveHolder
-            shortcutKey: Delete
-          )
-         (MenuItem
-            label: 'Undelete'
-            itemValue: changeMenuUndeleteSelection:
-            nameKey: Undelete
-            translateLabel: true
-            isVisible: allowRemoveHolder
-          )
-         (MenuItem
-            label: '-'
-            isVisible: allowRemoveHolder
-          )
-         (MenuItem
-            label: 'Select...'
-            translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Select Same'
-                  itemValue: changeMenuSelectSame:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Select Additions (new Classes/Methods)'
-                  itemValue: changeMenuSelectAdditions:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Select Removals'
-                  itemValue: changeMenuSelectRemovals:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Select Differences'
-                  itemValue: changeMenuSelectDifferences:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Select All'
-                  itemValue: changeMenuSelectAll:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Select None'
-                  itemValue: changeMenuSelectNone:
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Select using Block'
-                  itemValue: changeMenuSelectUsingBlock:
-                  translateLabel: true
-                )
-               )
-              nil
-              nil
-            )
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Show Deleted'
-            translateLabel: true
-            isVisible: allowRemoveHolder
-            indication: showRemovedAspect
-          )
-         (MenuItem
-            label: 'Show Same'
-            translateLabel: true
-            indication: showSameAspect
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Inspect Change'
-            itemValue: changeMenuInspect:
-            translateLabel: true
-          )
-         (MenuItem
-            enabled: hasSingleChangeSelectedAndCanBrowse:
-            label: 'Browse Method(s)'
-            itemValue: changeMenuBrowse:
-            translateLabel: true
-          )
-         )
-        nil
-        nil
-      )
+    ^self changeMenu
+
+    "Modified: / 17-05-2012 / 22:51:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 mainMenu
@@ -1145,125 +1416,194 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            label: 'File'
-            translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Open...'
-                  itemValue: doOpen
-                  translateLabel: true
-                  isVisible: allowOpenHolder
-                  shortcutKey: Ctrlo
-                )
-               (MenuItem
-                  label: 'Open on Current Changes File'
-                  itemValue: doOpenCurrentChangeFile
-                  translateLabel: true
-                  isVisible: allowOpenHolder
-                )
-               (MenuItem
-                  label: 'Save'
-                  itemValue: doSave
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Save As...'
-                  itemValue: doSaveAs
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Exit'
-                  itemValue: closeRequest
-                  translateLabel: true
-                )
-               )
-              nil
-              nil
-            )
-          )
-         (MenuItem
-            label: 'View'
-            translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'List'
-                  translateLabel: true
-                  choice: navigatorSpecHolder
-                  choiceValue: oneColumnNavigatorSpec
-                )
-               (MenuItem
-                  label: 'Hierarchical List'
-                  translateLabel: true
-                  choice: navigatorSpecHolder
-                  choiceValue: hierarchicalNavigatorSpec
-                )
-               (MenuItem
-                  label: 'Browser Like'
-                  translateLabel: true
-                  choice: navigatorSpecHolder
-                  choiceValue: twoColumnNavigatorSpec
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Show Deleted'
-                  translateLabel: true
-                  indication: showRemovedAspect
-                )
-               (MenuItem
-                  label: 'Show Same'
-                  translateLabel: true
-                  indication: showSameAspect
-                )
-               )
-              nil
-              nil
-            )
-          )
-         (MenuItem
-            label: 'Loading'
-            translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Set Target Package...'
-                  itemValue: setTargetPackage
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Set Target Namespace...'
-                  itemValue: setTargetNamespace
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Update Changefile'
-                  translateLabel: true
-                  indication: updateChangeFileHolder
-                )
-               )
-              nil
-              nil
-            )
-          )
-         )
-        nil
-        nil
+	(
+	 (MenuItem
+	    label: 'File'
+	    submenu:
+	   (Menu
+	      (
+	       (MenuItem
+		  label: 'New'
+		  submenu:
+		 (Menu
+		    (
+		     (MenuItem
+			activeHelpKey: fileNew
+			label: 'New Changeset'
+			itemValue: doOpenNew
+		      )
+		     (MenuItem
+			label: 'New Window'
+			itemValue: doOpenNewWindow
+		      )
+		     )
+		    nil
+		    nil
+		  )
+		)
+	       (MenuItem
+		  label: '-'
+		)
+	       (MenuItem
+		  activeHelpKey: fileOpenSelection
+		  enabled: isWorkingNotHolder
+		  label: 'Spawn Browser on Selection'
+		  itemValue: doOpenOnSelection
+		  isVisible: allowOpenHolder
+		)
+	       (MenuItem
+		  activeHelpKey: fileOpenSelection
+		  enabled: isWorkingNotHolder
+		  label: 'Spawn on Selection'
+		  itemValue: doOpenOnSelection
+		  isVisible: allowOpenHolder
+		)
+	       (MenuItem
+		  label: '-'
+		)
+	       (MenuItem
+		  activeHelpKey: fileLoad
+		  enabled: isWorkingNotHolder
+		  label: 'Open...'
+		  itemValue: doOpen
+		  isVisible: allowOpenHolder
+		  shortcutKey: Ctrlo
+		)
+	       (MenuItem
+		  activeHelpKey: fileOpenCurrent
+		  enabled: isWorkingNotHolder
+		  label: 'Open Current'
+		  itemValue: doOpenCurrent
+		  isVisible: allowOpenHolder
+		)
+	       (MenuItem
+		  activeHelpKey: fileOpenCurrent
+		  enabled: isWorkingNotHolder
+		  label: 'Open Cypress Package'
+		  itemValue: doOpenCypress
+		  isVisible: allowOpenHolderAndCypressPresent
+		)
+	       (MenuItem
+		  activeHelpKey: fileSaveAs
+		  enabled: isWorkingNotHolder
+		  label: 'Save'
+		  itemValue: doSave
+		)
+	       (MenuItem
+		  enabled: isWorkingNotHolder
+		  label: 'Save As...'
+		  itemValue: doSaveAs
+		)
+	       (MenuItem
+		  label: '-'
+		)
+	       (MenuItem
+		  label: 'Exit'
+		  itemValue: closeRequest
+		)
+	       )
+	      nil
+	      nil
+	    )
+	  )
+	 (MenuItem
+	    enabled: isWorkingNotHolder
+	    label: 'Changes'
+	    isVisible: isTwoColumnHolderNot
+	    submenuChannel: list1MenuHolder
+	  )
+	 (MenuItem
+	    enabled: isWorkingNotHolder
+	    label: 'Left'
+	    isVisible: isTwoColumnHolder
+	    submenuChannel: list1MenuHolder
+	  )
+	 (MenuItem
+	    enabled: isWorkingNotHolder
+	    label: 'Right'
+	    isVisible: isTwoColumnHolder
+	    submenuChannel: list2MenuHolder
+	  )
+	 (MenuItem
+	    label: 'View'
+	    submenu:
+	   (Menu
+	      (
+	       (MenuItem
+		  label: 'List'
+		  choice: navigatorSpecHolder
+		  choiceValue: oneColumnNavigatorSpec
+		)
+	       (MenuItem
+		  label: 'Hierarchical List'
+		  choice: navigatorSpecHolder
+		  choiceValue: hierarchicalNavigatorSpec
+		)
+	       (MenuItem
+		  label: 'Browser Like'
+		  choice: navigatorSpecHolder
+		  choiceValue: twoColumnNavigatorSpec
+		)
+	       (MenuItem
+		  label: '-'
+		)
+	       (MenuItem
+		  label: 'Show Deleted'
+		  indication: showRemovedAspect
+		)
+	       (MenuItem
+		  label: 'Show Same'
+		  indication: showSameAspect
+		)
+	       (MenuItem
+		  label: '-'
+		)
+	       (MenuItem
+		  label: 'Show Filter'
+		  indication: showFilterHolder
+		)
+	       (MenuItem
+		  label: '-'
+		)
+	       (MenuItem
+		  label: 'Show Timestamp'
+		  indication: showTimestampHolder
+		)
+	       )
+	      nil
+	      nil
+	    )
+	  )
+	 (MenuItem
+	    label: 'Loading'
+	    submenu:
+	   (Menu
+	      (
+	       (MenuItem
+		  label: 'Set Target Package...'
+		  itemValue: setTargetPackage
+		)
+	       (MenuItem
+		  label: 'Set Target Namespace...'
+		  itemValue: setTargetNamespace
+		)
+	       (MenuItem
+		  label: '-'
+		)
+	       (MenuItem
+		  label: 'Update Changefile'
+		  indication: updateChangeFileHolder
+		)
+	       )
+	      nil
+	      nil
+	    )
+	  )
+	 )
+	nil
+	nil
       )
 
     "Modified: / 27-07-2012 / 21:17:20 / cg"
@@ -1284,32 +1624,121 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            activeHelpKey: fileLoad
-            label: 'Open'
-            itemValue: doOpen
-            translateLabel: true
-            isButton: true
-            isVisible: allowOpenHolder
-            labelImage: (ResourceRetriever ToolbarIconLibrary loadFromFileIcon)
-          )
-         (MenuItem
-            activeHelpKey: fileSave
-            label: 'Save'
-            itemValue: doSave
-            translateLabel: true
-            isButton: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary saveToFileAsIcon)
-          )
-         )
-        nil
-        nil
+	(
+	 (MenuItem
+	    activeHelpKey: fileLoad
+	    enabled: isWorkingNotHolder
+	    label: 'Load'
+	    itemValue: doOpen
+	    translateLabel: true
+	    isButton: true
+	    labelImage: (ResourceRetriever XPToolbarIconLibrary loadFromFileIcon)
+	  )
+	 (MenuItem
+	    activeHelpKey: fileSave
+	    enabled: isWorkingNotHolder
+	    label: 'Save'
+	    itemValue: doSave
+	    translateLabel: true
+	    isButton: true
+	    labelImage: (ResourceRetriever XPToolbarIconLibrary saveToFileIcon)
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    activeHelpKey: applyLine
+	    enabled: hasSelectionHolder
+	    label: 'Apply'
+	    itemValue: doApply
+	    translateLabel: true
+	    isButton: true
+	    labelImage: (ResourceRetriever nil applyIcon)
+	  )
+	 (MenuItem
+	    activeHelpKey: applyToEnd
+	    enabled: hasSelectionHolder
+	    label: 'Apply To End'
+	    itemValue: doApplyToEnd
+	    translateLabel: true
+	    isButton: true
+	    labelImage: (ResourceRetriever nil applyToEndIcon)
+	  )
+	 (MenuItem
+	    activeHelpKey: applyFromLastSnapshot
+	    enabled: hasSelectionHolder
+	    label: 'Apply From Last Snapshot'
+	    itemValue: doApplyFromLastSnapshot
+	    translateLabel: true
+	    isButton: true
+	    labelImage: (ResourceRetriever nil applyFromLastSnapshotIcon)
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    activeHelpKey: deleteLine
+	    enabled: hasSelectionHolder
+	    label: 'Delete'
+	    itemValue: doDelete
+	    translateLabel: true
+	    isButton: true
+	    labelImage: (ResourceRetriever nil deleteIcon)
+	  )
+	 (MenuItem
+	    activeHelpKey: deleteToEnd
+	    enabled: hasSelectionHolder
+	    label: 'Delete To End'
+	    itemValue: doDeleteToEnd
+	    translateLabel: true
+	    isButton: true
+	    labelImage: (ResourceRetriever nil deleteToEndIcon)
+	  )
+	 (MenuItem
+	    activeHelpKey: deleteCompress
+	    enabled: isWorkingNotHolder
+	    label: 'Compress'
+	    itemValue: doCompress
+	    translateLabel: true
+	    isButton: true
+	    isVisible: showingRegularChangesetHolder
+	    labelImage: (ResourceRetriever nil compressIcon)
+	  )
+	 (MenuItem
+	    label: '-'
+	    isVisible: showingRegularChangesetHolder
+	  )
+	 (MenuItem
+	    activeHelpKey: testFindPreviousSnapshot
+	    enabled: hasSelectionHolder
+	    label: 'Find Previous Snapshot'
+	    itemValue: doFindSnapshot:
+	    translateLabel: true
+	    isButton: true
+	    isVisible: showingRegularChangesetHolder
+	    labelImage: (ResourceRetriever nil findPreviousSnapshotIcon)
+	    argument: 'previous'
+	  )
+	 (MenuItem
+	    activeHelpKey: testFindNextSnapshot
+	    enabled: hasSelectionHolder
+	    label: 'Find Next Snapshot'
+	    itemValue: doFindSnapshot:
+	    translateLabel: true
+	    isButton: true
+	    isVisible: showingRegularChangesetHolder
+	    labelImage: (ResourceRetriever nil findNextSnapshotIcon)
+	    argument: 'next'
+	  )
+	 )
+	nil
+	nil
       )
 ! !
 
+
 !ChangeSetBrowser2 class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -1324,11 +1753,12 @@
      (if this app is embedded in a subCanvas)."
 
     ^ #(
-        #changesetHolder
+	#changesetHolder
       ).
 
 ! !
 
+
 !ChangeSetBrowser2 methodsFor:'accessing'!
 
 allowAccept: aBoolean
@@ -1390,6 +1820,12 @@
     "Modified: / 26-07-2012 / 14:31:50 / cg"
 !
 
+showFilter: aBoolean
+    self showFilterHolder value: aBoolean
+
+    "Created: / 11-02-2012 / 22:47:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 targetNamespace:something
     targetNamespace := something.
 !
@@ -1404,15 +1840,18 @@
     change := nil.
     sel := selection2Holder value.
     sel isNil ifTrue:[
-        sel := selection1Holder value.
+	sel := selection1Holder value.
+    ].
+    sel isNil ifTrue:[
+	^nil
     ].
     sel do:
-        [:each|
-        change ifNotNil:[nil].
-        change ifNil:[change := each]].
+	[:each|
+	change notNil ifTrue:[nil].
+	change isNil ifTrue:[change := each]].
     ^change
 
-    "Modified: / 04-08-2011 / 18:55:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 26-07-2012 / 19:33:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 title: aString
@@ -1422,6 +1861,7 @@
     "Created: / 26-10-2010 / 23:01:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeSetBrowser2 methodsFor:'accessing - defaults'!
 
 defaultTitle
@@ -1430,15 +1870,16 @@
     "Modified: / 08-04-2011 / 10:10:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeSetBrowser2 methodsFor:'accessing - menus'!
 
 list1MenuHolder
     ^ [
-        |menu|
-
-        menu := builder menuFor:#changeMenu1.
-        menu allItemsDo:[:item | item argument:list1 ].
-        menu
+	|menu|
+
+	menu := builder menuFor:#changeMenu1.
+	menu allItemsDo:[:item | item argument:list1 ].
+	menu
     ]
 
     "Created: / 04-08-2011 / 18:11:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -1447,17 +1888,18 @@
 
 list2MenuHolder
     ^ [
-        |menu|
-
-        menu := builder menuFor:#changeMenu2.
-        menu allItemsDo:[:item | item argument:list2 ].
-        menu
+	|menu|
+
+	menu := builder menuFor:#changeMenu2.
+	menu allItemsDo:[:item | item argument:list2 ].
+	menu
     ]
 
     "Created: / 04-08-2011 / 18:13:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (format): / 05-09-2011 / 16:07:34 / cg"
 ! !
 
+
 !ChangeSetBrowser2 methodsFor:'actions'!
 
 accept: source
@@ -1466,7 +1908,7 @@
     (entry := self theSingleSelectedChange) isNil ifTrue:[^self].
     chg := entry change.
     chg isMethodCodeChange ifTrue:
-        [chg source: source asString]
+	[chg source: source asString]
 
     "Modified: / 29-11-2010 / 22:40:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 18-11-2011 / 14:56:53 / cg"
@@ -1479,13 +1921,14 @@
     "Modified: / 19-07-2011 / 19:08:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeSetBrowser2 methodsFor:'aspects'!
 
 allowAcceptHolder
     "return/create the 'selectionHolder' value holder (automatically generated)"
 
     allowAcceptHolder isNil ifTrue:[
-        allowAcceptHolder := ValueHolder with: true.
+	allowAcceptHolder := ValueHolder with: true.
     ].
     ^ allowAcceptHolder
 
@@ -1497,44 +1940,55 @@
     "return/create the 'allowOpenHolder' value holder (automatically generated)"
 
     allowOpenHolder isNil ifTrue:[
-        allowOpenHolder := ValueHolder with: true.
+	allowOpenHolder := ValueHolder with: true.
     ].
     ^ allowOpenHolder
 
     "Modified: / 17-03-2011 / 22:32:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+allowOpenHolderAndCypressPresent
+
+    ^BlockValue
+	with: [:value|
+	    value and: [ ConfigurableFeatures includesFeature:#Cypress ]
+	]
+	argument: self allowOpenHolder.
+
+    "Modified (format): / 07-09-2012 / 20:09:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 allowRemoveHolder
     "return/create the 'allowRemoveHolder' value holder (automatically generated)"
-    
+
     allowRemoveHolder isNil ifTrue:[
-        allowRemoveHolder := ValueHolder with:false.
-        allowRemoveHolder addDependent:self.
+	allowRemoveHolder := ValueHolder with:false.
+	allowRemoveHolder addDependent:self.
     ].
     ^ allowRemoveHolder
 
     "Modified: / 24-01-2012 / 19:59:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-allowRemoveHolder:something 
+allowRemoveHolder:something
     "set the 'showRemovedHolder' value holder (automatically generated)"
-    
+
     |oldValue newValue|
 
     allowRemoveHolder notNil ifTrue:[
-        oldValue := allowRemoveHolder value.
-        allowRemoveHolder removeDependent:self.
+	oldValue := allowRemoveHolder value.
+	allowRemoveHolder removeDependent:self.
     ].
     allowRemoveHolder := something.
     allowRemoveHolder notNil ifTrue:[
-        allowRemoveHolder addDependent:self.
+	allowRemoveHolder addDependent:self.
     ].
     newValue := allowRemoveHolder value.
     oldValue ~~ newValue ifTrue:[
-        self 
-            update:#value
-            with:newValue
-            from:allowRemoveHolder.
+	self
+	    update:#value
+	    with:newValue
+	    from:allowRemoveHolder.
     ].
 
     "Modified (format): / 24-01-2012 / 19:48:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -1543,7 +1997,7 @@
 changeSourceHolder
     <resource: #uiAspect>
     changeSourceHolder isNil ifTrue: [
-        changeSourceHolder := nil asValue.
+	changeSourceHolder := nil asValue.
     ].
     ^ changeSourceHolder.
 
@@ -1554,8 +2008,8 @@
     "return/create the 'changesetHolder' value holder (automatically generated)"
 
     changesetHolder isNil ifTrue:[
-        changesetHolder := ValueHolder new.
-        changesetHolder addDependent:self.
+	changesetHolder := ValueHolder new.
+	changesetHolder addDependent:self.
     ].
     ^ changesetHolder
 !
@@ -1566,16 +2020,16 @@
     |oldValue newValue|
 
     changesetHolder notNil ifTrue:[
-        oldValue := changesetHolder value.
-        changesetHolder removeDependent:self.
+	oldValue := changesetHolder value.
+	changesetHolder removeDependent:self.
     ].
     changesetHolder := something.
     changesetHolder notNil ifTrue:[
-        changesetHolder addDependent:self.
+	changesetHolder addDependent:self.
     ].
     newValue := changesetHolder value.
     oldValue ~~ newValue ifTrue:[
-        self update:#value with:newValue from:changesetHolder.
+	self update:#value with:newValue from:changesetHolder.
     ].
 !
 
@@ -1583,7 +2037,7 @@
     "return/create the 'classHolder' value holder (automatically generated)"
 
     classHolder isNil ifTrue:[
-        classHolder := ValueHolder with:nil.
+	classHolder := ValueHolder with:nil.
     ].
     ^ classHolder
 
@@ -1594,7 +2048,7 @@
     "return/create the 'codeAspectHolder' value holder (automatically generated)"
 
     codeAspectHolder isNil ifTrue:[
-        codeAspectHolder := SyntaxHighlighter codeAspectMethod asValue.
+	codeAspectHolder := SyntaxHighlighter codeAspectMethod asValue.
     ].
     ^ codeAspectHolder
 
@@ -1604,13 +2058,48 @@
 imageSourceHolder
     <resource: #uiAspect>
     imageSourceHolder isNil ifTrue: [
-        imageSourceHolder := nil asValue.
+	imageSourceHolder := nil asValue.
     ].
     ^ imageSourceHolder.
 
     "Created: / 19-07-2011 / 11:54:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+infoPanel
+    infoPanel isNil ifTrue:[
+	infoPanel := InlineMessageDialog new
+    ].
+    ^ infoPanel
+
+    "Created: / 09-02-2012 / 19:23:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isTwoColumnHolder
+    | holder |
+
+    holder :=  builder bindings at: #isTwoColumnHolder ifAbsentPut:[
+	BlockValue
+	    with:[:v| v value == #twoColumnNavigatorSpec]
+	    argument: self navigatorSpecHolder.
+    ].
+    ^holder
+
+    "Created: / 30-03-2012 / 12:07:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isTwoColumnHolderNot
+    | holder |
+
+    holder :=  builder bindings at: #isTwoColumnHolderNot ifAbsentPut:[
+	BlockValue
+	    with:[:v| v value ~~ #twoColumnNavigatorSpec]
+	    argument: self navigatorSpecHolder.
+    ].
+    ^holder
+
+    "Created: / 30-03-2012 / 12:08:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 labelAHolder
 
     ^'Change' asValue
@@ -1627,7 +2116,7 @@
 
 languageHolder
     languageHolder isNil ifTrue:[
-        languageHolder := ValueHolder with:nil.
+	languageHolder := ValueHolder with:nil.
     ].
     ^ languageHolder
 
@@ -1639,7 +2128,7 @@
     "return/create the 'list1Holder' value holder (automatically generated)"
 
     list1Holder isNil ifTrue:[
-        list1Holder := ValueHolder new.
+	list1Holder := ValueHolder new.
     ].
     ^ list1Holder
 !
@@ -1654,7 +2143,7 @@
     "return/create the 'list2Holder' value holder (automatically generated)"
 
     list2Holder isNil ifTrue:[
-        list2Holder := ValueHolder new.
+	list2Holder := ValueHolder new.
     ].
     ^ list2Holder
 !
@@ -1669,7 +2158,7 @@
     "return/create the 'navigatorChangesetHolder' value holder (automatically generated)"
 
     navigatorChangesetHolder isNil ifTrue:[
-        navigatorChangesetHolder := ValueHolder new.
+	navigatorChangesetHolder := ValueHolder new.
     ].
     ^ navigatorChangesetHolder
 !
@@ -1678,24 +2167,24 @@
     <resource: #uiAspect>
 
     navigatorSpecHolder isNil ifTrue:[
-        navigatorSpecHolder := ValueHolder with:
-                                                    "/#hierarchicalNavigatorSpec
-                                                    "/#twoColumnNavigatorSpec
-                                                    #oneColumnNavigatorSpec
+	navigatorSpecHolder := ValueHolder with:
+						    "/#hierarchicalNavigatorSpec
+						    "/#twoColumnNavigatorSpec
+						    #oneColumnNavigatorSpec.
+	navigatorSpecHolder addDependent: self.
 
     ].
     ^ navigatorSpecHolder.
 
-
-    "Modified: / 24-01-2012 / 17:13:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 04-02-2012 / 21:25:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 selection1Holder
     "return/create the 'selection1Holder' value holder (automatically generated)"
 
     selection1Holder isNil ifTrue:[
-        selection1Holder := ValueHolder new.
-        selection1Holder addDependent:self.
+	selection1Holder := ValueHolder new.
+	selection1Holder addDependent:self.
     ].
     ^ selection1Holder
 !
@@ -1706,16 +2195,16 @@
     |oldValue newValue|
 
     selection1Holder notNil ifTrue:[
-        oldValue := selection1Holder value.
-        selection1Holder removeDependent:self.
+	oldValue := selection1Holder value.
+	selection1Holder removeDependent:self.
     ].
     selection1Holder := something.
     selection1Holder notNil ifTrue:[
-        selection1Holder addDependent:self.
+	selection1Holder addDependent:self.
     ].
     newValue := selection1Holder value.
     oldValue ~~ newValue ifTrue:[
-        self update:#value with:newValue from:selection1Holder.
+	self update:#value with:newValue from:selection1Holder.
     ].
 !
 
@@ -1723,8 +2212,8 @@
     "return/create the 'selection2Holder' value holder (automatically generated)"
 
     selection2Holder isNil ifTrue:[
-        selection2Holder := ValueHolder new.
-        selection2Holder addDependent:self.
+	selection2Holder := ValueHolder new.
+	selection2Holder addDependent:self.
     ].
     ^ selection2Holder
 !
@@ -1735,25 +2224,42 @@
     |oldValue newValue|
 
     selection2Holder notNil ifTrue:[
-        oldValue := selection2Holder value.
-        selection2Holder removeDependent:self.
+	oldValue := selection2Holder value.
+	selection2Holder removeDependent:self.
     ].
     selection2Holder := something.
     selection2Holder notNil ifTrue:[
-        selection2Holder addDependent:self.
+	selection2Holder addDependent:self.
     ].
     newValue := selection2Holder value.
     oldValue ~~ newValue ifTrue:[
-        self update:#value with:newValue from:selection2Holder.
+	self update:#value with:newValue from:selection2Holder.
+    ].
+!
+
+showFilterHolder
+    "return/create the 'showFilterHolder' value holder (automatically generated)"
+
+    showFilterHolder isNil ifTrue:[
+	showFilterHolder := false asValue.
     ].
+    ^ showFilterHolder
+
+    "Modified: / 11-02-2012 / 22:46:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showFilterHolder:something
+    "set the 'showFilterHolder' value holder (automatically generated)"
+
+    showFilterHolder := something.
 !
 
 showRemovedAspect
     "return/create the 'showDeletedAspect' value holder (automatically generated)"
 
     showRemovedAspect isNil ifTrue:[
-        showRemovedAspect := (AspectAdaptor forAspect:#showRemoved)
-                                subject: self class.
+	showRemovedAspect := (AspectAdaptor forAspect:#showRemoved)
+				subject: self class.
     ].
     ^ showRemovedAspect
 !
@@ -1766,7 +2272,7 @@
     "return/create the 'showSameAspect' value holder (automatically generated)"
 
     showSameAspect isNil ifTrue:[
-        showSameAspect := ValueHolder with: true.
+	showSameAspect := ValueHolder with: true.
     ].
     ^ showSameAspect
 
@@ -1779,25 +2285,116 @@
     showSameAspect := something.
 !
 
+showTimestampHolder
+    "return/create the 'showTimestampHolder' value holder (automatically generated)"
+
+    showTimestampHolder isNil ifTrue:[
+	showTimestampHolder := ValueHolder with: false.
+    ].
+    ^ showTimestampHolder
+
+    "Modified: / 26-07-2012 / 18:47:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showTimestampHolder:something
+    "set the 'showTimestampHolder' value holder (automatically generated)"
+
+    showTimestampHolder := something.
+!
+
+showingRegularChangesetHolder
+    "return/create the 'showingRegularChangesetHolder' value holder (automatically generated)"
+
+    showingRegularChangesetHolder isNil ifTrue:[
+	showingRegularChangesetHolder := ValueHolder with: false.
+	showingRegularChangesetHolder addDependent:self.
+    ].
+    ^ showingRegularChangesetHolder
+
+    "Modified: / 26-07-2012 / 19:45:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showingRegularChangesetHolder:something
+    "set the 'showingRegularChangesetHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    showingRegularChangesetHolder notNil ifTrue:[
+	oldValue := showingRegularChangesetHolder value.
+	showingRegularChangesetHolder removeDependent:self.
+    ].
+    showingRegularChangesetHolder := something.
+    showingRegularChangesetHolder notNil ifTrue:[
+	showingRegularChangesetHolder addDependent:self.
+    ].
+    newValue := showingRegularChangesetHolder value.
+    oldValue ~~ newValue ifTrue:[
+	self update:#value with:newValue from:showingRegularChangesetHolder.
+    ].
+!
+
 titleHolder
     "return/create the 'titleHolder' value holder (automatically generated)"
 
     titleHolder isNil
-        ifTrue:[ titleHolder := ValueHolder with:self defaultTitle. ].
+	ifTrue:[ titleHolder := ValueHolder with:self defaultTitle. ].
     ^ titleHolder
 
     "Modified: / 26-10-2010 / 22:54:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-updateChangefileHolder
-    updateChangefileHolder isNil ifTrue:[
-        updateChangefileHolder := false asValue.
+updateChangeFileHolder
+    updateChangeFileHolder isNil ifTrue:[
+	updateChangeFileHolder := false asValue.
     ].
-    ^ updateChangefileHolder
+    ^ updateChangeFileHolder
 
     "Created: / 07-09-2011 / 15:54:03 / cg"
+    "Created: / 11-02-2012 / 22:40:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+ !
+
+
+!ChangeSetBrowser2 methodsFor:'aspects-queries'!
+
+hasSelectionHolder
+
+    hasSelectionHolder isNil ifTrue:[
+	hasSelectionHolder :=
+	    BlockValue
+		with:[:sel1 :sel2|
+		    sel1 value notEmptyOrNil or:[sel2 value notEmptyOrNil]
+		]
+		argument: self selection1Holder
+		argument: self selection2Holder
+    ].
+    ^hasSelectionHolder
+
+    "Created: / 17-05-2012 / 20:45:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isWorkingHolder
+
+    isWorkingHolder isNil ifTrue:[
+	isWorkingHolder := ValueHolder with: false.
+    ].
+    ^isWorkingHolder
+
+    "Created: / 17-05-2012 / 20:45:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isWorkingNotHolder
+
+    isWorkingNotHolder isNil ifTrue:[
+	isWorkingNotHolder := BlockValue forLogicalNot: self  isWorkingHolder
+    ].
+    ^isWorkingNotHolder
+
+    "Created: / 17-05-2012 / 20:45:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeSetBrowser2 methodsFor:'change & update'!
 
 changesetChanged
@@ -1814,42 +2411,64 @@
 
     listEntry := self theSingleSelectedChange.
     (listEntry notNil and:[(change := listEntry change) isCompositeChange not]) ifTrue:[
-        codeAspectHolder setValue:
-            (change isMethodCodeChange
-                ifTrue:[SyntaxHighlighter codeAspectMethod]
-                ifFalse:[SyntaxHighlighter codeAspectExpression]).
-        self classHolder value: change changeClass.
-        changeSourceHolder setValue: change changeSource"; changed: #value".
-        change imageSource = change changeSource ifTrue:[
-            imageSourceHolder setValue: nil"; changed: #value".
-        ] ifFalse:[
-            imageSourceHolder setValue: change imageSource"; changed: #value".
-        ].
-        changeSourceHolder changed.
-        "/ imageSourceHolder changed.
-        codeAspectHolder changed.
-
-        self showSource: true
+	self classHolder value: listEntry changeClass.
+	changeSourceHolder setValue: change changeSource; changed: #value.
+	imageSourceHolder setValue: change imageSource; changed: #value.
+
+	codeAspectHolder value:
+	    (change isMethodCodeChange
+		  ifTrue:[SyntaxHighlighter codeAspectMethod]
+		ifFalse:[SyntaxHighlighter codeAspectExpression]).
+
+	self showSource: true
     ] ifFalse:[
-        self showSource: false.
-        self classHolder value: nil.
-        changeSourceHolder setValue: nil; changed: #value.
-        imageSourceHolder setValue: nil; changed: #value.
+	self showSource: false.
+	self classHolder value: nil.
+	changeSourceHolder setValue: nil; changed: #value.
+	imageSourceHolder setValue: nil; changed: #value.
     ].
 
     "Created: / 24-10-2009 / 19:49:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 27-07-2012 / 23:42:46 / cg"
+    "Modified: / 25-07-2012 / 17:43:30 / cg"
+    "Modified: / 10-09-2012 / 10:35:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showingRegularChangesetChanged
+
+    self showTimestampHolder value: showingRegularChangesetHolder value.
+
+    "Created: / 26-07-2012 / 19:40:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 update: aspect with: param from: sender
 
-    sender == changesetHolder ifTrue: [ ^ self changesetChanged ].
-    sender == selection1Holder ifTrue: [ ^ self selectionChanged ].
-    sender == selection2Holder ifTrue: [ ^ self selectionChanged ].
+    sender == changesetHolder ifTrue: [
+	self changesetChanged .
+	^self
+    ].
+    sender == navigatorSpecHolder ifTrue: [
+	self changesetChanged .
+	^self
+    ].
+    sender == selection1Holder ifTrue: [
+	self selectionChanged.
+	^self
+    ].
+    sender == selection2Holder ifTrue: [
+	self selectionChanged.
+	^self
+    ].
+
+    sender == showingRegularChangesetHolder ifTrue:[
+	self showingRegularChangesetChanged.
+	^self.
+    ].
+    super update: aspect with: param from: sender
 
     "Created: / 24-10-2009 / 19:29:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeSetBrowser2 methodsFor:'initialization'!
 
 list1View: aSubApplicationView
@@ -1868,20 +2487,115 @@
     "Modified: / 10-09-2012 / 14:22:50 / cg"
 ! !
 
+
 !ChangeSetBrowser2 methodsFor:'menu actions'!
 
+doApply
+    "Applies currently selected change"
+
+    self changeMenuApplySelection: self list.
+
+    "Modified: / 30-03-2012 / 12:18:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doApplyFromLastSnapshot
+
+    self doFindSnapshot: #last.
+    self doApplyToEnd.
+
+    "Modified: / 30-03-2012 / 12:19:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doApplyToEnd
+
+    self changeMenuApplyToEnd: self list.
+
+    "Modified: / 30-03-2012 / 12:35:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doCompress
+    self breakPoint: #jv.
+    Dialog warn: 'Sorry, not yet implemented'
+
+    "Modified: / 30-03-2012 / 12:20:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doDelete
+   self changeMenuDeleteSelection: self list.
+
+    "Modified: / 30-03-2012 / 12:21:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doDeleteToEnd
+    "automatically generated by UIEditor ..."
+
+    "*** the code below performs no action"
+    "*** (except for some feedback on the Transcript)"
+    "*** Please change as required and accept in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    "action to be added ..."
+
+    Transcript showCR:self class name, ': action for #doDeleteToEnd ...'.
+!
+
+doFindSnapshot:previousOrNext
+    self doFindSnapshot: previousOrNext in: self list.
+
+    "Modified: / 27-07-2012 / 15:40:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doFindSnapshot:previousOrNext in: changeList
+    | snapshot selection searchBlock notFoundMessage |
+
+
+    selection := self theSingleSelectedChange.
+    searchBlock := [:listEntry|
+	listEntry == selection ifTrue:[
+	    snapshot notNil ifTrue:[
+		changeList selection: (OrderedCollection with: snapshot).
+	    ] ifFalse:[
+		self infoPanel showMessage: notFoundMessage closeAfter: 5"sec".
+	    ].
+	    ^self.
+	] ifFalse:[
+	    (listEntry change isOtherChange and:[listEntry change type == #snapshot]) ifTrue:[
+		snapshot := listEntry
+	    ].
+	].
+    ].
+    previousOrNext = 'previous' ifTrue:[
+	selection isNil ifTrue:[
+	    selection := changeList list last.
+	    changeList selection: (Array with: selection).
+	].
+	notFoundMessage := resources string:'No snapshot prior selected change found.'.
+	changeList list do: searchBlock.
+    ] ifFalse:[
+	selection isNil ifTrue:[
+	    selection := changeList list first.
+	    changeList selection: (Array with: selection).
+	].
+	notFoundMessage := resources string:'No snapshot after selected change found.'.
+	changeList list reverseDo: searchBlock.
+    ]
+
+    "Created: / 27-07-2012 / 15:38:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 doOpen
-    | file changeset |
-
-    file := Dialog requestFileName:'Select Changeset to Load' pattern:'*.chg;*.st'.
+    | file |
+    [
+	file := Dialog requestFileName:'Select Changeset to Load' pattern:'*.chg;*.st'.
+    ] on: Dialog aboutToOpenBoxNotificationSignal do:[:ex|
+	| dialog |
+
+	dialog := ex parameter.
+
+	ex pass.
+    ].
     file isNil ifTrue:[^self].
-
-    [changeset := ChangeSet fromFile: file]
-        on: Error
-        do: [:ex|Dialog error: 'Error when loading changeset: ',ex description. ^self].
-    changesetFile := file.
-    self title: file asFilename baseName asString.
-    self loadChangeSet: changeset
+    self doOpenFile: file
 
     "Modified: / 08-04-2011 / 10:11:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 27-07-2012 / 21:21:40 / cg"
@@ -1896,45 +2610,183 @@
     "Modified: / 27-07-2012 / 21:21:24 / cg"
 !
 
+doOpenCurrent
+
+    self doOpenFile: ObjectMemory nameForChanges.
+    self showFilter: true.
+
+    "Created: / 05-12-2009 / 13:44:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 doOpenCurrentChangeFile
     self withWaitCursorDo:[
-        self class openOn: (ChangeSet fromFile: ObjectMemory nameForChanges)
+	self class openOn: (ChangeSet fromFile: ObjectMemory nameForChanges)
     ].
 
     "Created: / 05-12-2009 / 13:44:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 27-07-2012 / 21:16:42 / cg"
 !
 
+doOpenCypress
+
+    | file |
+    [
+	file := Dialog requestDirectoryName:(resources string: 'Select Cypress Package')."/ pattern:'*.package'.
+    ] on: Dialog aboutToOpenBoxNotificationSignal do:[:ex|
+	| dialog |
+
+	dialog := ex parameter.
+
+	ex pass.
+    ].
+
+    file isNil ifTrue:[^self].
+    self doOpenCypress: file
+
+    "Modified: / 03-09-2012 / 11:53:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doOpenCypress: aStringOrFilename
+    "Opens a Cypress package in given directory"
+
+    | dir changeset |
+
+    dir := aStringOrFilename asFilename.
+    dir exists ifFalse:[
+	Dialog warn: (resources string:'Selected directory does not exists').
+	^self.
+    ].
+    dir isDirectory ifFalse:[
+	Dialog warn: (resources string:'Selected file is not a directory').
+	^self.
+    ].
+    (dir / 'properties.json') isReadable ifFalse:[
+	Dialog warn: (resources string:'No properties.json found. Perhaps not a Cypress package directory?').
+	^self.
+    ].
+
+    self showProgress: (resources string: 'Reading Cypress Package...') while: [
+	changeset := ((Smalltalk at:#CypressPackageReader) readPackageFrom: dir) asChangeSet.
+	self doOpen: changeset.
+    ].
+
+    "Created: / 03-09-2012 / 11:44:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doOpenFile: aStringOrFilename
+    | cs fn |
+
+    self showProgress: 'Reading ' , (fn := aStringOrFilename asFilename) baseName while:[
+        [
+            cs := ChangeSet fromFile: aStringOrFilename.
+        ] on: ChangeSet::InvalidChangeChunkError do:[:ex|
+            ex proceed.
+        ].
+        ((fn suffix = 'chg') or:[fn pathName = ObjectMemory nameForChanges]) ifTrue:[
+            self list scrollToBottom: true.
+            self showingRegularChangesetHolder value: true.
+        ] ifFalse:[
+            self showingRegularChangesetHolder value: false.
+        ].
+        self allowRemove: false."/true.
+        self doOpen: cs.
+    ].
+
+    "Created: / 09-02-2012 / 19:11:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 05-12-2012 / 11:38:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doOpenNew
+    self doOpen: ChangeSet new.
+    self showFilterHolder value: false.
+    self infoPanel
+	reset;
+	beInformation;
+	message: (resources string:'Open file or drag''n''drop changes from other changeset/diff browser');
+	addButtonWithLabel: (resources string:'Open File') action:[self doOpen];
+	addButtonOK;
+	show.
+
+    "Modified: / 01-08-2012 / 18:36:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doOpenNewWindow
+    | new |
+
+    new := self class new.
+    new open.
+
+    "Created: / 01-08-2012 / 18:22:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doOpenOnSelection
+
+    | selection |
+
+    selection := ChangeSet new.
+    self selectionDo: [:each|selection add: each].
+    self class openOn: selection label: (self titleHolder value , ' ' , (resources string:'(Selected changes)'))
+
+    "Modified: / 25-07-2012 / 15:31:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 doSave
 
     changesetFile
-        ifNil:[self doSaveAs]
-        ifNotNil:[self doSaveAs: changesetFile]
+	ifNil:[self doSaveAs]
+	ifNotNil:[self doSaveAs: changesetFile]
 
     "Modified: / 24-10-2009 / 22:55:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 doSaveAs
     | file |
-
-    file := Dialog requestFileName:'Select File for Save' default: (changesetFile ? 'somechanges.chg') pattern:('*.chg').
+    Dialog aboutToOpenBoxNotificationSignal handle:[:ex|
+"/        OOPS, not supported!!!!!!!!
+
+"/        | box |
+"/        box := ex parameter.
+"/        box verticalPanel
+"/                add:(CheckBox label:'x'
+"/                              model:true asValue).
+	ex pass.
+    ] do:[
+	file := Dialog requestFileName:'Select File for Save' default: (changesetFile ? 'somechanges.chg') pattern:('*.chg').
+    ].
     file isNil ifTrue:[^self].
     self doSaveAs: file.
 
     "Modified: / 27-12-2011 / 10:39:52 / cg"
-    "Modified (format): / 27-07-2012 / 21:22:09 / cg"
+    "Modified: / 20-03-2012 / 13:52:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 doSaveAs: newFile
-    [
-        | s |
-        s := newFile asFilename writeStream.
-        [self changeset fileOutOn: s] ensure:[s close].
-        changesetFile := newFile.
-    ] on: Error do:
-        [:ex|Dialog warn: 'Erorr saving changes: ' , ex description]
-
-    "Modified (format): / 27-07-2012 / 21:22:14 / cg"
+    | changesetToSave |
+
+    changesetToSave := ChangeSet new.
+    self list1Holder value do:[:e|
+	e removed ~~ true ifTrue:[changesetToSave add:e].
+    ].
+
+"/    [
+	(newFile asFilename suffix = 'st') ifTrue:[
+	    changesetToSave saveToFile: newFile format: #classSource.
+	] ifFalse:[
+	    changesetToSave saveToFile: newFile
+	].
+	changesetFile := newFile.
+"/    ] on: Error do:
+"/        [:ex|Dialog warn: 'Erorr saving changes: ' , ex description]
+
+!
+
+doScrollToBottom
+
+    | changeList |
+    changeList := self list.
+    changeList selection: { changeList list last }
+
+    "Created: / 30-03-2012 / 16:56:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 loadChangeSet: aChangeSet
@@ -1946,7 +2798,7 @@
 
 loadCurrentChangeFile
     self withWaitCursorDo:[
-        self loadChangeSet: (ChangeSet fromFile: ObjectMemory nameForChanges)
+	self loadChangeSet: (ChangeSet fromFile: ObjectMemory nameForChanges)
     ].
 
     "Created: / 05-12-2009 / 13:44:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -1958,19 +2810,19 @@
 
     | nsName |
 
-    nsName := Dialog 
-                requestNameSpace:'Namepace to load code into:' 
-                initialAnswer:targetNamespace.    
+    nsName := Dialog
+		requestNameSpace:'Namepace to load code into:'
+		initialAnswer:targetNamespace.
     nsName isEmptyOrNil ifTrue:[^self].
 
     targetNamespace := nsName.
     "/ self targetNamespaceNameHolder value:('Target-Namespace: ',targetNamespace).
 
     list1 list do:[:each |
-        each change nameSpaceOverride:nsName
+	each change nameSpaceOverride:nsName
     ].
     list2 list do:[:each |
-        each change nameSpaceOverride:nsName
+	each change nameSpaceOverride:nsName
     ].
     self changeset do:[:chg | chg nameSpaceOverride:nsName].
 
@@ -1982,14 +2834,14 @@
 
     | package |
 
-    package := Dialog 
-                requestProject:'Default Smalltalk/X package to load code into:' 
-                initialAnswer:targetPackage
-                suggestions:(RecentTargetPackages ? #()).    
+    package := Dialog
+		requestProject:'Default Smalltalk/X package to load code into:'
+		initialAnswer:targetPackage
+		suggestions:(RecentTargetPackages ? #()).
     package isNil ifTrue:[^self].
 
     RecentTargetPackages isNil ifTrue:[
-        RecentTargetPackages := OrderedCollection new.
+	RecentTargetPackages := OrderedCollection new.
     ].
     RecentTargetPackages remove:package ifAbsent:[].
     RecentTargetPackages addFirst:package.
@@ -2000,6 +2852,7 @@
     "Created: / 07-09-2011 / 12:47:15 / cg"
 ! !
 
+
 !ChangeSetBrowser2 methodsFor:'menu actions - changes'!
 
 changeMenuApply: changeList
@@ -2009,8 +2862,8 @@
     self changesDo:[:chg|chg removed ifFalse:[changesToApply add: chg]].
     self changeMenuApplyChanges: changesToApply.
     list2 notNil ifTrue:[
-        "/ to get the =-icons
-        list2 updateList
+	"/ to get the =-icons
+	list2 updateList
     ].
 
     "Created: / 04-08-2011 / 17:26:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -2019,28 +2872,46 @@
 
 changeMenuApplySelection: changeList
 
-    changeList selection do:[:change|self changeMenuApplyChange:change change].
-    list2 notNil ifTrue:[
-        "/ to get the =-icons
-        list2 updateList
+    changeList selection do:[:change|
+	| changeIdx |
+
+	self changeMenuApplyChange:change change.
+
+	"Advance to next change"
+	changeIdx := changeList list identityIndexOf: change.
+	changeIdx < changeList list size ifTrue:[
+	    changeList selection: { changeList list at: changeIdx + 1 }
+	].
     ].
 
     "Created: / 04-08-2011 / 17:27:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (format): / 28-12-2011 / 15:48:53 / cg"
+    "Modified (comment): / 30-03-2012 / 13:18:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 changeMenuApplyToEnd: changeList
-    |lastIdx|
-
-    lastIdx := changeList selectionIndices max.
-    changeList list from:lastIdx do:[:change | self changeMenuApplyChange:change change].
+    | start stop list |
+
+    list := changeList list.
+    start := changeList selectionIndices max.
+    stop  := list size.
+
+    start to: stop do:[:idx|
+	| chg |
+
+	chg := list at: idx.
+	changeList selection: { chg }.
+	self changeMenuApplyChange:chg change.
+    ].
+
     list2 notNil ifTrue:[
-        "/ to get the =-icons
-        list2 updateList
+	"/ to get the =-icons
+	list2 updateList
     ].
 
     "Created: / 04-08-2011 / 17:27:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 27-12-2011 / 10:53:00 / cg"
+    "Modified: / 30-03-2012 / 12:34:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 changeMenuBrowse: changeList
@@ -2050,27 +2921,27 @@
     "/ changes := changeList listHolder value collect:[:c | c change].
 
     (changes conform:[:c | c isClassDefinitionChange]) ifTrue:[
-        classes := (changes collect:[:c | c changeClass]).
-        UserPreferences current systemBrowserClass 
-            browseClasses:classes title:'selected monticello classes'.
+	classes := (changes collect:[:c | c changeClass]).
+	UserPreferences current systemBrowserClass
+	    browseClasses:classes title:'selected monticello classes'.
     ] ifFalse:[
-        methods := OrderedCollection new.
-        changes do:[:each |
-            each isCompositeChange ifTrue:[
-                each changes do:[:each2 | each2 isMethodChange ifTrue:[ methods add:each2 changeMethod ]]
-            ] ifFalse:[
-                each isMethodChange ifTrue:[
-                    methods add:(each changeMethod).
-                ]
-            ]
-        ].
-        (methods includes:nil) ifTrue:[
-            Dialog warn:('%1 methods are not present in the image' bindWith:(methods occurrencesOf:nil)).
-            methods := methods reject:[:m | m isNil].
-            methods isEmpty ifTrue:[^ self].
-        ].
-        UserPreferences current systemBrowserClass 
-            browseMethods:methods title:'selected monticello methods' sort:false.
+	methods := OrderedCollection new.
+	changes do:[:each |
+	    each isCompositeChange ifTrue:[
+		each changes do:[:each2 | each2 isMethodChange ifTrue:[ methods add:each2 changeMethod ]]
+	    ] ifFalse:[
+		each isMethodChange ifTrue:[
+		    methods add:(each changeMethod).
+		]
+	    ]
+	].
+	(methods includes:nil) ifTrue:[
+	    Dialog warn:('%1 methods are not present in the image' bindWith:(methods occurrencesOf:nil)).
+	    methods := methods reject:[:m | m isNil].
+	    methods isEmpty ifTrue:[^ self].
+	].
+	UserPreferences current systemBrowserClass
+	    browseMethods:methods title:'selected monticello methods' sort:false.
     ].
 
     "Created: / 04-08-2011 / 17:27:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -2083,34 +2954,34 @@
     changes := self selectedChangesIn: changeList.
 
     classes := Set new.
-    addThemChanges := 
-        [:c |
-            c isClassDefinitionChange ifTrue:[
-                classes add:c changeClass theNonMetaclass
-            ] ifFalse:[
-                c isMethodChange ifTrue:[
-                    cls := c changeMethod isNil
-                                ifTrue:[ c changeClass ]
-                                ifFalse:[ c changeMethod mclass theNonMetaclass ].
-                    classes add:cls
-                ] ifFalse:[
-                    c isCompositeChange ifTrue:[
-                        c changes do:addThemChanges
-                    ]
-                ]
-            ]
-        ].
+    addThemChanges :=
+	[:c |
+	    c isClassDefinitionChange ifTrue:[
+		classes add:c changeClass theNonMetaclass
+	    ] ifFalse:[
+		c isMethodChange ifTrue:[
+		    cls := c changeMethod isNil
+				ifTrue:[ c changeClass ]
+				ifFalse:[ c changeMethod mclass theNonMetaclass ].
+		    classes add:cls
+		] ifFalse:[
+		    c isCompositeChange ifTrue:[
+			c changes do:addThemChanges
+		    ]
+		]
+	    ]
+	].
     changes do:addThemChanges.
 
-    UserPreferences current systemBrowserClass 
-        browseClasses:classes title:'selected monticello classes'.
+    UserPreferences current systemBrowserClass
+	browseClasses:classes title:'selected monticello classes'.
 
     "Created: / 04-08-2011 / 17:27:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 05-09-2011 / 16:08:35 / cg"
 !
 
 changeMenuCompareClass: changeList
-    |changes classNames classNameToClassMapping lastNameSpace 
+    |changes classNames classNameToClassMapping lastNameSpace
      addClassName addThemChanges existingClasses
      allChanges changeSet1 changeSet2 diffSet|
 
@@ -2121,73 +2992,73 @@
     allChanges := ChangeSet new.
     existingClasses := Set new.
 
-    addClassName := 
-        [:nmArg |
-            |nm ns existingClass goodAnswer cls|
-
-            nm := nmArg.
-            existingClass := Smalltalk classNamed:nm.
-
-            existingClass notNil ifTrue:[
-                goodAnswer := nm
-            ] ifFalse:[
-                ns := NameSpace allNameSpaces 
-                                    detect:[:ns | (ns classNamed:nm) notNil ]
-                                    ifNone:nil.
-                ns notNil ifTrue:[
-                    goodAnswer := (ns classNamed:nm) name.
-                ] ifFalse:[                
-                    goodAnswer := nm.
-                    (lastNameSpace notNil 
-                        and:[ lastNameSpace isNameSpace 
-                        and:[(cls := lastNameSpace classNamed:nm) notNil ]]
-                    ) ifTrue:[
-                        goodAnswer := cls name.
-                    ] ifFalse:[
-                        (lastNameSpace notNil 
-                            and:[ lastNameSpace isBehavior 
-                            and:[(cls := lastNameSpace privateClassesAt:nm asSymbol) notNil ]]
-                        ) ifTrue:[
-                            goodAnswer := cls name.
-                        ]
-                    ].
-                ].
-            ].
-            nm := Dialog 
-                    request:('Class to compare for "%1"?' bindWith:nmArg)
-                    initialAnswer:goodAnswer.
-            nm isNil ifTrue:[^ self].
-            nm notEmpty ifTrue:[
-                existingClass := Smalltalk at:nm asSymbol.
-            ].
-            existingClass notNil ifTrue:[
-                classNameToClassMapping at:nmArg put:existingClass.
-                existingClasses add:existingClass.
-            ].
-            classNames add:nmArg
-        ].
+    addClassName :=
+	[:nmArg |
+	    |nm ns existingClass goodAnswer cls|
+
+	    nm := nmArg.
+	    existingClass := Smalltalk classNamed:nm.
+
+	    existingClass notNil ifTrue:[
+		goodAnswer := nm
+	    ] ifFalse:[
+		ns := NameSpace allNameSpaces
+				    detect:[:ns | (ns classNamed:nm) notNil ]
+				    ifNone:nil.
+		ns notNil ifTrue:[
+		    goodAnswer := (ns classNamed:nm) name.
+		] ifFalse:[
+		    goodAnswer := nm.
+		    (lastNameSpace notNil
+			and:[ lastNameSpace isNameSpace
+			and:[(cls := lastNameSpace classNamed:nm) notNil ]]
+		    ) ifTrue:[
+			goodAnswer := cls name.
+		    ] ifFalse:[
+			(lastNameSpace notNil
+			    and:[ lastNameSpace isBehavior
+			    and:[(cls := lastNameSpace privateClassesAt:nm asSymbol) notNil ]]
+			) ifTrue:[
+			    goodAnswer := cls name.
+			]
+		    ].
+		].
+	    ].
+	    nm := Dialog
+		    request:('Class to compare for "%1"?' bindWith:nmArg)
+		    initialAnswer:goodAnswer.
+	    nm isNil ifTrue:[^ self].
+	    nm notEmpty ifTrue:[
+		existingClass := Smalltalk at:nm asSymbol.
+	    ].
+	    existingClass notNil ifTrue:[
+		classNameToClassMapping at:nmArg put:existingClass.
+		existingClasses add:existingClass.
+	    ].
+	    classNames add:nmArg
+	].
 
     addThemChanges := [:changes |
-        "/ collect classes and mappings
-        changes do:[:c |
-            c isClassDefinitionChange ifTrue:[
-                addClassName value:(c className).
-                allChanges add:c.
-            ]].
-
-        changes do:[:c |
-            c isMethodChange ifTrue:[
-                (classNames includes:(c className)) ifFalse:[
-                    addClassName value:(c className).
-                ].
-                allChanges add:c.
-            ]].
-
-        changes do:[:c |
-            c isCompositeChange ifTrue:[
-                addThemChanges value:(c changes)
-            ].
-        ].
+	"/ collect classes and mappings
+	changes do:[:c |
+	    c isClassDefinitionChange ifTrue:[
+		addClassName value:(c className).
+		allChanges add:c.
+	    ]].
+
+	changes do:[:c |
+	    c isMethodChange ifTrue:[
+		(classNames includes:(c className)) ifFalse:[
+		    addClassName value:(c className).
+		].
+		allChanges add:c.
+	    ]].
+
+	changes do:[:c |
+	    c isCompositeChange ifTrue:[
+		addThemChanges value:(c changes)
+	    ].
+	].
     ].
 
     changes do:addThemChanges.
@@ -2196,16 +3067,16 @@
     changeSet1 := allChanges.
     changeSet2 := ChangeSet new.
     existingClasses do:[:cls |
-        changeSet2 addAll:(ChangeSet forExistingClass:cls).
+	changeSet2 addAll:(ChangeSet forExistingClass:cls).
     ].
     diffSet := changeSet1 diffSetsAgainst:changeSet2.
 
     (UserPreferences versionDiffViewerClass)
-        openOnDiffSet:diffSet 
-        labelA:'Monticello'
-        labelB:'Current (In Image)'
-        title:'Diffs'
-        ignoreExtensions:false.
+	openOnDiffSet:diffSet
+	labelA:'Monticello'
+	labelB:'Current (In Image)'
+	title:'Diffs'
+	ignoreExtensions:false.
 
     "Created: / 04-08-2011 / 17:27:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 01-12-2011 / 18:36:44 / cg"
@@ -2213,20 +3084,55 @@
 
 changeMenuDeleteSelection: changeList
 
-    self selectionDo:[:chg|chg removed: true]
-
-    "Modified: / 29-10-2010 / 13:53:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    changeList selection do:[:change|self changeMenuDeleteChange:change change].
+    changeList updateList.
+    (list2 notNil and:[changeList ~~ list2]) ifTrue:[
+	"/ to get the =-icons
+	list2 updateList
+    ].
+
     "Created: / 04-08-2011 / 17:28:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+changeMenuDeleteSelectionInverted: changeList
+    | sel |
+
+    sel := changeList selection ? #().
+    changeList list do:[:change|
+	(sel includes: change) ifFalse:[
+	    self changeMenuDeleteChange:change change
+	].
+    ].
+    changeList updateList.
+    (list2 notNil and:[changeList ~~ list2]) ifTrue:[
+	"/ to get the =-icons
+	list2 updateList
+    ].
+
+    "Created: / 17-05-2012 / 22:55:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeMenuDeleteToEnd: changeList
+    |lastIdx|
+
+    lastIdx := changeList selectionIndices max.
+    changeList list from:lastIdx do:[:change | self changeMenuDeleteChange:change change].
+    list2 notNil ifTrue:[
+	"/ to get the =-icons
+	list2 updateList
+    ].
+
+    "Created: / 27-12-2011 / 10:53:00 / cg"
+    "Created: / 30-03-2012 / 12:22:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 changeMenuInspect: changeList
 
-    | changes |
-    changes := OrderedCollection new: 1.
-    self selectionDo:[:chg|changes add: chg].
-    changes size = 1
-        ifTrue:[changes anyOne inspect]
-        ifFalse:[changes inspect].
+    changeList selection size == 1 ifTrue:[
+	changeList selection anyOne change inspect
+    ] ifFalse:[
+	(changeList selection collect:[:each|each change]) inspect
+    ]
 
     "Created: / 04-08-2011 / 17:28:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -2258,6 +3164,21 @@
     "Created: / 04-08-2011 / 17:29:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+changeMenuSelectInversion: changeList
+
+    | oldSel newSel |
+    oldSel := changeList selection.
+    newSel := OrderedCollection new.
+    changeList list do:[:change|
+	(oldSel includes: change) ifFalse:[
+	    newSel add: change.
+	]
+    ].
+    changeList selection: newSel.
+
+    "Created: / 17-05-2012 / 23:03:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 changeMenuSelectNone: changeList
 
     self changeMenuSelectIn: changeList suchThat:[:change|false]
@@ -2321,10 +3242,10 @@
         ^ self
     ].
 
-    self changeMenuSelectIn: changeList suchThat: conditionBlock
-
-    "Modified: / 29-10-2010 / 13:05:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    self changeMenuSelectIn: changeList suchThat: [:change|conditionBlock value: change change].
+
     "Created: / 04-08-2011 / 17:42:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-01-2013 / 17:13:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 changeMenuUndeleteSelection: changeList
@@ -2338,14 +3259,15 @@
 selectedChangesIn: changeList
     |changes|
 
-    changes := (changeList == list1 
-                    ifTrue:[ selection1Holder ] 
-                    ifFalse:[ selection2Holder ]) value.
+    changes := (changeList == list1
+		    ifTrue:[ selection1Holder ]
+		    ifFalse:[ selection2Holder ]) value.
     ^ changes collect:[:eachListEntry | eachListEntry change].
 
     "Created: / 23-07-2012 / 13:13:11 / cg"
 ! !
 
+
 !ChangeSetBrowser2 methodsFor:'menu actions - changes - helpers'!
 
 changeMenuApplyChange: aChange
@@ -2354,28 +3276,46 @@
 "/        [(Smalltalk at: aChange superClassName asSymbol)
 "/            ifNil:[^self error: 'Nil superclass']].
 
-    self withWaitCursorDo:[      
-        (MCStXNamespaceQuery , Class nameSpaceQuerySignal)
-            answer:(NameSpace name:(targetNamespace ? 'Smalltalk'))   
+    | nsQueries packageQueries hasMC apply |
+
+    aChange removed ifTrue:[ ^ self ].
+
+
+    nsQueries := Class nameSpaceQuerySignal.
+    packageQueries := Class packageQuerySignal.
+    hasMC := ConfigurableFeatures includesFeature:#MonticelloSupport.
+    hasMC ifTrue:[
+        nsQueries := nsQueries , MCStXNamespaceQuery.
+        packageQueries := packageQueries , MCStXPackageQuery.
+    ].
+    apply := [
+        updateChangeFileHolder value ifTrue:[
+            aChange apply
+        ] ifFalse:[
+            Class withoutUpdatingChangesDo:[
+                aChange apply
+            ]
+        ].
+    ].
+
+    self withWaitCursorDo:[
+        nsQueries 
+            answer:(NameSpace name:(targetNamespace ? 'Smalltalk'))
             do: [
-                (MCStXPackageQuery , Class packageQuerySignal)
-                    answer: self targetPackage   
+                packageQueries 
+                    answer: self targetPackage
                     do: [
-                        MCInteractiveLoadingQuery answer: true do:[
-                            updateChangefileHolder value ifTrue:[
-                                aChange apply
-                            ] ifFalse:[
-                                Class withoutUpdatingChangesDo:[
-                                    aChange apply
-                                ]
-                            ].
+                        hasMC ifTrue:[
+                            MCInteractiveLoadingQuery answer: true do: apply
+                        ] ifFalse:[
+                            apply value.
                         ]
                     ].
             ].
     ].
 
-    "Modified: / 29-10-2010 / 14:57:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 07-09-2011 / 22:24:57 / cg"
+    "Modified: / 16-11-2012 / 10:58:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 changeMenuApplyChanges: changesToApply
@@ -2397,6 +3337,13 @@
     "Created: / 04-08-2011 / 17:26:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+changeMenuDeleteChange: change
+
+    change removed: true
+
+    "Created: / 30-03-2012 / 12:22:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 changeMenuSelectIn: changeList suchThat:conditionBlock
 
     | sel |
@@ -2405,8 +3352,10 @@
     changeList selectionHolder value: sel.
 
     "Created: / 04-08-2011 / 17:29:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-01-2013 / 17:12:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeSetBrowser2 methodsFor:'private'!
 
 changesDo:aBlock
@@ -2418,27 +3367,35 @@
 getNavigatorChangeSet
 
     | changeset |
-    changeset := changesetHolder value deepCopy.
+    changeset := changesetHolder value. "/deepCopy.
     (changeset isKindOf: ChangeSet) ifFalse:
-        [changeset := ChangeSet withAll: changeset].
-
-    (self navigatorSpecHolder value ~= #oneColumnNavigatorSpec)
-        ifTrue:[^changeset groupByClass].
-
-    "Default"
-    ^changeset
+	[changeset := ChangeSet withAll: changeset].
+
+    ^ (self navigatorSpecHolder value ~~ #oneColumnNavigatorSpec) ifTrue:[
+	changeset groupByClass
+    ] ifFalse:[
+	changeset flatten
+    ]
 
     "Created: / 24-10-2009 / 19:31:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 20-07-2010 / 09:46:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 27-07-2012 / 17:02:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+list
+    "Returns list to operate on"
+
+    ^self isTwoColumn ifTrue:[list2] ifFalse:[list1]
+
+    "Created: / 30-03-2012 / 12:02:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 redrawChangeListViews
 
     list1 notNil ifTrue:[
-        list1 builder window allSubViewsDo: [:v|v redraw]
+	list1 builder window allSubViewsDo: [:v|v redraw]
     ].
     list2 notNil ifTrue:[
-        list2 builder window allSubViewsDo: [:v|v redraw]
+	list2 builder window allSubViewsDo: [:v|v redraw]
     ].
 
     "Created: / 16-03-2011 / 22:41:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -2454,14 +3411,28 @@
 "/        (self navigatorChangesetHolder value ? #()) do: aBlock
 "/    ] ifFalse:[
         selection2Holder value isEmptyOrNil not
-            ifTrue:[selection2Holder value do: applyBlock]
-            ifFalse:[selection1Holder value do: applyBlock].
+            ifTrue:[selection2Holder value do: [:e|e notNil ifTrue:[applyBlock value:e]]]
+            ifFalse:[selection1Holder value do: [:e|e notNil ifTrue:[applyBlock value:e]]].
 "/    ].
     self redrawChangeListViews
 
     "Created: / 29-10-2010 / 13:47:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 08-04-2011 / 10:15:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 20-03-2012 / 17:16:40 / cg"
+    "Modified: / 18-05-2012 / 09:05:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showProgress: label while: block
+
+    self infoPanel progress: label while: [
+	[
+	    self isWorkingHolder value: true.
+	    block value
+	] ensure:[
+	    self isWorkingHolder value: false.
+	]
+    ]
+
+    "Created: / 10-02-2012 / 10:35:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 showSource: aBoolean
@@ -2493,6 +3464,7 @@
     "Created: / 07-09-2011 / 20:12:04 / cg"
 ! !
 
+
 !ChangeSetBrowser2 methodsFor:'queries'!
 
 canApplyChanges
@@ -2531,6 +3503,34 @@
     "Created: / 04-08-2011 / 18:25:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
+!ChangeSetBrowser2 methodsFor:'testing'!
+
+isHierarchical
+
+    ^self navigatorSpecHolder == #hierarchicalNavigatorSpec
+
+    "Modified: / 14-10-2010 / 15:52:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 30-03-2012 / 11:59:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isOneColumn
+
+    ^self navigatorSpecHolder value == #oneColumnNavigatorSpec
+
+    "Modified: / 14-10-2010 / 15:52:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 30-03-2012 / 11:59:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isTwoColumn
+
+    ^self navigatorSpecHolder == #twoColumnNavigatorSpec
+
+    "Modified: / 14-10-2010 / 15:51:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 30-03-2012 / 11:59:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
 !ChangeSetBrowser2::ChangeEditor class methodsFor:'documentation'!
 
 documentation
@@ -2540,7 +3540,7 @@
     allowed to edit the change (i.e., modify the source code)
 
     [author:]
-        Jan Vrany <jan.vrany@fit.cvut.cz>
+	Jan Vrany <jan.vrany@fit.cvut.cz>
 
     [instance variables:]
 
@@ -2554,19 +3554,20 @@
 examples
 "
   Starting the application:
-                                                                [exBegin]
+								[exBegin]
     Tools::ChangeEditor open
 
-                                                                [exEnd]
+								[exEnd]
 
   more examples to be added:
-                                                                [exBegin]
-    ... add code fragment for 
+								[exBegin]
+    ... add code fragment for
     ... executable example here ...
-                                                                [exEnd]
+								[exEnd]
 "
 ! !
 
+
 !ChangeSetBrowser2::ChangeEditor class methodsFor:'interface specs'!
 
 windowSpec
@@ -2584,70 +3585,73 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Change Editor'
-          name: 'Change Editor'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 579 341)
-        )
-        component: 
+	  label: 'Change Editor'
+	  name: 'Change Editor'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 579 341)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (SubCanvasSpec
-              name: 'TextDiffTool'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              hasHorizontalScrollBar: false
-              hasVerticalScrollBar: false
-              majorKey: #'Tools::TextDiffTool'
-              minorKey: windowSpecForEmbedding
-              subAspectHolders: 
-             (Array
-                
-               (SubChannelInfoSpec
-                  subAspect: classHolder
-                  aspect: classAspect
-                ) 
-               (SubChannelInfoSpec
-                  subAspect: codeAspectHolder
-                  aspect: codeAspect
-                )
-                
-               (SubChannelInfoSpec
-                  subAspect: labelAHolder
-                  aspect: labelAHolder
-                ) 
-               (SubChannelInfoSpec
-                  subAspect: labelBHolder
-                  aspect: labelBHolder
-                )
-                
-               (SubChannelInfoSpec
-                  subAspect: showDiffHolder
-                  aspect: showdiffHolder
-                ) 
-               (SubChannelInfoSpec
-                  subAspect: textAHolder
-                  aspect: sourceChangeHolder
-                )
-                
-               (SubChannelInfoSpec
-                  subAspect: textBHolder
-                  aspect: sourceImageHolder
-                )
-              )
-              createNewApplication: true
-              createNewBuilder: true
-            )
-           )
-         
-        )
+	  collection: (
+	   (SubCanvasSpec
+	      name: 'TextDiffTool'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      hasHorizontalScrollBar: false
+	      hasVerticalScrollBar: false
+	      majorKey: #'Tools::TextDiff2Tool'
+	      minorKey: windowSpecForEmbedding
+	      subAspectHolders:
+	     (Array
+
+	       (SubChannelInfoSpec
+		  subAspect: classHolder
+		  aspect: classAspect
+		)
+	       (SubChannelInfoSpec
+		  subAspect: codeAspectHolder
+		  aspect: codeAspect
+		)
+
+	       (SubChannelInfoSpec
+		  subAspect: labelAHolder
+		  aspect: labelAHolder
+		)
+	       (SubChannelInfoSpec
+		  subAspect: labelBHolder
+		  aspect: labelBHolder
+		)
+
+	       (SubChannelInfoSpec
+		  subAspect: showDiffHolder
+		  aspect: showdiffHolder
+		)
+	       (SubChannelInfoSpec
+		  subAspect: textAHolder
+		  aspect: sourceChangeHolder
+		)
+
+	       (SubChannelInfoSpec
+		  subAspect: textBHolder
+		  aspect: sourceImageHolder
+		)
+	      )
+	      createNewApplication: true
+	      createNewBuilder: true
+	    )
+	   )
+
+	)
       )
+
+    "Modified: / 16-03-2012 / 13:08:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeSetBrowser2::ChangeEditor methodsFor:'accessing'!
 
 sourceChangeHolder
@@ -2666,14 +3670,15 @@
     sourceImageHolder := something.
 ! !
 
+
 !ChangeSetBrowser2::ChangeEditor methodsFor:'aspects'!
 
 changeHolder
     "return/create the 'changeHolder' value holder (automatically generated)"
 
     changeHolder isNil ifTrue:[
-        changeHolder := ValueHolder new.
-        changeHolder addDependent:self.
+	changeHolder := ValueHolder new.
+	changeHolder addDependent:self.
     ].
     ^ changeHolder
 !
@@ -2684,23 +3689,23 @@
     |oldValue newValue|
 
     changeHolder notNil ifTrue:[
-        oldValue := changeHolder value.
-        changeHolder removeDependent:self.
+	oldValue := changeHolder value.
+	changeHolder removeDependent:self.
     ].
     changeHolder := something.
     changeHolder notNil ifTrue:[
-        changeHolder addDependent:self.
+	changeHolder addDependent:self.
     ].
     newValue := changeHolder value.
     oldValue ~~ newValue ifTrue:[
-        self update:#value with:newValue from:changeHolder.
+	self update:#value with:newValue from:changeHolder.
     ].
 !
 
 classAspect
 
-    ^(AspectAdaptor forAspect: #changeClass) 
-        subjectChannel: self changeHolder
+    ^(AspectAdaptor forAspect: #changeClass)
+	subjectChannel: self changeHolder
 
     "Created: / 29-11-2011 / 11:21:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -2708,11 +3713,11 @@
 codeAspect
 
     ^BlockValue
-        with: [:change|
-            change isMethodCodeChange
-                ifTrue:[ SyntaxHighlighter codeAspectMethod ]
-                ifFalse:[ SyntaxHighlighter codeAspectExpression ]
-        ] argument: self changeHolder
+	with: [:change|
+	    change isMethodCodeChange
+		ifTrue:[ SyntaxHighlighter codeAspectMethod ]
+		ifFalse:[ SyntaxHighlighter codeAspectExpression ]
+	] argument: self changeHolder
 
     "Created: / 29-11-2011 / 11:21:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 27-07-2012 / 22:03:31 / cg"
@@ -2736,8 +3741,8 @@
     "return/create the 'readonlyHolder' value holder (automatically generated)"
 
     readonlyHolder isNil ifTrue:[
-        readonlyHolder := ValueHolder new.
-        readonlyHolder addDependent:self.
+	readonlyHolder := ValueHolder new.
+	readonlyHolder addDependent:self.
     ].
     ^ readonlyHolder
 !
@@ -2748,16 +3753,16 @@
     |oldValue newValue|
 
     readonlyHolder notNil ifTrue:[
-        oldValue := readonlyHolder value.
-        readonlyHolder removeDependent:self.
+	oldValue := readonlyHolder value.
+	readonlyHolder removeDependent:self.
     ].
     readonlyHolder := something.
     readonlyHolder notNil ifTrue:[
-        readonlyHolder addDependent:self.
+	readonlyHolder addDependent:self.
     ].
     newValue := readonlyHolder value.
     oldValue ~~ newValue ifTrue:[
-        self update:#value with:newValue from:readonlyHolder.
+	self update:#value with:newValue from:readonlyHolder.
     ].
 !
 
@@ -2765,7 +3770,7 @@
     "return/create the 'showdiffHolder' value holder (automatically generated)"
 
     showdiffHolder isNil ifTrue:[
-        showdiffHolder := ValueHolder new.
+	showdiffHolder := ValueHolder new.
     ].
     ^ showdiffHolder
 !
@@ -2776,6 +3781,7 @@
     showdiffHolder := something.
 ! !
 
+
 !ChangeSetBrowser2::ChangeEditor methodsFor:'change & update'!
 
 changeChanged
@@ -2797,14 +3803,15 @@
 
 
     changedObject == changeHolder ifTrue:[
-         self changeChanged.
-         ^ self.
+	 self changeChanged.
+	 ^ self.
     ].
     super update:something with:aParameter from:changedObject
 
     "Modified: / 29-11-2011 / 11:15:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ChangeSetBrowser2 class methodsFor:'documentation'!
 
 version
@@ -2815,6 +3822,12 @@
     ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetBrowser2.st,v 1.43 2012-12-14 09:09:51 stefan Exp $'
 !
 
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+!
+
 version_SVN
     ^ '§Id: Tools__ChangeSetBrowser.st 7486 2009-10-26 22:06:24Z vranyj1 §'
 ! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__ChangeSetDiffInfo.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,161 @@
+"
+ 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:#ChangeSetDiffInfo
+	instanceVariableNames:'specBase specA specB specMerge diffset same'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Diff'
+!
+
+!ChangeSetDiffInfo 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.
+"
+! !
+
+!ChangeSetDiffInfo class methodsFor:'instance creation'!
+
+specA: specA specB: specB
+
+    ^self specA: specA specB: specB specBase: nil
+
+    "Created: / 20-03-2012 / 11:17:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+specA: specA specB: specB specBase: specBase
+
+    ^self specA: specA specB: specB specBase: specBase specMerge: nil
+
+    "Created: / 20-03-2012 / 11:19:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+specA: specA specB: specB specBase: specBase specMerge: specMerge
+
+    ^self new 
+        specA: specA; 
+        specB: specB; 
+        specBase: specBase;
+        specMerge: specMerge
+
+    "Created: / 20-03-2012 / 11:19:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetDiffInfo methodsFor:'accessing'!
+
+diffset
+    ^ diffset
+!
+
+same
+    ^ same
+!
+
+specA
+    ^ specA
+!
+
+specA:something
+    specA := something.
+!
+
+specB
+    ^ specB
+!
+
+specB:something
+    specB := something.
+!
+
+specBase
+    ^ specBase
+!
+
+specBase:something
+    specBase := something.
+!
+
+specMerge
+    ^ specMerge
+!
+
+specMerge:something
+    specMerge := something.
+!
+
+specMergeFile
+    ^ specMerge file
+
+    "Created: / 20-03-2012 / 15:04:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetDiffInfo methodsFor:'queries'!
+
+isDiff2
+
+    ^specBase isNil
+
+    "Created: / 20-03-2012 / 10:22:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isDiff3
+
+    ^specBase notNil
+
+    "Created: / 20-03-2012 / 10:23:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isMerge
+
+    ^
+"/    specBase notNil and:[
+        specMerge notNil
+"/    ]
+
+    "Created: / 20-03-2012 / 10:23:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetDiffInfo methodsFor:'read / write'!
+
+read
+    "Reads changesets and generates diffset and 'same' change list"
+
+    | diff |
+    diff := ChangeSetDiff new.
+    diff
+        versionA: specA changeSet
+        versionB: specB changeSet
+        versionBase: (specBase notNil ifTrue:[specBase changeSet] ifFalse:[nil]).
+    diffset := diff diffset.
+    same := diff same.
+
+    "Created: / 19-03-2012 / 22:10:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetDiffInfo class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: Tools__ChangeSetDiffInfo.st 8036 2012-08-03 15:14:04Z vranyj1 $'
+! !
--- a/Tools__ChangeSetDiffList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ChangeSetDiffList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -28,7 +28,9 @@
 "{ NameSpace: Tools }"
 
 BrowserListWithFilter subclass:#ChangeSetDiffList
-	instanceVariableNames:'listHolder listEntryLabelGenerator listEntryIconGenerator'
+	instanceVariableNames:'listHolder listSelectionHolder listEntryLabelGenerator
+		listEntryIconGenerator showVersionMethodDiffsHolder
+		showCopyrightMethodDiffsHolder highlightConflictsHolder'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-Diff'
@@ -104,7 +106,7 @@
           collection: (
            (InputFieldSpec
               name: 'Filter'
-              layout: (LayoutFrame 0 0 0 0 0 1 25 0)
+              layout: (LayoutFrame 0 0 0 0 0 1 22 0)
               initiallyInvisible: true
               model: filterPatternHolder
               immediateAccept: true
@@ -113,14 +115,12 @@
               acceptOnTab: false
               acceptOnPointerLeave: false
               emptyFieldReplacementText: 'Search Filter...'
-              usePreferredHeight: true
-              useDynamicPreferredHeight: true
               postBuildCallback: postBuildFilterView:
             )
            (SelectionInListModelViewSpec
               name: 'List'
               layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              model: selectionHolder
+              model: listSelectionHolder
               menu: menuHolderWithShowFilter
               hasHorizontalScrollBar: true
               hasVerticalScrollBar: true
@@ -128,6 +128,8 @@
               multipleSelectOk: true
               useIndex: false
               highlightMode: line
+              ignoreReselect: false
+              postBuildCallback: postBuildListView:
             )
            )
          
@@ -149,11 +151,15 @@
      (if this app is embedded in a subCanvas)."
 
     ^ #(
+        #highlightConflictsHolder
         #inGeneratorHolder
         #listEntryIconGenerator
         #listEntryLabelGenerator
         #menuHolder
         #outGeneratorHolder
+        #showCopyrightMethodDiffsHolder
+        #showFilterHolder
+        #showVersionMethodDiffsHolder
       ).
 
 ! !
@@ -174,10 +180,49 @@
 
 listEntryLabelGenerator:aBlock
     listEntryLabelGenerator := aBlock.
+!
+
+selection: entry
+    self updateList.
+    self selectionHolder value: (Array with: entry).
+
+    "Created: / 17-01-2013 / 13:41:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-01-2013 / 16:37:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffList methodsFor:'aspects'!
 
+highlightConflictsHolder
+    "return/create the 'highlightConflictsHolder' value holder (automatically generated)"
+
+    highlightConflictsHolder isNil ifTrue:[
+        highlightConflictsHolder := ValueHolder new.
+        highlightConflictsHolder addDependent:self.
+    ].
+    ^ highlightConflictsHolder
+
+    "Modified (format): / 03-08-2012 / 14:02:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+highlightConflictsHolder:something
+    "set the 'highlightConflictsHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    highlightConflictsHolder notNil ifTrue:[
+        oldValue := highlightConflictsHolder value.
+        highlightConflictsHolder removeDependent:self.
+    ].
+    highlightConflictsHolder := something.
+    highlightConflictsHolder notNil ifTrue:[
+        highlightConflictsHolder addDependent:self.
+    ].
+    newValue := highlightConflictsHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:highlightConflictsHolder.
+    ].
+!
+
 listHolder
     "return/create the 'difflistHolder' value holder (automatically generated)"
 
@@ -185,18 +230,167 @@
         listHolder := ValueHolder new.
     ].
     ^ listHolder
+!
+
+listSelectionHolder
+    "return/create the 'listSelectionHolder' value holder (automatically generated)"
+
+    listSelectionHolder isNil ifTrue:[
+        listSelectionHolder := ValueHolder new.
+        listSelectionHolder addDependent:self.
+    ].
+    ^ listSelectionHolder
+
+    "Modified: / 17-01-2013 / 16:51:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showCopyrightMethodDiffsHolder
+    "return/create the 'showCopyrightMethodDiffsHolder' value holder (automatically generated)"
+
+    showCopyrightMethodDiffsHolder isNil ifTrue:[
+        showCopyrightMethodDiffsHolder := ValueHolder new.
+        showCopyrightMethodDiffsHolder addDependent:self.
+    ].
+    ^ showCopyrightMethodDiffsHolder
+!
+
+showCopyrightMethodDiffsHolder:something
+    "set the 'showCopyrightMethodDiffsHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    showCopyrightMethodDiffsHolder notNil ifTrue:[
+        oldValue := showCopyrightMethodDiffsHolder value.
+        showCopyrightMethodDiffsHolder removeDependent:self.
+    ].
+    showCopyrightMethodDiffsHolder := something.
+    showCopyrightMethodDiffsHolder notNil ifTrue:[
+        showCopyrightMethodDiffsHolder addDependent:self.
+    ].
+    newValue := showCopyrightMethodDiffsHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:showCopyrightMethodDiffsHolder.
+    ].
+!
+
+showVersionMethodDiffsHolder
+    "return/create the 'showVersionMethodDiffsHolder' value holder (automatically generated)"
+
+    showVersionMethodDiffsHolder isNil ifTrue:[
+        showVersionMethodDiffsHolder := ValueHolder new.
+        showVersionMethodDiffsHolder addDependent:self.
+    ].
+    ^ showVersionMethodDiffsHolder
+!
+
+showVersionMethodDiffsHolder:something
+    "set the 'showVersionMethodDiffsHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    showVersionMethodDiffsHolder notNil ifTrue:[
+        oldValue := showVersionMethodDiffsHolder value.
+        showVersionMethodDiffsHolder removeDependent:self.
+    ].
+    showVersionMethodDiffsHolder := something.
+    showVersionMethodDiffsHolder notNil ifTrue:[
+        showVersionMethodDiffsHolder addDependent:self.
+    ].
+    newValue := showVersionMethodDiffsHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:showVersionMethodDiffsHolder.
+    ].
 ! !
 
 !ChangeSetDiffList methodsFor:'change & update'!
 
+enqueueDelayedUpdate:something with:aParameter from:changedObject
+    immediateUpdate value ifTrue:[
+        self delayedUpdate:something with:aParameter from:changedObject
+    ] ifFalse:[
+        super enqueueDelayedUpdate:something with:aParameter from:changedObject
+    ]
+
+    "Created: / 17-01-2013 / 16:25:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+enqueueDelayedUpdateList
+    immediateUpdate value ifTrue:[
+        self updateList
+    ] ifFalse:[
+        super enqueueDelayedUpdateList
+    ].
+
+    "Created: / 17-01-2013 / 16:44:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+listSelectionChanged
+    | lsel |
+
+    lsel := listSelectionHolder value ? #().
+    self selectionHolder 
+        removeDependent: self;
+        value: (lsel collect:[:e | e model ]);
+        addDependent: self.
+    self enqueueDelayedUpdateOutputGenerator
+
+    "Created: / 17-01-2013 / 14:26:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-01-2013 / 16:23:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectionChanged
+    | sel lsel llist |
+
+    listSelectionHolder isNil ifTrue:[ ^ self ].
+
+    listSelectionHolder removeDependent: self.
+    sel := (self selectionHolder value) ? #().
+    llist := self listHolder value.
+    lsel := llist select:[:leach | sel includesIdentical: leach model].
+    listSelectionHolder value: lsel.
+    listSelectionHolder addDependent: self.
+
+    super selectionChanged.
+
+    "Created: / 17-01-2013 / 14:11:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-01-2013 / 16:36:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 update: aspect with: param from: sender
 
     aspect == #resolution ifTrue:[^(self componentAt: #List) invalidateRepairNow: true].
+
+    sender == listSelectionHolder ifTrue:[
+        self listSelectionChanged.
+        ^self
+    ].
         
-    sender == selectionHolder ifTrue:[^self selectionChanged].
+    sender == selectionHolder ifTrue:[
+        self selectionChanged.
+        ^self.
+    ].
+    sender == showVersionMethodDiffsHolder ifTrue:[
+        ^self updateList.
+        self.
+    ].
+
+    sender == showCopyrightMethodDiffsHolder ifTrue:[
+        ^self updateList.
+        self.
+    ].
+
+    sender == highlightConflictsHolder ifTrue:[
+        listView notNil ifTrue:[
+            listView scrolledView invalidate.
+        ].
+        ^self.
+    ].
+
+
+
     super update: aspect with: param from: sender.
 
-    "Modified: / 24-11-2009 / 18:34:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-01-2013 / 15:26:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffList methodsFor:'generators'!
@@ -206,9 +400,29 @@
     ^Iterator on:
         [:whatToDo|
         self selectionHolder value do:
-            [:each|each model do: whatToDo]]
+            [:each|each notNil ifTrue:[each do: whatToDo]]]
+
+    "Modified: / 17-01-2013 / 17:12:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetDiffList methodsFor:'initialization'!
+
+initialize
+    "Invoked when a new instance is created."
 
-    "Modified: / 26-11-2009 / 17:23:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "/ please change as required (and remove this comment)
+    "/ listHolder := nil.
+    "/ listSelectionHolder := nil.
+    "/ listEntryLabelGenerator := nil.
+    "/ listEntryIconGenerator := nil.
+    "/ showVersionMethodDiffsHolder := nil.
+    "/ showCopyrightMethodDiffsHolder := nil.
+    "/ highlightConflictsHolder := nil.
+
+    super initialize.
+    immediateUpdate := true asValue.
+
+    "Modified: / 17-01-2013 / 16:51:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffList methodsFor:'private'!
@@ -266,27 +480,52 @@
     "Nothing to do"
 !
 
+shouldDisplayDiff: aDiffCompoment
+    "Return true if given diff component should be displayed"
+
+    (showVersionMethodDiffsHolder value not and:[aDiffCompoment isForVersionMethod])
+        ifTrue:[ ^ false ].
+
+    (showCopyrightMethodDiffsHolder value not and:[aDiffCompoment isForCopyrightMethod])
+        ifTrue:[ ^ false ].
+
+    aDiffCompoment isDiffSet 
+        ifTrue:[ ^ aDiffCompoment diffs anySatisfy:[:diff|self shouldDisplayDiff: diff]].
+
+    ^true
+
+    "Created: / 03-08-2012 / 14:38:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 updateList
     "Superclass Tools::BrowserList says that I am responsible to implement this method"
     
-    | newDiffs newList |
-    self listHolder value ? #() do: [:entry|entry model removeDependent: self].
+    | newDiffs oldList newList anyNew |
+    oldList := self listHolder value ? #().
+    oldList do: [:entry|entry model removeDependent: self].
 
     newDiffs := self inGeneratorHolder value ? #().
     (newDiffs isKindOf: ChangeSetDiffComponent) ifTrue:
         [newDiffs := newDiffs diffs].
+
     newDiffs := self filterList: newDiffs.
     newList := OrderedCollection new:16.    
-    newDiffs do:
-        [:item|
-        newList add:(ListEntry model: item application: self).
-        item addDependent: self].
+    anyNew := false.
+    newDiffs do:[:item|
+        (self shouldDisplayDiff: item) ifTrue:[
+            | entry |
 
+            entry := oldList detect:[:e|e model == entry] ifNone:[anyNew := true. (ListEntry model: item application: self)].
+            newList add:entry.
+        ].
+    ].
     newList sort:[:a :b|a label < b label].
-    self listHolder value:newList
+    (anyNew or:[oldList size ~~ newList size]) ifTrue:[
+        self listHolder value:newList
+    ].
 
     "Modified: / 07-07-2011 / 14:17:26 / jv"
-    "Modified: / 29-11-2011 / 16:08:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-01-2013 / 16:40:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffList::ListEntry class methodsFor:'instance creation'!
@@ -341,19 +580,29 @@
 
 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
+    | label icon oldPaint |
+    label := self label.
+"/    ((application topApplication askFor:#isMerge) and:[model isMerged not]) ifTrue:[
+    (application highlightConflictsHolder value and:[model "isConflict"isMerged not]) ifTrue:[
+        oldPaint := aGC paint.
+        aGC paint: TextDiff3Tool colorConflict.
+        '!!' displayOn: aGC x: x  y:y opaque: opaque.
+        aGC paint: oldPaint.
+        label := label asText allBold"/; colorizeAllWith: Color red darker.
+    ].
+    (icon := self icon) notNil ifTrue:[icon displayOn: aGC x: x + 10 y: y - icon height opaque: opaque].
+    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>"
+    "Modified: / 15-01-2013 / 11:35:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffList class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetDiffList.st,v 1.6 2011-11-30 11:14:53 vrany Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__ChangeSetDiffList.st,v 1.6 2011/11/30 11:14:53 vrany Exp §'
 !
 
 version_SVN
-    ^ '§Id: SVN__DiffList.st 341 2011-06-09 07:22:53Z vranyj1 §'
+    ^ '$Id: Tools__ChangeSetDiffList.st 8089 2013-01-17 17:16:17Z vranyj1 $'
 ! !
--- a/Tools__ChangeSetDiffTool.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ChangeSetDiffTool.st	Wed Jan 30 11:15:09 2013 +0000
@@ -28,17 +28,27 @@
 "{ NameSpace: Tools }"
 
 ApplicationModel subclass:#ChangeSetDiffTool
-	instanceVariableNames:'listHolder singleSelectionHolder diffsetHolder titleHolder
-		firstColSelectionHolder navigatorPanelSpecHolder diffMenuHolder
-		diffsetHolderPrivate selectionHolder versionATextHolder
-		versionBTextHolder'
-	classVariableNames:''
+	instanceVariableNames:'infoPanel diffInfoHolder listHolder singleSelectionHolder
+		diffsetHolder titleHolder firstColSelectionHolder
+		navigatorPanelSpecHolder diffMenuHolder diffsetHolderPrivate
+		selectionHolder versionATextHolder versionBTextHolder
+		versionBaseTextHolder textDiffToolHolder
+		textDiffToolWindowSpecHolder mergeHolder mergeData
+		mergeDataHolder showVersionMethodDiffsHolder
+		showCopyrightMethodDiffsHolder highlightConflictsHolder
+		hasDiffsetHolder mergeSavedHolder canSaveHolder
+		autoMoveToNextConflictHolder textDiff2App textDiff3App list1App
+		list2App alreadyWarnedAboutUnsavedMerge labelSpecHolder
+		labelsView navigatorAndDiffPanelView'
+	classVariableNames:'LastDiffInfo AutoMoveToNextConflict'
 	poolDictionaries:''
 	category:'Interface-Diff'
 !
 
 SimpleDialog subclass:#OpenDialog
-	instanceVariableNames:'doAcceptEnabled changesetSpecAHolder changesetSpecBHolder'
+	instanceVariableNames:'doAcceptEnabled changesetSpecAHolder changesetSpecBHolder
+		changesetSpecBaseHolder changesetSpecBaseEnabledHolder
+		changesetSpecMergedHolder changesetSpecMergedEnabledHolder'
 	classVariableNames:'LastDirectory'
 	poolDictionaries:''
 	privateIn:ChangeSetDiffTool
@@ -73,6 +83,79 @@
  OTHER DEALINGS IN THE SOFTWARE.
 
 "
+!
+
+documentation
+"
+    Tool for viewing/merging differences between two change sets
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+!
+
+examples
+"
+  Starting the application:
+                                                                [exBegin]
+    Tools::ChangeSetDiffTool open
+
+                                                                [exEnd]
+
+  Show differences between CVS HEAD and SVN jv-branch 
+  NewSystemBrowser:
+                                                                [exBegin]
+    | cvsCs svnCs |
+
+    cvsCs := ChangeSet fromFile:'/home/jv/Private/Projects/SmalltalkX/sources/branches/exept@HEAD/stx/libtool/Tools__NewSystemBrowser.st'.
+    svnCs := ChangeSet fromFile:'/home/jv/Private/Projects/SmalltalkX/sources/branches/jv2/build/stx/libtool/Tools__NewSystemBrowser.st'.
+
+    Tools::ChangeSetDiffTool new
+        open;
+        fileMenuOpenOnDiffBetween: cvsCs and: svnCs.
+
+                                                                [exEnd]
+
+  Show differences between CVS HEAD and SVN jv-branch and
+  base version of NewSystemBrowser:
+
+                                                                [exBegin]
+    | cvsBaseCs cvsCs svnCs |
+
+    cvsBaseCs := ChangeSet fromFile:'/home/jv/Private/Projects/SmalltalkX/sources/branches/exept@2012-01-01/stx/libtool/Tools__NewSystemBrowser.st'.
+    cvsCs := ChangeSet fromFile:'/home/jv/Private/Projects/SmalltalkX/sources/branches/exept@HEAD/stx/libtool/Tools__NewSystemBrowser.st'.
+    svnCs := ChangeSet fromFile:'/home/jv/Private/Projects/SmalltalkX/sources/branches/jv2/build/stx/libtool/Tools__NewSystemBrowser.st'.
+
+    Tools::ChangeSetDiffTool new
+        open;
+        fileMenuOpenOnDiffBetween: cvsCs and: svnCs base: cvsBaseCs
+
+                                                                [exEnd]
+
+
+
+"
+! !
+
+!ChangeSetDiffTool class methodsFor:'accessing'!
+
+autoMoveToNextConflict
+    ^AutoMoveToNextConflict == true
+
+    "Created: / 17-01-2013 / 19:49:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+autoMoveToNextConflict: aBoolean
+    AutoMoveToNextConflict := aBoolean
+
+    "Created: / 17-01-2013 / 19:49:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffTool class methodsFor:'accessing - defaults'!
@@ -104,6 +187,34 @@
 
 !ChangeSetDiffTool class methodsFor:'image specs'!
 
+mergeDiff3AToMergedArrow30x30
+
+    ^ToolbarIconLibrary mergeDiff3AToMergedArrow30x30
+
+    "Created: / 17-01-2013 / 23:51:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mergeDiff3BToMergedArrow30x30
+
+    ^ToolbarIconLibrary mergeDiff3BToMergedArrow30x30
+
+    "Created: / 17-01-2013 / 23:51:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mergeDiff3BaseToAArrow30x30
+
+    ^ToolbarIconLibrary mergeDiff3BaseToAArrow30x30
+
+    "Created: / 17-01-2013 / 23:52:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mergeDiff3BaseToBArrow30x30
+
+    ^ToolbarIconLibrary mergeDiff3BaseToBArrow30x30
+
+    "Created: / 17-01-2013 / 23:51:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 versionA24x24
 
     ^ToolbarIconLibrary versionA24x24
@@ -116,10 +227,182 @@
     ^ToolbarIconLibrary versionB24x24
 
     "Created: / 24-03-2010 / 20:50:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+versionBase24x24
+
+    ^ToolbarIconLibrary versionBase24x24
+
+    "Created: / 17-01-2013 / 22:53:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+versionMerged24x24
+
+    ^ToolbarIconLibrary versionMerged24x24
+
+    "Created: / 17-01-2013 / 22:54:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetDiffTool class methodsFor:'interface opening'!
+
+open
+    | tool |
+
+    tool := self new.
+    tool open.
+    tool window sensor pushUserEvent: #fileMenuOpen for: tool.
+
+    "Created: / 01-08-2012 / 15:13:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffTool class methodsFor:'interface specs'!
 
+labelDiff2Spec
+    "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:Tools::ChangeSetDiffTool andSelector:#labelDiff2Spec
+     Tools::ChangeSetDiffTool new openInterface:#labelDiff2Spec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: labelDiff2Spec
+        window: 
+       (WindowSpec
+          label: 'Label'
+          name: 'Label'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 600 60)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (UISubSpecification
+              name: 'LabelA'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 0.5)
+              minorKey: versionALabelSpec
+            )
+           (UISubSpecification
+              name: 'LabelB'
+              layout: (LayoutFrame 0 0 0 0.5 0 1 0 1)
+              minorKey: versionBLabelSpec
+            )
+           )
+         
+        )
+      )
+!
+
+labelDiff3Spec
+    "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:Tools::ChangeSetDiffTool andSelector:#labelDiff3Spec
+     Tools::ChangeSetDiffTool new openInterface:#labelDiff3Spec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: labelDiff3Spec
+        window: 
+       (WindowSpec
+          label: 'Label'
+          name: 'Label'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 600 90)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (UISubSpecification
+              name: 'LabelBase'
+              layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+              minorKey: versionBaseLabelSpec
+            )
+           (UISubSpecification
+              name: 'LabelA'
+              layout: (LayoutFrame 0 0 30 0 0 1 60 0)
+              minorKey: versionALabelSpec
+            )
+           (UISubSpecification
+              name: 'LabelB'
+              layout: (LayoutFrame 0 0 60 0 0 1 0 1)
+              minorKey: versionBLabelSpec
+            )
+           )
+         
+        )
+      )
+!
+
+labelMergeSpec
+    "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:Tools::ChangeSetDiffTool andSelector:#labelMergeSpec
+     Tools::ChangeSetDiffTool new openInterface:#labelMergeSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: labelMergeSpec
+        window: 
+       (WindowSpec
+          label: 'Label'
+          name: 'Label'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 600 120)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (UISubSpecification
+              name: 'LabelBase'
+              layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+              minorKey: mergeBaseLabelSpec
+            )
+           (UISubSpecification
+              name: 'LabelA'
+              layout: (LayoutFrame 0 0 30 0 0 1 60 0)
+              minorKey: mergeALabelSpec
+            )
+           (UISubSpecification
+              name: 'LabelB'
+              layout: (LayoutFrame 0 0 60 0 0 1 90 0)
+              minorKey: mergeBLabelSpec
+            )
+           (UISubSpecification
+              name: 'SubSpecification1'
+              layout: (LayoutFrame 0 0 90 0 0 1 0 1)
+              minorKey: mergeMergeLabelSpec
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 17-01-2013 / 23:47:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 labelSpec
     "This resource specification was automatically generated
      by the UIPainter of ST/X."
@@ -171,8 +454,8 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:Tools::ChangeSetDiffBrowser andSelector:#oneColumnNavigatorSpec
-     Tools::ChangeSetDiffBrowser new openInterface:#oneColumnNavigatorSpec
+     UIPainter new openOnClass:Tools::ChangeSetDiffTool andSelector:#oneColumnNavigatorSpec
+     Tools::ChangeSetDiffTool new openInterface:#oneColumnNavigatorSpec
     "
 
     <resource: #canvas>
@@ -200,25 +483,40 @@
              (Array
                 
                (SubChannelInfoSpec
+                  subAspect: highlightConflictsHolder
+                  aspect: highlightConflictsHolder
+                ) 
+               (SubChannelInfoSpec
                   subAspect: inGeneratorHolder
                   aspect: diffsetHolderPrivate
-                ) 
+                )
+                
                (SubChannelInfoSpec
                   subAspect: listEntryLabelGenerator
                   aspect: diffListEntryLabelGeneratorAspect
-                )
-                
+                ) 
                (SubChannelInfoSpec
                   subAspect: menuHolder
                   aspect: listMenuHolder
-                ) 
+                )
+                
                (SubChannelInfoSpec
                   subAspect: outGeneratorHolder
                   aspect: selectionHolder
+                ) 
+               (SubChannelInfoSpec
+                  subAspect: showCopyrightMethodDiffsHolder
+                  aspect: showCopyrightMethodDiffsHolder
+                )
+                
+               (SubChannelInfoSpec
+                  subAspect: showVersionMethodDiffsHolder
+                  aspect: showVersionMethodDiffsHolder
                 )
               )
               createNewApplication: true
               createNewBuilder: false
+              postBuildCallback: list1View:
             )
            )
          
@@ -234,8 +532,8 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:Tools::ChangeSetDiffBrowser andSelector:#twoColumnNavigatorSpec
-     Tools::ChangeSetDiffBrowser new openInterface:#twoColumnNavigatorSpec
+     UIPainter new openOnClass:Tools::ChangeSetDiffTool andSelector:#twoColumnNavigatorSpec
+     Tools::ChangeSetDiffTool new openInterface:#twoColumnNavigatorSpec
     "
 
     <resource: #canvas>
@@ -260,7 +558,7 @@
              (SpecCollection
                 collection: (
                  (SubCanvasSpec
-                    name: 'FirstColumn'
+                    name: 'LeftList'
                     hasHorizontalScrollBar: false
                     hasVerticalScrollBar: false
                     majorKey: #'Tools::ChangeSetDiffList'
@@ -268,28 +566,43 @@
                    (Array
                       
                      (SubChannelInfoSpec
+                        subAspect: highlightConflictsHolder
+                        aspect: highlightConflictsHolder
+                      ) 
+                     (SubChannelInfoSpec
                         subAspect: inGeneratorHolder
                         aspect: diffsetHolderPrivate
-                      ) 
+                      )
+                      
                      (SubChannelInfoSpec
                         subAspect: listEntryLabelGenerator
                         aspect: diffListEntryLabelGeneratorAspect
-                      )
-                      
+                      ) 
                      (SubChannelInfoSpec
                         subAspect: menuHolder
                         aspect: listMenuHolder
-                      ) 
+                      )
+                      
                      (SubChannelInfoSpec
                         subAspect: outGeneratorHolder
                         aspect: firstColSelectionHolder
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: showCopyrightMethodDiffsHolder
+                        aspect: showCopyrightMethodDiffsHolder
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: showVersionMethodDiffsHolder
+                        aspect: showVersionMethodDiffsHolder
                       )
                     )
                     createNewApplication: true
                     createNewBuilder: true
+                    postBuildCallback: list1View:
                   )
                  (SubCanvasSpec
-                    name: 'SecondColumn'
+                    name: 'RightList'
                     hasHorizontalScrollBar: false
                     hasVerticalScrollBar: false
                     majorKey: #'Tools::ChangeSetDiffList'
@@ -297,25 +610,40 @@
                    (Array
                       
                      (SubChannelInfoSpec
+                        subAspect: highlightConflictsHolder
+                        aspect: highlightConflictsHolder
+                      ) 
+                     (SubChannelInfoSpec
                         subAspect: inGeneratorHolder
                         aspect: firstColSelectionHolder
-                      ) 
+                      )
+                      
                      (SubChannelInfoSpec
                         subAspect: listEntryLabelGenerator
                         aspect: diffListEntryLabelGeneratorAspect
-                      )
-                      
+                      ) 
                      (SubChannelInfoSpec
                         subAspect: menuHolder
                         aspect: listMenuHolder
-                      ) 
+                      )
+                      
                      (SubChannelInfoSpec
                         subAspect: outGeneratorHolder
                         aspect: selectionHolder
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: showCopyrightMethodDiffsHolder
+                        aspect: showCopyrightMethodDiffsHolder
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: showVersionMethodDiffsHolder
+                        aspect: showVersionMethodDiffsHolder
                       )
                     )
                     createNewApplication: true
                     createNewBuilder: true
+                    postBuildCallback: list2View:
                   )
                  )
                
@@ -351,71 +679,350 @@
           label: 'Diff Browser'
           name: 'Diff Browser'
           min: (Point 10 10)
-          bounds: (Rectangle 0 0 665 397)
+          bounds: (Rectangle 0 0 1024 768)
           menu: mainMenu
         )
         component: 
        (SpecCollection
           collection: (
-           (UISubSpecification
-              name: 'Label'
-              layout: (LayoutFrame 0 0 0 0 0 1 56 0)
-              minorKey: labelSpec
+           (MenuPanelSpec
+              name: 'ToolBar'
+              layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+              menu: toolbarMenu
+              textDefault: true
             )
-           (VariableVerticalPanelSpec
-              name: 'Panel'
-              layout: (LayoutFrame 0 0 56 0 0 1 0 1)
-              showHandle: true
+           (SubCanvasSpec
+              name: 'InfoPanel'
+              layout: (LayoutFrame 0 0 30 0 0 1 70 0)
+              level: 0
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              clientKey: infoPanel
+              createNewBuilder: false
+            )
+           (ViewSpec
+              name: 'Content'
+              layout: (LayoutFrame 0 0 30 0 0 1 0 1)
               component: 
              (SpecCollection
                 collection: (
                  (SubCanvasSpec
-                    name: 'NavigatorPanel'
+                    name: 'Labels'
+                    layout: (LayoutFrame 0 0 0 0 0 1 60 0)
                     hasHorizontalScrollBar: false
                     hasVerticalScrollBar: false
-                    specHolder: navigatorPanelSpecHolder
+                    specHolder: labelSpecHolder
                     createNewBuilder: false
+                    postBuildCallback: labelsView:
                   )
-                 (SubCanvasSpec
-                    name: 'TextDiff'
-                    majorKey: #'Tools::TextDiffTool'
-                    minorKey: windowSpecForEmbedding
-                    subAspectHolders: 
-                   (Array
-                      
-                     (SubChannelInfoSpec
-                        subAspect: labelAHolder
-                        aspect: versionALabelHolder
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: labelBHolder
-                        aspect: versionBLabelHolder
-                      )
-                      
-                     (SubChannelInfoSpec
-                        subAspect: textAHolder
-                        aspect: versionATextHolder
-                      ) 
-                     (SubChannelInfoSpec
-                        subAspect: textBHolder
-                        aspect: versionBTextHolder
-                      )
+                 (VariableVerticalPanelSpec
+                    name: 'NavigatorAndDiffPanel'
+                    layout: (LayoutFrame 0 0 60 0 0 1 0 1)
+                    initiallyInvisible: true
+                    visibilityChannel: hasDiffsetHolder
+                    showHandle: true
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (SubCanvasSpec
+                          name: 'NavigatorPanel'
+                          hasHorizontalScrollBar: false
+                          hasVerticalScrollBar: false
+                          specHolder: navigatorPanelSpecHolder
+                          createNewBuilder: false
+                        )
+                       (SubCanvasSpec
+                          name: 'SubCanvas1'
+                          specHolder: textDiffToolWindowSpecHolder
+                          clientHolder: textDiffToolHolder
+                          createNewBuilder: false
+                        )
+                       )
+                     
                     )
-                    createNewApplication: true
-                    createNewBuilder: true
+                    handles: (Any 0.3 1.0)
+                    postBuildCallback: navigatorAndDiffPanelView:
                   )
                  )
                
               )
-              handles: (Any 0.5 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 18-01-2013 / 00:07:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetDiffTool class methodsFor:'interface specs - labels'!
+
+mergeALabelSpec
+    "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:Tools::ChangeSetDiffTool andSelector:#mergeALabelSpec
+     Tools::ChangeSetDiffTool new openInterface:#mergeALabelSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: mergeALabelSpec
+        window: 
+       (WindowSpec
+          label: 'Version A'
+          name: 'Version A'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 30)
+          backgroundColor: (Color 79.6078431372549 90.5882352941177 69.4117647058823)
+          forceRecursiveBackground: true
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'mergeDiff3BaseToAArrow30x30'
+              name: 'Label1'
+              layout: (LayoutFrame 0 0 0 0 30 0 0 1)
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+            )
+           (LabelSpec
+              label: 'versionA24x24'
+              name: 'VersionAIcon'
+              layout: (LayoutFrame 30 0 -12 0.5 57 0 12 0.5)
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+            )
+           (LabelSpec
+              label: 'mergeDiff3AToMergedArrow30x30'
+              name: 'Label2'
+              layout: (LayoutFrame 60 0 0 0 90 0 0 1)
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+            )
+           (LabelSpec
+              label: 'Version A'
+              name: 'VersionALabel'
+              layout: (LayoutFrame 90 0 0 0 0 1 0 1)
+              translateLabel: true
+              labelChannel: versionALabelHolder
+              resizeForLabel: true
+              adjust: left
+            )
+           (LabelSpec
+              label: '(A)'
+              name: 'ALabel'
+              layout: (LayoutFrame -30 1 0 0 0 1 0 1)
+              translateLabel: true
             )
            )
          
         )
       )
-! !
-
-!ChangeSetDiffTool class methodsFor:'interface specs - labels'!
+!
+
+mergeBLabelSpec
+    "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:Tools::ChangeSetDiffTool andSelector:#versionBLabelSpec
+     Tools::ChangeSetDiffTool new openInterface:#versionBLabelSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: versionBLabelSpec
+        window: 
+       (WindowSpec
+          label: 'Version B'
+          name: 'Version B'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 30)
+          backgroundColor: (Color 100.0 90.5882352941177 60.0)
+          forceRecursiveBackground: true
+        )
+        component: 
+       (SpecCollection
+          collection: (
+            (LabelSpec
+              label: 'mergeDiff3BaseToBArrow30x30'
+              name: 'Label1'
+              layout: (LayoutFrame 0 0 0 0 30 0 0 1)
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+            )
+           (LabelSpec
+              label: 'versionB24x24'
+              name: 'VersionBIcon'
+              layout: (LayoutFrame 30 0 -12 0.5 57 0 12 0.5)
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+            )
+            (LabelSpec
+              label: 'mergeDiff3BToMergedArrow30x30'
+              name: 'Label2'
+              layout: (LayoutFrame 60 0 0 0 90 0 0 1)
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+            )
+           (LabelSpec
+              label: 'Version B'
+              name: 'VersionBLabel'
+              layout: (LayoutFrame 90 0 0 0 167 0 0 1)
+              translateLabel: true
+              labelChannel: versionBLabelHolder
+              resizeForLabel: true
+              adjust: left
+              useDynamicPreferredWidth: true
+              usePreferredWidth: true
+            )
+             (LabelSpec
+             label: '(B)'
+             name: 'BLabel'
+             layout: (LayoutFrame -30 1 0 0 0 1 0 1)
+             translateLabel: true
+            )
+           )
+         
+        )
+      )
+
+    "Created: / 17-01-2013 / 23:44:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mergeBaseLabelSpec
+    "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:Tools::ChangeSetDiffTool andSelector:#versionBaseLabelSpec
+     Tools::ChangeSetDiffTool new openInterface:#versionBaseLabelSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: versionBaseLabelSpec
+        window: 
+       (WindowSpec
+          label: 'Version Base'
+          name: 'Version Base'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 30)
+          backgroundColor: (Color 67.843137254902 87.843137254902 96.4705882352941)
+          forceRecursiveBackground: true
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'versionBase24x24'
+              name: 'VersionBIcon'
+              layout: (LayoutFrame 0 0 -12 0.5 27 0 12 0.5)
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+            )
+           (LabelSpec
+              label: 'Version B'
+              name: 'VersionBLabel'
+              layout: (LayoutFrame 90 0 0 0 190 0 0 1)
+              translateLabel: true
+              labelChannel: versionBaseLabelHolder
+              resizeForLabel: true
+              adjust: left
+              useDynamicPreferredWidth: true
+              usePreferredWidth: true
+            )
+           (LabelSpec
+              label: '(Base)'
+              name: 'BaseLabel'
+              layout: (LayoutFrame -50 1 0 0 0 1 0 1)
+              translateLabel: true
+            )
+           )
+         
+        )
+      )
+
+    "Created: / 17-01-2013 / 23:44:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mergeMergeLabelSpec
+    "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:Tools::ChangeSetDiffTool andSelector:#mergeMergeLabelSpec
+     Tools::ChangeSetDiffTool new openInterface:#mergeMergeLabelSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: mergeMergeLabelSpec
+        window: 
+       (WindowSpec
+          label: 'Version Merged'
+          name: 'Version Merged'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 30)
+          backgroundColor: (Color 96.2554360265507 72.7275501640345 95.8999008163577)
+          forceRecursiveBackground: true
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'versionMerged24x24'
+              name: 'VersionMergedIcon'
+              layout: (LayoutFrame 60 0 -12 0.5 87 0 12 0.5)
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+            )
+           (LabelSpec
+              label: 'Version B'
+              name: 'VersionMergedLabel'
+              layout: (LayoutFrame 90 0 0 0 267 0 0 1)
+              translateLabel: true
+              labelChannel: versionMergedLabelHolder
+              resizeForLabel: true
+              adjust: left
+              useDynamicPreferredWidth: true
+              usePreferredWidth: true
+            )
+           (LabelSpec
+              label: '(Merge)'
+              name: 'MergedLabel'
+              layout: (LayoutFrame -70 1 0 0 0 1 0 1)
+              translateLabel: true
+            )
+           )
+         
+        )
+      )
+!
 
 versionALabelSpec
     "This resource specification was automatically generated
@@ -533,20 +1140,141 @@
       )
 
     "Modified: / 16-12-2011 / 14:17:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+versionBaseLabelSpec
+    "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:Tools::ChangeSetDiffTool andSelector:#versionBaseLabelSpec
+     Tools::ChangeSetDiffTool new openInterface:#versionBaseLabelSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: versionBaseLabelSpec
+        window: 
+       (WindowSpec
+          label: 'Version Base'
+          name: 'Version Base'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 30)
+          backgroundColor: (Color 67.843137254902 87.843137254902 96.4705882352941)
+          forceRecursiveBackground: true
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'versionBase24x24'
+              name: 'VersionBIcon'
+              layout: (LayoutFrame 0 0 -12 0.5 27 0 12 0.5)
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+            )
+           (LabelSpec
+              label: 'Version B'
+              name: 'VersionBLabel'
+              layout: (LayoutFrame 30 0 0 0 190 0 0 1)
+              translateLabel: true
+              labelChannel: versionBaseLabelHolder
+              resizeForLabel: true
+              adjust: left
+              useDynamicPreferredWidth: true
+              usePreferredWidth: true
+            )
+           (LabelSpec
+              label: '(Base)'
+              name: 'BaseLabel'
+              layout: (LayoutFrame -50 1 0 0 0 1 0 1)
+              translateLabel: true
+            )
+           )
+         
+        )
+      )
+!
+
+versionMergeLabelSpec
+    "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:Tools::ChangeSetDiffTool andSelector:#versionBaseLabelSpec
+     Tools::ChangeSetDiffTool new openInterface:#versionBaseLabelSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: versionBaseLabelSpec
+        window: 
+       (WindowSpec
+          label: 'Version Merged'
+          name: 'Version Merged'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 30)
+          backgroundColor: (Color 96.2554360265507 72.7275501640345 95.8999008163577)
+          forceRecursiveBackground: true
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'versionMerged24x24'
+              name: 'VersionMergedIcon'
+              layout: (LayoutFrame 0 0 -12 0.5 27 0 12 0.5)
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+            )
+           (LabelSpec
+              label: 'Version B'
+              name: 'VersionMergedLabel'
+              layout: (LayoutFrame 30 0 0 0 190 0 0 1)
+              translateLabel: true
+              labelChannel: versionMergedLabelHolder
+              resizeForLabel: true
+              adjust: left
+              useDynamicPreferredWidth: true
+              usePreferredWidth: true
+            )
+           (LabelSpec
+              label: '(Merge)'
+              name: 'MergedLabel'
+              layout: (LayoutFrame -70 1 0 0 0 1 0 1)
+              translateLabel: true
+            )
+           )
+         
+        )
+      )
+
+    "Created: / 17-01-2013 / 22:53:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffTool class methodsFor:'menu specs'!
 
-listMenu
+listMenuDiff
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
 
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
-     MenuEditor new openOnClass:SVN::DiffBrowser andSelector:#listMenu
-     (Menu new fromLiteralArrayEncoding:(SVN::DiffBrowser listMenu)) startUp
+     MenuEditor new openOnClass:Tools::ChangeSetDiffTool andSelector:#listMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::ChangeSetDiffTool listMenu)) startUp
     "
 
     <resource: #menu>
@@ -555,6 +1283,7 @@
      #(Menu
         (
          (MenuItem
+            enabled: hasSelection
             label: 'Browse'
             itemValue: listMenuBrowse
             translateLabel: true
@@ -563,6 +1292,7 @@
             label: '-'
           )
          (MenuItem
+            enabled: hasSelection
             label: 'Load version A'
             itemValue: listMenuLoadVersionA
             nameKey: LoadVersionA
@@ -570,6 +1300,7 @@
             labelImage: (ResourceRetriever #'SVN::IconLibrary' versionA16x16 'Load version A')
           )
          (MenuItem
+            enabled: hasSelection
             label: 'Load version B'
             itemValue: listMenuLoadVersionB
             nameKey: LoadVersionB
@@ -580,10 +1311,117 @@
             label: '-'
           )
          (MenuItem
+            label: 'Open in...'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  enabled: hasSelection
+                  label: 'Inspector'
+                  itemValue: listMenuInspect
+                  translateLabel: true
+                )
+               (MenuItem
+                  enabled: hasSelection
+                  label: 'kdiff3'
+                  itemValue: listMenuOpenInExternal:
+                  translateLabel: true
+                  argument: 'kdiff3'
+                )
+               (MenuItem
+                  enabled: hasSelection
+                  label: 'meld'
+                  itemValue: listMenuOpenInExternal:
+                  translateLabel: true
+                  argument: 'meld'
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
+      )
+
+    "Created: / 16-01-2013 / 15:47:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+listMenuMerge
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+
+    "
+     MenuEditor new openOnClass:Tools::ChangeSetDiffTool andSelector:#listMenuMerge
+     (Menu new fromLiteralArrayEncoding:(Tools::ChangeSetDiffTool listMenuMerge)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
             enabled: hasSelection
-            label: 'Inspect'
-            itemValue: listMenuInspect
-            translateLabel: true
+            label: 'Browse'
+            itemValue: listMenuBrowse
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Merge using A'
+            itemValue: listMenuMergeUsingA
+            shortcutKey: Cmd2
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Merge using B'
+            itemValue: listMenuMergeUsingB
+            shortcutKey: Cmd3
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Merge using Base'
+            itemValue: listMenuMergeUsingBase
+            shortcutKey: Cmd1
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Open in...'
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  enabled: hasSelection
+                  label: 'Inspector'
+                  itemValue: listMenuInspect
+                )
+               (MenuItem
+                  enabled: hasSelection
+                  label: 'kdiff3'
+                  itemValue: listMenuOpenInExternal:
+                  argument: 'kdiff3'
+                )
+               (MenuItem
+                  enabled: hasSelection
+                  label: 'meld'
+                  itemValue: listMenuOpenInExternal:
+                  argument: 'meld'
+                )
+               )
+              nil
+              nil
+            )
           )
          )
         nil
@@ -611,21 +1449,35 @@
         (
          (MenuItem
             label: 'File'
-            translateLabel: true
             submenu: 
            (Menu
               (
                (MenuItem
-                  label: 'Open'
+                  label: 'Open...'
                   itemValue: fileMenuOpen
-                  translateLabel: true
                   shortcutKey: Ctrlo
                 )
                (MenuItem
-                  enabled: false
-                  label: 'Save as patch '
+                  enabled: canSave
+                  label: 'Save'
+                  itemValue: fileMenuSave
+                  shortcutKey: Ctrls
+                )
+               (MenuItem
+                  enabled: canSaveAs
+                  label: 'Save As...'
+                  itemValue: fileMenuSaveAs
+                )
+               (MenuItem
+                  enabled: canSaveAsPatch
+                  label: 'Save As Patch '
                   itemValue: fileMenuSaveAsPatch
-                  translateLabel: true
+                  isVisible: false
+                )
+               (MenuItem
+                  enabled: canSaveMergedAs
+                  label: 'Save Merged as... '
+                  itemValue: fileMenuSaveMergedAs
                 )
                (MenuItem
                   label: '-'
@@ -633,7 +1485,7 @@
                (MenuItem
                   label: 'Exit'
                   itemValue: closeRequest
-                  translateLabel: true
+                  shortcutKey: Ctrlq
                 )
                )
               nil
@@ -642,37 +1494,190 @@
           )
          (MenuItem
             label: 'Changeset'
-            translateLabel: true
             submenu: 
            (Menu
               (
                (MenuItem
+                  enabled: isDiff2Or3
                   label: 'Browse changes (A)'
                   itemValue: changesetMenuBrowseA
-                  translateLabel: true
+                )
+               (MenuItem
+                  enabled: isDiff2Or3
+                  label: 'Browse changes (B)'
+                  itemValue: changesetMenuBrowseB
+                )
+               (MenuItem
+                  enabled: isDiff3
+                  label: 'Browse changes (Base)'
+                  itemValue: changesetMenuBrowseBase
+                )
+               (MenuItem
+                  enabled: isMerge
+                  label: 'Browse changes (Merge)'
+                  itemValue: changesetMenuBrowseMerge
                 )
-                (MenuItem
-                    label: 'Browse changes (B)'
-                    itemValue: changesetMenuBrowseB
-                    translateLabel: true
-                    )
-
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: 'Movement'
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'Go to Previous Delta'
+                  itemValue: menuMoveUp
+                )
+               (MenuItem
+                  label: 'Go To Next Delta'
+                  itemValue: menuMoveDown
+                )
+               (MenuItem
+                  label: 'Go to Previous Conflict'
+                  itemValue: menuMoveUpConflict
+                  shortcutKey: CmdCursorUp
+                )
+               (MenuItem
+                  label: 'Go to Next Conflict'
+                  itemValue: menuMoveDownConflict
+                  shortcutKey: CmdCursorDown
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Automatically Go to Next Conflict'
+                  indication: autoMoveToNextConflictHolder
+                )
                )
               nil
               nil
             )
           )
          (MenuItem
-            label: 'Diff'
-            translateLabel: true
+            label: 'Change'
             submenuChannel: listMenu
           )
+         (MenuItem
+            label: 'View'
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'Show Diffs in Version Methods'
+                  indication: showVersionMethodDiffsHolder
+                )
+               (MenuItem
+                  label: 'Show Diff in #copyright Methods'
+                  indication: showCopyrightMethodDiffsHolder
+                )
+               (MenuItem
+                  label: 'Highlight Conflicts'
+                  indication: highlightConflictsHolder
+                )
+               )
+              nil
+              nil
+            )
+          )
          )
         nil
         nil
       )
-
-    "Modified: / 16-12-2011 / 14:24:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+toolbarMenu
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+
+    "
+     MenuEditor new openOnClass:Tools::ChangeSetDiffTool andSelector:#toolbarMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::ChangeSetDiffTool toolbarMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Open'
+            itemValue: fileMenuOpen
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary loadFromFile22x22Icon)
+          )
+         (MenuItem
+            enabled: canSaveHolder
+            label: 'Save'
+            itemValue: fileMenuSave
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary saveImageIcon)
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Go to Previous Delta'
+            itemValue: menuMoveUp
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergePrev24x24)
+          )
+         (MenuItem
+            label: 'Go to Next Delta'
+            itemValue: menuMoveDown
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergeNext24x24)
+          )
+         (MenuItem
+            label: 'Go to Previous Conflict'
+            itemValue: menuMoveUpConflict
+            isButton: true
+            isVisible: mergeHolder
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergePrevConflict24x24)
+          )
+         (MenuItem
+            label: 'Go to Next Conflict'
+            itemValue: menuMoveDownConflict
+            isButton: true
+            isVisible: mergeHolder
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergeNextConflict24x24)
+          )
+         (MenuItem
+            label: '-'
+            isVisible: mergeHolder
+          )
+         (MenuItem
+            label: 'Merge using Base'
+            itemValue: listMenuMergeUsingBase
+            isButton: true
+            isVisible: mergeHolder
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergeUsingBaseAll24x24)
+          )
+         (MenuItem
+            label: 'Merge using A'
+            itemValue: listMenuMergeUsingA
+            isButton: true
+            isVisible: mergeHolder
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergeUsingAAll24x24)
+          )
+         (MenuItem
+            label: 'Merge using B'
+            itemValue: listMenuMergeUsingB
+            isButton: true
+            isVisible: mergeHolder
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergeUsingBAll24x24)
+          )
+         )
+        nil
+        nil
+      )
 ! !
 
 !ChangeSetDiffTool class methodsFor:'plugIn spec'!
@@ -719,6 +1724,13 @@
     "Created: / 20-11-2009 / 20:43:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+diffInfo
+
+    ^self diffInfoHolder value
+
+    "Created: / 20-03-2012 / 11:00:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 diffset
     
     ^self diffsetHolder value
@@ -751,11 +1763,28 @@
     "Created: / 22-10-2008 / 11:30:03 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
-selection: selection
-
-    ^self selectionHolder value: selection
-
-    "Created: / 22-10-2008 / 11:30:11 / Jan Vrany <vranyj1@fel.cvut.cz>"
+showCopyrightMethodDiffs
+    ^self showCopyrightMethodDiffsHolder value
+
+    "Created: / 10-08-2012 / 16:07:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showCopyrightMethodDiffs: aBoolean
+    self showCopyrightMethodDiffsHolder value: aBoolean
+
+    "Created: / 10-08-2012 / 16:07:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showVersionMethodDiffs
+    ^ self showVersionMethodDiffsHolder value
+
+    "Created: / 10-08-2012 / 16:07:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showVersionMethodDiffs: aBoolean
+    self showVersionMethodDiffsHolder value: aBoolean
+
+    "Created: / 10-08-2012 / 16:08:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 title: aString
@@ -765,7 +1794,65 @@
     "Created: / 19-11-2009 / 15:44:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!ChangeSetDiffTool methodsFor:'accessing - selection'!
+!ChangeSetDiffTool methodsFor:'accessing-menus'!
+
+listMenu
+    | spec |
+
+    spec := self isMerge ifTrue:[self class listMenuMerge] ifFalse:[self class listMenuDiff].
+    ^Menu decodeFromLiteralArray: spec.
+
+    "Created: / 16-01-2013 / 15:50:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetDiffTool methodsFor:'accessing-selection'!
+
+selection: entry
+
+
+    self isOneColumnBrowser ifTrue:[
+        list1App selection: entry
+    ] ifFalse:[
+        | parent |
+
+        parent := self diffsetHolderPrivate value diffs 
+                    detect:[:each|each diffs includes: entry] ifNone:[nil].
+        parent notNil ifTrue:[
+            list1App selection: parent.
+            list1App updateOutputGenerator.
+            list2App updateList.
+            list2App selection: entry.
+
+        ]
+    ]
+
+    "Created: / 22-10-2008 / 11:30:11 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 17-01-2013 / 16:28:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+theFirstSelectedEntry
+    | selection |
+
+    selection := self selectionHolder value.
+    selection isNil ifTrue:[ ^ nil ].
+    selection := selection collect:[:e|e]. "/selection might be an Iterator
+    selection  isEmpty ifTrue:[ ^nil ].
+    ^selection first
+
+    "Created: / 17-01-2013 / 16:58:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+theLastSelectedEntry
+    | selection |
+
+    selection := self selectionHolder value.
+    selection isNil ifTrue:[ ^ nil ].
+    selection := selection collect:[:e|e]. "/selection might be an Iterator
+    selection  isEmpty ifTrue:[ ^nil ].
+    ^selection last
+
+    "Created: / 17-01-2013 / 13:22:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
 
 theSingleSelectedObject
 
@@ -788,8 +1875,124 @@
     "Modified: / 20-11-2009 / 19:54:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!ChangeSetDiffTool methodsFor:'accessing-subapps'!
+
+textDiff2Tool
+    textDiff2App isNil ifTrue:[
+        textDiff2App := TextDiff2Tool new
+            labelAHolder: self versionALabelHolder;
+             textAHolder: self versionATextHolder;
+
+            labelBHolder: self versionBLabelHolder;
+             textBHolder: self versionBTextHolder;
+
+            yourself
+    ].
+    ^textDiff2App
+
+    "Created: / 16-03-2012 / 13:58:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-01-2013 / 20:36:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+textDiff3Tool
+    textDiff3App isNil ifTrue:[
+        textDiff3App := TextDiff3Tool new
+            mergeHolder: self mergeHolder;
+            mergeDataHolder: self mergeDataHolder;
+
+            labelCHolder: self versionBaseLabelHolder;
+             textCHolder: self versionBaseTextHolder;
+
+            labelBHolder: self versionBLabelHolder;
+             textBHolder: self versionBTextHolder;
+
+
+            labelAHolder: self versionALabelHolder;
+             textAHolder: self versionATextHolder;
+
+            yourself
+    ].
+    ^textDiff3App
+
+    "Created: / 16-03-2012 / 15:16:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-01-2013 / 20:36:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetDiffTool methodsFor:'accessing-subviews'!
+
+labelsView:something
+    labelsView := something.
+!
+
+list1View: aView
+    list1App := aView application.
+
+    "Created: / 17-01-2013 / 13:44:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+list2View: aView
+    list2App := aView application.
+
+    "Created: / 17-01-2013 / 13:44:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+navigatorAndDiffPanelView:something
+    navigatorAndDiffPanelView := something.
+! !
+
 !ChangeSetDiffTool methodsFor:'aspects'!
 
+autoMoveToNextConflictHolder
+
+    autoMoveToNextConflictHolder isNil ifTrue:[
+        autoMoveToNextConflictHolder := AspectAdaptor forAspect: #autoMoveToNextConflict.
+        autoMoveToNextConflictHolder subject: self class.
+    ].
+    ^autoMoveToNextConflictHolder
+
+    "Created: / 17-01-2013 / 19:51:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+canSaveHolder
+    "return/create the 'canSaveHolder' value holder (automatically generated)"
+
+    canSaveHolder isNil ifTrue:[
+        canSaveHolder := false asValue
+    ].
+    ^ canSaveHolder
+
+    "Modified: / 17-01-2013 / 21:00:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+diffInfoHolder
+    "return/create the 'diffInfoHolder' value holder (automatically generated)"
+
+    diffInfoHolder isNil ifTrue:[
+        diffInfoHolder := ValueHolder new.
+        diffInfoHolder addDependent:self.
+    ].
+    ^ diffInfoHolder
+!
+
+diffInfoHolder:something
+    "set the 'diffInfoHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    diffInfoHolder notNil ifTrue:[
+        oldValue := diffInfoHolder value.
+        diffInfoHolder removeDependent:self.
+    ].
+    diffInfoHolder := something.
+    diffInfoHolder notNil ifTrue:[
+        diffInfoHolder addDependent:self.
+    ].
+    newValue := diffInfoHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:diffInfoHolder.
+    ].
+!
+
 diffListEntryLabelGeneratorAspect
 
     ^nil
@@ -846,6 +2049,23 @@
     ^ firstColSelectionHolder
 !
 
+hasDiffsetHolder
+    "return/create the 'hasDiffsetHolder' value holder (automatically generated)"
+
+    hasDiffsetHolder isNil ifTrue:[
+        hasDiffsetHolder := false asValue
+    ].
+    ^ hasDiffsetHolder
+
+    "Modified: / 01-08-2012 / 17:16:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hasDiffsetHolder:something
+    "set the 'hasDiffsetHolder' value holder (automatically generated)"
+
+    hasDiffsetHolder := something.
+!
+
 hasSelectionHolder
 
     |holder|
@@ -861,6 +2081,44 @@
     "Modified: / 22-10-2008 / 12:38:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
+highlightConflictsHolder
+    "return/create the 'highlightConflictsHolder' value holder (automatically generated)"
+
+    highlightConflictsHolder isNil ifTrue:[
+        highlightConflictsHolder := true asValue
+    ].
+    ^ highlightConflictsHolder
+
+    "Modified: / 01-08-2012 / 17:07:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+highlightConflictsHolder:something
+    "set the 'highlightConflictsHolder' value holder (automatically generated)"
+
+    highlightConflictsHolder := something.
+!
+
+infoPanel
+    infoPanel isNil ifTrue:[
+        infoPanel := InlineMessageDialog new
+    ].
+    ^ infoPanel
+
+    "Created: / 09-02-2012 / 19:23:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+labelSpecHolder
+    "return/create the 'labelSpecHolder' value holder (automatically generated)"
+
+    labelSpecHolder isNil ifTrue:[
+        labelSpecHolder := nil asValue
+
+    ].
+    ^ labelSpecHolder
+
+    "Modified: / 17-01-2013 / 23:32:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 listHolder
     "return/create the 'listHolder' value holder (automatically generated)"
 
@@ -874,13 +2132,71 @@
 
 listMenuHolder
     diffMenuHolder isNil ifTrue:[ 
-        diffMenuHolder := ValueHolder with:(Menu decodeFromLiteralArray: self class listMenu) 
+"/        diffMenuHolder := ValueHolder with:self listMenu 
+      diffMenuHolder := BlockValue with:[:v|self listMenu] argument: self mergeHolder
     ].
     ^ diffMenuHolder
 
     "Created: / 21-11-2009 / 18:52:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 09-12-2009 / 23:34:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 18-11-2011 / 14:57:47 / cg"
+    "Modified: / 16-01-2013 / 15:59:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+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)"
+
+    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.
+!
+
+mergeSavedHolder
+    "return/create the 'mergeSavedHolder' value holder (automatically generated)"
+
+    mergeSavedHolder isNil ifTrue:[
+        mergeSavedHolder := false asValue
+    ].
+    ^ mergeSavedHolder
+
+    "Modified: / 15-01-2013 / 11:39:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 nameAspect
@@ -902,6 +2218,14 @@
     "Modified: / 20-11-2009 / 20:12:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+secondColSelectionHolder
+    "return/create the valueHolder 'firstColSelectionHolder'"
+
+    ^self selectionHolder
+
+    "Created: / 17-01-2013 / 12:49:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 selectionHolder
     "return/create the 'selectionHolder' value holder (automatically generated)"
 
@@ -915,6 +2239,40 @@
     "Modified (format): / 06-07-2011 / 12:25:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+showCopyrightMethodDiffsHolder
+    "return/create the 'showCopyrightMethodDiffsHolder' value holder (automatically generated)"
+
+    showCopyrightMethodDiffsHolder isNil ifTrue:[
+        showCopyrightMethodDiffsHolder := true asValue
+    ].
+    ^ showCopyrightMethodDiffsHolder
+
+    "Modified: / 01-08-2012 / 17:06:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showCopyrightMethodDiffsHolder:something
+    "set the 'showCopyrightMethodDiffsHolder' value holder (automatically generated)"
+
+    showCopyrightMethodDiffsHolder := something.
+!
+
+showVersionMethodDiffsHolder
+    "return/create the 'showVersionMethodDiffsHolder' value holder (automatically generated)"
+
+    showVersionMethodDiffsHolder isNil ifTrue:[
+        showVersionMethodDiffsHolder := true asValue.
+    ].
+    ^ showVersionMethodDiffsHolder
+
+    "Modified: / 18-04-2012 / 19:02:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showVersionMethodDiffsHolder:something
+    "set the 'showVersionMethodDiffsHolder' value holder (automatically generated)"
+
+    showVersionMethodDiffsHolder := something.
+!
+
 singleSelectionHolder
     "return/create the 'singleSelectionHolder' value holder (automatically generated)"
 
@@ -926,6 +2284,40 @@
     "Modified: / 10-11-2009 / 11:09:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+textDiffToolHolder
+    "return/create the 'textDiffToolHolder' value holder (automatically generated)"
+
+    textDiffToolHolder isNil ifTrue:[
+        textDiffToolHolder := ValueHolder with: self textDiff2Tool.
+    ].
+    ^ textDiffToolHolder
+
+    "Modified: / 16-03-2012 / 13:57:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+textDiffToolHolder:something
+    "set the 'textDiffToolHolder' value holder (automatically generated)"
+
+    textDiffToolHolder := something.
+!
+
+textDiffToolWindowSpecHolder
+    "return/create the 'textDiffToolWindowSpecHolder' value holder (automatically generated)"
+
+    textDiffToolWindowSpecHolder isNil ifTrue:[
+        textDiffToolWindowSpecHolder := #windowSpecForEmbedding asValue.
+    ].
+    ^ textDiffToolWindowSpecHolder
+
+    "Modified: / 16-03-2012 / 13:57:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+textDiffToolWindowSpecHolder:something
+    "set the 'textDiffToolWindowSpecHolder' value holder (automatically generated)"
+
+    textDiffToolWindowSpecHolder := something.
+!
+
 titleHolder
     "return/create the 'titleHolder' value holder (automatically generated)"
 
@@ -973,44 +2365,131 @@
 
     "Created: / 06-07-2011 / 12:05:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 18-11-2011 / 14:57:59 / cg"
+!
+
+versionBaseLabelHolder
+
+    ^(AspectAdaptor forAspect: #versionBaseLabel)
+        subjectChannel: self diffsetHolder
+
+    "Created: / 16-03-2012 / 15:18:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+versionBaseTextHolder
+
+    versionBaseTextHolder isNil ifTrue:[
+        versionBaseTextHolder := ValueHolder new
+    ].
+    ^versionBaseTextHolder
+
+    "Modified: / 18-11-2011 / 14:57:59 / cg"
+    "Created: / 16-03-2012 / 15:19:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffTool methodsFor:'change & update'!
 
+diffInfoChanged
+
+    | info |
+    info := self diffInfoHolder value.
+    self hasDiffsetHolder value: false.
+    self mergeSavedHolder value: false.
+    self canSaveHolder value: false.
+    info notNil ifTrue:[
+        self infoPanel showProgressLabeled: (resources string:'Reading changesets') while: [
+            info read.
+            self diffset: info diffset.
+        ].
+    ].
+
+    "Created: / 19-03-2012 / 23:40:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-01-2013 / 21:12:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 diffsetChanged
 
     | ds |
 
     ds := self diffsetHolder value.
+    ds depth = 2 ifTrue:[
+        self beTwoColumn.
+    ] ifFalse:[
+        self beSingleColumn.
+    ].
+    self hasDiffsetHolder value: ds notNil.
+    self canSaveHolder value: self canSave.
+    alreadyWarnedAboutUnsavedMerge := false.
+
 
     self diffsetHolderPrivate value: 
         (self isOneColumnBrowser 
-            ifTrue:[ds flattened]
-            ifFalse:[ds value]).
-
+            ifTrue:[ds flattened sort]
+            ifFalse:[ds value sort]).
+    self autoMoveToNextConflictHolder value ifTrue:[
+        self menuMoveDownConflict.
+    ].
     self versionALabelHolder value: ds versionALabel.
     self versionBLabelHolder value: ds versionBLabel.
+    self versionBaseLabelHolder value: ds versionBaseLabel.
+    self updateViews.
 
     "Created: / 05-12-2009 / 11:03:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 29-06-2011 / 08:24:18 / Jan Vrany <enter your email here>"
+    "Modified: / 21-01-2013 / 21:13:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mergeDataChanged
+    "Resolution has been changed..."
+
+    self canSaveHolder value: self canSave.
+    alreadyWarnedAboutUnsavedMerge := false.
+    (self autoMoveToNextConflictHolder value and:[mergeData isMerged]) ifTrue:[
+        self menuMoveDownConflict
+    ]
+
+    "Created: / 17-01-2013 / 20:06:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-01-2013 / 21:20:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mergeDataHolderChanged
+    mergeData notNil ifTrue:[mergeData removeDependent: self].
+    mergeData := self mergeDataHolder value.
+    mergeData notNil ifTrue:[mergeData addDependent: self].
+
+    "Created: / 16-01-2013 / 09:24:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-01-2013 / 20:06:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 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 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: / 06-07-2011 / 12:47:43 / 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
@@ -1025,9 +2504,26 @@
         ^self.
     ].
 
+    sender == diffInfoHolder ifTrue:[
+        self diffInfoChanged.
+        ^self.
+    ].
+
+    sender == mergeDataHolder ifTrue:[
+        self mergeDataHolderChanged.
+        ^self.
+    ].
+
+    sender == mergeData ifTrue:[
+        "Resolution has been changed..."    
+        self mergeDataChanged.
+        ^self.
+    ].
+
     ^super update: aspect with: param from: sender
 
     "Created: / 05-12-2009 / 11:02:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 17-01-2013 / 20:06:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 updateListMenu
@@ -1052,6 +2548,45 @@
                     enable
             ].
     ].
+!
+
+updateViews
+
+    (self diffInfo notNil and:[self diffInfo isDiff3]) ifTrue:[
+        self diffInfo isMerge ifTrue:[
+            self mergeHolder value: true.
+            self labelSpecHolder value: #labelMergeSpec.
+            self labelHeight: 120.
+        ] ifFalse:[
+            self mergeHolder value: false.
+            self labelSpecHolder value: #labelDiff3Spec.
+            self labelHeight: 90.
+        ].
+        self textDiffToolHolder value isDiff3 ifFalse:[
+            textDiffToolHolder value: self textDiff3Tool.
+        ].
+
+
+    ] ifFalse:[
+        self mergeHolder value: false.
+        self labelSpecHolder value: #labelDiff2Spec.
+        self labelHeight: 60.
+
+        self textDiffToolHolder value isDiff2 ifFalse:[
+            textDiffToolHolder value: self textDiff2Tool.
+        ].
+    ].
+
+    "Created: / 20-03-2012 / 10:21:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-01-2013 / 21:16:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetDiffTool methodsFor:'hooks'!
+
+commonPostOpen
+    self updateViews
+
+    "Created: / 21-01-2013 / 21:18:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffTool methodsFor:'initialization'!
@@ -1068,44 +2603,101 @@
 
 changesetMenuBrowse: changeset
 
-    Tools::ChangeSetBrowser2 openOn: changeset
+    Tools::ChangeSetBrowser2 openOn: (changeset , self diffInfo same)
 
     "Created: / 16-12-2011 / 14:31:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 changesetMenuBrowseA
 
-    self changesetMenuBrowse: self diffsetHolder value changesetA
+    self changesetMenuBrowse: self diffInfo diffset changesetA
 
     "Created: / 16-12-2011 / 14:23:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 changesetMenuBrowseB
 
-    self changesetMenuBrowse: self diffsetHolder value changesetB
+    self changesetMenuBrowse: self diffInfo diffset changesetB
 
     "Created: / 16-12-2011 / 14:27:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+changesetMenuBrowseBase
+
+    self changesetMenuBrowse: self diffInfo diffset changesetBase
+
+    "Created: / 20-03-2012 / 13:34:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changesetMenuBrowseMerge
+
+    self changesetMenuBrowse: self diffInfo diffset changesetMerged
+
+    "Created: / 20-03-2012 / 14:34:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 fileMenuOpen
 
-    | dlg a b |
+    | dlg info |
     dlg := OpenDialog new.
+    info := LastDiffInfo.
+    info isNil ifFalse:[
+        info := ChangeSetDiffInfo new.
+        info specMerge: ChangeSetSpec changeSet
+    ].
+    dlg diffInfo: info.
     dlg open ifFalse:[^self].
-    a := dlg changeSetA.
-    b := dlg changeSetB.
-    ^self fileMenuOpenOnDiffBetween: a and: b
-
-    "Modified: / 06-07-2011 / 11:36:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    info := dlg diffInfo.
+
+    ^self fileMenuOpenOnDiffInfo: info
+
+    "Modified: / 18-09-2012 / 11:37:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileMenuOpenOnDiffInfo: info
+
+    LastDiffInfo := info.    
+    self diffInfoHolder value: info
+
+    "Created: / 20-03-2012 / 00:04:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileMenuSave
+    self fileMenuSaveAs: self diffInfo specMergeFile.
+
+    "Modified: / 20-03-2012 / 15:07:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-fileMenuOpenOnDiffBetween: a and: b
-
-    self diffset: (ChangeSetDiff versionA: a versionB: b).
-
-    "Created: / 21-03-2011 / 23:23:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 29-06-2011 / 08:10:17 / Jan Vrany <enter your email here>"
-    "Modified: / 06-07-2011 / 12:56:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+fileMenuSaveAs
+    | info file suggestion |
+
+    info := self diffInfo.
+    suggestion := (info specMerge isFile ifTrue:['merged.chg'] ifFalse:[info specMergeFile]).
+    file := Dialog requestFileName:'Select File for Save' default: (suggestion) pattern:('*.chg;*.st').
+    file isNil ifTrue:[^self].
+    self fileMenuSaveAs: file.
+
+    "Modified: / 20-03-2012 / 15:07:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileMenuSaveAs: aFilename
+
+    self fileMenuSaveAs: aFilename format: #classSource
+
+    "Created: / 20-03-2012 / 15:07:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileMenuSaveAs: aFilename format: format
+
+    | changesToSave |
+
+    changesToSave := (self diffInfo diffset changesetMerged) , (self diffInfo same).
+    changesToSave := changesToSave reject:[:chg|chg isDoIt].
+    changesToSave saveToFile: aFilename format: format.
+    self mergeSavedHolder value: true
+
+    "Created: / 20-03-2012 / 15:09:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 15-01-2013 / 11:40:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 fileMenuSaveAsPatch
@@ -1117,6 +2709,13 @@
     "Modified: / 05-12-2009 / 12:37:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+fileMenuSaveMergedAs
+
+    self halt.
+
+    "Modified: / 03-08-2012 / 15:39:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 listMenuBrowse
 
     | items |
@@ -1166,6 +2765,118 @@
         [:diff|diff versionB apply]
 
     "Modified: / 09-12-2009 / 23:10:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+listMenuMergeUsingA
+    self textDiffToolHolder value doMergeAllUsingA
+
+    "Modified: / 16-01-2013 / 15:57:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+listMenuMergeUsingB
+    self textDiffToolHolder value doMergeAllUsingB
+
+    "Created: / 16-01-2013 / 15:57:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+listMenuMergeUsingBase
+    self textDiffToolHolder value doMergeAllUsingBase
+
+    "Created: / 16-01-2013 / 15:57:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+listMenuOpenInExternal: command
+
+    (OperatingSystem canExecuteCommand: command) ifFalse:[
+        Dialog warn: 'Sorry. ', command , ' is not installed or not in PATH'
+    ].
+
+    self selection do:[:item|
+        | base a b cmd |
+        item versionBase notNil ifTrue:[
+            base := Filename newTemporary.
+            base writingFileDo:[:s|s nextPutAll: item versionBase source].
+        ].
+        a := Filename newTemporary.
+        a writingFileDo:[:s|s nextPutAll: item versionA source].
+        b := Filename newTemporary.
+        b writingFileDo:[:s|s nextPutAll: item versionB source].
+
+        base isNil ifTrue:[
+            cmd := '%1 %2 %3' bindWith: command with: a pathName with: b pathName
+        ] ifFalse:[
+            cmd := '%1 %4 %2 %3 ' bindWith: command with: a pathName with: b pathName with: base pathName.
+        ].
+        [ OperatingSystem executeCommand: cmd.
+        a remove.
+        b remove.
+        base notNil ifTrue:[base remove]. ] fork
+    ]
+
+    "Modified: / 17-03-2012 / 08:55:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+menuMoveDown
+    self menuMoveDownToSuchThat: [:entry|true]
+
+    "Modified: / 17-01-2013 / 16:53:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+menuMoveDownConflict
+    self menuMoveDownToSuchThat: [:entry|entry isMerged not]
+
+    "Modified: / 17-01-2013 / 16:53:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+menuMoveDownToSuchThat: aBlock
+    | oldSel newSel |
+    oldSel := self theLastSelectedEntry.
+    newSel := self diffsetHolderPrivate value nextEntryAfter: oldSel suchThat: aBlock.
+    self menuMoveTo: newSel.
+
+    "Created: / 17-01-2013 / 16:52:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+menuMoveTo: entry
+
+"/    self window sensor pushUserEvent:#selection: for: self withArgument: entry
+    self selection: entry.
+
+    "Created: / 17-01-2013 / 13:03:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-01-2013 / 16:27:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+menuMoveUp
+    self menuMoveUpToSuchThat: [:entry|true]
+
+    "Created: / 17-01-2013 / 16:58:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+menuMoveUpConflict
+    self menuMoveUpToSuchThat: [:entry|entry isMerged not]
+
+    "Created: / 17-01-2013 / 17:00:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+menuMoveUpToSuchThat: aBlock
+    | oldSel newSel |
+    oldSel := self theFirstSelectedEntry.
+    newSel := self diffsetHolderPrivate value nextEntryBefore: oldSel suchThat: aBlock.
+    self menuMoveTo: newSel.
+
+    "Created: / 17-01-2013 / 16:58:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetDiffTool methodsFor:'private'!
+
+labelHeight: height
+    (labelsView notNil and:[navigatorAndDiffPanelView notNil]) ifTrue:[
+        labelsView layout: (labelsView layout copy bottomOffset: height).
+        navigatorAndDiffPanelView layout: (navigatorAndDiffPanelView layout copy topOffset: height).
+    ].
+
+    "Created: / 17-01-2013 / 23:38:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-01-2013 / 21:17:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffTool methodsFor:'queries'!
@@ -1181,11 +2892,100 @@
     "Modified: / 21-11-2009 / 18:46:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+canSave
+    "Returns true, if a merged file can be saved"
+
+    ^self canSaveAs and:[self diffInfo specMerge isFile]
+
+    "Created: / 20-03-2012 / 15:00:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-01-2013 / 21:09:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+canSaveAs
+    "Returns true, if a merged file can be saved"
+
+    | info |
+    info := self diffInfo.
+    info isNil ifTrue:[^false].
+    ^info isMerge and:[info diffset notNil and:[info diffset isMerged]]
+
+    "Created: / 20-03-2012 / 15:03:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-01-2013 / 20:57:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+canSaveAsPatch
+
+    ^false
+
+    "Created: / 20-03-2012 / 14:55:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+canSaveMergedAs
+    "Returns true, if a merged file can be saved"
+
+    | info |
+    info := self diffInfo.
+    info isNil ifTrue:[^false].
+    ^info isMerge
+
+    "Created: / 03-08-2012 / 15:25:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 hasSelection
 
     ^[self selection notNil]
 
     "Created: / 03-11-2009 / 10:48:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetDiffTool methodsFor:'startup & release'!
+
+closeRequest
+
+    "/Warn about unsaved merge..."
+    (alreadyWarnedAboutUnsavedMerge not and:[self canSave and:[mergeSavedHolder value not]]) ifTrue:[
+        alreadyWarnedAboutUnsavedMerge := true.
+        self infoPanel 
+            reset;
+            beInformation;
+            message: (self resources string:'Output file (merge) has not been saved. Save?');
+            addButtonWithLabel: (self resources string:'Save') action: [
+                self fileMenuSave.
+                self closeDownViews.
+            ];
+            addButtonWithLabel: (self resources string:'Cancel') action:[self infoPanel hide];
+            show.
+        ^self.
+    ].
+    self closeDownViews.
+
+    "Created: / 17-01-2013 / 21:02:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetDiffTool methodsFor:'testing'!
+
+isDiff2
+    ^self diffInfo notNil and:[self diffInfo isDiff2]
+
+    "Created: / 20-03-2012 / 13:27:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isDiff2Or3
+    ^self diffInfo notNil and:[self diffInfo isDiff2 or:[self diffInfo isDiff3]]
+
+    "Created: / 20-03-2012 / 13:29:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isDiff3
+    ^self diffInfo notNil and:[self diffInfo isDiff3]
+
+    "Created: / 20-03-2012 / 13:27:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isMerge
+    ^self diffInfo notNil and:[self diffInfo isMerge]
+
+    "Created: / 19-03-2012 / 11:53:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 isOneColumnBrowser
@@ -1209,6 +3009,20 @@
     ^ToolbarIconLibrary versionB24x24
 
     "Created: / 24-03-2010 / 20:50:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+versionBase24x24
+
+    ^ToolbarIconLibrary versionBase24x24
+
+    "Created: / 19-03-2012 / 23:11:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+versionMerged24x24
+
+    ^ToolbarIconLibrary versionMerged24x24
+
+    "Created: / 19-03-2012 / 23:34:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffTool::OpenDialog class methodsFor:'interface specs'!
@@ -1221,6 +3035,228 @@
      the UIPainter may not be able to read the specification."
 
     "
+     UIPainter new openOnClass:Tools::ChangeSetDiffTool::OpenDialog andSelector:#windowSpec
+     Tools::ChangeSetDiffTool::OpenDialog new openInterface:#windowSpec
+     Tools::ChangeSetDiffTool::OpenDialog open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: 'Open...'
+          name: 'Open...'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 640 457)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (VerticalPanelViewSpec
+              name: 'VerticalPanel1'
+              layout: (LayoutFrame 0 0 0 0 0 1 -30 1)
+              horizontalLayout: fit
+              verticalLayout: top
+              horizontalSpace: 3
+              verticalSpace: 3
+              component: 
+             (SpecCollection
+                collection: (
+                 (ViewSpec
+                    name: 'B'
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (UISubSpecification
+                          name: 'SubSpecification2'
+                          layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+                          minorKey: versionBLabelSpec
+                        )
+                       (SubCanvasSpec
+                          name: 'SubCanvas1'
+                          layout: (LayoutFrame 30 0 30 0 0 1 0 1)
+                          level: 0
+                          hasHorizontalScrollBar: false
+                          hasVerticalScrollBar: false
+                          majorKey: #'Tools::ChangeSetSelectionDialog'
+                          minorKey: windowSpecForEmbedding
+                          subAspectHolders: 
+                         (Array
+                            
+                           (SubChannelInfoSpec
+                              subAspect: specHolder
+                              aspect: changesetSpecBHolder
+                            )
+                          )
+                          createNewApplication: true
+                          createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                    extent: (Point 640 99)
+                  )
+                 (ViewSpec
+                    name: 'A'
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (UISubSpecification
+                          name: 'SubSpecification1'
+                          layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+                          minorKey: versionALabelSpec
+                        )
+                       (SubCanvasSpec
+                          name: 'ChangesetASpec'
+                          layout: (LayoutFrame 30 0 30 0 0 1 0 1)
+                          level: 0
+                          hasHorizontalScrollBar: false
+                          hasVerticalScrollBar: false
+                          majorKey: #'Tools::ChangeSetSelectionDialog'
+                          minorKey: windowSpecForEmbedding
+                          subAspectHolders: 
+                         (Array
+                            
+                           (SubChannelInfoSpec
+                              subAspect: specHolder
+                              aspect: changesetSpecAHolder
+                            )
+                          )
+                          createNewApplication: true
+                          createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                    extent: (Point 640 99)
+                  )
+                 (ViewSpec
+                    name: 'Base'
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (UISubSpecification
+                          name: 'SubSpecification3'
+                          layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+                          minorKey: versionBaseLabelSpec
+                        )
+                       (SubCanvasSpec
+                          name: 'SubCanvas2'
+                          layout: (LayoutFrame 30 0 30 0 0 1 0 1)
+                          level: 0
+                          hasHorizontalScrollBar: false
+                          hasVerticalScrollBar: false
+                          majorKey: #'Tools::ChangeSetSelectionDialog'
+                          minorKey: windowSpecForEmbedding
+                          subAspectHolders: 
+                         (Array
+                            
+                           (SubChannelInfoSpec
+                              subAspect: enabledHolder
+                              aspect: changesetSpecBaseEnabledHolder
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: specHolder
+                              aspect: changesetSpecBaseHolder
+                            )
+                          )
+                          createNewApplication: true
+                          createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                    extent: (Point 640 98)
+                  )
+                 (ViewSpec
+                    name: 'Merge'
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (UISubSpecification
+                          name: 'SubSpecification4'
+                          layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+                          minorKey: versionMergedLabelSpec
+                        )
+                       (SubCanvasSpec
+                          name: 'SubCanvas3'
+                          layout: (LayoutFrame 30 0 30 0 0 1 -25 1)
+                          level: 0
+                          hasHorizontalScrollBar: false
+                          hasVerticalScrollBar: false
+                          majorKey: #'Tools::ChangeSetSelectionDialog'
+                          minorKey: windowSpecForEmbedding
+                          subAspectHolders: 
+                         (Array
+                            
+                           (SubChannelInfoSpec
+                              subAspect: enabledHolder
+                              aspect: changesetSpecMergedEnabledHolder
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: specHolder
+                              aspect: changesetSpecMergedHolder
+                            )
+                          )
+                          createNewApplication: true
+                          createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                    extent: (Point 640 123)
+                  )
+                 )
+               
+              )
+            )
+           (HorizontalPanelViewSpec
+              name: 'ButtonPanel'
+              layout: (LayoutFrame 3 0 -30 1 -3 1 0 1)
+              horizontalLayout: right
+              verticalLayout: center
+              horizontalSpace: 3
+              verticalSpace: 3
+              reverseOrderIfOKAtLeft: true
+              component: 
+             (SpecCollection
+                collection: (
+                 (ActionButtonSpec
+                    label: 'OK'
+                    name: 'Button1'
+                    translateLabel: true
+                    model: doAccept
+                    enableChannel: doAcceptEnabled
+                    extent: (Point 125 22)
+                  )
+                 (ActionButtonSpec
+                    label: 'Cancel'
+                    name: 'Button2'
+                    translateLabel: true
+                    model: doCancel
+                    extent: (Point 125 22)
+                  )
+                 )
+               
+              )
+            )
+           )
+         
+        )
+      )
+!
+
+windowSpec_old
+    "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:Tools::ChangeSetDiffBrowser::OpenDialog andSelector:#windowSpec
      Tools::ChangeSetDiffBrowser::OpenDialog new openInterface:#windowSpec
      Tools::ChangeSetDiffBrowser::OpenDialog open
@@ -1354,6 +3390,7 @@
       )
 
     "Modified: / 06-07-2011 / 11:32:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 19-03-2012 / 22:21:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffTool::OpenDialog class methodsFor:'interface specs - labels'!
@@ -1395,7 +3432,7 @@
               translateLabel: true
             )
            (LabelSpec
-              label: 'Version A'
+              label: 'Version A (working copy)'
               name: 'VersionALabel'
               layout: (LayoutFrame 30 0 5 0 0 1 0 1)
               translateLabel: true
@@ -1407,7 +3444,7 @@
         )
       )
 
-    "Modified: / 06-07-2011 / 11:24:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-03-2012 / 22:15:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 versionBLabelSpec
@@ -1447,7 +3484,7 @@
               translateLabel: true
             )
            (LabelSpec
-              label: 'Version B'
+              label: 'Version B (to be merged)'
               name: 'VersionBLabel'
               layout: (LayoutFrame 30 0 5 0 97 0 0 1)
               translateLabel: true
@@ -1461,7 +3498,127 @@
         )
       )
 
-    "Modified: / 06-07-2011 / 11:24:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-03-2012 / 22:15:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+versionBaseLabelSpec
+    "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:Tools::ChangeSetDiffTool::OpenDialog andSelector:#versionBaseLabelSpec
+     Tools::ChangeSetDiffTool::OpenDialog new openInterface:#versionBaseLabelSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: versionBaseLabelSpec
+        window: 
+       (WindowSpec
+          label: 'Version B'
+          name: 'Version B'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 30)
+          backgroundColor: (Color 57.2182803082322 81.2832837415122 91.0872053101396)
+          forceRecursiveBackground: true
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'versionBase24x24'
+              name: 'VersionBaseIcon'
+              layout: (LayoutFrame 0 0 -12 0.5 27 0 12 0.5)
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+            )
+           (LabelSpec
+              label: 'Base'
+              name: 'VersionBLabel'
+              layout: (LayoutFrame 30 0 5 0 68 0 0 1)
+              translateLabel: true
+              resizeForLabel: true
+              adjust: left
+              useDynamicPreferredWidth: true
+              usePreferredWidth: true
+            )
+           (CheckBoxSpec
+              label: ''
+              name: 'CheckBox1'
+              layout: (LayoutFrame -30 1 0 0 0 1 0 1)
+              model: changesetSpecBaseEnabledHolder
+              translateLabel: true
+            )
+           )
+         
+        )
+      )
+!
+
+versionMergedLabelSpec
+    "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:Tools::ChangeSetDiffTool::OpenDialog andSelector:#versionMergedLabelSpec
+     Tools::ChangeSetDiffTool::OpenDialog new openInterface:#versionMergedLabelSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: versionMergedLabelSpec
+        window: 
+       (WindowSpec
+          label: 'Merge'
+          name: 'Merge'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 30)
+          backgroundColor: (Color 92.6909285114824 62.388036926833 93.2265201800565)
+          forceRecursiveBackground: true
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'versionMerged24x24'
+              name: 'VersionMergedIcon'
+              layout: (LayoutFrame 0 0 -12 0.5 27 0 12 0.5)
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+            )
+           (LabelSpec
+              label: 'Merge'
+              name: 'VersionBLabel'
+              layout: (LayoutFrame 30 0 5 0 68 0 0 1)
+              translateLabel: true
+              resizeForLabel: true
+              adjust: left
+              useDynamicPreferredWidth: true
+              usePreferredWidth: true
+            )
+           (CheckBoxSpec
+              label: ''
+              name: 'CheckBox1'
+              layout: (LayoutFrame -30 1 0 0 0 1 0 1)
+              model: changesetSpecMergedEnabledHolder
+              translateLabel: true
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 19-03-2012 / 23:36:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffTool::OpenDialog methodsFor:'accessing'!
@@ -1476,6 +3633,18 @@
     "Created: / 06-07-2011 / 11:36:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+changeSetASpec
+    ^self changesetSpecAHolder value.
+
+    "Created: / 20-03-2012 / 00:01:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeSetASpec: spec
+    ^self changesetSpecAHolder value: spec
+
+    "Created: / 01-08-2012 / 15:38:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 changeSetB
 
     | specB |
@@ -1484,6 +3653,93 @@
     ^specB ifNil:[nil] ifNotNil:[specB changeSet]
 
     "Created: / 06-07-2011 / 11:36:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeSetBSpec
+    ^self changesetSpecBHolder value.
+
+    "Created: / 20-03-2012 / 00:01:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeSetBSpec: spec
+    ^self changesetSpecBHolder value: spec
+
+    "Created: / 01-08-2012 / 15:38:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeSetBase
+
+    | specBase |
+
+    specBase := self changesetSpecBaseHolder value.
+    ^specBase ifNil:[nil] ifNotNil:[specBase changeSet]
+
+    "Created: / 16-03-2012 / 13:48:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeSetBaseSpec
+    ^self changesetSpecBaseHolder value.
+
+    "Created: / 20-03-2012 / 00:01:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeSetBaseSpec: spec
+    ^self changesetSpecBaseHolder value: spec
+
+    "Created: / 01-08-2012 / 15:38:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeSetMerged
+
+    | specMerged |
+
+    specMerged := self changesetSpecMergedHolder value.
+    ^specMerged ifNil:[nil] ifNotNil:[specMerged changeSet]
+
+    "Created: / 20-03-2012 / 00:01:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeSetMergedSpec
+    ^self changesetSpecMergedHolder value.
+
+    "Created: / 20-03-2012 / 00:01:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeSetMergedSpec: spec
+    ^self changesetSpecMergedHolder value: spec
+
+    "Created: / 01-08-2012 / 15:38:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+diffInfo    
+    "Returns a ChangeSetDiffInfo based on current data"
+
+    | info |
+    info := ChangeSetDiffInfo new.
+    info specA: self changeSetASpec.
+    info specB: self changeSetBSpec.
+    self changesetSpecBaseEnabledHolder value ifTrue:[
+        info specBase: self changeSetBaseSpec.
+    ].
+    changesetSpecMergedEnabledHolder value ifTrue:[
+        info specMerge: self changeSetMergedSpec.
+    ].
+    ^info
+
+    "Created: / 01-08-2012 / 15:41:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+diffInfo: info
+    "Sets up dialog for given diff info"
+
+    info isNil ifTrue:[ ^ self ].
+
+    self changeSetASpec: info specA. 
+    self changeSetBSpec: info specB.
+    self changeSetBaseSpec: info specBase.
+    self changeSetMergedSpec: info specMerge.
+
+    "Created: / 01-08-2012 / 15:37:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetDiffTool::OpenDialog methodsFor:'aspects'!
@@ -1518,6 +3774,74 @@
     changesetSpecBHolder := something.
 !
 
+changesetSpecBaseEnabledHolder
+    "return/create the 'changesetSpecBaseEnabledHolder' value holder (automatically generated)"
+
+    changesetSpecBaseEnabledHolder isNil ifTrue:[
+        changesetSpecBaseEnabledHolder := false asValue
+    ].
+    ^ changesetSpecBaseEnabledHolder
+
+    "Modified: / 19-03-2012 / 23:20:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changesetSpecBaseEnabledHolder:something
+    "set the 'changesetSpecBaseEnabledHolder' value holder (automatically generated)"
+
+    changesetSpecBaseEnabledHolder := something.
+!
+
+changesetSpecBaseHolder
+    "return/create the 'changesetSpecBHolder' value holder (automatically generated)"
+
+    changesetSpecBaseHolder isNil ifTrue:[
+        changesetSpecBaseHolder := ValueHolder new.
+    ].
+    ^ changesetSpecBaseHolder
+
+    "Created: / 16-03-2012 / 13:48:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changesetSpecBaseHolder:something
+    "set the 'changesetSpecBHolder' value holder (automatically generated)"
+
+    changesetSpecBaseHolder := something.
+
+    "Created: / 16-03-2012 / 13:49:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changesetSpecMergedEnabledHolder
+    "return/create the 'changesetSpecMergedEnabledHolder' value holder (automatically generated)"
+
+    changesetSpecMergedEnabledHolder isNil ifTrue:[
+        changesetSpecMergedEnabledHolder := false asValue
+    ].
+    ^ changesetSpecMergedEnabledHolder
+
+    "Modified: / 19-03-2012 / 23:20:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changesetSpecMergedEnabledHolder:something
+    "set the 'changesetSpecMergedEnabledHolder' value holder (automatically generated)"
+
+    changesetSpecMergedEnabledHolder := something.
+!
+
+changesetSpecMergedHolder
+    "return/create the 'changesetSpecMergedHolder' value holder (automatically generated)"
+
+    changesetSpecMergedHolder isNil ifTrue:[
+        changesetSpecMergedHolder := ValueHolder new.
+    ].
+    ^ changesetSpecMergedHolder
+!
+
+changesetSpecMergedHolder:something
+    "set the 'changesetSpecMergedHolder' value holder (automatically generated)"
+
+    changesetSpecMergedHolder := something.
+!
+
 doAcceptEnabled
     <resource: #uiAspect>
 
@@ -1541,9 +3865,15 @@
 !ChangeSetDiffTool class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetDiffTool.st,v 1.5 2011-12-19 08:39:53 vrany Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__ChangeSetDiffTool.st,v 1.5 2011/12/19 08:39:53 vrany Exp §'
+!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
 !
 
 version_SVN
-    ^ '§Id: SVN__DiffBrowser.st 346 2011-06-29 06:40:53Z vranyj1 §'
+    ^ '§Id: Tools__ChangeSetDiffTool.st 8092 2013-01-18 00:33:28Z vranyj1 §'
 ! !
+
--- a/Tools__ChangeSetSelectionDialog.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ChangeSetSelectionDialog.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,15 +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' }"
 
 "{ NameSpace: Tools }"
 
 SimpleDialog subclass:#ChangeSetSelectionDialog
-	instanceVariableNames:'specHolder specLabelList specLabelIndexHolder
+	instanceVariableNames:'enabledHolder specHolder specLabelList specLabelIndexHolder
 		specEditorSpecHolder'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-Dialogs'
 !
 
+!ChangeSetSelectionDialog 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.
+"
+! !
 
 !ChangeSetSelectionDialog class methodsFor:'instance creation'!
 
@@ -135,12 +161,14 @@
               layout: (LayoutFrame 103 0 3 0 -3 1 25 0)
               tabable: true
               model: specLabelIndexHolder
+              enableChannel: enabledHolder
               menu: specLabelList
               useIndex: true
             )
            (SubCanvasSpec
               name: 'SubCanvas1'
               layout: (LayoutFrame 3 0 30 0 -3 1 0 1)
+              level: 0
               hasHorizontalScrollBar: false
               hasVerticalScrollBar: false
               specHolder: specEditorSpecHolder
@@ -184,6 +212,7 @@
            (FilenameInputFieldSpec
               name: 'Directory'
               layout: (LayoutFrame 103 0 0 0 0 1 22 0)
+              enableChannel: enabledHolder
               model: directoryAspect
               acceptOnPointerLeave: true
               viewClassName: FilenameWidgetWithHistory
@@ -201,6 +230,87 @@
       )
 !
 
+editorSpecForExplicit
+    "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:Tools::ChangeSetSelectionDialog andSelector:#editorSpecForExplicit
+     Tools::ChangeSetSelectionDialog new openInterface:#editorSpecForExplicit
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: 'editorSpecForExplicit'
+        window: 
+       (WindowSpec
+          label: 'ChangeSet Spec Editor'
+          name: 'ChangeSet Spec Editor'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 441 310)
+        )
+        component: 
+       (SpecCollection
+          collection: ()
+        )
+      )
+!
+
+editorSpecForFile
+    "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:Tools::ChangeSetSelectionDialog andSelector:#editorSpecForFile
+     Tools::ChangeSetSelectionDialog new openInterface:#editorSpecForFile
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: editorSpecForFile
+        window: 
+       (WindowSpec
+          label: 'Directory Spec Editor'
+          name: 'Directory Spec Editor'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 441 310)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (FilenameInputFieldSpec
+              name: 'Directory'
+              layout: (LayoutFrame 103 0 0 0 0 1 22 0)
+              enableChannel: enabledHolder
+              model: fileAspect
+              acceptOnPointerLeave: true
+              viewClassName: FilenameWidgetWithHistory
+            )
+           (LabelSpec
+              label: 'File:'
+              name: 'FileLabel'
+              layout: (LayoutFrame 0 0 3 0 100 0 22 0)
+              translateLabel: true
+              adjust: left
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 20-03-2012 / 11:13:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 editorSpecForPackage
     "This resource specification was automatically generated
      by the UIPainter of ST/X."
@@ -217,7 +327,7 @@
 
     ^ 
      #(FullSpec
-        name: 'editorSpecForPackage'
+        name: editorSpecForPackage
         window: 
        (WindowSpec
           label: 'Package Spec Editor'
@@ -238,6 +348,7 @@
            (InputFieldSpec
               name: 'EntryField1'
               layout: (LayoutFrame 103 0 0 0 -25 1 25 0)
+              enableChannel: enabledHolder
               model: packageAspect
               acceptOnReturn: true
               acceptOnTab: true
@@ -250,6 +361,7 @@
               layout: (LayoutFrame -25 1 0 0 0 1 25 0)
               translateLabel: true
               model: selectPackage
+              enableChannel: enabledHolder
             )
            )
          
@@ -271,10 +383,10 @@
      (if this app is embedded in a subCanvas)."
 
     ^ #(
+        #enabledHolder
         #specHolder
       ).
 
-    "Modified: / 06-07-2011 / 10:57:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetSelectionDialog methodsFor:'actions'!
@@ -308,6 +420,23 @@
     "Created: / 06-07-2011 / 10:48:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+enabledHolder
+    "return/create the 'enabledHolder' value holder (automatically generated)"
+
+    enabledHolder isNil ifTrue:[
+        enabledHolder := true asValue
+    ].
+    ^ enabledHolder
+
+    "Modified: / 19-03-2012 / 23:25:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+enabledHolder:something
+    "set the 'enabledHolder' value holder (automatically generated)"
+
+    enabledHolder := something.
+!
+
 specEditorSpecHolder
     "return/create the 'specEditorSpecHolder' value holder (automatically generated)"
 
@@ -378,13 +507,6 @@
 specLabelList
     <resource: #uiAspect>
 
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-    "*** (and replace this comment by something more useful ;-)"
-
     specLabelList isNil ifTrue:[
         specLabelList := List withAll:
             (ChangeSetSpec specClasses collect:[:cls|cls label])
@@ -413,6 +535,22 @@
     "Modified: / 06-07-2011 / 10:28:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+fileAspect
+    <resource: #uiAspect>
+
+    |holder|
+
+    (holder := builder bindingAt:#fileAspect) isNil ifTrue:[
+        holder := (AspectAdaptor forAspect:#file)
+                    subjectChannel: self specHolder.
+        builder aspectAt:#fileAspect put:holder.
+    ].
+    ^ holder.
+
+    "Modified: / 06-07-2011 / 10:28:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 19-03-2012 / 22:07:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 packageAspect
     <resource: #uiAspect>
 
@@ -481,5 +619,9 @@
 !ChangeSetSelectionDialog class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetSelectionDialog.st,v 1.2 2011-10-02 19:52:17 stefan Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__ChangeSetSelectionDialog.st,v 1.2 2011/10/02 19:52:17 stefan Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__ChangeSetSelectionDialog.st 8036 2012-08-03 15:14:04Z vranyj1 $'
 ! !
--- a/Tools__ChangeSetSpec.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ChangeSetSpec.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,3 +1,14 @@
+"
+ 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 }"
@@ -16,6 +27,20 @@
 	privateIn:ChangeSetSpec
 !
 
+ChangeSetSpec subclass:#Explicit
+	instanceVariableNames:'changeSet'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:ChangeSetSpec
+!
+
+ChangeSetSpec subclass:#File
+	instanceVariableNames:'file'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:ChangeSetSpec
+!
+
 ChangeSetSpec subclass:#Package
 	instanceVariableNames:'package'
 	classVariableNames:''
@@ -23,6 +48,58 @@
 	privateIn:ChangeSetSpec
 !
 
+!ChangeSetSpec 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.
+"
+! !
+
+!ChangeSetSpec class methodsFor:'instance creation'!
+
+changeSet
+
+    ^Explicit new
+
+    "Created: / 03-08-2012 / 15:35:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeSet: changeset
+
+    ^Explicit new changeSet: changeset
+
+    "Created: / 19-03-2012 / 23:59:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+directory: directory
+
+    ^Directory new package: directory
+
+    "Created: / 19-03-2012 / 23:59:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+file: file
+
+    ^File new file: file
+
+    "Created: / 19-03-2012 / 23:58:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+package: package
+
+    ^Package new package: package
+
+    "Created: / 19-03-2012 / 23:58:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
 
 !ChangeSetSpec class methodsFor:'accessing'!
 
@@ -42,9 +119,10 @@
 
 specClasses
 
-    ^self allSubclasses
+    ^self allSubclasses"/ reject:[:e|e == Explicit]
 
     "Created: / 05-07-2011 / 23:30:45 / jv"
+    "Modified: / 03-08-2012 / 15:21:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetSpec methodsFor:'accessing'!
@@ -56,11 +134,61 @@
     "Created: / 05-07-2011 / 23:13:35 / jv"
 !
 
+directory
+    ^'N/A'
+
+    "Created: / 19-03-2012 / 23:31:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 editorSpecSelector
 
     ^self class editorSpecSelector
 
     "Created: / 06-07-2011 / 09:57:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+file
+    ^'N/A'
+
+    "Created: / 19-03-2012 / 23:31:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+package
+    ^'N/A'
+
+    "Created: / 19-03-2012 / 23:31:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetSpec methodsFor:'testing'!
+
+isChangeSet
+    ^self isExplicit
+
+    "Created: / 20-03-2012 / 14:58:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isDirectory
+    ^false
+
+    "Created: / 20-03-2012 / 14:59:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isExplicit
+    ^false
+
+    "Created: / 20-03-2012 / 14:58:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isFile
+    ^false
+
+    "Created: / 20-03-2012 / 14:58:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isPackage
+    ^false
+
+    "Created: / 20-03-2012 / 14:58:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetSpec::Directory class methodsFor:'accessing'!
@@ -106,6 +234,105 @@
     directory := aStringOrFilename.
 ! !
 
+!ChangeSetSpec::Directory methodsFor:'testing'!
+
+isDirectory
+    ^true
+
+    "Created: / 20-03-2012 / 14:59:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetSpec::Explicit class methodsFor:'accessing'!
+
+editorSpecSelector
+    "superclass Tools::ChangeSetSpec class says that I am responsible to implement this method"
+
+    ^ #editorSpecForExplicit
+
+    "Modified: / 03-08-2012 / 15:21:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+label
+    "superclass Tools::ChangeSetSpec class says that I am responsible to implement this method"
+
+    ^ 'ChangeSet object'
+
+    "Modified: / 03-08-2012 / 15:19:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetSpec::Explicit methodsFor:'accessing'!
+
+changeSet
+    "superclass Tools::ChangeSetSpec says that I am responsible to implement this method"
+
+    ^changeSet isNil ifTrue:[changeSet := ChangeSet new].
+
+    "Modified: / 03-08-2012 / 15:22:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeSet:something
+    changeSet := something.
+! !
+
+!ChangeSetSpec::Explicit methodsFor:'testing'!
+
+isExplicit
+    ^true
+
+    "Created: / 20-03-2012 / 14:59:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetSpec::File class methodsFor:'accessing'!
+
+editorSpecSelector
+    "superclass Tools::ChangeSetSpec class says that I am responsible to implement this method"
+
+    ^ #editorSpecForFile
+
+    "Modified: / 19-03-2012 / 22:04:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+label
+    "superclass Tools::ChangeSetSpec class says that I am responsible to implement this method"
+
+    ^ 'File'
+
+    "Modified: / 19-03-2012 / 22:04:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetSpec::File methodsFor:'accessing'!
+
+changeSet
+    "superclass Tools::ChangeSetSpec says that I am responsible to implement this method"
+
+    | name |
+    name := file asString.
+    name size > 50 ifTrue:[
+        name := '...' , (name copyFrom: name size - 47)
+    ].
+
+    ^(ChangeSet fromFile: self file)
+        name: name
+
+    "Modified: / 20-03-2012 / 11:31:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+file
+    ^ file
+!
+
+file:something
+    file := something.
+! !
+
+!ChangeSetSpec::File methodsFor:'testing'!
+
+isFile
+    ^true
+
+    "Created: / 20-03-2012 / 14:59:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !ChangeSetSpec::Package class methodsFor:'accessing'!
 
 editorSpecSelector
@@ -143,8 +370,20 @@
     package := aStringOrSymbol.
 ! !
 
+!ChangeSetSpec::Package methodsFor:'testing'!
+
+isPackage
+    ^true
+
+    "Created: / 20-03-2012 / 14:59:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !ChangeSetSpec class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetSpec.st,v 1.2 2011-10-02 19:52:17 stefan Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__ChangeSetSpec.st,v 1.2 2011/10/02 19:52:17 stefan Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__ChangeSetSpec.st 8036 2012-08-03 15:14:04Z vranyj1 $'
 ! !
--- a/Tools__CheckinInfoDialog.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__CheckinInfoDialog.st	Wed Jan 30 11:15:09 2013 +0000
@@ -54,6 +54,7 @@
 "
 ! !
 
+
 !CheckinInfoDialog class methodsFor:'interface specs'!
 
 windowSpec
@@ -206,6 +207,7 @@
       )
 ! !
 
+
 !CheckinInfoDialog class methodsFor:'opening'!
 
 getCheckinInfoFor:aString initialAnswer:initialAnswer
@@ -273,6 +275,7 @@
     "Created: / 12-03-2012 / 12:36:26 / cg"
 ! !
 
+
 !CheckinInfoDialog methodsFor:'accessing'!
 
 allowEmptyLogMessage
@@ -343,6 +346,7 @@
     ^ self quickCheckInVisibleHolder value:aBoolean
 ! !
 
+
 !CheckinInfoDialog methodsFor:'aspects'!
 
 descriptionHolder
@@ -423,6 +427,7 @@
     "Created: / 06-07-2010 / 11:30:29 / cg"
 ! !
 
+
 !CheckinInfoDialog class methodsFor:'documentation'!
 
 version
@@ -431,4 +436,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/Tools__CheckinInfoDialog.st,v 1.15 2012-03-12 12:13:08 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: Tools__CheckinInfoDialog.st 7952 2012-03-21 17:50:14Z vranyj1 $'
 ! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__ClassCategoryList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,983 @@
+"
+ COPYRIGHT (c) 2004 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 }"
+
+BrowserList subclass:#ClassCategoryList
+	instanceVariableNames:'categoryList classes allSelected showPseudoCategories
+		rawCategoryList cookedCategoryList categoryListView'
+	classVariableNames:'AdditionalEmptyCategories'
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+!ClassCategoryList class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2004 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.
+"
+!
+
+documentation
+"
+    embeddable application displaying the class-categories.
+    Provides an outputGenerator, which enumerates the classes in
+    the selected categories.
+
+    [author:]
+	Claus Gittinger (cg@exept.de)
+"
+! !
+
+!ClassCategoryList class methodsFor:'interface specs'!
+
+singleCategoryWindowSpec
+    "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:ClassCategoryList andSelector:#singleCategoryWindowSpec
+     ClassCategoryList new openInterface:#singleCategoryWindowSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+	#name: #singleCategoryWindowSpec
+	#window: 
+       #(#WindowSpec
+	  #label: 'ClassCategoryList'
+	  #name: 'ClassCategoryList'
+	  #min: #(#Point 0 0)
+	  #max: #(#Point 1024 721)
+	  #bounds: #(#Rectangle 218 175 518 475)
+	)
+	#component: 
+       #(#SpecCollection
+	  #collection: #(
+	   #(#LabelSpec
+	      #label: 'ClassCategoryName'
+	      #name: 'ClassCategoryLabel'
+	      #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+	      #translateLabel: true
+	      #labelChannel: #classCategoryLabelHolder
+	      #menu: #menuHolder
+	    )
+	   )
+         
+	)
+      )
+!
+
+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:Tools::ClassCategoryList andSelector:#windowSpec
+     Tools::ClassCategoryList new openInterface:#windowSpec
+     Tools::ClassCategoryList open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: 'ClassCategoryList'
+          name: 'ClassCategoryList'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 300 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (SequenceViewSpec
+              name: 'List'
+              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              tabable: true
+              model: selectedCategories
+              menu: menuHolder
+              hasHorizontalScrollBar: true
+              hasVerticalScrollBar: true
+              miniScrollerHorizontal: true
+              isMultiSelect: true
+              valueChangeSelector: selectionChangedByClick
+              useIndex: false
+              sequenceList: categoryList
+              doubleClickChannel: doubleClickChannel
+              properties: 
+             (PropertyListDictionary
+                canDropSelector: canDropContext:
+                dragArgument: nil
+                dropArgument: nil
+                dropSelector: doDropContext:
+              )
+              postBuildCallback: postBuildCategoryListView:
+            )
+           )
+         
+        )
+      )
+! !
+
+!ClassCategoryList class methodsFor:'plugIn spec'!
+
+aspectSelectors
+    "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."
+
+    "Return a description of exported aspects;
+     these can be connected to aspects of an embedding application
+     (if this app is embedded in a subCanvas)."
+
+    ^ #(
+        #(doubleClickChannel action)
+        #forceGeneratorTrigger
+        #hideUnloadedClasses
+        #immediateUpdate
+        #inGeneratorHolder
+        #menuHolder
+        #nameSpaceFilter
+        #organizerMode
+        #outGeneratorHolder
+        #packageFilter
+        #selectedCategories
+        #selectionChangeCondition
+        #showCoverageInformation
+        #slaveMode
+        #updateTrigger
+      ).
+
+! !
+
+!ClassCategoryList class methodsFor:'special'!
+
+addAdditionalCategory:aCategory
+    "/ those are simulated - in ST/X, empty categories do not
+    "/ really exist; however, during browsing, it makes sense.
+
+    AdditionalEmptyCategories isNil ifTrue:[
+        AdditionalEmptyCategories := Set new.
+    ].
+    AdditionalEmptyCategories add:aCategory.
+    Smalltalk changed:#organization with:(nil -> aCategory).  "/ not really ... to force update
+!
+
+removeAdditionalCategories:aListOfCategories
+    "/ those are simulated - in ST/X, empty categories do not
+    "/ really exist; however, during browsing, it makes sense.
+
+    AdditionalEmptyCategories isNil ifTrue:[^ self].
+    aListOfCategories do:[:eachCategory |
+        AdditionalEmptyCategories remove:eachCategory ifAbsent:nil.
+    ].
+
+    Smalltalk changed:#organization   "/ not really ... to force update
+!
+
+removeAllAdditionalCategories
+    "/ those are simulated - in ST/X, empty categories do not
+    "/ really exist; however, during browsing, it makes sense.
+
+    AdditionalEmptyCategories := nil
+!
+
+renameAdditionalCategories:oldNames to:newName
+    "/ those are simulated - in ST/X, empty categories do not
+    "/ really exist; however, during browsing, it makes sense.
+
+    self removeAdditionalCategories:oldNames.
+    self addAdditionalCategory:newName.
+! !
+
+!ClassCategoryList methodsFor:'aspects'!
+
+categoryList
+    categoryList isNil ifTrue:[
+	categoryList := ValueHolder new.
+    ].
+    ^ categoryList
+
+    "Created: / 25.2.2000 / 02:23:08 / cg"
+!
+
+categoryList:aValueHolder
+    categoryList notNil ifTrue:[
+	categoryList removeDependent:self
+    ].
+    categoryList := aValueHolder.
+    categoryList notNil ifTrue:[
+	categoryList addDependent:self
+    ].
+
+    "Created: / 18.8.2000 / 15:21:42 / cg"
+!
+
+classCategoryLabelHolder
+    ^ self pseudoListLabelHolder
+!
+
+selectedCategories
+    ^ self selectionHolder 
+!
+
+selectedCategories:aValueHolder
+    ^ self selectionHolder:aValueHolder
+!
+
+selectionHolder
+"/    self halt.
+    ^ super selectionHolder
+!
+
+selectionHolder:aValueHolder
+    "/ self halt.
+    super selectionHolder:aValueHolder
+! !
+
+!ClassCategoryList methodsFor:'change & update'!
+
+delayedUpdate:something with:aParameter from:changedObject
+    |selectedCategories allSelectedBefore 
+     nameListEntryForALL categoryOfClass wg|
+
+    selectedCategories := self selectedCategoriesStrings.
+
+    changedObject == Smalltalk ifTrue:[
+        ((something == #classVariables) 
+        or:[something == #classDefinition]) ifTrue:[
+            listValid == true ifTrue:[
+                categoryOfClass := aParameter category.
+                (rawCategoryList includes:categoryOfClass) ifFalse:[
+                    self invalidateList.                
+                ].
+                slaveMode value ~~ true ifTrue:[
+                    (selectedCategories includes:categoryOfClass) ifTrue:[
+                        "/ a selected class has changed
+                        "/ in order to give others a chance to update their list before,
+                        "/ this one is always enqueued for delayed update (even if immediateUpdate is true)
+                        "/ self enqueueDelayedUpdateOutputGenerator
+                        self enqueueMessage:#updateOutputGenerator for:self arguments:#()
+                    ].
+                ].
+            ].
+            ^ self
+        ].
+        something == #newClass ifTrue:[
+            categoryOfClass := aParameter category.
+            listValid == false ifTrue:[
+                ^ self
+            ].
+
+            (rawCategoryList includes:categoryOfClass) ifFalse:[
+                self invalidateList.                
+            ].
+
+            slaveMode value ~~ true ifTrue:[
+                (selectedCategories includes:categoryOfClass) ifTrue:[
+                    self enqueueDelayedUpdateOutputGenerator
+                ].
+            ].
+            ^ self
+        ].
+
+        self invalidateList.
+
+        (something == #classRemove 
+        or:[something == #projectOrganization 
+        or:[something == #organization]]) ifTrue:[
+            slaveMode value ~~ true ifTrue:[
+                "/ sorry: cannot filter on category (already changed to #removed)
+                self enqueueDelayedUpdateOutputGenerator
+            ].
+        ].
+        ^ self
+    ].
+
+    changedObject == ChangeSet ifTrue:[
+        "/ remove all other change notifications from the eventQueue
+        wg := self windowGroup.
+        wg isNil ifTrue:[
+            "/ oops - should no longer be dependent...
+            changedObject removeDependent:self.
+        ] ifFalse:[
+            wg sensor 
+                flushEventsFor:self 
+                where:[:ev | ev isMessageSendEvent 
+                             and:[ev selector == #delayedUpdate:with:from:
+                             and:[(ev arguments at:3) == ChangeSet]]].
+        ].
+
+        something == #addChange: ifTrue:[
+            "/ only need to invalidate, if that change changes my emphasis 
+            "/ (i.e. if its a new methodChange)
+            self window topView shown ifFalse:[
+                self invalidateList.
+                ^ self
+            ].
+        
+"/            self invalidateList.
+
+            aParameter isMethodChange ifTrue:[
+                aParameter changeClass notNil ifTrue:[
+                    (ChangeSet current 
+                        count:[:chg | chg notNil and:[chg isMethodChange
+                                      and:[ chg className = aParameter className ]]])
+                    == 1 ifTrue:[
+                        "/ that methodChange is the first for this method.
+                        self colorizeCategoryAsChanged:(aParameter changeClass category).
+                    ]
+                ]
+            ].
+            ^ self
+        ].
+
+        self invalidateList.
+        ^ self
+    ].
+
+    changedObject == nameSpaceFilter ifTrue:[
+        "/ all might be more or less than before ...
+        allSelected := false.
+        "/ self invalidateList - done in super
+    ].
+    changedObject == packageFilter ifTrue:[
+        "/ all might be more or less than before ...
+        allSelected := false.
+        "/ self invalidateList - done in super
+    ].
+
+    changedObject == self selectedCategories ifTrue:[
+        listValid ifFalse:[
+            "/ oops - hurry up
+            self invalidateList.
+        ].
+
+        nameListEntryForALL := self class nameListEntryForALL.
+
+        selectedCategories size > 1 ifTrue:[
+            (selectedCategories includes:nameListEntryForALL) ifTrue:[
+                self makeSelectionOtherThanAllVisible.
+            ]
+        ].
+
+        "/ if all selected before AND allSelected after, no need to update the output generator
+        allSelectedBefore := allSelected ? false.
+        allSelected := selectedCategories includes:nameListEntryForALL.
+        (allSelectedBefore and:[allSelected]) ifTrue:[
+            ^ self
+        ].
+    ].
+    changedObject == categoryList ifTrue:[
+        self halt.
+    ].
+    super delayedUpdate:something with:aParameter from:changedObject
+
+    "Created: / 5.2.2000 / 13:42:12 / cg"
+    "Modified: / 12.11.2001 / 19:36:16 / cg"
+!
+
+forceUpdateList
+    self categoryList setValue:#().
+    self updateList.
+    self categoryList changed.
+!
+
+selectionChangedByClick
+    "we are not interested in that - get another notification
+     via the changed valueHolder"
+
+    "Created: / 11.2.2000 / 11:39:48 / cg"
+!
+
+update:something with:aParameter from:changedObject
+    |categoryOfClass|
+
+    changedObject == Smalltalk ifTrue:[
+        (something == #methodInClass 
+        or:[ something == #classComment
+        or:[ something == #methodDictionary
+        or:[ something == #methodTrap
+        or:[ something == #methodCoverageInfo
+        or:[ something == #methodInClassRemoved ]]]]]) ifTrue:[
+            ^ self
+        ].
+
+        (something == #classVariables
+        or:[something == #classDefinition]) ifTrue:[
+            categoryOfClass := aParameter category.
+            (self selectedCategoriesStrings includes:categoryOfClass) ifTrue:[
+"/ self halt.
+                self updateOutputGenerator.                
+            ].
+        ].
+    ].
+
+"/    changedObject == ChangeSet ifTrue:[
+"/        something == #addChange: ifTrue:[
+"/            ^ self
+"/        ]
+"/    ].
+
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 20-07-2011 / 18:50:04 / cg"
+! !
+
+!ClassCategoryList methodsFor:'drag & drop'!
+
+canDropContext:aDropContext
+    |cat objects droppedClasses|
+
+    objects := aDropContext dropObjects collect:[:obj | obj theObject].
+    (self objectsAreClassFiles:objects) ifTrue:[^ true].
+
+    (objects conform:[:aClass | aClass isClass]) ifFalse:[^ false].
+    droppedClasses := objects.
+    (droppedClasses contains:[:aClass | aClass isPrivate not]) ifFalse:[^ false].
+
+    cat := self categoryAtTargetPointOf:aDropContext.
+    cat isNil ifTrue:[ ^ false ].
+    cat = '* obsolete *' ifTrue:[ ^  false ].
+
+    (droppedClasses contains:[:aClass | aClass category ~= cat]) ifFalse:[^ false].
+    ^ true.
+
+    "Modified: / 17-10-2006 / 18:28:04 / cg"
+!
+
+categoryAtTargetPointOf:aDropContext
+    |p categoryListView lineNr cat|
+
+    p := aDropContext targetPoint.
+
+    categoryListView := aDropContext targetWidget.
+
+    lineNr := categoryListView lineAtY:p y.
+    lineNr isNil ifTrue:[^ nil].
+
+    cat := rawCategoryList at:lineNr.
+    cat := cat string.
+    cat = self class nameListEntryForALL ifTrue:[^ nil].
+
+    (cat endsWith:(self stringForExtensions)) ifTrue:[
+        cat := cat copyWithoutLast:(self stringForExtensions size)
+    ].
+    ^ cat
+!
+
+doDropContext:aDropContext
+    |cat objects|
+
+    objects := aDropContext dropObjects collect:[:aDropObject | aDropObject theObject].
+    (objects conform:[:something | something isClass]) ifTrue:[
+        cat := self categoryAtTargetPointOf:aDropContext.
+        cat notNil ifTrue:[
+            self masterApplication moveClasses:objects toCategory:cat.
+        ].
+        ^ self
+    ].
+    (objects conform:[:something | something isFilename]) ifTrue:[
+        self dropClassFiles:objects.
+        ^ self
+    ].
+
+    "Modified: / 17-10-2006 / 18:29:25 / cg"
+! !
+
+!ClassCategoryList methodsFor:'generators'!
+
+makeGenerator
+    "return a generator which enumerates the classes from the selected category."
+
+    |cats hideUnloadedClasses allName nameSpaceFilter packageFilter 
+     showChangedClasses showUnloaded showUndocumented showExtendedClasses inclusionTest changedClasses|
+
+    cats := self selectedCategoriesStrings.
+    cats size == 0 ifTrue:[
+        ^ #()
+    ].
+
+    allName := self class nameListEntryForALL.
+
+    (cats includes:allName) ifTrue:[
+        inGeneratorHolder value isOrderedCollection ifTrue:[
+            cats := rawCategoryList copyWithout:allName.
+        ]
+    ].
+
+    showChangedClasses := cats includes:(self class nameListEntryForChanged).
+    showUnloaded := cats includes:(self class nameListEntryForUnloaded).
+    showUndocumented := cats includes:(self class nameListEntryForUndocumented).
+    showExtendedClasses := cats includes:(self class nameListEntryForExtendedClasses).
+
+    hideUnloadedClasses := self hideUnloadedClasses value ? false.
+    nameSpaceFilter := self nameSpaceFilter value.
+    nameSpaceFilter notNil ifTrue:[
+        (nameSpaceFilter includes:allName) ifTrue:[nameSpaceFilter := nil].
+    ].
+    packageFilter := self packageFilter value.
+    packageFilter notNil ifTrue:[
+        (packageFilter includes:allName) ifTrue:[packageFilter := nil].
+    ].
+
+    (cats includes:allName) ifTrue:[
+        hideUnloadedClasses ifTrue:[
+            inclusionTest := [:cls | cls isLoaded].
+        ] ifFalse:[
+            inclusionTest := [:cls | true].
+        ].
+    ] ifFalse:[
+        inclusionTest := 
+            [:cls | 
+                |cat isLoaded included|
+
+                isLoaded := cls isLoaded.
+                included := isLoaded not and:[ showUnloaded ].
+                included ifFalse:[
+                    (hideUnloadedClasses not or:[isLoaded]) ifTrue:[
+                        cat := cls category ? '* no category *'.
+                        included := cats includes:cat.
+                        included ifFalse:[
+                            included := showChangedClasses 
+                                        and:[ (changedClasses includes:cls theNonMetaclass)
+                                                or:[(changedClasses includes:cls theMetaclass)] ].
+                            included ifFalse:[
+                                included := showUndocumented 
+                                            and:[ isLoaded 
+                                            and:[ cls isPrivate not    
+                                            and:[ (cls theMetaclass includesSelector:#documentation) not ]]].
+                                included ifFalse:[
+                                    included := showExtendedClasses
+                                                and:[ cls hasExtensions ].
+                                ].
+                            ].
+                        ].
+                    ].
+                ].
+                included
+            ].
+    ].
+
+    ^ Iterator on:[:whatToDo |
+            showChangedClasses ifTrue:[ changedClasses := ChangeSet current changedClasses ].
+
+            Smalltalk allClassesDo:[:cls |
+                (cls isRealNameSpace) ifFalse:[
+                    (inclusionTest value:cls) ifTrue:[
+                        (nameSpaceFilter isNil
+                        or:[self isClass:cls shownWithNameSpaceFilter:nameSpaceFilter]) ifTrue:[
+                            (packageFilter isNil
+                            or:[self isClass:cls shownWithPackageFilter:packageFilter]) ifTrue:[
+                                whatToDo value:cls
+                            ]
+                        ]
+                    ].
+                ].
+            ].
+        ].
+
+    "Created: / 05-02-2000 / 13:42:12 / cg"
+    "Modified: / 10-11-2006 / 17:13:26 / cg"
+! !
+
+!ClassCategoryList methodsFor:'private'!
+
+colorizeCategoryAsChanged:category
+    |colorizedCategoryItem categoryList idx|
+
+    colorizedCategoryItem := self colorizeForChangedCode:category copy asText.
+
+    categoryList := self categoryList value.
+    idx := categoryList indexOf:category.
+    idx ~~ 0 ifTrue:[
+        ((categoryList at:idx) sameStringAndEmphasisAs:colorizedCategoryItem) ifFalse:[
+            categoryList at:idx put:colorizedCategoryItem.
+            self categoryList changed.
+        ]
+    ].
+!
+
+listOfCategories
+    |categories categoriesBag hideUnloadedClasses generator nameSpaceFilter packageFilter allName
+     categoriesWithExtensions categoriesWithChangedCode categoriesWithRemoteChangedCode
+     classesInChangeSet classesInRemoteChangeSet classesWithExtensions
+     numClassesInChangeSet numClasses numUnloaded numUndocumented numExtendedClasses pseudoEntryColor|
+
+    allName := self class nameListEntryForALL.
+
+    hideUnloadedClasses := self hideUnloadedClasses value.
+    nameSpaceFilter := self nameSpaceFilter value.
+    nameSpaceFilter notNil ifTrue:[
+        (nameSpaceFilter includes:allName) ifTrue:[nameSpaceFilter := nil].
+    ].
+    packageFilter := self packageFilter value.
+    packageFilter notNil ifTrue:[
+        (packageFilter includes:allName) ifTrue:[packageFilter := nil].
+    ].
+
+    numClasses := numUndocumented := numUnloaded := numClassesInChangeSet := numExtendedClasses := 0.
+
+    categories := Set new.
+    categoriesBag := Bag new.
+    categoriesWithExtensions := Set new.
+    categoriesWithChangedCode := Set new.
+    categoriesWithRemoteChangedCode := Set new.
+
+    classesInChangeSet := ChangeSet current changedClasses.
+    classesInChangeSet := classesInChangeSet collect:[:eachClass | eachClass theNonMetaclass].
+
+    classesInRemoteChangeSet := SmallTeam isNil ifTrue:[#()] ifFalse:[ SmallTeam changedClasses ].
+    classesInRemoteChangeSet := classesInRemoteChangeSet collect:[:each | each theNonMetaclass].
+
+    classesWithExtensions := IdentitySet new.
+
+    classes := IdentitySet new.
+    inGeneratorHolder isNil ifTrue:[
+        Smalltalk allClassesDo:[:cls | 
+            |cat isLoaded|
+
+            (cls isRealNameSpace) ifFalse:[
+                (nameSpaceFilter isNil
+                or:[self isClass:cls shownWithNameSpaceFilter:nameSpaceFilter]) ifTrue:[
+                    (packageFilter isNil
+                    or:[self isClass:cls shownWithPackageFilter:packageFilter]) ifTrue:[
+
+                        isLoaded := cls isLoaded.
+                        isLoaded ifTrue:[ 
+                            numUnloaded := numUnloaded + 1.
+                            cls isPrivate ifFalse:[  
+                                (cls theMetaclass includesSelector:#documentation) ifFalse:[
+                                    numUndocumented := numUndocumented + 1.
+                                ].
+                            ].
+                        ].
+
+                        (hideUnloadedClasses not or:[isLoaded])
+                        ifTrue:[
+                            numClasses := numClasses + 1.
+
+                            cat := cls category ? '* no category *'.
+                            cat isString ifFalse:[self halt:'oops - strange category'].
+                            categories add:cat.
+                            classes add:cls.
+                            categoriesBag add:cat.
+
+                            (classesInChangeSet includes:cls theNonMetaclass) ifTrue:[
+                                categoriesWithChangedCode add:cat
+                            ].
+                            (classesInRemoteChangeSet includes:cls theNonMetaclass) ifTrue:[
+                                categoriesWithRemoteChangedCode add:cat
+                            ].
+                            cls hasExtensions ifTrue:[
+                                categoriesWithExtensions add:cat.
+                                classesWithExtensions add:cls.
+                                numExtendedClasses := numExtendedClasses + 1.
+                            ].
+                        ]
+                    ]
+                ]
+            ]
+        ].
+
+        "/ those are simulated - in ST/X, empty categories do not
+        "/ really exist; however, during browsing, it makes sense.
+        AdditionalEmptyCategories size > 0 ifTrue:[
+            "/ remove those that are present ...
+            AdditionalEmptyCategories := AdditionalEmptyCategories select:[:cat | (categories includes:cat) not].
+            categories addAll:AdditionalEmptyCategories.
+            categoriesBag addAll:AdditionalEmptyCategories withOccurrences:0.
+        ].
+    ] ifFalse:[
+        |setOfCategories|
+
+        generator := inGeneratorHolder value.
+        generator isNil ifTrue:[^ #() ].
+        setOfCategories := Set withAll:generator.
+        generator do:[:cat | categories add:cat string].
+        
+        Smalltalk allClassesDo:[:each |
+            |cat|
+
+            each isNameSpace ifFalse:[
+                cat := each category string asSymbol.
+                (setOfCategories includes:cat) ifTrue:[
+                    categoriesBag add:cat.
+                ].
+            ]
+        ].
+    ].
+
+    pseudoEntryColor := self class pseudoEntryForegroundColor.
+
+    categories := categories asOrderedCollection.
+
+    categories sort.
+    rawCategoryList := categories.
+
+    categories := 
+        categories collect:[:cat |
+            |item isInChangeSet|
+
+            isInChangeSet := categoriesWithChangedCode includes:cat.
+            isInChangeSet ifTrue:[
+                 item := self colorizeForChangedCode:cat copy asText
+            ] ifFalse:[
+                (categoriesWithExtensions includes:cat) ifTrue:[
+                     item := self colorizeForDifferentPackage:cat copy asText
+                     "/ cannot add a + here - need separate list for presentation and filter
+                     "/ cat , (self colorizeForDifferentPackage:self stringForExtensions)
+                ] ifFalse:[
+                    (categoriesWithRemoteChangedCode includes:cat) ifTrue:[
+                         item := self colorizeForChangedCodeInSmallTeam:cat copy asText
+                    ] ifFalse:[
+                         item := cat
+                    ]
+                ]
+            ].
+            item := item , ((' (%1)' bindWith:(categoriesBag occurrencesOf:cat)) 
+                                colorizeAllWith:pseudoEntryColor).
+            isInChangeSet ifTrue:[
+                item := item , self class markForBeingInChangeList
+            ].
+
+            item        
+        ].
+
+    numUndocumented > 0 ifTrue:[
+        rawCategoryList add:self class nameListEntryForUndocumented.
+        categories add:((self class nameListEntryForUndocumentedWithCount bindWith:numUndocumented) allItalic colorizeAllWith:pseudoEntryColor).
+    ].
+    numUnloaded > 0 ifTrue:[
+        rawCategoryList add:self class nameListEntryForUnloaded.
+        categories add:((self class nameListEntryForUnloadedWithCount bindWith:numUnloaded) allItalic colorizeAllWith:pseudoEntryColor).
+    ].
+    numExtendedClasses > 0 ifTrue:[
+        rawCategoryList add:self class nameListEntryForExtendedClasses.
+        categories add:((self class nameListEntryForExtendedClassesWithCount bindWith:numExtendedClasses) allItalic colorizeAllWith:pseudoEntryColor).
+    ].
+    numClassesInChangeSet := ChangeSet current changedClasses size.
+    numClassesInChangeSet > 0 ifTrue:[
+        rawCategoryList addFirst:self class nameListEntryForChanged.
+        categories addFirst:((self class nameListEntryForChangedWithCount bindWith:numClassesInChangeSet) allItalic colorizeAllWith:pseudoEntryColor).
+    ].
+
+    categories size > 0 ifTrue:[
+        categories size == 1 ifTrue:[
+            self classCategoryLabelHolder value:(categories first)
+        ].
+        rawCategoryList addFirst:self class nameListEntryForALL.
+        categories addFirst:((self class nameListEntryForALLWithCount bindWith:numClasses) allItalic colorizeAllWith:pseudoEntryColor).
+    ].
+
+    cookedCategoryList := categories.
+    ^ rawCategoryList.
+
+    "Created: / 05-02-2000 / 13:42:12 / cg"
+    "Modified: / 27-10-2012 / 12:34:19 / cg"
+!
+
+listView 
+    ^ self componentAt:#List
+!
+
+makeDependent
+    Smalltalk addDependent:self.
+    ChangeSet addDependent:self.
+
+    "Created: / 5.2.2000 / 13:42:13 / cg"
+!
+
+makeIndependent
+    Smalltalk removeDependent:self.
+    ChangeSet removeDependent:self.
+
+    "Created: / 5.2.2000 / 13:42:13 / cg"
+!
+
+makeItemVisible:item
+    |idx listView|
+
+    idx := categoryList value indexOf:item.
+    idx ~~ 0 ifTrue:[
+        (listView := self listView) notNil ifTrue:[
+            listView makeLineVisible:idx.
+        ]
+    ]
+!
+
+makeSelectionOtherThanAllVisible
+    |selectedCategories item|
+
+    selectedCategories := self selectedCategoriesStrings.
+    "/ the first item after the *all* item
+    item := (selectedCategories copy remove:self class nameListEntryForALL; yourself) first.
+    self makeItemVisible:item.
+!
+
+release
+    super release.
+
+    categoryList removeDependent:self.
+!
+
+selectedCategoriesStrings
+    |selectedCategories stringForExtensions|
+
+    stringForExtensions := self stringForExtensions.
+
+    selectedCategories := self selectedCategories value ? #().
+
+"/    selectedCategories := selectedCategories 
+"/                collect:[:each | 
+"/                                |s|
+"/                                s := each string.
+"/                                (s endsWith:stringForExtensions) ifTrue:[
+"/                                    s := s copyWithoutLast:(stringForExtensions size).
+"/                                ].
+"/                                s
+"/                        ].
+    ^ selectedCategories
+
+    "Modified: / 23-08-2006 / 11:38:26 / cg"
+!
+
+stringForExtensions
+    ^ ' [ + ]'
+!
+
+updateList
+    |oldList newList oldSelection newSelection prevClasses
+     selectedCategoriesHolder|
+
+    selectedCategoriesHolder := self selectedCategories.
+    oldSelection := selectedCategoriesHolder value ? #().
+    prevClasses := classes copy.
+
+    newList := self listOfCategories.    "/ sigh - sideeffect of setting rawList
+    oldList := (self categoryList value) ? #().
+    (newList sameContentsAs:oldList whenComparedWith:[:a :b | a sameStringAndEmphasisAs: b]) 
+    ifFalse:[
+        "/ a real change, or only emphasis ?
+        (newList sameContentsAs:oldList whenComparedWith:[:a :b | a asString string = b asString string]) ifTrue:[
+            "/ only emphasis
+            oldSelection size > 0 ifTrue:[
+                selectedCategoriesHolder removeDependent:self.
+                selectedCategoriesHolder value:#().
+                selectedCategoriesHolder addDependent:self.
+            ].
+            categoryList value:newList.
+
+            oldSelection size > 0 ifTrue:[
+                newSelection := oldSelection select:[:cat | newList includes:cat].
+                selectedCategoriesHolder value:newSelection.
+            ]
+        ] ifFalse:[
+            "/ a real change
+
+            categoryList value:newList.
+
+            "/ in case the same categories are present, but classes have changed ...
+            (prevClasses isNil or:[(classes identicalContentsAs:prevClasses) not]) ifTrue:[
+                self updateOutputGenerator.
+            ]
+        ]
+    ] ifTrue:[
+        "/ in case the same categories are present, but classes have changed ...
+        (prevClasses isNil or:[(classes identicalContentsAs:prevClasses) not]) ifTrue:[
+            self updateOutputGenerator.
+        ]
+    ].
+    listValid := true.
+
+    "Created: / 05-02-2000 / 13:42:13 / cg"
+    "Modified: / 17-08-2011 / 09:52:13 / cg"
+! !
+
+!ClassCategoryList methodsFor:'setup'!
+
+commonPostBuild
+    |listView|
+
+    listView := self listView.
+    listView notNil ifTrue:[
+        listView scrollWhenUpdating:nil
+    ].
+    super commonPostBuild
+!
+
+postBuildCategoryListView:aView
+    categoryListView := aView.
+    categoryListView visualBlock:[:view :lineNr | cookedCategoryList at:lineNr].
+    categoryListView selectedVisualBlock:[:view :lineNr | (cookedCategoryList at:lineNr) string]
+! !
+
+!ClassCategoryList methodsFor:'special'!
+
+addAdditionalCategory:aCategory
+    "/ those are simulated - in ST/X, empty categories do not
+    "/ really exist; however, during browsing, it makes sense.
+
+    self class addAdditionalCategory:aCategory
+!
+
+removeAdditionalCategories:aListOfCategories
+    self class removeAdditionalCategories:aListOfCategories
+!
+
+removeAllAdditionalCategories
+    self class removeAllAdditionalCategories
+!
+
+renameAdditionalCategories:oldNames to:newName
+    "/ those are simulated - in ST/X, empty categories do not
+    "/ really exist; however, during browsing, it makes sense.
+
+    self class renameAdditionalCategories:oldNames to:newName
+! !
+
+!ClassCategoryList class methodsFor:'documentation'!
+
+version
+    ^ '$Id: Tools__ClassCategoryList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_ClassCategoryList.st,v 1.40 2012/11/07 14:19:04 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id:: Tools__ClassCategoryList.st 8083 2013-01-14 11:48:37Z vranyj1                                                          $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__ClassChecker.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,930 @@
+"
+ COPYRIGHT (c) 2004 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:#ClassChecker
+	instanceVariableNames:'checkedClass badClasses badClassInfo badMethods badMethodInfo
+		obsoleteWarners allObsoleteMethods checksPerformed'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+!ClassChecker class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2004 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.
+"
+!
+
+documentation
+"
+    embeddable application displaying the class-categories.
+    Provides an outputGenerator, which enumerates the classes in
+    the selected categories.
+
+    Attention: do not change the method categories 'checks-' into something else.
+    The 'checks-' prefix is used to detect checks and these are listed in the browsers
+    lint dialog.
+
+    [author:]
+        Claus Gittinger (cg@exept.de)
+"
+! !
+
+!ClassChecker class methodsFor:'queries'!
+
+individualChecks
+    "return a list of supported checks"
+
+    |checks|
+
+    checks := OrderedCollection new.
+    self methodDictionary keysAndValuesDo:[:sel :mthd |
+	(mthd category startsWith:'checks')  ifTrue:[checks add:sel]
+    ].
+    checks sort.
+    ^ checks
+
+    "
+     self individualChecks
+    "
+
+    "Created: / 18.8.2000 / 22:30:46 / cg"
+    "Modified: / 18.8.2000 / 22:31:02 / cg"
+! !
+
+!ClassChecker methodsFor:'accessing'!
+
+badClassInfo
+    ^ badClassInfo
+!
+
+badMethodInfo
+    ^ badMethodInfo
+!
+
+checkedClass
+    "return the value of the instance variable 'checkedClass' (automatically generated)"
+
+    ^ checkedClass
+!
+
+checkedClass:something
+    "set the value of the instance variable 'checkedClass' (automatically generated)"
+
+    checkedClass := something.
+    checksPerformed := nil.
+! !
+
+!ClassChecker methodsFor:'checking'!
+
+allChecks
+    self errorChecks.
+    self warningChecks.
+    self styleChecks.
+!
+
+doCheck:whichCheck
+    checksPerformed isNil ifTrue:[
+	checksPerformed := Set new.
+    ].
+    (checksPerformed includes:whichCheck) ifFalse:[
+	checksPerformed add:whichCheck.
+	self perform:whichCheck
+    ]
+!
+
+errorChecks
+    self doCheck:#subclassResponsibilityNotDefined.
+    self doCheck:#sentNotImplemented.
+    self doCheck:#definesEqualButNotHash.
+    self doCheck:#instanceVariablesNeverWritten.
+!
+
+styleChecks
+    self doCheck:#checkProtocols.
+    self doCheck:#sendsObsoleteMethodWarningButNotTaggedAsObsoleteOrViceVersa.
+    self doCheck:#unusedInstanceVariables.
+    self doCheck:#unusedClassVariables.
+
+"/    self doCheck:#guardingClause.
+
+    "Modified: / 18-05-2010 / 14:38:15 / cg"
+!
+
+warningChecks
+    self doCheck:#messageNeverSentAndNotUsedAsSymbol.
+    self doCheck:#sendsObsoleteMessages.
+    self doCheck:#instanceVariablesNeverUsed.
+    self doCheck:#instanceVariablesNeverWritten.
+    self doCheck:#classVariablesNeverUsed.
+    self doCheck:#classVariablesNeverWritten.
+    self doCheck:#classInstanceVariablesNeverUsed.
+    self doCheck:#classInstanceVariablesNeverWritten.
+    self doCheck:#invalidKeyInImageResourceMethod
+! !
+
+!ClassChecker methodsFor:'checks-individual'!
+
+checkProtocols
+    checkedClass instAndClassSelectorsAndMethodsDo:[:mSelector :method |
+	self checkProtocolOf:method
+    ]
+!
+
+checkVariableNameConventions
+    |badInstVars badClassVars|
+
+    badInstVars := checkedClass instanceVariableNames select:[:varName | varName isUppercaseFirst].
+    badClassVars := checkedClass classVarNames select:[:varName | varName first isLowercase].
+
+    badInstVars notEmpty ifTrue:[
+        badInstVars := (badInstVars collect:[:v | '''' , v , '''']) asStringWith:$, .
+        self 
+            rememberBadClass:checkedClass
+            info:('instVars ' , badInstVars , ' should be lowercase (#checkNameConventions)').
+    ].
+    badClassVars notEmpty ifTrue:[
+        badClassVars := (badClassVars collect:[:v | '''' , v , '''']) asStringWith:$, .
+        self 
+            rememberBadClass:checkedClass
+            info:('classVars ' , badClassVars , ' should be uppercase (#checkNameConventions)').
+    ].
+!
+
+classInstanceVariablesNeverUsed
+    self instanceVariablesNeverUsedIn:checkedClass theMetaclass.
+!
+
+classInstanceVariablesNeverWritten
+    self instanceVariablesNeverWrittenIn:checkedClass theMetaclass.
+!
+
+classVariablesNeverUsed
+    |cls notUsedHere notUsedAnyWhere anySubclass|
+
+    cls := checkedClass theNonMetaclass.
+    notUsedHere := cls classVarNames asSet.
+    notUsedHere isEmpty ifTrue:[^ self].
+
+    self removeUsedClassVariablesIn:cls from:notUsedHere.
+    self removeUsedClassVariablesIn:cls class from:notUsedHere.
+
+    notUsedHere notEmpty ifTrue:[
+	notUsedAnyWhere := notUsedHere copy.
+	anySubclass := false.
+	cls allSubclassesDo:[:eachSubclass |
+	    anySubclass := true.
+	    notUsedAnyWhere notEmpty ifTrue:[
+		self removeUsedClassVariablesIn:eachSubclass from:notUsedAnyWhere.
+		self removeUsedClassVariablesIn:eachSubclass class from:notUsedAnyWhere.
+	    ]
+	].
+
+	notUsedHere do:[:eachVariable |
+	    |className|
+
+	    className := checkedClass name allBold.
+	    self 
+		rememberBadClass:cls
+		info:('classVar ' , eachVariable allBold , ' is unused in ' , className , ' (#classVariablesNeverUsed)').
+	    (notUsedAnyWhere includes:eachVariable) ifTrue:[
+		self 
+		    rememberBadClass:cls
+		    info:('classVar ' , eachVariable allBold , ' is not even used in subclasses of ' , className , ' (#classVariablesNeverUsed)')
+	    ]
+	].
+    ]
+!
+
+classVariablesNeverWritten
+    |cls notWrittenHere notWrittenAnyWhere anySubclass|
+
+    cls := checkedClass theNonMetaclass.
+    notWrittenHere := cls classVarNames asSet.
+    notWrittenHere isEmpty ifTrue:[^ self].
+
+    self removeWrittenClassVariablesIn:cls from:notWrittenHere.
+    self removeWrittenClassVariablesIn:cls class from:notWrittenHere.
+
+    notWrittenHere notEmpty ifTrue:[
+	notWrittenAnyWhere := notWrittenHere copy.
+	anySubclass := false.
+	cls allSubclassesDo:[:eachSubclass |
+	    anySubclass := true.
+	    notWrittenAnyWhere notEmpty ifTrue:[
+		self removeWrittenClassVariablesIn:eachSubclass from:notWrittenAnyWhere.
+		self removeWrittenClassVariablesIn:eachSubclass class from:notWrittenAnyWhere.
+	    ]
+	].
+
+	notWrittenHere do:[:eachVariable |
+	    |className|
+
+	    className := cls name allBold.
+	    self 
+		rememberBadClass:cls
+		info:('classVar ' , eachVariable allBold , ' is not set in ' , className , ' (#classVariablesNeverWritten)').
+	    (notWrittenAnyWhere includes:eachVariable) ifTrue:[
+		self 
+		    rememberBadClass:cls
+		    info:('classVar ' , eachVariable allBold , ' is not even set in subclasses of ' , className , ' (#classVariablesNeverWritten)')
+	    ]
+	].
+    ]
+!
+
+definesEqualButNotHash
+    (checkedClass includesSelector:#=) ifTrue:[
+	(checkedClass includesSelector:#hash) ifFalse:[
+	    self 
+		rememberBadClass:checkedClass 
+		info:(checkedClass name allBold, ' redefines #=, but not #hash (#definesEqualButNotHash)').
+	]
+    ]
+!
+
+guardingClause
+    |detector|
+
+    detector := ParseTreeLintRule guardingClause.
+    detector runOnEnvironment: (Array with:checkedClass).
+self breakPoint:#cg.
+!
+
+instanceVariablesNeverUsed
+    self instanceVariablesNeverUsedIn:checkedClass theNonMetaclass.
+!
+
+instanceVariablesNeverWritten
+    self instanceVariablesNeverWrittenIn:checkedClass theNonMetaclass.
+!
+
+invalidKeyInImageResourceMethod
+    Icon flushCachedIcons.
+    checkedClass instAndClassSelectorsAndMethodsDo:[:sel :mthd | 
+        |img key name|
+
+        (mthd hasImageResource) ifTrue:[
+           img := mthd valueWithReceiver:nil arguments:#().
+           key := (Icon classVarAt:#KnownIcons) keyAtIdentityValue:img.
+           key notNil ifTrue:[
+              mthd mclass notNil ifTrue:[  
+                  name := (mthd mclass name , ' ', mthd selector).
+                  name ~= key ifTrue:[
+                      self 
+                          rememberBadMethod:mthd 
+                          key:#invalidKeyInImageResourceMethod
+                          info:('key in constantNamed: does not match the method name')
+                  ]
+              ]
+           ]
+        ]
+    ].
+!
+
+messageNeverSent
+    "/ old code: (slow)
+"/    checkedClass instAndClassSelectorsAndMethodsDo:[:mSelector :method |
+"/        (self anySendsOf:mSelector) ifFalse:[
+"/            self 
+"/                rememberBadMethod:method 
+"/                info:('#' , mSelector , ' is nowhere sent (#messageNeverSent)')
+"/        ].
+"/    ].
+
+    |selectorsOfInterest|
+
+    selectorsOfInterest := IdentitySet new.
+    checkedClass instAndClassSelectorsAndMethodsDo:[:mSelector :method |  selectorsOfInterest add:mSelector].
+    (self messagesNeverSentIn:selectorsOfInterest) do:[:eachNeverSent |
+	self 
+	    rememberBadMethod:(checkedClass compiledMethodAt:eachNeverSent) 
+	    key:#messageNeverSent
+	    info:('#' , eachNeverSent allBold, ' is nowhere sent (#messageNeverSent)')
+    ].
+
+    "Modified: / 18.8.2000 / 22:54:45 / cg"
+!
+
+messageNeverSentAndNotUsedAsSymbol
+    |selectorsOfInterest|
+
+    selectorsOfInterest := IdentitySet new.
+    checkedClass instAndClassSelectorsAndMethodsDo:[:mSelector :method |  selectorsOfInterest add:mSelector].
+    (self messagesNeverSentAndNotUsedAsSymbolIn:selectorsOfInterest) do:[:eachNeverSent |
+	self 
+	    rememberBadMethod:(checkedClass compiledMethodAt:eachNeverSent) 
+	    key:#messageNeverSentAndNotUsedAsSymbol
+	    info:('#' , eachNeverSent allBold, ' is nowhere sent and selector-symbol not used in any method (#messageNeverSentAndNotUsedAsSymbol)')
+    ].
+
+    "Modified: / 18.8.2000 / 23:10:56 / cg"
+!
+
+parseMethod:method in:aClass withParserDo:aBlock onErrorDo:errorBlock
+    |source parser|
+
+    source := method source.
+    parser := Parser
+                parseMethod:source
+                in:aClass
+                ignoreErrors:true
+                ignoreWarnings:true.
+
+    (parser notNil and:[parser ~~ #Error]) ifTrue:[
+        aBlock value:parser
+    ] ifFalse:[
+        errorBlock value
+    ].
+
+    "Created: / 18-05-2010 / 15:17:19 / cg"
+!
+
+sendsObsoleteMessages
+    obsoleteWarners isNil ifTrue:[
+        obsoleteWarners := Object selectors select:[:each | each startsWith:'obsoleteMethodWarning'].
+    ].
+    allObsoleteMethods isNil ifTrue:[
+        allObsoleteMethods := IdentitySet new.
+        Method allSubInstancesDo:[:eachMethod | |lits selector|
+                ((lits := eachMethod literals) notNil
+                and:[lits includesAny:obsoleteWarners]) ifTrue:[
+                     (eachMethod messagesSent includesAny:obsoleteWarners) ifTrue:[
+                        selector := eachMethod selector.
+                        selector notNil ifTrue:[
+                            allObsoleteMethods add:selector.
+                        ]
+                    ].
+                ].
+            ].
+
+        "/ manually patchup; there are some which should not be considered as bad ...
+        allObsoleteMethods removeAllFoundIn:#( #','  #'at:'  #'at:put:'  #'raise').
+        allObsoleteMethods removeAllFoundIn:#( #'asText').
+        allObsoleteMethods removeAllFoundIn:obsoleteWarners.
+    ].
+
+    checkedClass instAndClassSelectorsAndMethodsDo:[:sel :mthd | 
+        |lits sentMessages whichOnes pT searcher nodes|
+
+        ((lits := mthd literals) notNil
+        and:[lits includesAny:allObsoleteMethods]) ifTrue:[
+            sentMessages := mthd messagesSent.
+            (sentMessages includesAny:allObsoleteMethods) ifTrue:[
+                whichOnes := sentMessages select:[:each | allObsoleteMethods includes:each].
+
+                (RBParser notNil
+                and:[RBParser isLoaded]) ifTrue:[
+                    "/ lets look at this a bit more detailed;
+                    "/ parse it and see if we can filter out any messages 
+                    "/ (i.e. look if we can figure out the receiver type)
+
+"/                    pT := RBParser 
+"/                            parseMethod: (mthd source)
+"/                            onError: [:aString :pos | nil].
+"/                    pT notNil ifTrue:[
+"/                        searcher := ParseTreeSearcher 
+"/                                        allMessageSendsMatchingAny:whichOnes ignoreCase:false.
+"/                        nodes := searcher executeTree:pT initialAnswer:(OrderedCollection new).
+"/                        nodes := nodes 
+"/                            select:
+"/                                [:aSendNode |
+"/                                    self halt.
+"/                                ].
+"/                        whichOnes := nodes collect:[:aSendNode | aSendNode selector].
+"/                    ].
+                ].
+
+                whichOnes asOrderedCollection sort do:[:eachObsoleteMessage |
+                    self 
+                        rememberBadMethod:mthd 
+                        key:#sendsObsoleteMessages
+                        info:('possibly sends an obsolete message: ' , eachObsoleteMessage , ' (#sendsObsoleteMessages)')
+                ].
+            ].
+        ]
+    ]
+!
+
+sendsObsoleteMethodWarningButNotTaggedAsObsoleteOrViceVersa
+    |obsoleteWarners|
+
+    obsoleteWarners := #( #'obsoleteMethodWarning' #'obsoleteMethodWarning:' ).
+
+    checkedClass instAndClassSelectorsAndMethodsDo:[:sel :mthd | 
+        |lits sentMessages whichOnes pT searcher nodes|
+
+        ((lits := mthd literals) notNil
+        and:[lits includesAny:obsoleteWarners]) ifTrue:[
+            mthd isObsolete ifFalse:[
+                self 
+                    rememberBadMethod:mthd 
+                    key:#sendsObsoleteMethodWarningButNotTaggedAsObsoleteOrViceVersa
+                    info:('sends obsoleteMethodWarning but not tagged as obsolete')
+            ].
+        ] ifFalse:[
+            mthd isObsolete ifTrue:[
+                self 
+                    rememberBadMethod:mthd 
+                    key:#sendsObsoleteMethodWarningButNotTaggedAsObsoleteOrViceVersa
+                    info:('tagged as obsolete but does not send an obsoleteMethodWarning')
+            ].
+        ].
+    ]
+!
+
+sentNotImplemented
+    |alreadyChecked alreadyCheckedSelf alreadyCheckedSuper|
+
+    alreadyChecked := IdentitySet new.
+    alreadyCheckedSelf := IdentitySet new.
+    alreadyCheckedSuper := IdentitySet new.
+
+    checkedClass methodDictionary keysAndValuesDo:[:mSelector :method |
+	|sentSelectors selfSelectors superSelectors selectorsNoWhereImplemented|
+
+	selectorsNoWhereImplemented := IdentitySet new.
+	sentSelectors := method messagesSent.
+	sentSelectors do:[:eachSelector |
+	    (alreadyChecked includes:eachSelector) ifFalse:[
+		(self anyImplementationOf:eachSelector) ifTrue:[
+		    alreadyChecked add:eachSelector
+		] ifFalse:[
+		    selectorsNoWhereImplemented add:eachSelector.
+		    self 
+			rememberBadMethod:method 
+			key:#sentNotImplemented
+			info:('#' , eachSelector allBold, ' is nowhere implemented (#sentNotImplemented)')
+		]
+	    ]
+	].
+
+	selfSelectors := method messagesSentToSelf.
+	selfSelectors do:[:eachSelector |
+	    (selectorsNoWhereImplemented includes:eachSelector) ifFalse:[
+		(alreadyCheckedSelf includes:eachSelector) ifFalse:[
+		    (self anyImplementationOf:eachSelector inOrAbove:checkedClass) ifTrue:[
+			alreadyCheckedSelf add:eachSelector
+		    ] ifFalse:[            
+			self 
+			    rememberBadMethod:method 
+			    key:#sentNotImplemented
+			    info:('#' , eachSelector allBold, ' is not implemented in the class (#sentNotImplemented)')
+		    ]
+		]
+	    ]
+	].
+        
+	superSelectors := method messagesSentToSuper.
+	superSelectors do:[:eachSelector |
+	    (selectorsNoWhereImplemented includes:eachSelector) ifFalse:[
+		(alreadyCheckedSuper includes:eachSelector) ifFalse:[
+		    (self anyImplementationOf:eachSelector inOrAbove:(checkedClass superclass)) ifTrue:[
+			alreadyCheckedSuper add:eachSelector
+		    ] ifFalse:[            
+			self 
+			    rememberBadMethod:method 
+			    key:#sentNotImplemented
+			    info:('#' , eachSelector allBold, ' is not implemented in any superclass (#sentNotImplemented)')
+		    ]
+		]
+	    ]
+	].
+    ].
+!
+
+subclassResponsibilityNotDefined
+    |classesInBetween|
+
+    checkedClass allSuperclasses do:[:eachSuperClass |
+	eachSuperClass methodDictionary keysAndValuesDo:[:mSelector :method |
+	    (method referencesLiteral:#subclassResponsibility) ifTrue:[
+		"/ parse it to see if it really does ...
+		(method sends:#subclassResponsibility) ifTrue:[
+		    "/ ok, got one;
+		    "/ now, see if it is defined below this superClass
+		    classesInBetween := checkedClass withAllSuperclasses copy.
+		    classesInBetween removeAll:(eachSuperClass withAllSuperclasses).
+		    (self anyImplementationOf:mSelector in:classesInBetween) ifFalse:[
+			(self methodShouldBeIgnoredInSubclassResponsibilityNotDefined:method)
+			ifFalse:[
+			    self 
+				rememberBadMethod:method 
+				key:#subclassResponsibilityNotDefined
+				info:(checkedClass name allBold , ' should redefine the #' , mSelector allBold , ' method (#subclassResponsibilityNotDefined)').
+			].
+		    ].
+		]
+	    ]
+	]
+    ].
+!
+
+unusedClassVariables
+    |remainingVars|
+
+    remainingVars := checkedClass theNonMetaclass classVarNames asSet.
+
+    checkedClass theNonMetaclass withAllSubclassesDo:[:eachClassToCheck |
+        eachClassToCheck instAndClassMethodsDo:[:method |
+            self 
+                parseMethod:method in:method mclass 
+                withParserDo:[:parser |
+                    remainingVars removeAllFoundIn:(parser usedClassVars)
+                ]
+                onErrorDo:[]
+        ].
+    ].
+
+    remainingVars asSortedCollection do:[:eachVar |
+        self rememberBadClass:checkedClass info:'Unused class variable: ',eachVar
+    ].
+
+    "Created: / 18-05-2010 / 14:37:42 / cg"
+!
+
+unusedInstanceVariables
+    |remainingVars|
+
+    remainingVars := checkedClass theNonMetaclass instVarNames asSet.
+
+    checkedClass theNonMetaclass withAllSubclassesDo:[:eachClassToCheck |
+        eachClassToCheck methodDictionary keysAndValuesDo:[:mSelector :method |
+            self 
+                parseMethod:method in:eachClassToCheck 
+                withParserDo:[:parser |
+                    remainingVars removeAllFoundIn:(parser usedInstVars)
+                ]
+                onErrorDo:[]
+        ].
+    ].
+
+    remainingVars asSortedCollection do:[:eachVar |
+        self rememberBadClass:checkedClass info:'Unused instance variable: ',eachVar
+    ].
+
+    "Created: / 18-05-2010 / 14:32:09 / cg"
+! !
+
+!ClassChecker methodsFor:'helpers'!
+
+anyImplementationOf:aSelector
+    Smalltalk allClassesDo:[:eachClass |
+	(eachClass theNonMetaclass includesSelector:aSelector) ifTrue:[^ true].
+	(eachClass theMetaclass includesSelector:aSelector) ifTrue:[^ true].
+    ].
+    ^ false
+!
+
+anyImplementationOf:aSelector in:aCollectionOfClasses
+    ^ aCollectionOfClasses 
+        contains:[:aClass | (aClass includesSelector:aSelector) ].
+!
+
+anyImplementationOf:aSelector inOrAbove:aClass
+    aClass withAllSuperclassesDo:[:eachClass |
+	(eachClass includesSelector:aSelector) ifTrue:[^ true].
+    ].
+    ^ false
+!
+
+anySendsOf:aSelector
+    Smalltalk allMethodsDo:[:mthd |
+        (mthd sends:aSelector) ifTrue:[^ true].
+    ].
+    ^ false
+!
+
+checkProtocolOf:aMethod
+    |mClass mSelector protocol superClass implClass superProtocol|
+
+    mClass := aMethod mclass.
+    mSelector := aMethod selector.
+    mClass isNil ifTrue:[^ true].
+    mSelector isNil ifTrue:[^ true].
+
+    protocol := aMethod category.
+    protocol isNil ifTrue: [^true].
+
+    superClass := mClass superclass.
+    superClass isNil ifTrue: [^true].
+
+    implClass := superClass whichClassIncludesSelector:mSelector.
+    implClass isNil ifTrue: [^true].
+
+    superProtocol := (implClass compiledMethodAt:mSelector) category.
+    superProtocol = protocol ifTrue: [^true].
+    superProtocol isNil ifTrue: [^true].
+
+    self 
+        rememberBadMethod:aMethod
+        key:#checkProtocols
+        info:('#' , mSelector allBold , ' is classified under "' , protocol allBold , '" in '
+              , mClass name , ' and under "' , superProtocol allBold , '" in ' , implClass name
+              , ' (#checkProtocols)')
+
+    "Modified: / 18.8.2000 / 23:13:53 / cg"
+!
+
+checkUnusedVariables:aMethod rememberReadInstVarsIn:readInstVars writtenInstVarsIn:writtenInstVars readClassVarsIn:readClassVars writtenClassVarsIn:writtenClassVars
+    |p mClass sourceString|
+
+    sourceString := aMethod source.
+
+    mClass := aMethod mclass.
+
+    p := Parser parseMethodSilent:sourceString in:mClass.
+    readInstVars addAll:(p readInstVars).
+    writtenInstVars addAll:(p modifiedInstVars).
+    readClassVars addAll:(p readClassVars).
+    writtenClassVars addAll:(p modifiedClassVars).
+!
+
+instanceVariablesNeverUsedIn:aClass
+    |notUsedHere notUsedAnyWhere anySubclass|
+
+    notUsedHere := aClass instVarNames asSet.
+    notUsedHere isEmpty ifTrue:[^ self].
+
+    self removeUsedInstanceVariablesIn:aClass from:notUsedHere.
+
+    notUsedHere notEmpty ifTrue:[
+	notUsedAnyWhere := notUsedHere copy.
+	anySubclass := false.
+	aClass allSubclassesDo:[:eachSubclass |
+	    anySubclass := true.
+	    notUsedAnyWhere notEmpty ifTrue:[
+		self removeUsedInstanceVariablesIn:eachSubclass from:notUsedAnyWhere.
+	    ]
+	].
+
+	notUsedHere do:[:eachVariable |
+	    |className|
+
+	    className := aClass name allBold.
+	    self 
+		rememberBadClass:aClass 
+		info:('instVar ' , eachVariable allBold , ' is unused in ' , className , ' (#instanceVariablesNeverUsed)').
+
+	    anySubclass ifTrue:[
+		(notUsedAnyWhere includes:eachVariable) ifTrue:[
+		    self 
+			rememberBadClass:aClass 
+			info:('instVar ' , eachVariable allBold , ' is not even used in subclasses of ' , className , ' (#instanceVariablesNeverUsed)')
+		]
+	    ]
+	].
+    ]
+!
+
+instanceVariablesNeverWrittenIn:aClass
+    |notWrittenHere notWrittenAnyWhere anySubclass|
+
+    notWrittenHere := aClass instVarNames asSet.
+    notWrittenHere isEmpty ifTrue:[^ self].
+
+    self removeWrittenInstanceVariablesIn:aClass from:notWrittenHere.
+
+    notWrittenHere notEmpty ifTrue:[
+	notWrittenAnyWhere := notWrittenHere copy.
+	anySubclass := false.
+	aClass allSubclassesDo:[:eachSubclass |
+	    anySubclass := true.
+	    notWrittenAnyWhere notEmpty ifTrue:[
+		self removeWrittenInstanceVariablesIn:eachSubclass from:notWrittenAnyWhere.
+	    ]
+	].
+
+	notWrittenHere do:[:eachVariable |
+	    |className|
+
+	    className := aClass name allBold.
+	    self 
+		rememberBadClass:aClass
+		info:('instVar ' , eachVariable allBold , ' is nowhere set in ' , className , ' (#instanceVariablesNeverWritten)').
+	    anySubclass ifTrue:[
+		(notWrittenAnyWhere includes:eachVariable) ifTrue:[
+		    self 
+			rememberBadClass:aClass
+			info:('instVar ' , eachVariable allBold , ' is not even set in subclasses of ' , className , ' (#instanceVariablesNeverWritten)')
+		]
+	    ]
+	].
+    ]
+!
+
+messagesNeverSentAndNotUsedAsSymbolIn:selectorsOfInterest
+    |remaining toRemove checkBlock|
+
+    remaining := selectorsOfInterest copy asIdentitySet.
+    toRemove := IdentitySet new.
+
+    checkBlock := [:eachClass |
+	eachClass instAndClassSelectorsAndMethodsDo:[:mSel :mthd | |lits|
+	    lits := mthd literals.
+	    lits notNil ifTrue:[
+		lits traverse:[:eachLiteral |
+		    eachLiteral isSymbol ifTrue:[        
+			remaining remove:eachLiteral ifAbsent:nil.
+		    ]
+		].
+		remaining isEmpty ifTrue:[^ remaining].
+	    ]
+	].
+    ].
+
+    "/ start searching in the checkedClass - chances are high, we find some here
+    checkBlock value:checkedClass.
+    checkedClass superclass notNil ifTrue:[checkBlock value:checkedClass superclass].
+    Smalltalk allClassesDo:checkBlock.
+
+    ^ remaining
+
+    "Modified: / 18.8.2000 / 23:05:53 / cg"
+    "Created: / 18.8.2000 / 23:06:55 / cg"
+!
+
+messagesNeverSentIn:selectorsOfInterest
+    |remaining|
+
+    remaining := selectorsOfInterest copy.
+    Smalltalk allMethodsDo:[:mthd |
+        |lits|
+
+        lits := mthd literals.
+        lits notNil ifTrue:[
+            (lits includesAny:remaining) ifTrue:[
+                remaining removeAllFoundIn:(mthd messagesSent).
+                remaining isEmpty ifTrue:[^ remaining].
+            ]
+        ]
+    ].
+    ^ remaining
+
+    "Created: / 18.8.2000 / 22:53:38 / cg"
+    "Modified: / 18.8.2000 / 22:56:59 / cg"
+!
+
+methodShouldBeIgnoredInSubclassResponsibilityNotDefined:aMethod
+    "a kludge for now - would like to have a pragma, resource or other
+     way to mark such a method"
+
+    aMethod == (Object compiledMethodAt:#implementedBySubclass) ifTrue:[^ true].
+    aMethod == (Object compiledMethodAt:#readBinaryContentsFromData:manager:) ifTrue:[^ true].
+    aMethod == (Object compiledMethodAt:#finalize) ifTrue:[^ true].
+    ^ false.
+!
+
+rememberBadClass:class info:whatIsWrong
+    |entry|
+
+    badClasses isNil ifTrue:[
+	badClasses := IdentitySet new.
+    ].
+    badClasses add:class.
+
+    badClassInfo isNil ifTrue:[
+	badClassInfo := IdentityDictionary new.
+    ].
+    entry := badClassInfo at:class ifAbsentPut:[ OrderedCollection new ].
+    entry add:whatIsWrong.
+!
+
+rememberBadMethod:method key:key info:whatIsWrong
+    |entry|
+
+    badMethods isNil ifTrue:[
+	badMethods := Set new.
+    ].
+    (badMethods includes:(method -> key)) ifTrue:[^ self].
+
+    badMethods add:(method -> key).
+
+    badMethodInfo isNil ifTrue:[
+	badMethodInfo := IdentityDictionary new.
+    ].
+    entry := badMethodInfo at:method ifAbsentPut:[ OrderedCollection new ].
+    entry add:whatIsWrong.
+!
+
+rememberBadMethods:methods key:key info:whatIsWrong
+    methods do:[:eachMethod |  
+	self rememberBadMethod:eachMethod key:key info:whatIsWrong
+    ].
+!
+
+removeUsedClassVariablesIn:aClass from:aCollectionOfVariablenames
+    aClass selectorsAndMethodsDo:[:mSelector :method |
+	|src usedVars parser|
+
+	src := method source.
+	src notNil ifTrue:[
+	    parser := Parser
+			    parseMethod:src 
+			    in:aClass 
+			    ignoreErrors:true 
+			    ignoreWarnings:true.
+
+	    (parser notNil and:[parser ~~ #Error]) ifTrue:[
+		aCollectionOfVariablenames removeAllFoundIn:(parser usedClassVars).
+		aCollectionOfVariablenames isEmpty ifTrue:[^ self].
+	    ]
+	].
+    ].
+!
+
+removeUsedInstanceVariablesIn:aClass from:aCollectionOfVariablenames
+    aClass selectorsAndMethodsDo:[:mSelector :method |
+	|src usedVars parser|
+
+	src := method source.
+	src notNil ifTrue:[
+	    parser := Parser
+			    parseMethod:src 
+			    in:aClass 
+			    ignoreErrors:true 
+			    ignoreWarnings:true.
+
+	    (parser notNil and:[parser ~~ #Error]) ifTrue:[
+		aCollectionOfVariablenames removeAllFoundIn:(parser usedInstVars).
+		aCollectionOfVariablenames isEmpty ifTrue:[^ self].
+	    ]
+	].
+    ].
+!
+
+removeWrittenClassVariablesIn:aClass from:aCollectionOfVariablenames
+    aClass selectorsAndMethodsDo:[:mSelector :method |
+	|src usedVars parser|
+
+	src := method source.
+	src notNil ifTrue:[
+	    parser := Parser
+			    parseMethod:src 
+			    in:aClass 
+			    ignoreErrors:true 
+			    ignoreWarnings:true.
+
+	    (parser notNil and:[parser ~~ #Error]) ifTrue:[
+		aCollectionOfVariablenames removeAllFoundIn:(parser modifiedClassVars).
+		aCollectionOfVariablenames isEmpty ifTrue:[^ self].
+	    ]
+	].
+    ].
+!
+
+removeWrittenInstanceVariablesIn:aClass from:aCollectionOfVariablenames
+    aClass selectorsAndMethodsDo:[:mSelector :method |
+	|src usedVars parser|
+
+	src := method source.
+	src notNil ifTrue:[
+	    parser := Parser
+			    parseMethod:src 
+			    in:aClass 
+			    ignoreErrors:true 
+			    ignoreWarnings:true.
+
+	    (parser notNil and:[parser ~~ #Error]) ifTrue:[
+		aCollectionOfVariablenames removeAllFoundIn:(parser modifiedInstVars).
+		aCollectionOfVariablenames isEmpty ifTrue:[^ self].
+	    ]
+	].
+    ].
+! !
+
+!ClassChecker class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_ClassChecker.st,v 1.17 2012/11/06 17:49:11 cg Exp $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_ClassChecker.st,v 1.17 2012/11/06 17:49:11 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__ClassChecker.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__ClassGeneratorList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,527 @@
+"
+ COPYRIGHT (c) 2004 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 }"
+
+Tools::BrowserList subclass:#ClassGeneratorList
+	instanceVariableNames:'organizerList categoryList namespaceList namespaceNameList
+		projectList selectedCategories selectedNamespaces
+		selectedProjects selectedClasses'
+	classVariableNames:'AdditionalEmptyCategories AdditionalEmptyProjects'
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+!ClassGeneratorList class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2004 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.
+"
+!
+
+documentation
+"
+    embeddable application displaying the class-categories.
+    Provides an outputGenerator, which enumerates the classes in
+    the selected categories.
+
+    [author:]
+	Claus Gittinger (cg@exept.de)
+"
+! !
+
+!ClassGeneratorList 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:ClassGeneratorList andSelector:#windowSpec
+     ClassGeneratorList new openInterface:#windowSpec
+     ClassGeneratorList open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'OrganizerList'
+          #name: 'OrganizerList'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 12 22 312 322)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#SequenceViewSpec
+              #name: 'List'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #tabable: true
+              #model: #organizerSelection
+              #menu: #menuHolder
+              #hasHorizontalScrollBar: true
+              #hasVerticalScrollBar: true
+              #miniScrollerHorizontal: true
+              #isMultiSelect: true
+              #valueChangeSelector: #selectionChangedByClick
+              #useIndex: true
+              #sequenceList: #organizerList
+              #doubleClickChannel: #doubleClickChannel
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 18.8.2000 / 20:12:20 / cg"
+! !
+
+!ClassGeneratorList methodsFor:'aspects'!
+
+categoryList
+    categoryList isNil ifTrue:[
+	categoryList := ValueHolder new.
+    ].
+    ^ categoryList
+
+
+!
+
+nameSpaceList
+    namespaceList isNil ifTrue:[
+	namespaceList := ValueHolder new
+    ].
+    ^ namespaceList
+
+    "Created: / 18.2.2000 / 00:59:01 / cg"
+!
+
+projectList
+    projectList isNil ifTrue:[
+	projectList := ValueHolder new
+    ].
+    ^ projectList
+
+    "Created: / 17.2.2000 / 23:39:32 / cg"
+
+!
+
+selectedCategories
+    selectedCategories isNil ifTrue:[
+	selectedCategories := ValueHolder new.
+	selectedCategories addDependent:self
+    ].
+    ^ selectedCategories.
+
+!
+
+selectedCategories:aValueHolder
+    |prevSelection|
+
+    prevSelection := selectedCategories value ? #().
+
+    selectedCategories notNil ifTrue:[
+	selectedCategories removeDependent:self
+    ].
+    selectedCategories := aValueHolder.
+    selectedCategories notNil ifTrue:[
+	selectedCategories addDependent:self
+    ].
+    (selectedCategories value ? #()) ~= prevSelection ifTrue:[
+	"/ update
+	self update:#value with:nil from:selectedCategories
+    ].
+
+
+
+!
+
+selectedClasses
+    "bad name- it's a holder, baby"
+
+    selectedClasses isNil ifTrue:[
+        selectedClasses := ValueHolder new.
+    ].
+    ^ selectedClasses.
+!
+
+selectedClasses:aValueHolder
+"/    selectedClasses notNil ifTrue:[
+"/        selectedClasses removeDependent:self
+"/    ].
+    selectedClasses := aValueHolder.
+"/    selectedClasses notNil ifTrue:[
+"/        selectedClasses addDependent:self
+"/    ].
+!
+
+selectedNamespaces
+    selectedNamespaces isNil ifTrue:[
+	selectedNamespaces := ValueHolder new.
+	selectedNamespaces addDependent:self
+    ].
+    ^ selectedNamespaces.
+
+!
+
+selectedNamespaces:aValueHolder
+    |prevSelection|
+
+    prevSelection := selectedNamespaces value ? #().
+
+    selectedNamespaces notNil ifTrue:[
+	selectedNamespaces removeDependent:self
+    ].
+    selectedNamespaces := aValueHolder.
+    selectedNamespaces notNil ifTrue:[
+	selectedNamespaces addDependent:self
+    ].
+    (selectedNamespaces value ? #()) ~= prevSelection ifTrue:[
+	"/ update
+	self update:#value with:nil from:selectedNamespaces
+    ].
+
+
+
+!
+
+selectedProjects
+    selectedProjects isNil ifTrue:[
+	selectedProjects := ValueHolder new.
+	selectedProjects addDependent:self
+    ].
+    ^ selectedProjects.
+
+!
+
+selectedProjects:aValueHolder
+    |prevSelection|
+
+    prevSelection := selectedProjects value ? #().
+
+    selectedProjects notNil ifTrue:[
+	selectedProjects removeDependent:self
+    ].
+    selectedProjects := aValueHolder.
+    selectedProjects notNil ifTrue:[
+	selectedProjects addDependent:self
+    ].
+    (selectedProjects value ? #()) ~= prevSelection ifTrue:[
+	"/ update
+	self update:#value with:nil from:selectedProjects
+    ].
+
+
+
+! !
+
+!ClassGeneratorList methodsFor:'aspects-private'!
+
+organizerList
+    organizerList isNil ifTrue:[
+	organizerList := ValueHolder new.
+    ].
+    ^ organizerList
+
+
+! !
+
+!ClassGeneratorList methodsFor:'change & update'!
+
+delayedUpdate:something with:aParameter from:changedObject
+    |cls sel pkg mthd orgMode|
+
+    changedObject == Smalltalk ifTrue:[
+        orgMode := organizerMode value.
+
+        orgMode == OrganizerCanvas organizerModeCategory ifTrue:[
+            (something == #organization 
+             or:[something == #newClass]) ifTrue:[
+                self updateList.
+                ^ self
+            ].
+            something == #methodInClass ifTrue:[ ^ self ].
+"/ self halt:'debug halt'.
+            ^ self.
+        ].
+        orgMode == OrganizerCanvas organizerModeNamespace ifTrue:[
+            (something == #newClass 
+            or:[something == #classRemove]) ifTrue:[
+                aParameter isNameSpace ifTrue:[
+                    self updateList
+                ].
+                ^ self
+            ].
+"/ self halt:'debug halt'.
+            ^ self
+        ].
+        orgMode == OrganizerCanvas organizerModeProject ifTrue:[
+            something == #projectOrganization ifTrue:[
+                self updateList.
+                ^ self
+            ].
+            something == #methodInClass ifTrue:[
+                cls := aParameter at:1.
+                sel := aParameter at:2.
+                mthd := cls compiledMethodAt:sel.
+                pkg := mthd package.
+                (projectList value includes:pkg) ifFalse:[
+                    self halt:'debug-halt. remove when known to work'.
+                    self updateList.
+                    ^ self
+                ].
+                ^ self
+            ].
+            (something == #classDefinition
+            or:[something == #newClass]) ifTrue:[
+                cls := aParameter.
+                pkg := cls package.
+                (projectList value includes:pkg) ifFalse:[
+                    self halt:'debug-halt. remove when known to work'.
+                    self updateList.
+                    ^ self
+                ].
+                ^ self
+            ].
+"/    self halt.
+            ^ self
+        ].
+        ^ self
+    ].
+    super delayedUpdate:something with:aParameter from:changedObject
+
+    "Created: / 25.2.2000 / 21:32:03 / cg"
+    "Modified: / 25.2.2000 / 21:35:23 / cg"
+! !
+
+!ClassGeneratorList methodsFor:'private'!
+
+listFromInGenerator
+    |generator theList|
+
+    theList := Set new.
+    generator := inGeneratorHolder value.
+    generator isNil ifTrue:[^ #() ].
+    generator do:[:prj | theList add:prj].
+    theList := theList asOrderedCollection sort.
+    theList addFirst:(self class nameListEntryForALL allItalic).
+    ^ theList
+
+    "Created: / 25.2.2000 / 21:24:26 / cg"
+!
+
+listOfCategories
+    |categories hideUnloadedClasses|
+
+    inGeneratorHolder notNil ifTrue:[
+        ^ self listFromInGenerator
+    ].
+
+    hideUnloadedClasses := self hideUnloadedClasses value.
+
+    categories := Set new.
+    Smalltalk allClassesDo:[:cls |
+        (hideUnloadedClasses not or:[cls isLoaded])
+        ifTrue:[
+            categories add:cls category.
+        ]
+    ].
+
+    "/ those are simulated - in ST/X, empty categories do not
+    "/ really exist; however, during browsing, it makes sense.
+    AdditionalEmptyCategories size > 0 ifTrue:[
+        "/ remove those that are present ...
+        AdditionalEmptyCategories := AdditionalEmptyCategories select:[:cat | (categories includes:cat) not].
+        categories addAll:AdditionalEmptyCategories.
+    ].
+    categories := categories asOrderedCollection.
+    categories sort.
+    categories addFirst:(self class nameListEntryForALL allItalic).
+    ^ categories
+
+    "Created: / 5.2.2000 / 13:42:12 / cg"
+    "Modified: / 25.2.2000 / 21:26:04 / cg"
+!
+
+listOfNamespaces
+    |allNamespaces showAllNamespaces|
+
+    inGeneratorHolder notNil ifTrue:[
+        ^ self listFromInGenerator
+    ].
+
+showAllNamespaces := true.
+
+    allNamespaces := IdentitySet new.
+
+    (self hideUnloadedClasses value) ifTrue:[
+        Smalltalk allClassesDo:[:eachClass |
+            eachClass isLoaded ifTrue:[
+                allNamespaces add:(eachClass theNonMetaclass topNameSpace)
+            ].
+        ]
+    ] ifFalse:[
+        allNamespaces := NameSpace allNameSpaces.
+    ].
+
+    showAllNamespaces ifFalse:[
+        "/ only topLevel namespaces are shown
+        "/ i.e. ignore subspaces 
+
+        allNamespaces := allNamespaces select:[:ns | ns isTopLevelNameSpace].
+    ].
+    allNamespaces := allNamespaces collect:[:ns | ns name].
+    allNamespaces := allNamespaces asOrderedCollection.
+    allNamespaces sort.
+    allNamespaces addFirst:(self class nameListEntryForALL allItalic).
+    ^ allNamespaces
+
+    "Created: / 25.2.2000 / 21:21:14 / cg"
+    "Modified: / 25.2.2000 / 21:26:41 / cg"
+!
+
+listOfProjects
+    |allProjects|
+
+    inGeneratorHolder notNil ifTrue:[
+        ^ self listFromInGenerator
+    ].
+
+    allProjects := IdentitySet new.
+
+    (self hideUnloadedClasses value) ifTrue:[
+        allProjects := Smalltalk allLoadedProjectIDs.
+    ] ifFalse:[
+        allProjects := Smalltalk allProjectIDs.
+    ].
+
+    "/ those are simulated - in ST/X, empty projects do not
+    "/ really exist; however, during browsing, it makes sense.
+    AdditionalEmptyProjects size > 0 ifTrue:[
+        "/ remove those that are present ...
+        AdditionalEmptyProjects := AdditionalEmptyProjects select:[:pkg | (allProjects includes:pkg) not].
+        allProjects addAll:AdditionalEmptyProjects.
+    ].
+    allProjects sort.
+    allProjects addFirst:(self class nameListEntryForALL allItalic).
+    ^ allProjects
+
+    "Created: / 25.2.2000 / 21:22:06 / cg"
+    "Modified: / 25.2.2000 / 21:27:27 / cg"
+!
+
+makeDependent
+    Smalltalk addDependent:self
+
+!
+
+makeIndependent
+    Smalltalk removeDependent:self.
+
+!
+
+release
+    super release.
+
+    selectedCategories removeDependent:self.
+    selectedNamespaces removeDependent:self.
+    selectedProjects removeDependent:self.
+!
+
+updateCategoryList
+    |newList|
+
+    newList := self listOfCategories.
+    newList ~= self categoryList value ifTrue:[
+	categoryList value:newList.
+	self organizerList value:newList.
+    ].
+
+    "Created: / 25.2.2000 / 21:12:32 / cg"
+!
+
+updateList
+    |orgMode|
+
+    orgMode := self organizerMode value.
+    orgMode == OrganizerCanvas organizerModeCategory ifTrue:[
+        self updateCategoryList.
+        ^ self
+    ].
+    orgMode == OrganizerCanvas organizerModeProject ifTrue:[
+        self updateProjectList.
+        ^ self
+    ].
+    orgMode == OrganizerCanvas organizerModeNamespace ifTrue:[
+        self updateNamespaceList.
+        ^ self
+    ].
+    self halt:'unexpected value'.
+
+    "Created: / 5.2.2000 / 13:42:13 / cg"
+    "Modified: / 25.2.2000 / 21:14:19 / cg"
+!
+
+updateNamespaceList
+    |newList|
+
+    newList := self listOfNamespaces.
+    newList ~= self nameSpaceList value ifTrue:[
+	namespaceList value:newList.
+	self organizerList value:newList.
+    ].
+
+    "Created: / 25.2.2000 / 21:13:16 / cg"
+!
+
+updateProjectList
+    |newList|
+
+    newList := self listOfProjects.
+    newList ~= self projectList value ifTrue:[
+	projectList value:newList.
+	self organizerList value:newList.
+    ].
+
+    "Created: / 25.2.2000 / 21:12:57 / cg"
+! !
+
+!ClassGeneratorList class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_ClassGeneratorList.st,v 1.12 2012/11/03 11:29:20 cg Exp $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_ClassGeneratorList.st,v 1.12 2012/11/03 11:29:20 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__ClassGeneratorList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__ClassList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,2028 @@
+"
+ COPYRIGHT (c) 2004 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 }"
+
+BrowserList subclass:#ClassList
+	instanceVariableNames:'classList classNameList meta lastSelectedClasses
+		selectedClassNameIndices currentNamespace hidePrivateClasses
+		unloadedClassesColor markApplicationsHolder classFilterBlock
+		sortByNameAndInheritance outGeneratorHolderForMethods'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+!ClassList class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2004 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.
+"
+!
+
+documentation
+"
+    embeddable application displaying the classes as listed by
+    the inputGenerator.
+    Provides an outputGenerator, which enumerates the classes and
+    their protocols (method-categories) in the selected classes.
+
+    [author:]
+	Claus Gittinger (cg@exept.de)
+"
+
+
+! !
+
+!ClassList class methodsFor:'interface specs'!
+
+singleClassWindowSpec
+    "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:ClassList andSelector:#singleClassWindowSpec
+     ClassList new openInterface:#singleClassWindowSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+	#name: #windowSpec
+	#window: 
+       #(#WindowSpec
+	  #label: 'ClassList'
+	  #name: 'ClassList'
+	  #min: #(#Point 0 0)
+	  #max: #(#Point 1024 721)
+	  #bounds: #(#Rectangle 12 22 312 322)
+	)
+	#component: 
+       #(#SpecCollection
+	  #collection: #(
+	   #(#LabelSpec
+	      #label: 'ClassName'
+	      #name: 'ClassLabel'
+	      #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+	      #translateLabel: true
+	      #labelChannel: #classLabelHolder
+	      #menu: #menuHolder
+	    )
+"/           #(#UISubSpecification
+"/              #name: 'MetaToggleSpec'
+"/              #layout: #(#LayoutFrame 0 0.0 -25 1.0 0 1.0 0 1.0)
+"/              #minorKey: #metaSpec
+"/            )
+	   )
+         
+	)
+      )
+!
+
+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:ClassList andSelector:#windowSpec
+     ClassList new openInterface:#windowSpec
+     ClassList open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ClassList'
+          #name: 'ClassList'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 16 46 316 346)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#SequenceViewSpec
+              #name: 'List'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #tabable: true
+              #model: #selectedClassNameIndices
+              #menu: #menuHolder
+              #hasHorizontalScrollBar: true
+              #hasVerticalScrollBar: true
+              #miniScrollerHorizontal: true
+              #isMultiSelect: true
+              #valueChangeSelector: #selectionChangedByClick
+              #useIndex: true
+              #sequenceList: #classNameList
+              #doubleClickChannel: #doubleClickChannel
+              #properties: 
+             #(#PropertyListDictionary
+                #dragArgument: nil
+                #dropArgument: nil
+                #canDropSelector: #canDropContext:
+                #dropSelector: #doDropContext:
+              )
+            )
+           )
+         
+        )
+      )
+! !
+
+!ClassList class methodsFor:'plugIn spec'!
+
+aspectSelectors
+    "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."
+
+    "Return a description of exported aspects;
+     these can be connected to aspects of an embedding application
+     (if this app is embedded in a subCanvas)."
+
+    ^ #(
+        #currentNamespace
+        #(#doubleClickChannel #action )
+        #forceGeneratorTrigger
+        #hidePrivateClasses
+        #hideUnloadedClasses
+        #sortByNameAndInheritance
+        #immediateUpdate
+        #inGeneratorHolder
+        #menuHolder
+        #meta
+        #organizerMode
+        #outGeneratorHolder
+        #packageFilter
+        #nameSpaceFilter
+        #selectedClasses
+        #selectionChangeCondition
+        #showClassPackages
+        #slaveMode
+        #updateTrigger
+        #markApplicationsHolder
+        #showCoverageInformation
+        #outGeneratorHolderForMethods
+      ).
+
+    "Modified: / 04-07-2011 / 18:34:44 / cg"
+    "Modified: / 07-08-2011 / 19:02:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ClassList methodsFor:'accessing'!
+
+markApplications
+    "return the value of the instance variable 'markApplications' (automatically generated)"
+
+    ^ self markApplicationsHolder value
+
+    "Created: / 3.11.2001 / 14:06:19 / cg"
+!
+
+markApplications:something
+    "set the value of the instance variable 'markApplications' (automatically generated)"
+
+    self markApplicationsHolder value:something.
+
+    "Created: / 3.11.2001 / 14:06:25 / cg"
+!
+
+unloadedClassesColor
+    "return the value of the instance variable 'unloadedClassesColor' (automatically generated)"
+
+    ^ unloadedClassesColor
+!
+
+unloadedClassesColor:something
+    "set the value of the instance variable 'unloadedClassesColor' (automatically generated)"
+
+    unloadedClassesColor := something.
+! !
+
+!ClassList methodsFor:'aspects'!
+
+classLabelHolder
+    ^ self pseudoListLabelHolder
+!
+
+classList
+    classList isNil ifTrue:[
+	classList := ValueHolder new.
+    ].
+    ^ classList
+
+    "Created: / 5.2.2000 / 13:42:16 / cg"
+    "Modified: / 25.2.2000 / 02:21:07 / cg"
+!
+
+classNameList
+    classNameList isNil ifTrue:[
+	classNameList := ValueHolder new
+    ].
+    ^ classNameList
+!
+
+currentNamespace:aValueHolder
+    currentNamespace notNil ifTrue:[
+	currentNamespace removeDependent:self
+    ].
+    currentNamespace := aValueHolder.
+    currentNamespace notNil ifTrue:[
+	currentNamespace isBehavior ifTrue:[self halt:'should not happen'].
+	currentNamespace addDependent:self
+    ].
+
+    "Modified: / 4.2.2000 / 23:34:28 / cg"
+    "Created: / 5.2.2000 / 21:37:57 / cg"
+!
+
+doubleClick
+    self halt:'should not happen'.
+!
+
+hidePrivateClasses
+    hidePrivateClasses isNil ifTrue:[
+	hidePrivateClasses := false asValue.
+	hidePrivateClasses addDependent:self.
+    ].
+    ^ hidePrivateClasses.
+
+    "Created: / 24.2.2000 / 15:06:44 / cg"
+!
+
+hidePrivateClasses:aValueHolder
+    hidePrivateClasses notNil ifTrue:[
+	hidePrivateClasses removeDependent:self
+    ].
+    hidePrivateClasses := aValueHolder.
+    hidePrivateClasses notNil ifTrue:[
+	hidePrivateClasses addDependent:self
+    ].
+
+    "Created: / 24.2.2000 / 15:06:46 / cg"
+!
+
+markApplicationsHolder
+    markApplicationsHolder isNil ifTrue:[
+	markApplicationsHolder := true asValue.
+	markApplicationsHolder addDependent:self.
+    ].
+    ^ markApplicationsHolder.
+!
+
+markApplicationsHolder:aValueHolder
+    markApplicationsHolder notNil ifTrue:[
+	markApplicationsHolder removeDependent:self
+    ].
+    markApplicationsHolder := aValueHolder.
+    markApplicationsHolder notNil ifTrue:[
+	markApplicationsHolder addDependent:self
+    ].
+
+    "Created: / 24.2.2000 / 15:06:46 / cg"
+!
+
+meta
+    meta isNil ifTrue:[
+	meta := false asValue.
+	meta addDependent:self
+    ].
+    ^ meta
+
+    "Modified: / 31.1.2000 / 01:19:59 / cg"
+    "Created: / 5.2.2000 / 13:42:16 / cg"
+!
+
+meta:aValueHolder
+"/ (aValueHolder == true or:[aValueHolder == false]) ifTrue:[self halt].
+
+    meta notNil ifTrue:[
+	meta removeDependent:self
+    ].
+    meta := aValueHolder.
+    meta notNil ifTrue:[
+	meta addDependent:self
+    ].
+!
+
+selectClass:aClass
+    self selectedClasses value:(Array with:aClass)
+!
+
+selectedClassNameIndices
+    selectedClassNameIndices isNil ifTrue:[
+	selectedClassNameIndices := #() asValue.
+	selectedClassNameIndices addDependent:self
+    ].
+    ^ selectedClassNameIndices.
+
+    "Created: / 5.2.2000 / 21:31:48 / cg"
+    "Modified: / 5.2.2000 / 21:43:02 / cg"
+!
+
+selectedClasses
+    "bad name- it's a holder, baby"
+
+    ^ self selectionHolder
+!
+
+selectedClasses:aValueHolder
+    "bad name- its a holder, baby"
+
+    ^ self selectionHolder:aValueHolder
+!
+
+showClassPackages
+    showClassPackages isNil ifTrue:[
+	showClassPackages := false asValue.
+	showClassPackages addDependent:self.
+    ].
+    ^ showClassPackages.
+
+    "Created: / 24.2.2000 / 15:06:44 / cg"
+!
+
+showClassPackages:aValueHolder
+    showClassPackages notNil ifTrue:[
+	showClassPackages removeDependent:self
+    ].
+    showClassPackages := aValueHolder.
+    showClassPackages notNil ifTrue:[
+	showClassPackages addDependent:self
+    ].
+!
+
+sortByNameAndInheritance
+    sortByNameAndInheritance isNil ifTrue:[
+        sortByNameAndInheritance := false asValue.
+        sortByNameAndInheritance addDependent:self.
+    ].
+    ^ sortByNameAndInheritance.
+
+    "Created: / 04-07-2011 / 18:28:15 / cg"
+!
+
+sortByNameAndInheritance:aValueHolder
+    sortByNameAndInheritance notNil ifTrue:[
+        sortByNameAndInheritance removeDependent:self
+    ].
+    sortByNameAndInheritance := aValueHolder.
+    sortByNameAndInheritance notNil ifTrue:[
+        sortByNameAndInheritance addDependent:self
+    ].
+
+    "Created: / 04-07-2011 / 18:33:43 / cg"
+! !
+
+!ClassList methodsFor:'change & update'!
+
+classDefinitionChanged:aClassOrNil
+
+    listValid ifFalse:[^ self].
+
+    slaveMode value == true ifTrue:[
+	self invalidateList.
+	^ self.
+    ].
+    self slaveMode value isNil ifTrue:[
+	self window shown ifFalse:[
+	    self invalidateList.
+	    ^ self
+	].
+    ].
+
+    aClassOrNil isNil ifTrue:[
+	self halt:'should not happen'.
+    ].
+
+    "/ if that class is in my list ...
+    ((self classList value ? #()) contains:[:cls | cls notNil and:[cls theNonMetaclass name = aClassOrNil theNonMetaclass name]])
+    ifTrue:[
+	self updateListsFor:aClassOrNil.
+	"/ force update
+	self selectedClassNameIndices value:(self selectedClassNameIndices value).
+
+	((self selectedClasses value ? #()) contains:[:cls | cls notNil ifTrue:[cls theNonMetaclass name = aClassOrNil theNonMetaclass name] ifFalse:[false]]) 
+	ifTrue:[
+	    self updateOutputGenerator
+	].
+    ] ifFalse:[
+	self invalidateList
+    ]
+
+
+    "Modified: / 29.2.2000 / 00:15:23 / cg"
+!
+
+classRemoved:aClass
+    |list|
+
+    list := self classList value.
+    list notNil ifTrue:[
+	(list includesIdentical:aClass) ifTrue:[
+	    self invalidateList.
+	]
+    ]
+
+    "Modified: / 25.2.2000 / 23:53:51 / cg"
+!
+
+delayedUpdate:something with:aParameter from:changedObject
+    |cls classes chgClass wg savedList|
+
+    classes := self classList value ? #().
+
+"/    (self slaveMode value == true) ifTrue:[^ self].
+"/    self slaveMode value isNil ifTrue:[
+"/        self window shown ifFalse:[
+"/            self invalidateList.
+"/            ^ self
+"/        ].
+"/    ].
+
+    changedObject == slaveMode ifTrue:[
+        "/ a previously suppressed update is now due
+        listValid ~~ true ifTrue:[
+            self enqueueDelayedUpdateList.
+        ].
+        self enqueueDelayedClassSelectionChanged.
+        ^  self
+    ].
+
+    changedObject == self selectedClasses ifTrue:[
+        self inSlaveMode ifFalse:[
+            savedList := self selectedClasses value.
+            lastSelectedClasses := nil.
+            listValid == true ifFalse:[
+                self updateList
+            ].
+            self selectedClasses setValue:savedList.
+            self selectedClassesChanged.
+            self updateOutputGenerator.
+        ] ifTrue:[
+"/            listValid := false.
+            self selectedClassesChanged.
+        ].
+        ^ self 
+    ].
+
+    (changedObject == meta 
+    or:[changedObject == selectedClassNameIndices]) ifTrue:[
+        self inSlaveMode ifFalse:[
+            self selectionChanged.
+        ] ifTrue:[
+            listValid := false.
+            self selectedClassesChanged.
+        ].
+        ^ self
+    ].
+
+    self inSlaveModeOrInvisible ifTrue:[
+        self invalidateList.
+        ^ self.
+    ].
+
+    changedObject == Smalltalk ifTrue:[
+        something == #methodInClass ifTrue:[
+            ^ self "no interest" 
+        ].    
+        something == #methodInClassRemoved ifTrue:[
+            "/ must update the list, if the methods package is different from
+            "/ the classes package (to undo any has-exension highlighting)
+            cls := aParameter first.
+            self updateListsFor:cls.
+            ^ self 
+        ].    
+        something == #organization ifTrue:[^ self "no interest" ].    
+
+        (something == #classDefinition 
+        or:[something == #classVariables
+        or:[something == #newClass]]) ifTrue:[
+            "/ update that class in my classList and the selection
+            listValid ifTrue:[
+                self classDefinitionChanged:aParameter.
+            ].
+            ^ self.
+        ].
+        (something == #lastTestRunResult) ifTrue:[
+            "/ update that class in my classList and the selection
+            listValid ifTrue:[
+                self updateListsFor:aParameter.
+                "/ self classDefinitionChanged:aParameter.
+            ].
+            ^ self.
+        ].
+        something == #classRemove ifTrue:[
+            "/ update my classList and the selection
+            self classRemoved:aParameter.
+            ^ self.
+        ].
+        something == #classRename ifTrue:[
+            "/ update that class in my classList and the selection
+            listValid ifTrue:[
+                aParameter isArray ifTrue:[
+                    cls := aParameter at:1.
+                    self classDefinitionChanged:cls.
+                ]
+            ].
+            ^ self.
+        ].
+
+        something == #projectOrganization ifTrue:[
+            aParameter isNil ifTrue:[
+                self invalidateList.
+                organizerMode value == #project ifTrue:[
+                    self enqueueDelayedUpdateOutputGenerator.
+                ].
+                ^ self
+            ].
+
+            cls := aParameter at:1.
+            cls notNil ifTrue:[  "/ should not happen (but does occasionally)
+                ((classes includes:cls theMetaclass)
+                or:[(classes includes:cls theNonMetaclass)]) ifTrue:[
+                    self invalidateList.
+                    organizerMode value == #project ifTrue:[
+                        self enqueueDelayedUpdateOutputGenerator.
+                    ]
+                ].
+            ].
+            ^ self
+        ].
+        ^ self.
+    ].
+
+    (something == #lastTestRunResult) ifTrue:[
+        ^ self
+    ].
+
+    changedObject == ChangeSet ifTrue:[
+        wg := self windowGroup.
+        wg isNil ifTrue:[
+            changedObject removeDependent:self.
+        ] ifFalse:[
+            "/ react on changes of the changeSet to recolorize items
+            ((something ~~ #addChange:)
+                or:[ 
+                    chgClass := aParameter changeClass.
+                    chgClass notNil 
+                    and:[ (classes includes:chgClass theNonMetaclass) 
+                          or:[classes includes:chgClass theMetaclass]]
+                ]
+            ) ifTrue:[
+                wg sensor 
+                    flushEventsFor:self 
+                    where:[:ev | ev isMessageSendEvent 
+                                 and:[ev selector == #delayedUpdate:with:from:
+                                 and:[(ev arguments at:3) == ChangeSet]]].
+                self enqueueDelayedAction:[self reconstructNameList].
+            ].
+        ].
+        ^ self 
+    ].
+
+    changedObject == showClassPackages ifTrue:[
+        self classNameList value:nil.
+        self invalidateList.
+        ^ self 
+    ].
+
+    (changedObject == hideUnloadedClasses
+    or:[changedObject == hidePrivateClasses
+    or:[changedObject == nameSpaceFilter
+    or:[changedObject == packageFilter]]]) ifTrue:[
+        self invalidateList.
+        ^ self 
+    ].
+
+    super delayedUpdate:something with:aParameter from:changedObject
+
+    "Modified: / 13.11.2001 / 11:32:10 / cg"
+!
+
+enqueueDelayedClassSelectionChanged
+    (NewSystemBrowser synchronousUpdate == true
+    or:[ immediateUpdate value == true ])
+    ifTrue:[
+        self selectedClassesChanged.
+        ^ self.
+    ].
+
+    self enqueueMessage:#selectedClassesChanged for:self arguments:#()
+!
+
+getSelectedClassIndicesFromClasses
+    "the class selection has changed;
+     return a collection of selection-indices"
+
+    |classes selectedClasses numSelected|
+
+    classes := self classList value.
+    selectedClasses := self selectedClasses value.
+
+    numSelected := selectedClasses size.
+    numSelected == 0 ifTrue:[
+	^ #()
+    ].
+
+    numSelected == classes size ifTrue:[
+	"/ all selected - easy
+	^ (1 to:numSelected) asOrderedCollection
+    ].
+    meta value ifTrue:[
+	classes := classes collect:[:eachClass | eachClass theMetaclass].
+    ].
+
+    classes := selectedClasses collect:[:aSelectedClass | classes identityIndexOf:aSelectedClass.].
+    classes := classes select:[:idx | idx ~= 0].
+    ^ classes
+
+    "Created: / 24.2.2000 / 19:47:52 / cg"
+!
+
+getSelectedClassesFromIndices
+    "the selection-index collection has changed;
+     return a collection of corresponding classes"
+
+    |selected classes allEntrySelected isMeta anyLost selectedClassNameIndices|
+
+    allEntrySelected := false.
+
+    classes := classList value.
+    classes isNil ifTrue:[
+        self updateList.
+        classes := classList value.
+    ].
+
+    isMeta := meta value.
+    anyLost := false.
+
+    selectedClassNameIndices := self selectedClassNameIndices value.
+    selectedClassNameIndices size == classes size ifTrue:[
+        selectedClassNameIndices size == 0 ifTrue:[^ #()].
+        isMeta ifTrue:[
+            ^ classes collect:[:eachClass | eachClass theMetaclass].
+        ].
+        ^ classes collect:[:eachClass | eachClass theNonMetaclass].
+    ].
+
+    selected := selectedClassNameIndices 
+                    collect:[:idx |
+                                |cls|
+
+                                cls := classes at:idx.
+                                cls == (self class nameListEntryForALL) ifTrue:[
+                                    allEntrySelected := true.
+                                ] ifFalse:[
+                                    cls notNil ifTrue:[
+                                        isMeta ifTrue:[
+                                            cls := cls theMetaclass
+                                        ] ifFalse:[
+                                            cls := cls theNonMetaclass
+                                        ].
+                                    ] ifFalse:[
+                                        anyLost := true
+                                    ].
+                                ].
+                                cls
+                            ].
+    anyLost ifTrue:[
+        selected := selected select:[:each | each notNil].
+    ].
+
+"/    allEntrySelected ifTrue:[
+"/        selected := classList value select:[:cls | cls ~~ AllEntry].
+"/        meta value ifTrue:[
+"/            selected := selected collect:[:cls | cls theMetaclass].
+"/        ] ifFalse:[
+"/            selected := selected collect:[:cls | cls theNonMetaclass].
+"/        ].
+"/    ].
+
+    ^ selected.
+
+    "Created: / 24.2.2000 / 19:43:37 / cg"
+!
+
+selectedClassesChanged
+    |indices selectedClassNameIndicesHolder|
+
+    self classList value size == 0 ifTrue:[
+	"/ this may happen during early startup, 
+	"/ when invoked with a preset classSelection,
+	"/ and the classGenerator has not yet been setup
+	"/ to not clobber the selection, defer the update
+	"/ until the classList arrives ...
+	^ self
+    ].
+    "/ lastSelectedClasses := self selectedClasses value copy.
+
+    indices := self getSelectedClassIndicesFromClasses. 
+    selectedClassNameIndicesHolder := self selectedClassNameIndices.
+    selectedClassNameIndicesHolder value ~= indices ifTrue:[
+	"/ in slaveMode, do not update selectedClasses from indices
+	true "slaveMode value" ifTrue:[
+	    selectedClassNameIndicesHolder value:indices withoutNotifying:self
+	] ifFalse:[
+	    selectedClassNameIndicesHolder value:indices.
+	]
+    ]
+
+    "Created: / 13.2.2000 / 22:18:10 / cg"
+    "Modified: / 24.2.2000 / 19:48:56 / cg"
+!
+
+selectionChanged
+    "the lists selection has changed. Since the list uses indices,
+     update the corresponding selectedClasses collection"
+
+    |selected prevSelection selectedClassesHolder|
+
+    selectedClassesHolder := self selectedClasses.
+
+    selected := self getSelectedClassesFromIndices.
+
+    prevSelection := selectedClassesHolder value ? #().
+
+    prevSelection ~= selected ifTrue:[
+        selectedClassesHolder value:selected.
+    ].
+!
+
+selectionChangedByClick
+    "we are not interested in that - get another notification
+     via the changed valueHolder"
+
+    |selected master|
+
+    selected := self getSelectedClassesFromIndices.
+    (selected = lastSelectedClasses and:[selected size == 1])
+    ifTrue:[
+	"/ thats a kludge - we want to turn off the protocol selection,
+	"/ when a class is reselected.
+
+	masterApplication notNil ifTrue:[
+	    master := masterApplication.
+	    masterApplication masterApplication notNil ifTrue:[
+		master := masterApplication masterApplication.
+	    ].
+	    (master respondsTo:#classReselected) ifTrue:[
+		master classReselected.
+	    ].
+	] 
+    ] ifFalse:[
+	lastSelectedClasses := selected copy.
+    ]
+!
+
+update:something with:aParameter from:changedObject
+    |cls sel mthd newMethod oldMethod idx classListValue|
+
+    self inSlaveMode ifTrue:[
+        something == #methodInClass ifTrue:[ ^ self ].
+        something == #addChange:    ifTrue:[ self invalidateList. ^ self ].
+        something == #methodCoverageInfo ifTrue:[ self invalidateList. ^ self ].
+    ].
+"/    self window sensor isNil ifTrue:[
+"/        "/ not visible ...
+"/        self invalidateList.
+"/        ^ self
+"/    ].
+
+    classListValue := classList value.
+
+    changedObject == Smalltalk ifTrue:[
+        something == #classComment ifTrue:[
+            ^ self.
+        ].
+        something == #methodDictionary ifTrue:[
+            ^ self 
+        ].
+        something == #methodTrap ifTrue:[
+            ^ self
+        ].
+        something == #coverageInfo ifTrue:[
+            listValid == true ifTrue:[
+                self enqueueDelayedUpdateList
+            ].
+            ^ self.
+        ].
+        something == #methodCoverageInfo ifTrue:[
+            listValid == true ifTrue:[
+                mthd := aParameter.
+                cls := mthd mclass.
+                cls notNil ifTrue:[
+                    classListValue size > 0 ifTrue:[
+                        ((classListValue includesIdentical:cls theNonMetaclass)
+                        or:[(classListValue includesIdentical:cls theMetaclass)]) ifTrue:[
+                            self enqueueDelayedUpdateList
+                        ]
+                    ]
+                ].
+            ].
+            ^ self
+        ].
+        something == #lastTestRunResult ifTrue:[
+            cls := aParameter at:1.
+            sel := aParameter at:2.
+            (cls notNil and:[sel isNil]) ifTrue:[
+                classListValue size > 0 ifTrue:[
+                    ((classListValue includesIdentical:cls theNonMetaclass)
+                    or:[(classListValue includesIdentical:cls theMetaclass)]) ifTrue:[
+                        self enqueueDelayedUpdateList
+                    ]
+                ]
+            ].
+            ^ self
+        ].
+
+        something == #methodInClassRemoved ifTrue:[
+            self inSlaveMode ifFalse:[
+                cls := aParameter at:1.
+                cls notNil ifTrue:[
+                    classListValue size > 0 ifTrue:[
+                        ((classListValue includesIdentical:cls theNonMetaclass)
+                        or:[(classListValue includesIdentical:cls theMetaclass)]) ifTrue:[
+                            self enqueueDelayedUpdateList
+                        ]
+                    ]
+                ].
+            ].
+            ^ self
+        ].
+
+        something == #methodInClass ifTrue:[
+            cls := aParameter at:1.
+            cls notNil ifTrue:[
+                classListValue size > 0 ifTrue:[
+                    ((classListValue includesIdentical:cls theNonMetaclass)
+                    or:[(classListValue includesIdentical:cls theMetaclass)]) ifTrue:[
+                        newMethod := cls compiledMethodAt:(aParameter at:2).
+                        oldMethod := aParameter at:3.
+                        ((oldMethod isNil
+                            and:[newMethod package ~= cls package])
+                        or:[oldMethod notNil
+                            and:[newMethod package ~= oldMethod package]])
+                        ifTrue:[
+                            "/ must update the list (for the package-info)
+                            self enqueueDelayedUpdateList
+                        ]
+                    ]
+                ]
+            ].
+            ^ self
+        ].
+
+        "/ kludge: must be careful if my inGenerator is a constant list.
+        "/ in that case, I have to update it 
+        "/ (sigh - all a consequence of not #becoming the new class)
+        ((something == #classDefinition) or:[something == #newClass]) ifTrue:[
+            inGeneratorHolder value isOrderedCollection ifTrue:[
+                idx := inGeneratorHolder value findFirst:[:eachClass | eachClass name = aParameter theNonMetaclass name].
+                idx ~~ 0 ifTrue:[
+                    inGeneratorHolder value at:idx put:aParameter.
+                    self updateListsFor:aParameter.
+                    "/ self enqueueDelayedUpdateList.
+                ]
+            ] ifFalse:[
+                classListValue size > 0 ifTrue:[
+                    idx := classListValue findFirst:[:eachClass | eachClass name = aParameter theNonMetaclass name].
+                    idx ~~ 0 ifTrue:[
+                        listValid ifTrue:[
+                            self classDefinitionChanged:aParameter.
+                            ^ self.
+                        ]
+                    ]
+                ].
+            ].
+        ].
+    ].
+
+    changedObject == sortByNameAndInheritance ifTrue:[
+        self invalidateList.
+        ^ self.
+    ].
+
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 05-06-2012 / 23:39:34 / cg"
+! !
+
+!ClassList methodsFor:'drag & drop'!
+
+canDropContext:aDropContext
+    |objects|
+
+    objects := aDropContext dropObjects collect:[:obj | obj theObject].
+    (objects conform:[:anObject | anObject isMethod]) ifTrue:[
+        |methods cls|
+
+        methods := objects.
+        cls := self classAtTargetPointOf:aDropContext.
+        cls isNil ifTrue:[^ false].
+
+        ^ methods contains:[:aMethod | aMethod mclass ~= cls]
+    ].
+    (self objectsAreClassFiles:objects) ifTrue:[^ true].
+    ^ false.
+
+    "Modified: / 17-10-2006 / 18:26:07 / cg"
+!
+
+classAtTargetPointOf:aDropContext
+    |p classListView lineNr cls|
+
+    p := aDropContext targetPoint.
+
+    classListView := aDropContext targetWidget.
+
+    lineNr := classListView lineAtY:p y.
+    lineNr isNil ifTrue:[^ nil].
+
+    cls := classList value at:lineNr.
+    ^ cls
+!
+
+doDropContext:aDropContext
+    |objects browser|
+
+    browser := self masterApplication.
+
+    objects := aDropContext dropObjects collect:[:aDropObject | aDropObject theObject].
+    (objects conform:[:something | something isMethod]) ifTrue:[
+        |cls methods|
+
+        methods := objects.
+        cls := self classAtTargetPointOf:aDropContext.
+        methods first mclass isMeta ifTrue:[
+            cls := cls theMetaclass
+        ].
+
+        cls notNil ifTrue:[
+            methods := methods reject:[:mthd | mthd mclass theNonMetaclass == cls theNonMetaclass].
+            methods notEmpty ifTrue:[
+                aDropContext dragType == DropContext dragTypeCopy ifTrue:[
+                    browser copyMethods:methods toClass:cls.
+                ] ifFalse:[
+                    browser moveMethods:methods toClass:cls.
+                ].
+            ]
+        ].
+        ^ self
+    ].
+    (objects conform:[:something | something isFilename]) ifTrue:[
+        self dropClassFiles:objects.
+        ^ self
+    ].
+
+    "Modified: / 21-10-2006 / 20:39:55 / cg"
+! !
+
+!ClassList methodsFor:'generators'!
+
+makeGenerator
+    "return a generator which enumerates the method categories from the selected class;
+     that generator generates 2-element elements (includes the class), in order
+     to make the consumers only depend on one input (i.e. no need for another
+     classHolder in the methodList)."
+
+    ^ Iterator 
+        on:[:whatToDo |
+                |allEntry classes cls already anyMethod packages classIsInPackage showChanged changedClasses|
+
+                allEntry := self class nameListEntryForALL.
+                changedClasses := ChangeSet current changedClasses.
+
+                classes := self selectedClasses value ? #().
+                packages := packageFilter value value.
+                (packages notNil and:[packages includes:allEntry]) ifTrue:[packages := nil].
+                showChanged := packages notNil and:[packages includes:NavigatorModel nameListEntryForChanged].
+
+                classes do:[:cls |
+                    (cls notNil and:[cls ~~ allEntry]) ifTrue:[
+                        anyMethod := false.
+                        classIsInPackage := packages isNil 
+                                            or:[(packages includes:cls package)
+                                            or:[ showChanged and:[changedClasses includes:cls]] ].
+
+                        cls theNonMetaclass isJavaClass ifTrue:[
+                            cls isMeta ifTrue:[
+                                whatToDo value:cls theNonMetaclass value:(self class nameListEntryForStatic).
+                            ] ifFalse:[
+                                whatToDo value:cls value:(self class nameListEntryForNonStatic).
+                            ]
+                        ] ifFalse:[
+                            cls supportsMethodCategories ifTrue:[
+                                already := Set new.
+                                cls methodDictionary keysAndValuesDo:[:sel :mthd |
+                                    |cat|
+
+                                    cat := mthd category.
+                                    (already includes:cat) ifFalse:[
+                                        (classIsInPackage
+                                        or:[packages isNil
+                                        or:[packages includes:mthd package]])
+                                        ifTrue:[
+                                            already add:cat.
+                                            whatToDo value:cls value:cat.
+                                        ]
+                                    ]
+                                ].
+                            ] ifFalse:[
+                                whatToDo value:cls value:(self class nameListEntryForNILCategory).
+                            ].
+                        ].
+
+                        anyMethod ifFalse:[
+                            "/ tell the one below, which classes are seen here,
+                            "/ (even if no method is present)
+                            "/ to allow him to decide if the className is to be shown in the list
+                            whatToDo value:cls value:nil.
+                        ].
+                    ].
+                ].
+          ]
+
+    "Modified: / 24.2.2000 / 23:18:26 / cg"
+!
+
+makeGeneratorForMethods
+
+    ^ Iterator 
+        on:[:whatToDo |
+                |allEntry classes cls already packages classIsInPackage showChanged cat |
+
+                allEntry := self class nameListEntryForALL.
+
+                classes := self selectedClasses value ? #().
+                packages := packageFilter value value.
+                (packages notNil and:[packages includes:allEntry]) ifTrue:[packages := nil].
+                showChanged := packages notNil and:[packages includes:NavigatorModel nameListEntryForChanged].
+
+                classes do:[:cls |
+                    (cls notNil and:[cls ~~ allEntry]) ifTrue:[
+                        classIsInPackage := packages isNil 
+                                            or:[(packages includes:cls package)
+                                            or:[ showChanged and:[ChangeSet current changedClasses includes:cls]] ].
+                        cls isMeta ifTrue:[
+                            cat := self class nameListEntryForStatic.
+                        ] ifFalse:[
+                            cat := self class nameListEntryForNonStatic.
+                        ].
+                        cls methodDictionary keysAndValuesDo:[:sel :mthd |
+                            whatToDo value:cls value:cat value:sel value:mthd.
+                        ].                            
+
+                    ].
+                ].
+          ]
+
+    "Modified: / 24-02-2000 / 23:18:26 / cg"
+    "Created: / 07-08-2011 / 19:01:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+outGeneratorHolderForMethods
+    ^ outGeneratorHolderForMethods
+!
+
+outGeneratorHolderForMethods:something
+    outGeneratorHolderForMethods := something.
+!
+
+updateOutputGenerator
+    "create a generator which enumerates my elements, 
+     and place it into the outputGenerator holder"
+
+    super updateOutputGenerator.
+    outGeneratorHolderForMethods notNil ifTrue:[
+        outGeneratorHolderForMethods value: self makeGeneratorForMethods.
+    ].
+
+    "Modified: / 04-02-2000 / 17:16:34 / cg"
+    "Created: / 05-02-2000 / 13:42:08 / cg"
+    "Created: / 07-08-2011 / 18:51:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ClassList methodsFor:'initialize-release'!
+
+release
+    super release.
+
+    currentNamespace removeDependent:self.
+    sortByNameAndInheritance removeDependent:self.
+    hidePrivateClasses removeDependent:self.
+    markApplicationsHolder removeDependent:self.
+    meta removeDependent:self.
+    selectedClassNameIndices removeDependent:self.
+    showClassPackages removeDependent:self.
+
+    "Created: / 05-02-2000 / 13:42:18 / cg"
+! !
+
+!ClassList methodsFor:'private'!
+
+listOfClasses
+    |classesAlready classesOrdered generator nameSpaceFilter packageFilter allName hidePrivate
+     privateClassesPerClass nameFilterIncludesMatchCharacters lcNameFilter|
+
+    self sortByNameAndInheritance value ifTrue:[
+        ^ self listOfClassesByInheritance
+    ].
+
+    allName := self class nameListEntryForALL.
+    (self showAllClassesInNameSpaceOrganisation value) ifFalse:[
+        nameSpaceFilter := self nameSpaceFilter value.
+        nameSpaceFilter notNil ifTrue:[
+            (nameSpaceFilter includes:allName) ifTrue:[
+                nameSpaceFilter := nil
+            ].
+        ].
+    ].
+"/    packageFilter := self packageFilter value.
+"/    packageFilter notNil ifTrue:[
+"/        (packageFilter includes:allName) ifTrue:[packageFilter := nil].
+"/    ].
+
+    inGeneratorHolder isNil ifTrue:[
+        "/ for standAlone testing
+        generator := Smalltalk allClasses.
+        (self hideUnloadedClasses value) ifTrue:[
+            generator := generator select:[:cls | cls isLoaded]
+        ].
+    ] ifFalse:[
+        generator := inGeneratorHolder value.
+        generator isNil ifTrue:[^ #() ].
+    ].
+
+    classesAlready := IdentitySet new.
+    classesOrdered := OrderedCollection new.
+    hidePrivate := self hidePrivateClasses value.
+
+    privateClassesPerClass := IdentityDictionary new.
+    nameFilterIncludesMatchCharacters := nameFilter notNil and:[nameFilter includesMatchCharacters].
+    nameFilter notNil ifTrue:[ lcNameFilter := nameFilter asLowercase].
+
+    generator do:[:cls | 
+        |owner bucket|
+
+        "JV@2011-08-07: FIXME: Ugly code, hard to extend!! And duplicated in listOfClassesByInheritance !!!!!!!!"            
+        (hidePrivate not or:[cls isPrivate not])
+        ifTrue:[
+            (nameSpaceFilter isNil
+            or:[self isClass:cls shownWithNameSpaceFilter:nameSpaceFilter]) ifTrue:[
+                (packageFilter isNil
+                or:[self isClass:cls shownWithPackageFilter:packageFilter]) ifTrue:[
+                    (classesAlready includes:cls) ifFalse:[
+                        (classFilterBlock isNil
+                        or:[(classFilterBlock value:cls)]) ifTrue:[
+                            classesAlready add:cls.
+                            (nameFilter isNil 
+                              or:[ (nameFilterIncludesMatchCharacters not and:[ cls name asLowercase startsWith:lcNameFilter])
+                              or:[ (nameFilterIncludesMatchCharacters and:[nameFilter match:cls name ignoreCase:true]) ]]) ifTrue:[
+                                (owner := cls owningClass) notNil ifTrue:[
+                                    bucket := privateClassesPerClass 
+                                                    at:owner 
+                                                    ifAbsentPut:[SortedCollection new 
+                                                                    sortBlock:[:a :b | (a name ? '?') < (b name ? '?')] ].
+                                    bucket add:cls.
+                                ] ifFalse:[
+                                    "Do not show Java anonymous classes"
+                                    cls isJavaClass ifTrue:[
+                                        cls isAnonymous ifFalse:[
+                                            classesOrdered add:cls.
+                                        ]                                            
+                                    ] ifFalse:[                                        
+                                        classesOrdered add:cls.
+                                    ]                                            
+                                ]
+                            ]
+                        ]
+                    ]
+                ]
+            ]
+        ]
+    ].
+
+    "/ are there any private classes, for which the owner is not in the list ?
+    privateClassesPerClass keysAndValuesDo:[:eachOwnerClass :privateClasses|
+        (classesAlready includes:eachOwnerClass) ifFalse:[
+            classesOrdered add:eachOwnerClass.
+            classesAlready add:eachOwnerClass.
+"/            privateClasses do:[:privateClass |
+"/                (classesOrdered includes:privateClass) ifFalse:[
+"/                    classesOrdered add:privateClass.
+"/                ].
+"/            ].
+        ].
+    ].
+
+    classesOrdered size == 1 ifTrue:[
+        self classLabelHolder value:(classesOrdered first name)
+    ] ifFalse:[
+"/        self classLabelHolder value:(classes size printString , ' classes').
+        sortBy value ~~ #doNotSort ifTrue:[
+            classesOrdered sort:[:a :b | a name < b name].
+        ]
+    ].
+
+    privateClassesPerClass notEmpty ifTrue:[
+        |stream action|
+
+        stream := WriteStream on:(Array new).
+
+        action := 
+            [:eachClass |
+                |bucket|
+
+                stream nextPut:eachClass.
+
+                bucket := privateClassesPerClass at:eachClass ifAbsent:nil.
+                bucket notNil ifTrue:[
+                    bucket do:action.
+                ]
+            ].
+
+        classesOrdered do:action.
+        classesOrdered := stream contents.
+    ].
+
+"/
+"/ does not work (yet)
+"/    classes addFirst:AllEntry.
+    ^ classesOrdered
+
+    "Modified: / 04-07-2011 / 18:33:56 / cg"
+    "Modified (format): / 07-08-2011 / 16:02:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+listOfClassesByInheritance
+    "TODO: needs refatoring and common code extract with listOfClasses,
+     but I have no time at the moment..."
+
+    |classesAlready classes classesOrdered generator nameSpaceFilter packageFilter allName hidePrivate
+     privateClassesPerClass nameFilterIncludesMatchCharacters lcNameFilter|
+
+    allName := self class nameListEntryForALL.
+    nameSpaceFilter := self nameSpaceFilter value.
+    nameSpaceFilter notNil ifTrue:[
+        (nameSpaceFilter includes:allName) ifTrue:[nameSpaceFilter := nil].
+    ].
+    packageFilter := self packageFilter value.
+    packageFilter notNil ifTrue:[
+        (packageFilter includes:allName) ifTrue:[packageFilter := nil].
+    ].
+
+    inGeneratorHolder isNil ifTrue:[
+        "/ for standAlone testing
+        generator := Smalltalk allClasses.
+        (self hideUnloadedClasses value) ifTrue:[
+            generator := generator select:[:cls | cls isLoaded]
+        ].
+    ] ifFalse:[
+        generator := inGeneratorHolder value.
+        generator isNil ifTrue:[^ #() ].
+    ].
+
+    classesAlready := IdentitySet new.
+    classes := Set new.
+    classesOrdered := OrderedCollection new.
+    hidePrivate := self hidePrivateClasses value.
+
+    privateClassesPerClass := IdentityDictionary new.
+    nameFilterIncludesMatchCharacters := nameFilter notNil and:[nameFilter includesMatchCharacters].
+    nameFilter notNil ifTrue:[ lcNameFilter := nameFilter asLowercase].
+
+    generator do:[:cls | 
+        |owner bucket|
+
+        (hidePrivate not or:[cls isPrivate not])
+        ifTrue:[
+            (nameSpaceFilter isNil
+            or:[self isClass:cls shownWithNameSpaceFilter:nameSpaceFilter]) ifTrue:[
+                (packageFilter isNil
+                or:[self isClass:cls shownWithPackageFilter:packageFilter]) ifTrue:[
+                    (classesAlready includes:cls) ifFalse:[
+                        classesAlready add:cls.
+                        (owner := cls owningClass) notNil ifTrue:[
+                            bucket := privateClassesPerClass at:owner ifAbsentPut:[SortedCollection new sortBlock:[:a :b | a name < b name] ].
+                                bucket add:cls.
+                            ] ifFalse:[
+                                cls isJavaClass ifTrue:[
+                                    cls isAnonymous ifFalse:[
+                                        classes add:cls.
+                                    ]
+                                ] ifFalse:[
+                                   classes add:cls.
+                                ]                                    
+                        ]
+                    ]
+                ]
+            ]
+        ]
+    ].
+
+    privateClassesPerClass keysAndValuesDo:
+        [:owner :privateClasses|
+        (owner isPrivate not and:[(classes includes: owner) not])            
+            ifTrue:[classes addAll: privateClasses]].
+
+
+    classes size == 1 ifTrue:[
+        classesOrdered := classes asArray.
+        self classLabelHolder value:(classes first name)
+    ] ifFalse:[
+"/        self classLabelHolder value:(classes size printString , ' classes').
+"        sortBy value ~~ #doNotSort ifTrue:[
+            classesOrdered sort:[:a :b | a name < b name].
+        ]"
+        classesOrdered := ClassSorter sort: classes.
+    ].
+
+    privateClassesPerClass notEmpty ifTrue:[
+        |stream action|
+
+        stream := WriteStream on:(Array new).
+
+        action := [:eachClass |
+                |bucket|
+
+                stream nextPut:eachClass.
+
+                bucket := privateClassesPerClass at:eachClass ifAbsent:nil.
+                bucket notNil ifTrue:[
+                    bucket do:action.
+                ]
+        ].
+
+        classesOrdered do:action.
+        classesOrdered := stream contents.
+    ].
+
+"/
+"/ does not work (yet)
+"/    classes addFirst:AllEntry.
+    ^ classesOrdered
+
+    "Modified: / 18-08-2000 / 20:34:10 / cg"
+    "Modified: / 21-01-2008 / 19:43:04 / janfrog"
+    "Modified: / 24-08-2010 / 20:17:07 / Jan Vrany <enter your email here>"
+    "Created: / 04-07-2011 / 18:27:34 / cg"
+    "Modified: / 07-08-2011 / 16:14:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+makeDependent
+    Smalltalk addDependent:self.
+    ChangeSet addDependent:self.
+
+    "Created: / 5.2.2000 / 13:42:17 / cg"
+!
+
+makeIndependent
+    Smalltalk removeDependent:self.
+    ChangeSet removeDependent:self.
+!
+
+nameListForClasses:aClassList
+    |orgMode namespaces showNamespaces fullNameList nameList
+     filteredPackages filteredNameSpaces classesInRemoteChangeSet
+     classNamesInChangeSet classNamesInRemoteChangeSet|
+
+    showNamespaces := false.
+
+    filteredNameSpaces := nameSpaceFilter value.
+    (filteredNameSpaces isNil 
+    and:[self organizerMode value ~~ OrganizerCanvas organizerModeNamespace]) ifTrue:[
+        showNamespaces := true.       "/ if no filter, always show the namespace.
+    ] ifFalse:[
+        (filteredNameSpaces size > 1 
+        or:[(filteredNameSpaces size > 0)
+            and:[filteredNameSpaces includes:(self class nameListEntryForALL)]]) ifTrue:[
+            showNamespaces := true
+        ] ifFalse:[
+            "/ if there are classes from multiple namespaces,
+            "/ show the full name
+
+            namespaces := IdentitySet new.
+            fullNameList := OrderedCollection new.
+
+            aClassList
+                do:[:cls | |nm|
+                    nm := cls nameInBrowser.
+                    fullNameList add:nm.
+                    namespaces add:cls topNameSpace.
+                ].
+            showNamespaces := namespaces size > 1
+        ].
+    ].
+
+    orgMode := organizerMode value.
+    filteredPackages := packageFilter value value.
+
+    classNamesInChangeSet := ChangeSet current changedClasses
+                                collect:[:each | each theNonMetaclass name].
+
+    classesInRemoteChangeSet := SmallTeam isNil ifTrue:[#()] ifFalse:[ SmallTeam changedClasses ].
+    classNamesInRemoteChangeSet := classesInRemoteChangeSet collect:[:each | each theNonMetaclass name].
+
+    nameList := aClassList 
+                    collect:[:cls | 
+
+                            |className nm pkg emPkg hasExtensions isInChangeSet isInRemoteChangeSet icon
+                             clr|
+
+                            className := cls theNonMetaclass name.
+                            isInChangeSet := classNamesInChangeSet includes:className.
+                            isInRemoteChangeSet := classNamesInRemoteChangeSet includes:className.
+
+                            nm := self nameListEntryFor:cls withNameSpace:showNamespaces.
+
+                            self showCoverageInformation value ifTrue:[
+                                clr := self colorForCoverageInformationOfClass:cls.
+                                clr notNil ifTrue:[
+                                    nm := self colorize:nm with:#color -> clr
+                                ].
+                            ].
+                            clr isNil ifTrue:[
+                                isInChangeSet ifTrue:[
+                                    nm := self emphasizeForChangedCode:nm
+                                ].
+                                isInRemoteChangeSet ifTrue:[
+                                    nm := (self colorizeForChangedCodeInSmallTeam:'!! '),nm
+                                ].
+                            ].
+
+                            pkg := cls package ? '-'.
+                            hasExtensions := cls hasExtensions.
+                            hasExtensions ifTrue:[
+                                emPkg := self emphasizeForDifferentPackage:'+'. "/ self emphasizeForDifferentPackage:pkg.
+                            ].
+
+                            orgMode == OrganizerCanvas organizerModeProject ifTrue:[
+                                (filteredPackages notNil
+                                and:[(filteredPackages includes:cls package) not]) ifTrue:[
+                                    "/ class is in another packae;
+                                    "/ however, class is listed due to methods
+                                    "/ in the filtered package
+                                    hasExtensions ifTrue:[
+                                        nm := nm , emPkg.
+                                    ] ifFalse:[    
+                                        nm := nm , ' [ ' , pkg, ' ]'.
+                                    ].
+                                ] ifFalse:[
+                                    "/ any methods from other packages in this class ?
+                                    hasExtensions ifTrue:[
+                                        nm := nm , (self emphasizeForDifferentPackage:'+').
+                                    ].
+                                ].
+                            ] ifFalse:[
+                                showClassPackages value == true ifTrue:[
+                                    "/ add the package;
+                                    hasExtensions ifTrue:[
+                                        nm := nm , ' [ ' , pkg, ' ]' , (self emphasizeForDifferentPackage:'+').
+"/                                        isInChangeSet ifFalse:[
+"/                                            nm := self colorizeForDifferentPackage:nm
+"/                                        ].
+                                    ] ifFalse:[
+                                        nm := nm , (self colorizeGrey:(' [ ' , pkg, ' ]')).
+                                    ].
+                                ] ifFalse:[
+                                    hasExtensions ifTrue:[
+                                        nm := nm , emPkg.
+"/                                        isInChangeSet ifFalse:[
+"/                                            nm := self colorizeForDifferentPackage:nm
+"/                                        ]
+                                    ].
+                                ]
+                            ].
+
+                            isInChangeSet ifTrue:[
+                                nm := nm , self class markForBeingInChangeList
+                            ].
+"/                                        cls isVisualStartable ifTrue:[
+"/                                            nm := LabelAndIcon icon:((SystemBrowser visualStartableClassIcon)
+"/                                                                    onDevice:self window device)
+"/                                                               string:nm
+"/                                        ].
+                            markApplicationsHolder value== true ifTrue:[
+                                icon := self iconForClass:cls theNonMetaclass.
+                                icon isNil ifTrue:[
+                                    icon := SystemBrowser emptyIcon
+                                ].
+                                nm := LabelAndIcon icon:icon string:nm
+
+                            ].
+                            nm
+                       ].   
+
+    ^ nameList
+
+    "Modified: / 27-10-2012 / 12:32:20 / cg"
+!
+
+reconstructNameList
+    "only reconstruct the names - class list & selection remains unschanged.
+     Invoked when the organizerMode mode changes"
+
+    |prevMode listView oldNameList newNameList sav|
+
+    self classList value isNil ifTrue:[
+        self updateList
+    ].
+
+    newNameList := self nameListForClasses:(classList value ? #()).
+    oldNameList := self classNameList value ? #().
+    (newNameList 
+        sameContentsAs: oldNameList 
+        whenComparedWith:[:a :b | (a sameStringAndEmphasisAs: b) 
+                                  and:[ a hasImage == b hasImage
+                                  and:[ a hasIcon == b hasIcon ]]]
+    ) 
+    ifTrue:[
+        "/ no need to update
+    ] ifFalse:[
+        builder notNil ifTrue:[
+            listView := builder componentAt:#List.
+        ].
+        (listView isNil or:[listView scrolledView isNil]) ifTrue:[    
+            "/ invoked very early during setup
+            self classNameList value:newNameList
+        ] ifFalse:[
+            "/ avoid flicker and useless redraws
+
+            prevMode := listView scrollWhenUpdating.
+            listView scrollWhenUpdating:nil.
+
+            "/ this will lead to a selectionIndex change (done by the selListView);
+            "/ however, we dont want this here, since it recurses into
+            "/ a selectionChange. Therefore, temporarily disconnect the selectionIndexHolder...
+            [
+                self selectedClassNameIndices removeDependent:self.
+                "/ also, dont want a callback (selectionChangedByClick)
+                sav := listView action.
+                listView action:nil.
+                self classNameList value:newNameList.
+            ] ensure:[
+                listView action:sav.
+                self selectedClassNameIndices addDependent:self.
+                listView scrollWhenUpdating:prevMode.
+            ].
+        ]
+    ].
+
+    "Modified: / 31.10.2001 / 11:33:21 / cg"
+!
+
+updateClassesIn:aCollection
+    "replace any obsolete class in aCollection;
+     return true, if any was found"
+
+    |found meta classes|
+
+    found := false.
+
+    aCollection isSequenceable ifFalse:[
+	classes := aCollection copy.
+	aCollection removeAll.
+	classes do:[:cls |
+	    |newClass|
+
+	    meta := cls isMeta.
+	    newClass := Smalltalk at:(cls theNonMetaclass name).
+	    newClass isNil ifTrue:[
+		newClass := cls
+	    ] ifFalse:[
+		meta ifTrue:[
+		    newClass := newClass class
+		]
+	    ].
+	    found := cls ~~ newClass.
+	    aCollection add:newClass.
+	].
+    ] ifTrue:[
+	aCollection keysAndValuesDo:[:idx :cls |
+	    |newClass|
+
+	    cls notNil ifTrue:[
+		meta := cls isMeta.
+		newClass := Smalltalk at:(cls theNonMetaclass name).
+		newClass isNil ifTrue:[
+		    newClass := cls
+		] ifFalse:[
+		    meta ifTrue:[
+			newClass := newClass class
+		    ]
+		].
+		found := cls ~~ newClass.
+		aCollection at:idx put:newClass.
+	    ]
+	].
+    ].
+    ^ found
+!
+
+updateList
+    |prevSelection oldList newList newSelectionIndices 
+     forceSelectionChange selectedClassNameIndicesHolder classList
+     classesAddedToList classesRemovedFromList newSet oldSet|
+
+    newList := self listOfClasses.
+    classList := self classList.
+    oldList := classList value ? #().
+
+    autoSelect == true ifTrue:[
+        classesRemovedFromList := OrderedCollection new.
+        newSet := newList asSet.
+        oldSet := oldList asSet.
+        classesAddedToList := newSet select:[:eachNewClass | (oldSet includes:eachNewClass) not].
+        classesRemovedFromList := oldSet select:[:eachOldClass | (newSet includes:eachOldClass) not].
+    ].
+
+    (newList ~= oldList
+    or:[self classNameList value isNil and:[newList size > 0]]) ifTrue:[
+        prevSelection := lastSelectedClasses ? #().
+        prevSelection := prevSelection select:[:each | each notNil].
+
+        (newList collect:[:each | each name]) = (oldList collect:[:each | each name]) ifTrue:[
+            "/ no need to tell anybody
+            classList setValue:newList.
+        ] ifFalse:[
+            classList value:newList.
+        ].
+        self reconstructNameList.
+
+        (prevSelection size == 0 
+        and:[self selectedClasses value size ~~ 0]) ifTrue:[
+            "/ this happens during early startup time,
+            "/ when the selection is already (pre-)set,
+            "/ and the classList is generated the first time
+            "/ (i.e. when opened with preset selection)
+
+            "/ do not clobber the selection in this case.
+            prevSelection := self selectedClasses value.
+            prevSelection := prevSelection select:[:cls | cls notNil].
+            "/ simulate a change, to force selection update in listView
+            forceSelectionChange := true.
+        ].
+
+        autoSelect == true ifTrue:[
+            prevSelection isNil ifTrue:[
+                prevSelection := OrderedCollection new
+            ].
+            prevSelection := prevSelection asOrderedCollection.
+
+            classesAddedToList do:[:eachNewClass |
+                (prevSelection includes:eachNewClass) ifFalse:[
+                    prevSelection add:eachNewClass.
+                ].
+            ].
+            classesRemovedFromList do:[:eachOldClass |
+                prevSelection remove:eachOldClass ifAbsent:[].
+            ].
+        ].
+
+        newSelectionIndices := prevSelection 
+                            collect:[:item | |cls|
+                                             cls := Smalltalk at:item theNonMetaclass name.   
+                                             newList identityIndexOf:cls]
+                            thenSelect:[:index | index ~~ 0].
+
+        selectedClassNameIndicesHolder := self selectedClassNameIndices.
+
+        ((selectedClassNameIndicesHolder value size ~~ self selectedClasses value size)
+        or:[newSelectionIndices ~= selectedClassNameIndicesHolder value])
+        ifTrue:[
+            newSelectionIndices notEmpty ifTrue:[
+                "/ force change (for dependents)
+                "/ selectedClassNameIndicesHolder value:newSelectionIndices.
+            ] ifFalse:[
+                prevSelection := self selectedClasses value.
+                newSelectionIndices := #().
+            ].
+            selectedClassNameIndicesHolder value:newSelectionIndices.
+
+            prevSelection notNil ifTrue:[
+                lastSelectedClasses := prevSelection.
+            ].
+            self updateOutputGenerator.
+        ].
+
+    ] ifFalse:[
+        "/ same classes - but name(s) could be differnet
+        newList size > 0 ifTrue:[
+            self reconstructNameList
+        ]
+    ].
+    listValid := true.
+
+    "Created: / 5.2.2000 / 13:42:18 / cg"
+    "Modified: / 31.10.2001 / 11:35:39 / cg"
+!
+
+updateListsFor:aClass
+    |classes found foundInSelection|
+
+    found := foundInSelection := false.
+
+    "/ update for a changed class in the classList
+    (classes := classList value) size > 0 ifTrue:[
+        (self updateClassesIn:classes) ifTrue:[
+            found := true
+        ].
+        (classes includes:nil) ifTrue:[
+"/ self halt:'should not happen'.
+            classList value:(classes := classes select:[:each | each notNil]).
+        ].
+    ].
+    "/ possibly in the generator
+    ((classes := inGeneratorHolder value) isOrderedCollection 
+    and:[classes size > 0]) ifTrue:[
+        (self updateClassesIn:classes) ifTrue:[
+            found := true
+        ].
+        (classes includes:nil) ifTrue:[
+"/ self halt:'should not happen'.
+            inGeneratorHolder value:(classes select:[:each | each notNil]).
+        ]
+    ].
+    "/ and in the selection
+    (classes := self selectedClasses value) size > 0 ifTrue:[
+        (self updateClassesIn:classes) ifTrue:[
+            found := true.
+            foundInSelection := true.
+        ].
+        (classes includes:nil) ifTrue:[
+"/ self halt:'should not happen'.
+            self selectedClasses value:(classes select:[:each | each notNil]).
+        ]
+    ].
+    "/ and in the last selection
+    (classes := lastSelectedClasses) size > 0 ifTrue:[
+        (self updateClassesIn:classes) ifTrue:[
+            found := true
+        ].
+        (classes includes:nil) ifTrue:[
+"/ self halt:'should not happen'.
+            lastSelectedClasses := (classes select:[:each | each notNil]).
+        ]
+    ].
+
+    found ifFalse:[
+        "/ could be a new class (or no-longer autolaoded one).
+        listValid ifTrue:[
+            self enqueueDelayedUpdateList.
+        ].
+    ].
+    foundInSelection ifTrue:[
+        "/ force update of output generator
+        self selectedClasses 
+            removeDependent:self;
+            changed;
+            addDependent:self.
+    ].
+
+    "Modified: / 05-06-2012 / 23:39:25 / cg"
+! !
+
+!ClassList methodsFor:'private-presentation'!
+
+colorForCoverageInformationOfClass:aClass
+    |instrumented anyPartiallyCovered anyCalled anyNotCalled|
+
+    instrumented := anyPartiallyCovered := anyCalled := anyNotCalled := false.
+    aClass instAndClassMethodsDo:[:m |
+        m category = 'documentation' ifFalse:[
+            m isInstrumented ifTrue:[
+                instrumented := true.
+                m hasBeenCalled ifFalse:[
+                    anyNotCalled := true.
+                ] ifTrue:[
+                    anyCalled := true.
+                    m haveAllBlocksBeenExecuted ifFalse:[
+                        anyPartiallyCovered := true.
+                        "/ no need to search further...
+                        ^ UserPreferences current colorForInstrumentedPartiallyCoveredCode
+                    ]
+                ].
+            ].
+        ].
+    ].
+    instrumented ifFalse:[ ^ nil].
+
+    anyCalled ifFalse:[ ^ UserPreferences current colorForInstrumentedNeverCalledCode ].
+    anyNotCalled ifFalse:[ ^ UserPreferences current colorForInstrumentedFullyCoveredCode ].
+    ^ UserPreferences current colorForInstrumentedPartiallyCoveredCode
+
+    "Created: / 28-04-2010 / 14:05:27 / cg"
+!
+
+iconForClass:aClass
+    ^ SystemBrowser iconForClass:aClass
+
+    "Created: / 17-08-2006 / 09:12:32 / cg"
+!
+
+indentPerPrivacyLevel
+    ^ 4
+!
+
+nameListEntryFor:aClass withNameSpace:useFullName
+    |sortByNameAndInheritance nm indent owner orgMode indentString javaPackage|
+
+    aClass == (self class nameListEntryForALL) ifTrue:[ ^ aClass ].
+
+    sortByNameAndInheritance := self sortByNameAndInheritance value.
+
+    sortByNameAndInheritance ifTrue:[
+        nm := (self nameListIndentStringFor: aClass withNameSpace: useFullName) , aClass nameInBrowser.
+    ] ifFalse:[
+        nm := aClass nameInBrowser.
+    ].
+
+    aClass isLoaded ifFalse:[
+        unloadedClassesColor notNil ifTrue:[
+            nm := nm colorizeAllWith:unloadedClassesColor
+        ]
+    ].
+
+    aClass isLoaded ifFalse:[
+        "/ nm := nm,(' (?) ' colorizeAllWith:Color grey).
+    ] ifTrue:[
+        nm := nm,((' (%1+%2) ' bindWith:(aClass methodDictionary size) with:(aClass class methodDictionary size)) 
+                        colorizeAllWith:self class pseudoEntryForegroundColor).
+    ].
+
+    orgMode := organizerMode value.
+    orgMode == OrganizerCanvas organizerModeHierarchy ifTrue:[
+        "/ always show the full name
+        ^ nm
+    ].
+    orgMode == OrganizerCanvas organizerModeClassHierarchy ifTrue:[
+        "/ always show the full name
+        ^ nm
+    ].
+
+    aClass isJavaClass ifTrue:[
+        "/ only show the last name, unless multiple packages are shown in the list
+        javaPackage := aClass package.
+        (self classList value contains:[:cls | cls package ~= javaPackage]) ifTrue:[
+            ^ nm 
+        ].        
+        ^ aClass lastName
+    ].
+
+    useFullName ifFalse:[
+        aClass isPrivate ifFalse:[
+            sortByNameAndInheritance ifTrue:[
+                ^ (self nameListIndentStringFor: aClass withNameSpace: useFullName) , aClass nameWithoutNameSpacePrefix 
+            ].
+            ^ aClass nameWithoutNameSpacePrefix 
+        ]
+    ].
+
+    "/ full name required if owner is not in the list
+    owner := aClass owningClass.
+    (owner isNil
+    or:[(self classList value includesIdentical:owner) not]) ifFalse:[
+
+        "/ namespace
+        indent := (nm count:[:char | char == $:]) // 2.
+        indent > 0 ifTrue:[
+            indent := indent * self indentPerPrivacyLevel.
+            indentString := String new:indent withAll:Character space.
+            sortByNameAndInheritance ifTrue:[
+                nm := (self nameListIndentStringFor:owner withNameSpace:useFullName)
+                        , indentString , '::' , aClass nameWithoutPrefix.
+            ] ifFalse:[
+                nm := indentString , '::' , aClass nameWithoutPrefix
+            ]
+        ].
+    ].
+
+    ^ nm
+
+    "Modified: / 04-07-2011 / 19:00:45 / cg"
+!
+
+nameListIndentStringFor:aClass withNameSpace:useFullName
+    | indent indentString cls |
+
+    indent := 0.
+    indentString := ''.
+    cls := aClass superclass.
+    [self classList value includesIdentical:cls] 
+        whileTrue:
+            [indent := indent + 1.
+            cls := cls superclass].
+
+    indent == 0 ifFalse:[
+        indent <= 5 ifTrue:[
+            indentString := #(
+                         ''
+                         '  '
+                         '    '
+                         '      '
+                         '        '
+                         '          '
+                       ) at:indent+1.
+        ] ifFalse:[
+            indentString := String new:indent*2 withAll:Character space.
+        ].
+
+    ].
+    ^indentString
+
+    "Modified: / 24-02-2000 / 17:52:28 / cg"
+    "Created: / 21-01-2008 / 19:02:07 / janfrog"
+    "Modified (format): / 04-07-2011 / 18:30:20 / cg"
+! !
+
+!ClassList methodsFor:'queries'!
+
+supportsSearch
+
+    ^(self componentAt: #List) notNil
+
+    "Created: / 28-07-2011 / 17:46:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ClassList methodsFor:'setup'!
+
+autoSelect:aBoolean
+    autoSelect ~~ aBoolean ifTrue:[
+        autoSelect := aBoolean.
+        classList value:nil.
+    ].
+!
+
+classFilterBlock:aBlock
+    "use this to filter away unwanted packages"
+
+    classFilterBlock := aBlock
+!
+
+postBuildWith:aBuilder
+    |classListView|
+
+    super postBuildWith:aBuilder.
+
+    classListView := aBuilder componentAt:'List'.
+    classListView notNil ifTrue:[
+	classListView allowDrag:true.
+	classListView dragObjectConverter:[:obj | 
+					    |nm class idx|
+
+					    nm := obj theObject asString.
+					    idx := classNameList value indexOf:nm.
+					    idx == 0 ifTrue:[
+						idx := classNameList value indexOf:nm string.
+					    ].
+					    class := classList value at:idx.
+					    DropObject newClass:class.
+					 ].
+    ]
+! !
+
+!ClassList class methodsFor:'documentation'!
+
+version
+    ^ '$Id: Tools__ClassList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_ClassList.st,v 1.70 2012/11/07 14:21:22 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id:: Tools__ClassList.st 8083 2013-01-14 11:48:37Z vranyj1                                                                  $'
+! !
--- a/Tools__ClassSorter.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ClassSorter.st	Wed Jan 30 11:15:09 2013 +0000
@@ -95,9 +95,9 @@
 !ClassSorter class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ClassSorter.st,v 1.1 2011-07-01 13:28:45 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__ClassSorter.st,v 1.1 2011/07/01 13:28:45 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: Tools__ClassSorter.st 7486 2009-10-26 22:06:24Z vranyj1 §'
-! !
+    ^ '$Id: Tools__ClassSorter.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
\ No newline at end of file
--- a/Tools__CodeCompletionMenu.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__CodeCompletionMenu.st	Wed Jan 30 11:15:09 2013 +0000
@@ -65,6 +65,7 @@
 "
 ! !
 
+
 !CodeCompletionMenu class methodsFor:'interface opening'!
 
 openFor: aCodeView at: anInteger with:aCollection
@@ -80,6 +81,7 @@
     "Modified: / 01-07-2011 / 00:05:01 / cg"
 ! !
 
+
 !CodeCompletionMenu methodsFor:'accessing'!
 
 contentHeight
@@ -108,6 +110,7 @@
     "Modified: / 06-03-2010 / 08:17:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeCompletionMenu methodsFor:'event handling'!
 
 backspaceKeyPress
@@ -220,6 +223,7 @@
     "Created: / 29-05-2005 / 09:50:03 / janfrog"
 ! !
 
+
 !CodeCompletionMenu methodsFor:'initialize'!
 
 initialize
@@ -247,6 +251,7 @@
     "Modified: / 01-07-2011 / 00:08:31 / cg"
 ! !
 
+
 !CodeCompletionMenu methodsFor:'interface opening'!
 
 openModalXX
@@ -289,6 +294,7 @@
     "Modified: / 01-07-2011 / 09:30:29 / cg"
 ! !
 
+
 !CodeCompletionMenu methodsFor:'updating'!
 
 updateList
@@ -299,6 +305,7 @@
     "Modified: / 27-05-2005 / 22:23:37 / janfrog"
 ! !
 
+
 !CodeCompletionMenu class methodsFor:'documentation'!
 
 version_CVS
--- a/Tools__CodeCompletionService.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__CodeCompletionService.st	Wed Jan 30 11:15:09 2013 +0000
@@ -186,9 +186,9 @@
 !CodeCompletionService class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__CodeCompletionService.st,v 1.6 2011-07-27 12:34:03 vrany Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__CodeCompletionService.st,v 1.6 2011/07/27 12:34:03 vrany Exp §'
 !
 
 version_SVN
-    ^ '§Id: Tools__CodeCompletionService.st 7695 2011-04-04 20:09:17Z vranyj1 §'
-! !
+    ^ '$Id: Tools__CodeCompletionService.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
\ No newline at end of file
--- a/Tools__CodeCritics.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__CodeCritics.st	Wed Jan 30 11:15:09 2013 +0000
@@ -102,9 +102,9 @@
 !CodeCritics class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__CodeCritics.st,v 1.3 2011-07-03 13:31:36 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__CodeCritics.st,v 1.3 2011/07/03 13:31:36 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: Tools__CodeCritics.st 7487 2009-10-28 21:11:04Z vranyj1 §'
-! !
+    ^ '$Id: Tools__CodeCritics.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
\ No newline at end of file
--- a/Tools__CodeHighlightingService.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__CodeHighlightingService.st	Wed Jan 30 11:15:09 2013 +0000
@@ -27,7 +27,7 @@
 
 "{ NameSpace: Tools }"
 
-BackgroundSourceProcessingService subclass:#CodeHighlightingService
+Tools::BackgroundSourceProcessingService subclass:#CodeHighlightingService
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -64,6 +64,7 @@
 "
 ! !
 
+
 !CodeHighlightingService class methodsFor:'accessing'!
 
 label
@@ -75,6 +76,7 @@
     "Created: / 07-03-2010 / 14:00:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeHighlightingService methodsFor:'accessing'!
 
 syntaxHighlighter
@@ -141,6 +143,7 @@
     "Modified: / 19-07-2012 / 12:58:48 / cg"
 ! !
 
+
 !CodeHighlightingService methodsFor:'acessing-defaults'!
 
 defaultJobName
@@ -150,6 +153,7 @@
     "Created: / 24-01-2012 / 12:06:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeHighlightingService methodsFor:'private'!
 
 process
@@ -171,10 +175,9 @@
 !
 
 process: delayed
+
     |oldCode oldCodeList newCode elements cls mthd highlighterClasses|
 
-    codeView topView class == DebugView ifTrue:[^ self].
-
     done := false.
     modified := false.
     codeView syntaxElements: nil.
@@ -200,7 +203,7 @@
                 "textView" modified ifFalse:[
                     Screen currentScreenQuerySignal answer:codeView device
                     do:[
-                        Parser parseErrorSignal handle:[:ex |
+                        Parser::ParseError handle:[:ex |
                             |errMsg|
 
                             errMsg := ex description asStringCollection first asString.
@@ -211,9 +214,9 @@
                             "/ self showInfo:(errMsg colorizeAllWith:Color red).
                             newCode := nil.
                         ] do:[
-                            |codeAspect|
-
-                            elements := SortedCollection new.
+                            | codeAspect |
+                            
+                            elements := ParseTreeIndex new.
                             newCode := oldCode asText.
                             codeAspect := codeView codeAspect.
                             codeAspect == SyntaxHighlighter codeAspectMethod ifTrue:[
@@ -222,8 +225,8 @@
                                 codeAspect == (SyntaxHighlighter codeAspectExpression) ifTrue:[
                                     highlighterClasses do:[:e|newCode := e formatExpression:newCode in:cls elementsInto: elements].
                                 ] ifFalse:[
-                                    codeAspect == (SyntaxHighlighter codeAspectClassDefinition) ifTrue:[
-                                        highlighterClasses do:[:e|newCode := e formatClassDefinition:newCode string in:cls elementsInto: elements].
+                                    codeView codeAspect == #classDefinition ifTrue:[
+                                        highlighterClasses do:[:e|newCode := e formatClassDefinition:newCode in:cls elementsInto: elements].
                                     ]
                                 ].
                             ].
@@ -247,6 +250,8 @@
                                                 "/self delayedUpdateBufferLabelWithCheckIfModified
                                         ] ifFalse:[
                                             textView contents: newCode.
+                                            codeView syntaxElements: elements.
+                                            gutterView invalidate.
                                         ]
                                     ]
                                 ]
@@ -258,9 +263,8 @@
         ]
     ]
 
-    "Modified: / 16-09-2011 / 17:01:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-08-2011 / 14:17:47 / cg"
     "Created: / 24-01-2012 / 12:21:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 27-07-2012 / 22:23:16 / cg"
 !
 
 setHighlightedCode:newCode elements: elements
@@ -296,6 +300,19 @@
                     "/ Certainly a kludge.
 
                     oldLine string = line string ifTrue:[
+                        | i |
+
+                        "JV@2012-02-01: Remove any emphasis on leading whitespace"
+                        "(presumably created by LintHighlighter)"
+                        i := line string indexOfNonSeparator.
+                        i > 1 ifTrue:[
+                            | e |
+
+                            (e := (line emphasisAt: i - 1)) notNil ifTrue:[
+                                line emphasisFrom: 1 to: i - 1 remove: e.
+                            ]
+                        ].
+
                         oldLine emphasis ~= line emphasis ifTrue:[
                             textView modifiedChannel removeDependent:self.
                             list at:lNr put:line.
@@ -332,14 +349,19 @@
             ]
         ]
     ].
-    codeView syntaxElements: elements
+    codeView syntaxElements: elements.
+    gutterView invalidate.
+
+"/    Transcript showCR:'--> rehighlighted ', self identityHash printString.
 
     "Modified: / 09-10-2006 / 11:50:17 / cg"
     "Created: / 14-02-2010 / 16:10:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 16-09-2011 / 17:33:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 19-07-2012 / 12:07:05 / cg"
+    "Modified (format): / 21-08-2011 / 09:38:22 / cg"
+    "Modified: / 01-02-2012 / 19:18:00 / jv"
+    "Modified: / 17-03-2012 / 19:33:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeHighlightingService class methodsFor:'documentation'!
 
 version
--- a/Tools__CodeNavigationService.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__CodeNavigationService.st	Wed Jan 30 11:15:09 2013 +0000
@@ -27,7 +27,7 @@
 
 "{ NameSpace: Tools }"
 
-CodeViewService subclass:#CodeNavigationService
+Tools::CodeViewService subclass:#CodeNavigationService
 	instanceVariableNames:'selectorEmphasis variableEmphasis currentEmphasis linesToRedraw'
 	classVariableNames:'DefaultVariableEmphasis DefaultSelectorEmphasis'
 	poolDictionaries:''
@@ -64,6 +64,7 @@
 "
 ! !
 
+
 !CodeNavigationService class methodsFor:'accessing'!
 
 label
@@ -82,6 +83,7 @@
     "Created: / 27-07-2011 / 11:40:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeNavigationService class methodsFor:'accessing - defaults'!
 
 defaultSelectorEmphasis
@@ -96,14 +98,16 @@
 
 defaultVariableEmphasis
     DefaultVariableEmphasis isNil ifTrue:[
-        DefaultVariableEmphasis := Array with:(#backgroundColor -> (Color gray: 90))
+        DefaultVariableEmphasis := Array with:(#backgroundColor -> (Color redByte: 240 greenByte: 216 blueByte: 168))
     ].
     ^ DefaultVariableEmphasis
 
     "Created: / 25-06-2010 / 13:56:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 21-08-2011 / 11:04:20 / cg"
+    "Modified: / 15-02-2012 / 19:38:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeNavigationService methodsFor:'change & update'!
 
 update: aspect with: param from: sender
@@ -121,6 +125,7 @@
     "Modified: / 05-09-2011 / 05:15:42 / cg"
 ! !
 
+
 !CodeNavigationService methodsFor:'code services'!
 
 browseClass:class 
@@ -147,18 +152,37 @@
     "Created: / 06-03-2010 / 21:14:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeNavigationService methodsFor:'event handling'!
 
 button1Press
-
-    codeView syntaxElementSelection isNil ifTrue:[^self].
+    | node |
 
-    codeView syntaxElementSelection type == #selector ifTrue:[^self button1PressForSelector: codeView syntaxElementSelection value].
-    codeView syntaxElementSelection type == #class    ifTrue:[^self browseClass:codeView syntaxElementSelection value].
+    node := codeView currentParseNode.
+    node isNil ifTrue:[ 
+        ^ self 
+    ].
+    node isSelector ifTrue:[
+        self button1PressForMessageNode: node.
+        ^self.
+    ].
+    node isVariable ifTrue:[
+        self button1PressForVariableNode: node.
+        ^self.
+    ].
+
+    ^self.
 
     "Created: / 14-02-2010 / 18:43:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 06-03-2010 / 21:11:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 18-11-2011 / 14:58:02 / cg"
+    "Modified: / 21-02-2012 / 14:30:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+button1PressForMessageNode: node
+
+    ^self button1PressForSelector: node parent selector.
+
+    "Created: / 21-02-2012 / 14:30:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 button1PressForSelector: selector
@@ -176,14 +200,31 @@
     "Modified: / 21-08-2011 / 11:06:08 / cg"
 !
 
+button1PressForVariableNode: node
+    | value |
+
+    node isGlobalVariable ifTrue:[
+        value := Smalltalk at: node name.
+        value notNil ifTrue:[
+            value isBehavior ifTrue:[
+                self browseClass: value.
+            ] ifFalse:[
+                value inspect.
+            ]
+        ]
+    ]
+
+    "Created: / 21-02-2012 / 14:30:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 button2Press
 
     | sel |
     sel := codeView syntaxElementSelection.
-    (sel notNil and:[sel type == #selector]) ifTrue:[^self button2PressForSelector: sel value].
+    (sel notNil and:[sel node isMessage]) ifTrue:[^self button2PressForSelector: sel node selector].
 
     "Created: / 14-02-2010 / 18:43:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 17-06-2011 / 08:58:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 08-03-2012 / 16:49:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 button2PressForSelector: selector
@@ -324,6 +365,7 @@
     "Created: / 16-09-2011 / 15:19:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeNavigationService methodsFor:'initialization'!
 
 initialize
@@ -336,6 +378,7 @@
     "Created: / 25-06-2010 / 14:05:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeNavigationService methodsFor:'private'!
 
 elementAtCursor
@@ -587,6 +630,7 @@
     "Created: / 25-06-2010 / 14:15:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeNavigationService methodsFor:'redrawing'!
 
 redrawLines
@@ -599,6 +643,7 @@
     "Modified (format): / 18-08-2011 / 16:01:34 / cg"
 ! !
 
+
 !CodeNavigationService class methodsFor:'documentation'!
 
 version_CVS
--- a/Tools__CodeView2.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__CodeView2.st	Wed Jan 30 11:15:09 2013 +0000
@@ -32,6 +32,7 @@
 		classHolder browserHolder codeAspect modifiedChannel
 		showGutterChannel showAcceptCancelBarChannel modeHolder
 		serviceManager services servicesFromClient syntaxElements
+		currentParseNodeHolder currentBlockNodeHolder
 		syntaxElementSelection highlightEmphasis diffMode
 		synchronizedCodeViews'
 	classVariableNames:'TraceSelectors'
@@ -42,7 +43,7 @@
 SimpleView subclass:#GutterView
 	instanceVariableNames:'codeView textView textViewScroller widthAcceptCancel
 		widthAnnotations widthDiffInfo firstLineShown lastLineShown
-		acceptColor cancelColor diffColor'
+		acceptColor cancelColor diffColor currentBlockNodeHolder'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:CodeView2
@@ -88,6 +89,7 @@
 "
 ! !
 
+
 !CodeView2 class methodsFor:'initialization'!
 
 initialize
@@ -100,6 +102,7 @@
     "Modified: / 14-02-2010 / 15:36:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2 class methodsFor:'debugging'!
 
 trace: aSelector
@@ -123,6 +126,7 @@
     "Created: / 14-02-2010 / 09:53:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2 class methodsFor:'examples'!
 
 example1
@@ -145,6 +149,7 @@
     "Created: / 02-09-2009 / 21:48:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2 class methodsFor:'menu specs'!
 
 debugMenu
@@ -480,6 +485,16 @@
     "Modified: / 02-03-2012 / 19:53:19 / cg"
 ! !
 
+
+!CodeView2 methodsFor:'* As yet uncategorized *'!
+
+defaultFileNameForSave
+    self halt:'please define defaultFileNameForSave here'.
+
+    "Created: / 11-05-2012 / 15:38:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
 !CodeView2 methodsFor:'accessing'!
 
 acceptAction:aBlock
@@ -524,11 +539,26 @@
 !
 
 codeAspect:aSymbol
-    self assert:( #(expression method classDefinition) includes:aSymbol ).
+    self assert: ({  SyntaxHighlighter codeAspectClassDefinition .
+                    SyntaxHighlighter codeAspectExpression .
+                    SyntaxHighlighter codeAspectMethod } includes:aSymbol ).
 
     codeAspect := aSymbol.
 
     "Modified: / 27-07-2012 / 22:32:19 / cg"
+    "Modified: / 22-10-2012 / 17:03:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+compilerClass
+    ^textView compilerClass
+
+    "Created: / 10-05-2012 / 23:47:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+compilerClass: aClass
+    textView compilerClass: aClass
+
+    "Created: / 10-05-2012 / 23:47:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 contents
@@ -546,6 +576,33 @@
     "Modified: / 19-07-2011 / 13:18:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+contents: aStringOrStringCollection clear: clearPrevious
+    "Set the contents. If clearPrevous is true, then
+     previous original text is cleared and set to given one.
+     (so the text is considered not modified)"
+
+    textView contents: aStringOrStringCollection clear: clearPrevious
+
+    "Modified: / 19-07-2011 / 13:18:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 17-02-2012 / 00:33:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+currentParseNode
+
+    ^self currentParseNodeHolder value
+
+    "Created: / 21-02-2012 / 14:20:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+delegate: anObject
+
+    super delegate: anObject.
+    self textView delegate: anObject.
+    self gutterView delegate: anObject.
+
+    "Created: / 11-05-2012 / 10:29:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 diffMode
     ^ diffMode
 !
@@ -614,7 +671,7 @@
         self update:#value with:newValue from:textView model.
     ].
 
-    "Modified: / 27-07-2011 / 12:58:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-03-2012 / 16:11:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 modified
@@ -681,9 +738,21 @@
 
     "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'!
+
+!CodeView2 methodsFor:'accessing - code component'!
 
 klass
 
@@ -692,10 +761,13 @@
     (v := self classHolder value) notNil ifTrue:[^v].
     (v := self methodHolder value) notNil ifTrue:[^v mclass].
 
-    ^UndefinedObject
+    ^nil
 
     "Created: / 27-07-2011 / 13:14:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
+! !
+
+
+!CodeView2 methodsFor:'accessing-code component'!
 
 klass: aClass
 
@@ -738,6 +810,7 @@
     "Created: / 27-07-2011 / 13:12:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2 methodsFor:'aspects'!
 
 browserHolder
@@ -790,6 +863,39 @@
     "Modified: / 17-06-2011 / 12:56:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+currentBlockNodeHolder
+    "return/create the 'currentBlockNodeHolder' value holder (automatically generated)"
+
+    currentBlockNodeHolder isNil ifTrue:[
+        currentBlockNodeHolder := ValueHolder new.
+    ].
+    ^ currentBlockNodeHolder
+!
+
+currentBlockNodeHolder:something
+    "set the 'currentBlockNodeHolder' value holder (automatically generated)"
+
+    currentBlockNodeHolder := something.
+!
+
+currentParseNodeHolder
+    "return/create the 'currentParseNodeHolder' value holder (automatically generated)"
+
+    currentParseNodeHolder isNil ifTrue:[
+        currentParseNodeHolder := ValueHolder new.
+    ].
+    ^ currentParseNodeHolder
+!
+
+currentParseNodeHolder:something
+    "set the 'currentParseNodeHolder' value holder (automatically generated)"
+
+    currentParseNodeHolder := something.
+    gutterView notNil ifTrue:[ gutterView currentBlockNodeHolder: currentBlockNodeHolder ].
+
+    "Modified: / 16-02-2012 / 23:11:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 languageHolder
     languageHolder isNil ifTrue:[
         "/ cg: I dont like the smalltalk default here, because everyone who is not showing ST-code (expecco, filebrowser etc.)
@@ -900,10 +1006,15 @@
     "Modified: / 17-06-2011 / 12:55:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2 methodsFor:'change & update'!
 
 update:aspect with:param from:sender
 
+    sender == modeHolder ifTrue:[
+        codeAspect := modeHolder value
+    ].
+
     sender == showGutterChannel ifTrue: [
         self updateGutterVisibility.
         ^self.
@@ -917,9 +1028,9 @@
 
     super update:aspect with:param from:sender
 
-    "Modified: / 23-06-2010 / 19:05:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 07-07-2011 / 12:07:04 / Jan Vrany <jan.vrant@fit.cvut,cz>"
     "Modified: / 06-10-2011 / 14:14:36 / cg"
+    "Modified: / 26-07-2012 / 19:25:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 updateGutterVisibility
@@ -935,6 +1046,7 @@
     "Created: / 23-06-2010 / 19:05:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2 methodsFor:'channels'!
 
 modifiedChannel
@@ -1019,6 +1131,7 @@
     "Created: / 23-06-2010 / 19:03:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2 methodsFor:'code services'!
 
 browseMethod: method
@@ -1117,6 +1230,7 @@
     "Modified: / 18-11-2011 / 14:58:19 / cg"
 ! !
 
+
 !CodeView2 methodsFor:'delegation'!
 
 doesNotUnderstand: aMessage
@@ -1137,6 +1251,100 @@
     "Created: / 14-02-2010 / 09:53:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
+!CodeView2 methodsFor:'delegation - events'!
+
+buttonMotion: button x:x y:y in: view
+    "Delegates events to services. Answers true iff at least
+     one service handler method returns true. In that case,
+     the event is is NOT passed to the rest of services AND it is NOT
+     processes by the view."
+
+    services do:[:service|
+        service isEnabled ifTrue:[
+            (service buttonMotion: button x:x y:y in: view) == true ifTrue:[
+                ^true
+            ].
+        ].
+    ].
+    ^ false
+
+    "Modified: / 06-10-2011 / 14:13:57 / cg"
+    "Modified: / 31-01-2012 / 12:21:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+buttonPress: button x:x y:y in: view
+    "Delegates events to services. Answers true iff at least
+     one service handler method returns true. In that case,
+     the event is is NOT passed to the rest of services AND it is NOT
+     processes by the view."
+
+    services do:[:service|
+        (service isEnabled and:[(service buttonPress: button x:x y:y in: view) == true]) ifTrue:[
+            ^true
+        ]
+    ].
+    ^false
+
+    "Modified: / 06-10-2011 / 14:14:00 / cg"
+    "Modified (format): / 05-03-2012 / 08:56:02 / cg"
+    "Modified: / 04-04-2012 / 12:42:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+keyPress: key x:x y:y in: view
+    "Delegates events to services. Answers true iff at least
+     one service handler method returns true. In that case,
+     the event is is NOT passed to the rest of services AND it is NOT
+     processes by the view."
+
+    services do:[:service|
+        service isEnabled ifTrue:[
+            (service keyPress: key x:x y:y in: view) == true ifTrue:[
+                ^true
+            ].
+        ].
+    ].
+    ^ false
+
+    "Modified: / 06-10-2011 / 14:14:11 / cg"
+    "Modified: / 31-01-2012 / 12:21:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+keyRelease: key x:x y:y in: view
+    "Delegates events to services. Answers true iff at least
+     one service handler method returns true. In that case,
+     the event is is NOT passed to the rest of services AND it is NOT
+     processes by the view."
+
+    services do:[:service|
+        service isEnabled ifTrue:[
+            (service keyRelease: key x:x y:y in: view) == true ifTrue:[
+                ^true
+            ].
+        ].
+    ].
+    ^ false
+
+    "Modified: / 06-10-2011 / 14:14:13 / cg"
+    "Modified: / 31-01-2012 / 12:21:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+scrollTo:origin redraw:doRedraw in: view
+    view == textView ifTrue: [
+        "/my text view scrolled...
+        synchronizedCodeViews do:[:codeView|
+            codeView scrollTo:origin redraw:doRedraw in: view.
+        ]
+    ] ifFalse: [
+        "/other code view scrolls and I'm notified about that
+        textView basicScrollTo:origin redraw:doRedraw.
+    ]
+
+    "Created: / 06-04-2010 / 14:02:39 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 19-03-2012 / 17:05:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
 !CodeView2 methodsFor:'delegation-drawing'!
 
 drawLine:lineNo in: view atX:x y:y width: w height:h from:startCol to:endColOrNil with:fg and:bg
@@ -1172,85 +1380,9 @@
     "Modified: / 07-03-2010 / 14:46:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2 methodsFor:'delegation-events'!
 
-buttonMotion: button x:x y:y in: view
-
-    "Delegates events to services. Answers true iff at least
-     one service handler method returns true. In that case,
-     the event is is NOT processes by the view."
-
-    ^ services
-        inject: false
-        into:
-            [:processed :service|
-            service isEnabled 
-                ifFalse:
-                    [processed]
-                ifTrue:
-                    [processed | ((service buttonMotion: button x:x y:y in: view) == true)]].
-
-    "Modified: / 07-03-2010 / 13:53:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 06-10-2011 / 14:13:57 / cg"
-!
-
-buttonPress: button x:x y:y in: view
-    "Delegates events to services. Answers true iff at least
-     one service handler method returns true. In that case,
-     the event is is NOT processes by the view."
-
-    ^ services
-        inject: false
-        into:[:processed :service|
-            service isEnabled 
-                ifFalse: [processed]
-                ifTrue: [processed | ((service buttonPress: button x:x y:y in: view) == true)]].
-
-    "Modified: / 07-03-2010 / 13:53:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 06-10-2011 / 14:14:00 / cg"
-    "Modified (format): / 05-03-2012 / 08:56:02 / cg"
-!
-
-keyPress: key x:x y:y in: view
-
-    "Delegates events to services. Answers true iff at least
-     one service handler method returns true. In that case,
-     the event is is NOT processes by the view."
-
-    ^ services
-        inject: false
-        into:
-            [:processed :service|
-            service isEnabled 
-                ifFalse:
-                    [processed]
-                ifTrue:
-                    [processed | ((service keyPress: key x:x y:y in: view) == true)]].
-
-    "Modified: / 07-03-2010 / 13:54:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 06-10-2011 / 14:14:11 / cg"
-!
-
-keyRelease: key x:x y:y in: view
-
-    "Delegates events to services. Answers true iff at least
-     one service handler method returns true. In that case,
-     the event is is NOT processes by the view."
-
-    ^ services
-        inject: false
-        into:
-            [:processed :service|
-            service isEnabled 
-                ifFalse:
-                    [processed]
-                ifTrue:
-                    [processed | ((service keyRelease: key x:x y:y in: view) == true)]].
-
-    "Modified: / 07-03-2010 / 13:54:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 06-10-2011 / 14:14:13 / cg"
-!
-
 linesDeletedFrom: start to: end
 
     services do: [:each |
@@ -1288,31 +1420,10 @@
     "Modified: / 06-10-2011 / 14:13:44 / cg"
 !
 
-scrollDown: nLines in: view
-
-    view == textView 
-        ifTrue:
-            ["/my text view scrolled...
-            synchronizedCodeViews do:[:codeView|codeView scrollDown: nLines in: view]]
-        ifFalse:
-            ["/other code view scrolls and I'm notified about that
-            textView basicScrollDown: nLines]
-
-    "Created: / 06-04-2010 / 14:02:39 / Jakub <zelenja7@fel.cvut.cz>"
-!
-
-scrollUp: nLines in: view
-
-    view == textView 
-        ifTrue:
-            ["/my text view scrolled...
-            synchronizedCodeViews do:[:codeView|codeView scrollUp: nLines in: view]]
-        ifFalse:
-            ["/other code view scrolls and I'm notified about that
-            textView basicScrollUp: nLines]
-
-    "Created: / 06-04-2010 / 14:02:39 / Jakub <zelenja7@fel.cvut.cz>"
-! !
+
+
+ !
+
 
 !CodeView2 methodsFor:'diff mode'!
 
@@ -1346,6 +1457,7 @@
     "Modified: / 23-06-2010 / 17:25:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2 methodsFor:'initialization'!
 
 initialize
@@ -1374,6 +1486,8 @@
     modifiedChannel := ValueHolder with:false.    
     diffMode := false.
     synchronizedCodeViews := #().
+    currentParseNodeHolder := ValueHolder new.
+    currentBlockNodeHolder := ValueHolder new.
 
     servicesFromClient := false.
     services := OrderedCollection new.
@@ -1382,7 +1496,7 @@
     "Modified: / 14-12-2009 / 13:59:53 / Jindra <a>"
     "Modified: / 06-04-2010 / 13:56:35 / Jakub <zelenja7@fel.cvut.cz>"
     "Modified: / 06-10-2011 / 14:15:48 / cg"
-    "Modified: / 18-10-2011 / 19:17:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-02-2012 / 23:05:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 initializeGutterView
@@ -1401,14 +1515,18 @@
     "/ only do it, if the services have not yet been defined by the user of this view
     "/ (FileBrowser does not want Smalltalk-specific services)
     servicesFromClient ifFalse:[
-        serviceClasses := CodeViewService availableServices sort:[:a :b|name < b name].
+        serviceClasses := CodeViewService availableServices 
+            sort:[:a :b|
+                a priority = b priority 
+                    ifTrue:[a name < b name]
+                    ifFalse:[a priority > b priority]].
         serviceClasses do:[:cls|
             self registerService: cls new
         ].
     ].
 
-    "Modified: / 27-07-2011 / 11:37:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 06-10-2011 / 14:16:01 / cg"
+    "Modified: / 01-02-2012 / 10:30:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 initializeTextView
@@ -1426,6 +1544,7 @@
     "Modified: / 23-06-2010 / 19:38:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2 methodsFor:'menu actions'!
 
 accept
@@ -1532,6 +1651,7 @@
     "Created: / 16-02-2010 / 19:35:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2 methodsFor:'menus-dynamic'!
 
 editMenu
@@ -1728,6 +1848,7 @@
     "Modified: / 06-10-2011 / 14:14:30 / cg"
 ! !
 
+
 !CodeView2 methodsFor:'private'!
 
 codeCompletion
@@ -1851,6 +1972,7 @@
     "Modified: / 13-02-2010 / 23:25:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2 methodsFor:'private-accessing'!
 
 gutterView
@@ -1864,8 +1986,17 @@
     ^ syntaxElementSelection
 !
 
-syntaxElementSelection:something
-    syntaxElementSelection := something.
+syntaxElementSelection:anElement
+    syntaxElementSelection := anElement.
+    anElement isNil ifTrue:[
+        currentParseNodeHolder value: nil.
+        currentBlockNodeHolder value: nil.
+    ] ifFalse:[
+        currentParseNodeHolder value: anElement node.
+        currentBlockNodeHolder value: anElement node enclosingBlock.
+    ]
+
+    "Modified: / 16-02-2012 / 23:06:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 syntaxElements
@@ -1890,6 +2021,7 @@
     "Created: / 14-02-2010 / 15:21:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2 methodsFor:'realization'!
 
 postRealize
@@ -1901,6 +2033,7 @@
     "Created: / 23-01-2012 / 10:35:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2 methodsFor:'services'!
 
 registerService: aCodeViewService
@@ -1920,6 +2053,7 @@
     "Created: / 19-07-2012 / 16:34:18 / cg"
 ! !
 
+
 !CodeView2 methodsFor:'testing'!
 
 isCodeView2
@@ -1936,6 +2070,7 @@
     "Created: / 14-02-2010 / 22:13:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::GutterView methodsFor:'accessing'!
 
 setTextView: aTextView
@@ -1960,6 +2095,7 @@
     "Created: / 07-12-2009 / 22:36:31 / Jindra <a>"
 ! !
 
+
 !CodeView2::GutterView methodsFor:'accessing-dimensions'!
 
 acceptButtonBottom
@@ -1998,10 +2134,10 @@
 
 paddingRight
 
-    ^0"px"
+    ^3"px"
 
     "Created: / 14-02-2010 / 22:27:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 16-06-2011 / 13:47:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-02-2012 / 22:40:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 preferredExtent
@@ -2026,6 +2162,7 @@
     ^ (codeView showAcceptCancelBar ifTrue:[widthAcceptCancel ? 0] ifFalse:[0])
 ! !
 
+
 !CodeView2::GutterView methodsFor:'actions'!
 
 accept
@@ -2047,6 +2184,39 @@
     "Created: / 07-10-2011 / 20:23:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
+!CodeView2::GutterView methodsFor:'aspects'!
+
+currentBlockNodeHolder
+    "return/create the 'currentBlockNodeHolder' value holder (automatically generated)"
+
+    currentBlockNodeHolder isNil ifTrue:[
+        currentBlockNodeHolder := ValueHolder new.
+        currentBlockNodeHolder addDependent:self.
+    ].
+    ^ currentBlockNodeHolder
+!
+
+currentBlockNodeHolder:something
+    "set the 'currentBlockNodeHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    currentBlockNodeHolder notNil ifTrue:[
+        oldValue := currentBlockNodeHolder value.
+        currentBlockNodeHolder removeDependent:self.
+    ].
+    currentBlockNodeHolder := something.
+    currentBlockNodeHolder notNil ifTrue:[
+        currentBlockNodeHolder addDependent:self.
+    ].
+    newValue := currentBlockNodeHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:currentBlockNodeHolder.
+    ].
+! !
+
+
 !CodeView2::GutterView methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
@@ -2066,6 +2236,12 @@
         self invalidate.
     ].
 
+    changedObject == codeView currentBlockNodeHolder ifTrue:[
+         self invalidate.
+         ^ self.
+    ].
+
+
     "/ changedObject == someOfMyValueHolders ifTrue:[
     "/     self doSomethingApropriate.
     "/     ^ self.
@@ -2073,9 +2249,10 @@
     super update:something with:aParameter from:changedObject
 
     "Modified (format): / 15-07-2011 / 20:14:04 / cg"
-    "Modified: / 07-10-2011 / 19:25:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 05-04-2012 / 17:47:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::GutterView methodsFor:'event handling'!
 
 buttonPress: btn x: x y: y
@@ -2116,6 +2293,7 @@
     "Modified (comment): / 18-05-2012 / 10:56:54 / cg"
 ! !
 
+
 !CodeView2::GutterView methodsFor:'help'!
 
 flyByHelpText
@@ -2124,6 +2302,7 @@
     "Created: / 27-01-2012 / 14:04:52 / cg"
 ! !
 
+
 !CodeView2::GutterView methodsFor:'initialization'!
 
 initialize
@@ -2131,7 +2310,7 @@
     super initialize.
 
     widthAcceptCancel := 16.
-    widthAnnotations := 8.
+    widthAnnotations := "16"8.
     widthDiffInfo := 5.
 
     acceptColor := Color green lighter.
@@ -2144,20 +2323,24 @@
 setCodeView: aCodeView2
 
     codeView := aCodeView2.
-    textView := aCodeView2 textView.
 
     codeView addDependent: self.
     codeView reallyModifiedChannel addDependent: self.
+    codeView currentBlockNodeHolder addDependent: self.
+
+    textView := aCodeView2 textView.
     textView addDependent: self.
+    self currentBlockNodeHolder: codeView currentBlockNodeHolder.
     textViewScroller := aCodeView2 textViewScroller.
     "/ self backgroundPaint: (textView viewBackground "backgroundPaint" blendWith: (Color gray:80)).
     self viewBackground: (View defaultBackgroundColor).
 
     "Created: / 14-02-2010 / 15:19:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 17-08-2011 / 15:15:55 / cg"
-    "Modified: / 08-10-2011 / 11:58:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 05-04-2012 / 17:46:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::GutterView methodsFor:'queries'!
 
 displayedString: line
@@ -2198,6 +2381,7 @@
     "Created: / 14-12-2009 / 13:35:07 / Jindra <a>"
 ! !
 
+
 !CodeView2::GutterView methodsFor:'redrawing'!
 
 redrawAcceptCancelBarX: x y: y width:w height:h
@@ -2264,7 +2448,7 @@
 redrawLine:line cleared: cleared
     "redraws specified line. Returns width of drawn object. Color of drawn objects should be taken from lineFont, lineColor"
     
-    |lineString y0 textW requiredW oldFont newFont oldColor newColor|
+    |lineString y0 yOfLine textW requiredW oldFont newFont oldColor newColor|
 
     lineString := self displayedString:line.
     textW := (lineString widthOn:self).
@@ -2276,7 +2460,7 @@
     newFont isNil ifTrue:[ 
         newFont := oldFont.
         newColor := self lineColor:line.
-        newColor ifNotNil:[ self paint:newColor ].
+        newColor notNil ifTrue:[ self paint:newColor ].
     ] ifFalse:[
         self font:newFont. 
     ].
@@ -2299,17 +2483,19 @@
         drawLine:line in: self 
         atX: self paddingLeft + self usedWidthForAcceptCancel y:y0 width: widthAnnotations height: font height
         from:nil to:nil with:self paint and: self backgroundColor.
-
     self 
         displayString:lineString
         x:(self width - textW - self paddingRight - widthDiffInfo)
         y:y0.
-    newFont 
-        ifNotNil:[
-            self font:oldFont.
-            self paint:oldColor
-        ]
-        ifNil:[ newColor ifNotNil:[ self paint:oldColor ]. ].
+    newFont notNil ifTrue:[
+        self font:oldFont.
+        self paint:oldColor
+    ] ifFalse:[ 
+        newColor notNil ifTrue:[ 
+            self paint:oldColor 
+        ]. 
+    ].
+
     ^ requiredW.
 
     "Modified: / 14-12-2009 / 15:30:44 / Jindra <a>"
@@ -2355,6 +2541,7 @@
     "Modified: / 10-10-2011 / 16:35:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::TextView methodsFor:'accessing'!
 
 changedDiffText
@@ -2387,6 +2574,17 @@
     "Created: / 07-10-2011 / 20:32:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+contents: text clear: clearPrevious
+
+    | savedListOriginal |
+    savedListOriginal := listOriginal.
+    super contents: text.
+    listOriginal := savedListOriginal.
+    self updateReallyModified.
+
+    "Created: / 17-02-2012 / 00:35:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 deletedLines
     ^  deletedLines
 
@@ -2416,6 +2614,12 @@
     emptyLines := something.
 !
 
+fontAscent
+    ^fontAscent notNil ifTrue:[fontAscent] ifFalse:[super fontAscent]
+
+    "Created: / 19-05-2012 / 14:13:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 insertedLines
     ^  insertedLines
 
@@ -2451,6 +2655,7 @@
     "Created: / 07-10-2011 / 19:28:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::TextView methodsFor:'accessing-colors'!
 
 colorChanged
@@ -2474,6 +2679,7 @@
     "Modified: / 24-06-2010 / 14:13:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::TextView methodsFor:'accessing-contents'!
 
 list:aCollection expandTabs:expand scanForNonStrings:scan includesNonStrings:nonStrings
@@ -2496,6 +2702,18 @@
     "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
@@ -2521,6 +2739,7 @@
     "Created: / 08-10-2011 / 12:52:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::TextView methodsFor:'channels'!
 
 reallyModifiedChannel
@@ -2549,101 +2768,118 @@
     "Created: / 07-10-2011 / 18:50:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::TextView methodsFor:'drawing'!
 
-drawFromVisibleLine:startVisLineNr to:endVisLineNr with:fg and:bg 
-
-    super 
-        drawFromVisibleLine:startVisLineNr
-        to:endVisLineNr
-        with:fg
-        and:bg.
-    self redrawLines.
-
-    "Created: / 05-04-2010 / 12:08:38 / Jakub <zelenja7@fel.cvut.cz>"
-    "Modified: / 02-05-2010 / 18:46:04 / Jakub <zelenja7@fel.cvut.cz>"
+backgroundForVisibleLine:visLineNr default:bg 
+    | lineNr |
+
+
+    diffMode ifTrue:[
+        lineNr := self visibleLineToListLine:visLineNr.
+        (insertedLines notEmptyOrNil and:[insertedLines includes:lineNr]) ifTrue:[
+            ^self colorInserted
+        ].
+        (changedLines notEmptyOrNil and:[changedLines includes:lineNr]) ifTrue:[
+            ^self colorChanged
+        ].
+        (deletedLines notEmptyOrNil and:[deletedLines includes:lineNr]) ifTrue:[
+            ^self colorDeleted
+        ].
+    ].
+    ^ bg
+
+    "Modified: / 17-03-2012 / 12:22:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+drawFromVisibleLine:startVisLineNr to:endVisLineNr with:fg and:bg
+    "draw a visible line range in fg/bg"
+
+    diffMode ifFalse:[
+        super drawFromVisibleLine:startVisLineNr to:endVisLineNr with:fg and:bg.
+        ^self.
+    ].
+
+    startVisLineNr to: endVisLineNr do:[:visLineNr|
+        self drawVisibleLine: visLineNr with:fg and:bg
+    ]
+
+    "Modified: / 15-12-1999 / 23:19:39 / cg"
+    "Created: / 17-03-2012 / 09:44:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 drawLine:line fromX:x inVisible:visLineNr with:fg and:bg 
-
     super 
         drawLine:line
         fromX:x
         inVisible:visLineNr
         with:fg
-        and:bg.
-    self redrawLines.
+        and:(self backgroundForVisibleLine:visLineNr default:bg).
 
     "Created: / 05-04-2010 / 12:07:07 / Jakub <zelenja7@fel.cvut.cz>"
     "Modified: / 02-05-2010 / 18:46:00 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2012 / 10:05:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-drawLine:lineStringArg inVisible:visLineNr col:col with:fg and:bg 
-
+drawLine:lineStringArg inVisible:visLineNr col:col with:fg and:bg
     super 
         drawLine:lineStringArg
         inVisible:visLineNr
         col:col
         with:fg
-        and:bg.
-    self redrawLines.
+        and:(self backgroundForVisibleLine:visLineNr default:bg).
 
     "Created: / 05-04-2010 / 11:49:42 / Jakub <zelenja7@fel.cvut.cz>"
     "Modified: / 02-05-2010 / 18:45:56 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2012 / 10:04:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 drawLine:lineStringArg inVisible:visLineNr from:startCol to:endColOrNil with:fg and:bg 
-
     super 
         drawLine:lineStringArg
         inVisible:visLineNr
         from:startCol
         to:endColOrNil
         with:fg
-        and:bg.
-    self redrawLines.
+        and:(self backgroundForVisibleLine:visLineNr default:bg).
 
     "Created: / 05-04-2010 / 11:54:54 / Jakub <zelenja7@fel.cvut.cz>"
     "Modified: / 02-05-2010 / 18:45:52 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2012 / 10:04:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 drawLine:lineString inVisible:visLineNr from:startCol with:fg and:bg 
-
     super 
         drawLine:lineString
         inVisible:visLineNr
         from:startCol
         with:fg
-        and:bg.
-    self redrawLines.
+        and:(self backgroundForVisibleLine:visLineNr default:bg).
 
     "Created: / 05-04-2010 / 11:54:26 / Jakub <zelenja7@fel.cvut.cz>"
     "Modified: / 02-05-2010 / 18:45:48 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2012 / 10:04:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 drawVisibleLine:visLineNr with:fg and:bg 
-
     super 
         drawVisibleLine:visLineNr
         with:fg
-        and:bg.
-    self redrawLines.
+        and:(self backgroundForVisibleLine:visLineNr default:bg).
 
     "Created: / 05-04-2010 / 11:49:42 / Jakub <zelenja7@fel.cvut.cz>"
     "Modified: / 02-05-2010 / 18:45:44 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2012 / 10:04:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-redraw
-    "/ thisContext fullPrintAll.   
-    super redraw.
-
-    "Created: / 30-06-2011 / 11:04:32 / cg"
-!
+
 
 redrawLines
     |i pom|
 
     diffMode ifFalse:[^self].
+    true ifTrue:[^self].
+
 
     pom := self hasSelection.
     (pom) ifTrue:[ ^ self. ].
@@ -2686,9 +2922,10 @@
 
     "Created: / 26-04-2010 / 21:04:31 / Jakub <zelenja7@fel.cvut.cz>"
     "Modified: / 22-06-2010 / 23:28:30 / Jakub <zelenja7@fel.cvut.cz>"
-    "Modified: / 08-04-2011 / 20:52:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-03-2012 / 09:27:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::TextView methodsFor:'editing'!
 
 contentsChanged
@@ -2824,6 +3061,7 @@
     "Modified: / 18-11-2011 / 14:58:22 / cg"
 ! !
 
+
 !CodeView2::TextView methodsFor:'editing-basic'!
 
 basicDeleteCharsAtLine:lineNr fromCol:startCol toCol:endCol
@@ -2891,6 +3129,7 @@
     "Created: / 20-12-2011 / 15:32:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::TextView methodsFor:'event handling'!
 
 buttonMotion:button x:x y:y
@@ -2958,6 +3197,7 @@
     "Modified: / 06-03-2010 / 21:04:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::TextView methodsFor:'formatting'!
 
 leftIndentForLine:lineNr
@@ -2998,6 +3238,7 @@
     "Created: / 10-12-2011 / 11:02:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::TextView methodsFor:'initialization'!
 
 initialize
@@ -3037,6 +3278,7 @@
     "Created: / 02-09-2009 / 21:57:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::TextView methodsFor:'menu & menu actions'!
 
 accept
@@ -3121,6 +3363,7 @@
     "Created: / 08-03-2012 / 12:44:03 / cg"
 ! !
 
+
 !CodeView2::TextView methodsFor:'notification'!
 
 notifyLinesDeletedFrom: startLine to: endLine
@@ -3158,6 +3401,7 @@
     "Created: / 16-09-2011 / 15:12:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::TextView methodsFor:'private'!
 
 superEditMenu
@@ -3226,114 +3470,27 @@
     "Modified: / 28-10-2011 / 09:23:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2::TextView methodsFor:'queries'!
 
 supportsSyntaxElements
     ^ true
 ! !
 
+
 !CodeView2::TextView methodsFor:'scrolling'!
 
-basicScrollDown:nLines 
-    |i|
-
-    (lastFirstLine isNil) ifTrue:[
-        lastFirstLine := firstLineShown.
-    ].
-    super scrollDown:nLines.
-    (lastFirstLine = firstLineShown) ifFalse:[
-        i := 1.
-        [
-            i <= changedLines size
-        ] whileTrue:[
-            super 
-                drawVisibleLine:(changedLines at:i)
-                with:fgColor
-                and:Color white.
-            changedLines at:i put:(changedLines at:i) - nLines.
-            i := i + 1.
-        ].
-        i := 1.
-        [
-            i <= insertedLines size
-        ] whileTrue:[
-            super 
-                drawVisibleLine:(insertedLines at:i)
-                with:fgColor
-                and:Color white.
-            insertedLines at:i put:(insertedLines at:i) - nLines.
-            i := i + 1.
-        ].
-        i := 1.
-        [
-            i <= deletedLines size
-        ] whileTrue:[
-            super 
-                drawVisibleLine:(deletedLines at:i)
-                with:fgColor
-                and:Color white.
-            deletedLines at:i put:(deletedLines at:i) - nLines.
-            i := i + 1.
-        ].
-        lastFirstLine := firstLineShown.
-        self redrawLines.
-    ].
-
-    "Created: / 06-04-2010 / 14:03:28 / Jakub <zelenja7@fel.cvut.cz>"
-    "Modified: / 02-05-2010 / 19:29:23 / Jakub <zelenja7@fel.cvut.cz>"
+
+
+basicScrollTo:anOrigin redraw:doRedraw
+    super scrollTo:anOrigin redraw:doRedraw
+
+    "Modified: / 06-04-2010 / 14:05:40 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2012 / 10:06:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 19-03-2012 / 17:01:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-basicScrollUp:nLines 
-    |i|
-
-    (scrolled isNil) ifTrue:[
-        scrolled := false.
-    ].
-    (lastFirstLine isNil) ifTrue:[
-        lastFirstLine := firstLineShown.
-    ].
-    super scrollUp:nLines.
-    (lastFirstLine = firstLineShown) ifFalse:[
-        i := 1.
-        [
-            i <= insertedLines size
-        ] whileTrue:[
-            super 
-                drawVisibleLine:(insertedLines at:i)
-                with:fgColor
-                and:Color white.
-            insertedLines at:i put:(insertedLines at:i) + nLines.
-            i := i + 1.
-        ].
-        i := 1.
-        [
-            i <= deletedLines size
-        ] whileTrue:[
-            super 
-                drawVisibleLine:(deletedLines at:i)
-                with:fgColor
-                and:Color white.
-            deletedLines at:i put:(deletedLines at:i) + nLines.
-            i := i + 1.
-        ].
-        i := 1.
-        [
-            i <= changedLines size
-        ] whileTrue:[
-            super 
-                drawVisibleLine:(changedLines at:i)
-                with:fgColor
-                and:Color white.
-            changedLines at:i put:(changedLines at:i) + nLines.
-            i := i + 1.
-        ].
-        lastFirstLine := firstLineShown.
-        self redrawLines.
-    ].
-
-    "Created: / 06-04-2010 / 14:03:46 / Jakub <zelenja7@fel.cvut.cz>"
-    "Modified: / 02-05-2010 / 19:19:27 / Jakub <zelenja7@fel.cvut.cz>"
-!
+
 
 originChanged:delta
 
@@ -3344,21 +3501,20 @@
     "Created: / 07-12-2009 / 21:50:49 / Jindra <a>"
 !
 
-scrollDown:nLines
-
-    codeView scrollDown: nLines in: self.
-    self basicScrollDown: nLines.
+
+
+scrollTo:anOrigin redraw:doRedraw
+
+    codeView scrollTo:anOrigin redraw:doRedraw in: self.
+    self basicScrollTo:anOrigin redraw:doRedraw
 
     "Modified: / 06-04-2010 / 14:04:28 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2012 / 10:06:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 19-03-2012 / 17:05:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-scrollUp:nLines
-
-    codeView scrollUp: nLines in: self.
-    self basicScrollUp: nLines.
-
-    "Modified: / 06-04-2010 / 14:05:40 / Jakub <zelenja7@fel.cvut.cz>"
-! !
+ !
+
 
 !CodeView2::TextView methodsFor:'undo & again'!
 
@@ -3378,6 +3534,7 @@
     "Created: / 06-07-2011 / 17:48:49 / jv"
 ! !
 
+
 !CodeView2 class methodsFor:'documentation'!
 
 version
@@ -3392,4 +3549,5 @@
     ^ '§Id: Tools__CodeView2.st 7797 2011-06-28 07:45:06Z vranyj1 §'
 ! !
 
+
 CodeView2 initialize!
--- a/Tools__CodeView2DemoApp.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__CodeView2DemoApp.st	Wed Jan 30 11:15:09 2013 +0000
@@ -147,9 +147,9 @@
 !CodeView2DemoApp class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__CodeView2DemoApp.st,v 1.2 2011-07-03 17:50:09 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__CodeView2DemoApp.st,v 1.2 2011/07/03 17:50:09 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: Tools__CodeView2DemoApp.st 7567 2010-04-17 10:59:53Z vranyj1 §'
-! !
+    ^ '$Id: Tools__CodeView2DemoApp.st 7567 2010-04-17 10:59:53Z vranyj1 $'
+! !
\ No newline at end of file
--- a/Tools__CodeView2SettingsAppl.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__CodeView2SettingsAppl.st	Wed Jan 30 11:15:09 2013 +0000
@@ -38,6 +38,7 @@
 "
 ! !
 
+
 !CodeView2SettingsAppl class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -71,6 +72,7 @@
 )
 ! !
 
+
 !CodeView2SettingsAppl class methodsFor:'image specs'!
 
 defaultIcon
@@ -96,6 +98,7 @@
 RRY(UUUD***("*)J*****$R***"J)J******QJ***HUUUZUUUUUD***TQDQDQDQDQDR***************(b') ; colorMapFromArray:#[240 160 80 192 80 0 64 0 0 240 208 160 0 0 0 240 240 240 192 192 192 240 128 0 208 208 208 48 48 48 160 160 160 255 0 0]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#(1)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@C@@@G??LG??<_??<_??<G??<G??<G??<G??<G??8G??0G??0G??0G??0G??0G??0G??0G??0G??0O??0@@@@') ; yourself); yourself]
 ! !
 
+
 !CodeView2SettingsAppl class methodsFor:'interface specs'!
 
 windowSpec
@@ -245,6 +248,7 @@
       )
 ! !
 
+
 !CodeView2SettingsAppl methodsFor:'aspects'!
 
 acceptCancelInGutterEnabledHolder
@@ -332,6 +336,7 @@
     "Created: / 26-07-2011 / 10:31:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2SettingsAppl methodsFor:'aspects-enablement'!
 
 useCodeView2InToolEnabled
@@ -349,6 +354,7 @@
     "Modified (format): / 25-11-2011 / 15:11:55 / cg"
 ! !
 
+
 !CodeView2SettingsAppl methodsFor:'protocol'!
 
 basicAspects
@@ -388,6 +394,7 @@
     "Modified: / 19-07-2011 / 16:55:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !CodeView2SettingsAppl methodsFor:'queries'!
 
 hasUnsavedChanges
@@ -399,6 +406,7 @@
     "Modified (format): / 25-11-2011 / 15:25:16 / cg"
 ! !
 
+
 !CodeView2SettingsAppl class methodsFor:'documentation'!
 
 version
@@ -412,3 +420,4 @@
 version_SVN
     ^ '§Id§'
 ! !
+
--- a/Tools__CodeViewService.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__CodeViewService.st	Wed Jan 30 11:15:09 2013 +0000
@@ -108,7 +108,6 @@
 !
 
 label
-
     "Answers short label - for UI"
 
     ^self class name
@@ -116,6 +115,17 @@
     "Created: / 07-03-2010 / 13:58:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+priority
+    "Answers a priority of the service. Services with higher priority
+     will get the event notification before ones with lower priority.
+     Therefore, a lower-priority service might not get the event if high
+     priority service processes it"
+
+    ^ 5
+
+    "Created: / 01-02-2012 / 10:28:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 requiredServices
 
     "Returns a list of services required for myself to work
@@ -338,6 +348,19 @@
 
 !CodeViewService methodsFor:'redrawing'!
 
+drawAnnotationIcon:icon atX:x y:y width:w height:h
+    |dy dx|
+
+    dx := ((w - icon width) / 2) rounded.
+    dy := ((h - icon height) / 2) rounded.
+    icon 
+        displayOn:gutterView
+        x:x + dx
+        y:y - h + dy + 4.
+
+    "Modified: / 30-01-2012 / 16:01:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 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
@@ -389,10 +412,14 @@
 
 !CodeViewService class methodsFor:'documentation'!
 
+version
+    ^ '$Id: Tools__CodeViewService.st 7860 2012-02-01 10:42:29Z vranyj1 $'
+!
+
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__CodeViewService.st,v 1.8 2012-01-24 12:56:23 vrany Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__CodeViewService.st,v 1.8 2012/01/24 12:56:23 vrany Exp §'
 !
 
 version_SVN
-    ^ '§Id: Tools__CodeViewService.st 7790 2011-06-17 13:33:22Z vranyj1 §'
+    ^ '$Id: Tools__CodeViewService.st 7860 2012-02-01 10:42:29Z vranyj1 $'
 ! !
--- a/Tools__CompilerWarningToDoListEntry.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__CompilerWarningToDoListEntry.st	Wed Jan 30 11:15:09 2013 +0000
@@ -283,5 +283,5 @@
 !CompilerWarningToDoListEntry class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__CompilerWarningToDoListEntry.st,v 1.11 2008-08-20 19:41:29 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__CompilerWarningToDoListEntry.st,v 1.11 2008/08/20 19:41:29 cg Exp $'
 ! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__Diff2CodeView2.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,289 @@
+"
+ 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 }"
+
+DiffCodeView2 subclass:#Diff2CodeView2
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-CodeView'
+!
+
+Object subclass:#Diff2Data
+	instanceVariableNames:'text1 text2 inserted deleted changed'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:Diff2CodeView2
+!
+
+!Diff2CodeView2 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.
+"
+! !
+
+!Diff2CodeView2 class methodsFor:'defaults'!
+
+numberOfViews
+    "return the number of the synced subViews.
+     Usually redefined in subclasses"
+
+    ^ 2
+
+    "Created: / 16-03-2012 / 12:54:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff2CodeView2 methodsFor:'accessing'!
+
+text1:t1 text2:t2 
+    |data|
+
+    data := self computeDiffDataForText1:t1 text2:t2.
+
+    (textViews at:1) 
+        contents:(data text1);
+        deletedLines:(data deleted);
+        changedLines:(data changed);
+        insertedLines:#();    
+        originDiffText:t1;
+        emptyLines:(data inserted).
+
+    (textViews at:2) 
+        contents:(data text2);
+        deletedLines:#();
+        changedLines:(data changed);
+        insertedLines:(data inserted);
+        originDiffText:t2;
+        emptyLines:(data deleted).
+
+    "Created: / 06-03-2010 / 10:45:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-06-2010 / 21:36:35 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 15-07-2010 / 23:08:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff2CodeView2 methodsFor:'private'!
+
+computeDiffDataForText1:t1 text2:t2 
+    "created diffText object from two string"
+    
+    |array1 array2 diff change index1 index2 text1 text2 i data deleted inserted helperText addConstant1 addConstant2 changed helper ins del pom|
+
+    "Convert text into an array of individual lines"
+    array1 := self createArray:t1.
+    array2 := self createArray:t2.
+    "Initialize inserted/deleted/changed "
+    inserted := OrderedCollection new.
+    deleted := OrderedCollection new.
+    changed := OrderedCollection new.
+
+     "indicates which row of origin text is added to ne text"
+    index1 := 1.
+    index2 := 1.
+     "indicate how much rows were deleted or inserted "
+    addConstant1 := 0.
+    addConstant2 := 0.
+    text1 := ''.
+    text2 := ''.
+    diff := Diff new.
+    diff a:array1 b:array2.
+    change := diff diff:false.
+    data := Diff2Data new.
+
+
+
+    [ change notNil ] whileTrue:[
+        "check first lines which are same"
+        (((change line0) > 0) and:[ ((change line1) > 0) ]) ifTrue:[
+            [
+                index1 <= (change line0)
+            ] whileTrue:[
+                helperText := (array1 at:index1) asText.
+                text1 := text1 asString , helperText asString.
+                index1 := index1 + 1.
+            ].
+            [
+                index2 <= (change line1)
+            ] whileTrue:[
+                helperText := (array2 at:index2) asText.
+                text2 := text2 , helperText.
+                index2 := index2 + 1.
+            ].
+        ].
+        ins := change inserted.
+        del := change deleted.
+        index1 := (change line0) + 1.
+        index2 := (change line1) + 1.
+         "find replace files "
+        ((del > 0) and:[ ins > 0 ]) ifTrue:[
+            helper := del - ins.
+            (helper <= 0) ifTrue:[
+                pom := change deleted.
+            ].
+            (helper > 0) ifTrue:[
+                pom := change inserted.
+            ].
+             "its same count row"
+            i := 1.
+            [ i <= pom ] whileTrue:[
+                changed add:index1 + addConstant1.
+                text1 := text1 , (array1 at:index1) asString.
+                text2 := text2 , (array2 at:index2) asString.
+                index1 := index1 + 1.
+                index2 := index2 + 1.
+                del := del - 1.
+                ins := ins - 1.
+                i := i + 1.
+            ].
+        ].
+         "find deleted files"
+        (del > 0) ifTrue:[
+            i := 1.
+            [ i <= del ] whileTrue:[
+                deleted add:index1 + addConstant1.
+                text2 := text2 , Character cr.
+                addConstant2 := addConstant2 + 1.
+                text1 := text1 , (array1 at:index1) asString.
+                index1 := index1 + 1.
+                i := i + 1.
+            ].
+        ].
+         "find inserted lines"
+        (ins > 0) ifTrue:[
+            i := 1.
+            [ i <= ins ] whileTrue:[
+                inserted add:index2 + addConstant2.
+                text1 := text1 , Character cr.
+                addConstant1 := addConstant1 + 1.
+                text2 := text2 , (array2 at:index2) asString.
+                index2 := index2 + 1.
+                i := i + 1.
+            ].
+        ].
+        change := change nextLink.
+    ].
+     "kontrola zda nam nechybi posledni znaky"
+    (index1 <= (array1 size)) ifTrue:[
+        [
+            index1 <= (array1 size)
+        ] whileTrue:[
+            helperText := (array1 at:index1) asText.
+            text1 := text1 , helperText.
+            index1 := index1 + 1.
+        ].
+    ].
+    (index2 <= (array2 size)) ifTrue:[
+        [
+            index2 <= (array2 size)
+        ] whileTrue:[
+            helperText := (array2 at:index2) asText.
+            text2 := text2 , helperText.
+            index2 := index2 + 1.
+        ].
+    ].
+    data text1:text1.
+    data text2:text2.
+    data changed:changed.
+    data inserted:inserted.
+    data deleted:deleted.
+    ^ data.
+
+    "Modified: / 22-06-2010 / 21:02:50 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 16-03-2012 / 12:53:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 16-03-2012 / 16:10:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+createArray:text1 
+
+    | array src line c |
+    array := StringCollection new.
+    src := text1 readStream.
+    line := (String new: 80) writeStream.
+    [ src atEnd ] whileFalse:[
+        c := src next.
+        line nextPut: c.
+        c == Character cr ifTrue:[
+            array add: line contents.
+            line reset.
+        ]        
+    ].
+    line position ~~ 0 ifTrue:[
+        array add: line contents
+    ].
+    ^array
+
+    "Created: / 22-03-2010 / 14:48:27 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified (comment): / 19-07-2011 / 11:14:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff2CodeView2::Diff2Data methodsFor:'accessing'!
+
+changed
+
+    ^changed copy
+
+    "Modified: / 02-05-2010 / 19:31:18 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 16-07-2010 / 09:35:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changed:something
+    changed := something.
+!
+
+deleted
+    ^ deleted
+!
+
+deleted:something
+    deleted := something.
+!
+
+inserted
+    ^ inserted
+!
+
+inserted:something
+    inserted := something.
+!
+
+text1
+    ^ text1
+!
+
+text1:something
+    text1 := something.
+!
+
+text2
+    ^ text2
+!
+
+text2:something
+    text2 := something.
+! !
+
+!Diff2CodeView2 class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: Tools__Diff2CodeView2.st 7925 2012-03-16 17:08:17Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__Diff3CodeView2.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,367 @@
+"
+ 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 }"
+
+DiffCodeView2 subclass:#Diff3CodeView2
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-CodeView'
+!
+
+Object subclass:#Diff3Data
+	instanceVariableNames:'text1 list1 text2 list2 text3 list3 inserted1 inserted2 inserted3
+		deleted changed'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:Diff3CodeView2
+!
+
+!Diff3CodeView2 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.
+"
+! !
+
+!Diff3CodeView2 class methodsFor:'defaults'!
+
+numberOfViews
+    "return the number of the synced subViews.
+     Usually redefined in subclasses"
+
+    ^ 3
+
+    "Created: / 16-03-2012 / 12:56:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff3CodeView2 methodsFor:'accessing'!
+
+computeDiffDataForText1:t1 text2:t2 text3: t3
+
+    ^Diff3Data new
+        computeDiffDataForText1:t1 text2:t2 text3: t3;
+        yourself
+
+    "Created: / 16-03-2012 / 20:49:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+text1:t1 text2:t2 text3: t3
+    |data|
+
+    data := self computeDiffDataForText1:t1 text2:t2 text3: t3.
+
+    (textViews at:1) 
+        list:(data list1);
+        deletedLines:#();
+        changedLines:(data changed);
+        insertedLines:(data inserted1);    
+        originDiffText:t1;
+        emptyLines:#().
+
+    (textViews at:2) 
+        list:(data list2);
+        deletedLines:#();
+        changedLines:(data changed);
+        insertedLines:(data inserted2);
+        originDiffText:t2;
+        emptyLines:#().
+
+    (textViews at:3) 
+        list:(data list3);
+        deletedLines:#();
+        changedLines:(data changed);
+        insertedLines:(data inserted3);
+        originDiffText:t3;
+        emptyLines:#().
+
+    "Modified: / 22-06-2010 / 21:36:35 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 16-03-2012 / 12:58:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff3CodeView2::Diff3Data methodsFor:'accessing'!
+
+changed
+
+    ^changed copy
+
+    "Modified: / 02-05-2010 / 19:31:18 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 16-07-2010 / 09:35:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changed:something
+    changed := something.
+!
+
+deleted
+    ^ deleted
+!
+
+deleted:something
+    deleted := something.
+!
+
+inserted1
+    ^ inserted1
+!
+
+inserted2
+    ^ inserted2
+!
+
+inserted3
+    ^ inserted3
+!
+
+list1
+    ^ list1
+!
+
+list1:something
+    list1 := something.
+!
+
+list2
+    ^ list2
+!
+
+list2:something
+    list2 := something.
+!
+
+list3
+    ^ list3
+!
+
+list3:something
+    list3 := something.
+!
+
+text1
+    ^ text1
+!
+
+text1:something
+    text1 := something.
+!
+
+text2
+    ^ text2
+!
+
+text2:something
+    text2 := something.
+!
+
+text3
+    ^ text3
+!
+
+text3:something
+    text3 := something.
+! !
+
+!Diff3CodeView2::Diff3Data methodsFor:'computing'!
+
+addLines: total from: src to: dst chunk: chunk
+
+    ^chunk isSequenceable ifTrue:[
+        dst addAll: chunk.
+        (total - chunk size) timesRepeat: [
+            dst add: nil.
+        ]
+    ] ifFalse:[
+        self addLines: total from: src to: dst offset: chunk offset length: chunk length.
+    ]
+
+    "Created: / 09-04-2012 / 11:54:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+addLines: total from: src to: dst offset: offset length: len
+    | start stop |
+
+    start := offset max:1.
+    stop  := (offset + (len max:0) - 1).
+
+
+    start to: (stop min: src size) do:[:i|                     
+        (src size >= i) ifTrue:[
+            dst add: (src at: i).
+        ] ifFalse:[
+            src add: nil.
+        ]
+    ].
+
+
+    (total - ((stop min: src size) - start + 1)) timesRepeat: [ dst add: nil ].
+
+    "Created: / 16-03-2012 / 22:20:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+computeDiffDataForText1:t1 text2:t2 text3: t3
+    | t1c t2c  t3c  diff3chunks lnr |
+
+    list1 := StringCollection new.
+    list2 := StringCollection new.
+    list3 := StringCollection new.
+    changed := OrderedCollection new.
+    inserted1 := OrderedCollection new.
+    inserted2 := OrderedCollection new.
+    inserted3 := OrderedCollection new.
+
+"/    t1 isNil ifTrue:[ ^self ].
+"/    t2 isNil ifTrue:[ ^self ].
+"/    t3 isNil ifTrue:[ ^self ].
+
+
+    t1c := (text1 := t1 ? #()) asStringCollection.
+    t2c := (text2 := t2 ? #()) asStringCollection.
+    t3c := (text3 := t3 ? #()) asStringCollection.
+
+    
+    diff3chunks := Diff3 new
+                    file0: t1c; "/Base version
+                    file1: t2c; "/A
+                    file2: t3c; "/B
+                    diffIndices.
+    lnr := 1.
+    diff3chunks do:[:chunk|
+        | len |
+
+        len := chunk length.
+        chunk isConflict ifTrue:[
+            self addLines: len from: t1c to: list1 chunk: chunk original.
+            self addLines: len from: t2c to: list2 chunk: chunk left.
+            self addLines: len from: t3c to: list3 chunk: chunk right.
+            chunk isInsertionInOriginal ifTrue:[
+                lnr to:(lnr + len -1) do:[:i|inserted1 add: i].
+            ] ifFalse:[chunk isInsertionInLeft ifTrue:[
+                lnr to:(lnr + len -1) do:[:i|inserted2 add: i].
+            ] ifFalse:[chunk isInsertionInRight ifTrue:[
+                lnr to:(lnr + len -1) do:[:i|inserted3 add: i].
+            ] ifFalse:[
+                lnr to:(lnr + len -1) do:[:i|changed add: i].
+            ]]]
+        ].
+        chunk isChunk ifTrue:[
+            chunk side == #original ifTrue:[
+                self addLines: len from: t1c to: list1 offset: chunk offset length: len.
+                self addLines: len from: t1c to: list2 offset: chunk offset length: len.
+                self addLines: len from: t1c to: list3 offset: chunk offset length: len.
+            ].
+            chunk side == #left ifTrue:[
+                self breakPoint: #jv info: 'Should no longer happen'.
+                self addLines: len from: t1c to: list1 offset: chunk offset length: 0"len".
+                self addLines: len from: t2c to: list2 offset: chunk offset length: len.
+                self addLines: len from: t3c to: list3 offset: chunk offset length: 0"len".
+                lnr to:(lnr + len - 1) do:[:i| "changed"inserted2 add:i ].
+            ].
+            chunk side == #right ifTrue:[
+                self breakPoint: #jv info: 'Should no longer happen'.
+                self addLines: len from: t1c to: list1 offset: chunk offset length: 0"len".
+                self addLines: len from: t2c to: list2 offset: chunk offset length: 0"len".
+                self addLines: len from: t3c to: list3 offset: chunk offset length: len.
+                lnr to:(lnr + len - 1) do:[:i|"changed"inserted3 add: i].
+            ]
+        ].
+        lnr := lnr + len.
+    ].
+
+    "Created: / 16-03-2012 / 22:07:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+old_computeDiffDataForText1:t1 text2:t2 text3: t3
+    | t1c t2c  t3c  diff3chunks lnr |
+
+    list1 := StringCollection new.
+    list2 := StringCollection new.
+    list3 := StringCollection new.
+    changed := OrderedCollection new.
+    inserted1 := OrderedCollection new.
+    inserted2 := OrderedCollection new.
+    inserted3 := OrderedCollection new.
+
+    t1 isNil ifTrue:[ ^self ].
+    t2 isNil ifTrue:[ ^self ].
+    t3 isNil ifTrue:[ ^self ].
+
+
+    t1c := (text1 := t1) asStringCollection.
+    t2c := (text2 := t2) asStringCollection.
+    t3c := (text3 := t3) asStringCollection.
+
+    
+    diff3chunks := Diff3 new
+                    file0: t1c; "/Base version
+                    file1: t2c; "/A
+                    file2: t3c; "/B
+                    mergeIndices.
+    lnr := 1.
+    diff3chunks do:[:chunk|
+        | len |
+
+        len := chunk length.
+        chunk isConflict ifTrue:[
+            self addLines: len from: t1c to: list1 offset: chunk original offset length: chunk original length.
+            self addLines: len from: t2c to: list2 offset: chunk left     offset length: chunk left     length.
+            self addLines: len from: t3c to: list3 offset: chunk right    offset length: chunk right    length.
+"/            chunk isInsertionInOriginal ifTrue:[
+"/                lnr to:(lnr + len -1) do:[:i|inserted1 add: i].
+"/            ] ifFalse:[chunk isInsertionInLeft ifTrue:[
+"/                lnr to:(lnr + len -1) do:[:i|inserted2 add: i].
+"/            ] ifFalse:[chunk isInsertionInRight ifTrue:[
+"/                lnr to:(lnr + len -1) do:[:i|inserted3 add: i].
+"/            ] ifFalse:[
+                lnr to:(lnr + len -1) do:[:i|changed add: i].
+"/            ]]]
+        ].
+        chunk isChunk ifTrue:[
+            chunk side == #original ifTrue:[
+                self addLines: len from: t1c to: list1 offset: chunk offset length: len.
+                self addLines: len from: t1c to: list2 offset: chunk offset length: len.
+                self addLines: len from: t1c to: list3 offset: chunk offset length: len.
+            ].
+            chunk side == #left ifTrue:[
+                self addLines: len from: t1c to: list1 offset: chunk offset length: 0"len".
+                self addLines: len from: t2c to: list2 offset: chunk offset length: len.
+                self addLines: len from: t3c to: list3 offset: chunk offset length: 0"len".
+                lnr to:(lnr + len - 1) do:[:i| "changed"inserted2 add:i ].
+            ].
+            chunk side == #right ifTrue:[
+                self addLines: len from: t1c to: list1 offset: chunk offset length: 0"len".
+                self addLines: len from: t2c to: list2 offset: chunk offset length: 0"len".
+                self addLines: len from: t3c to: list3 offset: chunk offset length: len.
+                lnr to:(lnr + len - 1) do:[:i|"changed"inserted3 add: i].
+            ]
+        ].
+        lnr := lnr + len.
+    ].
+
+    "Created: / 20-03-2012 / 17:42:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Diff3CodeView2 class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: Tools__Diff3CodeView2.st 7974 2012-04-09 11:37:13Z vranyj1 $'
+! !
--- a/Tools__DiffCodeView2.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__DiffCodeView2.st	Wed Jan 30 11:15:09 2013 +0000
@@ -71,6 +71,7 @@
 "
 ! !
 
+
 !DiffCodeView2 class methodsFor:'defaults'!
 
 textViewClass
@@ -82,6 +83,7 @@
     "Created: / 06-03-2010 / 10:40:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !DiffCodeView2 methodsFor:'accessing'!
 
 classHolder: aValueModel
@@ -104,6 +106,13 @@
     "Created: / 19-07-2011 / 12:55:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+modeHolder: aValueModel
+
+    textViews do:[:each|each modeHolder: aValueModel].
+
+    "Created: / 26-07-2012 / 19:19:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 text1:t1 text2:t2 
     |data|
 
@@ -130,6 +139,7 @@
     "Modified: / 15-07-2010 / 23:08:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !DiffCodeView2 methodsFor:'initialization'!
 
 initialize
@@ -149,6 +159,7 @@
     "Modified: / 23-06-2010 / 19:36:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !DiffCodeView2 methodsFor:'private'!
 
 computeDiffDataForText1:t1 text2:t2 
@@ -309,6 +320,7 @@
     "Modified (comment): / 26-07-2012 / 21:45:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !DiffCodeView2::DiffData methodsFor:'accessing'!
 
 changed
@@ -355,6 +367,7 @@
     text2 := something.
 ! !
 
+
 !DiffCodeView2 class methodsFor:'documentation'!
 
 version_CVS
@@ -364,3 +377,4 @@
 version_SVN
     ^ '§Id: Tools__DiffCodeView2.st 7594 2010-07-16 08:57:35Z vranyj1 §'
 ! !
+
--- a/Tools__DiffCodeView2DemoApp.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__DiffCodeView2DemoApp.st	Wed Jan 30 11:15:09 2013 +0000
@@ -110,74 +110,13 @@
 text1
 
     ^
-'multipleClassRepositoryDiffBrowserSpec
-    "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:NewSystemBrowser andSelector:#multipleClassRepositoryDiffBrowserSpec
-     NewSystemBrowser new openInterface:#multipleClassRepositoryDiffBrowserSpec
-    "
-
-
-
-    ^
-     #(#FullSpec
-        #name: #multipleClassRepositoryDiffBrowserSpec
-
-        #window:
-       #(#WindowSpec
-          #label: ''CCB (Cool Class Browser)''
-          #name: ''ClassBrowser''
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 661 213 1123 513)
-        )
-        #component:
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableVerticalPanelSpec
-              #name: ''VariableVerticalPanel1''
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #showHandle: false
-              #snapMode: #both
-              #handlePosition: #left
-              #component:
-             #(#SpecCollection
-                #collection: #(
-                 #(#SubCanvasSpec
-                    #name: ''Navigator''
-                    #autoHideScrollBars: false
-                    #majorKey: #''NavigatorCanvas''
-
-
-                    #minorKey: #multipleClassDiffBrowserSpec
-                  )
-                 #(#SubCanvasSpec
-                    #name: ''DiffView''
-                    #hasHorizontalScrollBar: false
-
-
-                    #hasVerticalScrollBar: false
-                    #majorKey: #VersionDiffBrowser
-                    #minorKey: #windowSpec
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                    #postBuildCallback: #versionDiffViewerCreated:
-                  )
-                 )
-
-              )
-              #handles: #(#Any 0.3 1.0)
-            )
-           )
-
-        )
-      )
-
-
+'
+Line 1
+Where is the difference?
+Line 3
+Line 4
+Line 5
+Some text to delete
 '
 
     "Modified: / 22-06-2010 / 22:25:20 / Jakub <zelenja7@fel.cvut.cz>"
@@ -187,95 +126,30 @@
 text2
 
     ^
-'multipleClassRepositoryDiffBrowserSpec
-    "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:NewSystemBrowser andSelector:#multipleClassRepositoryDiffBrowserSpec
-     NewSystemBrowser new openInterface:#multipleClassRepositoryDiffBrowserSpec
-    "
-
-    <resource: #canvas>
-
-    ^
-     #(#FullSpec
-        #name: #multipleClassRepositoryDiffBrowserSpec
-        #window:
-       #(#WindowSpec
-          #label: ''ClassBrowser''
-          #name: ''ClassBrowser''
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 661 213 1123 513)
-        )
-        #component:
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableVerticalPanelSpec
-              #name: ''VariableVerticalPanel1''
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #showHandle: false
-              #snapMode: #both
-              #handlePosition: #left
-              #component:
-             #(#SpecCollection
-                #collection: #(
-                 #(#SubCanvasSpec
-                    #name: ''Navigator''
-                    #autoHideScrollBars: false
-                    #majorKey: #''NavigatorCanvas''
-
-
-                    #minorKey: #multipleClassDiffBrowserSpec
-                  )
-                 #(#SubCanvasSpec
-                    #name: ''DiffView''
-                    #hasHorizontalScrollBar: false
-
-
-                    #hasVerticalScrollBar: false
-                    #majorKey: #VersionDiffBrowser
-                    #minorKey: #windowSpec
-                    #createNewApplication: true
-                    #createNewBuilder: true
-                    #postBuildCallback: #versionDiffViewerCreated:
-                  )
-                 )
-
-              )
-              #handles: #(#Any 0.3 1.0)
-            )
-           )
-
-        )
-      )
-
-
+'
+Line 1
+Here is the difference!!
+Line 3
+Line 3.5
+Line 5
 '
 
     "Created: / 06-03-2010 / 10:39:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 22-06-2010 / 22:25:20 / Jakub <zelenja7@fel.cvut.cz>"
-    "Modified: / 08-07-2010 / 15:17:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-03-2012 / 16:16:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !DiffCodeView2DemoApp methodsFor:'accessing - views'!
 
 diffCodeView2
 
-    view := DiffCodeView2 new.
-
-    view text1: 'abc
-def' text2: 'def
-ghi'.
+    view := Diff2CodeView2 new.
 
 "/    view text1: self text1 text2: self text2.
     ^view
 
     "Created: / 06-03-2010 / 10:38:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 08-07-2010 / 15:29:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-03-2012 / 13:17:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !DiffCodeView2DemoApp methodsFor:'hooks'!
@@ -292,9 +166,9 @@
 !DiffCodeView2DemoApp class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__DiffCodeView2DemoApp.st,v 1.2 2011-07-03 17:50:00 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__DiffCodeView2DemoApp.st,v 1.2 2011/07/03 17:50:00 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: Tools__DiffCodeView2DemoApp.st 7611 2010-08-01 18:42:05Z vranyj1 §'
+    ^ '$Id: Tools__DiffCodeView2DemoApp.st 7925 2012-03-16 17:08:17Z vranyj1 $'
 ! !
--- a/Tools__FullMethodCategoryList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__FullMethodCategoryList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,27 +1,13 @@
 "
- Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague
- Copyright (c) 2009-2010 eXept Software AG
+ COPYRIGHT (c) 2004 by eXept Software AG
+              All Rights Reserved
 
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
+ 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' }"
 
@@ -38,29 +24,15 @@
 
 copyright
 "
- Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague
- Copyright (c) 2009-2010 eXept Software AG
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
+ COPYRIGHT (c) 2004 by eXept Software AG
+              All Rights Reserved
 
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
+ 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.
 "
 !
 
@@ -150,10 +122,10 @@
 
 !FullMethodCategoryList class methodsFor:'documentation'!
 
-version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__FullMethodCategoryList.st,v 1.3 2011-07-03 13:36:22 cg Exp $'
+version
+    ^ '$Id: Tools__FullMethodCategoryList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
 !
 
 version_SVN
-    ^ '§Id: Tools__FullMethodCategoryList.st 7796 2011-06-23 16:01:32Z vranyj1 §'
+    ^ '$Id: Tools__FullMethodCategoryList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
 ! !
--- a/Tools__HierarchicalChangeList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__HierarchicalChangeList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -150,8 +150,58 @@
     "Created: / 25-07-2009 / 23:34:54 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+!HierarchicalChangeList methodsFor:'event processing'!
+
+buttonPress:button x:x y:y view:aView
+
+    | itemIndex item |
+
+    button ~= 1 ifTrue:[^aView buttonPress:button x:x y:y].
+
+    itemIndex := aView yVisibleToLineNr:y.
+    itemIndex isNil ifTrue:[^self].
+    itemIndex == 0 ifTrue:[^self].
+    itemIndex > aView list size ifTrue:[^self].
+    item := aView list at: itemIndex.
+
+    ((aView left + x) between: (item x) and: ((item x ? 0) + 16))
+        ifFalse:[^aView buttonPress:button x:x y:y].
+
+    item removed: item removed not.
+    aView invalidate
+
+    "Created: / 08-12-2009 / 14:12:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-11-2011 / 14:55:41 / cg"
+    "Modified: / 26-07-2012 / 18:21:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+handlesButtonPress:button inView:aView
+
+    ^listView scrolledView == aView
+
+    "Created: / 08-12-2009 / 14:08:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !HierarchicalChangeList methodsFor:'private'!
 
+listColumn: columnId visible: visible
+    "Nothing to do here"
+
+    "Created: / 26-07-2012 / 18:42:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+listColumnHide: columnId
+    "Nothing to do here"
+
+    "Created: / 26-07-2012 / 18:42:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+listColumnShow: columnId
+    "Nothing to do here"
+
+    "Created: / 26-07-2012 / 18:43:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 updateList
     |inGenerator changeset root|
 
@@ -168,9 +218,9 @@
 !HierarchicalChangeList class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__HierarchicalChangeList.st,v 1.7 2012-01-24 22:18:49 vrany Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__HierarchicalChangeList.st,v 1.7 2012/01/24 22:18:49 vrany Exp §'
 !
 
 version_SVN
-    ^ '§Id: Tools__HierarchicalChangeList.st 7486 2009-10-26 22:06:24Z vranyj1 §'
+    ^ '$Id: Tools__HierarchicalChangeList.st 8027 2012-07-26 18:46:57Z vranyj1 $'
 ! !
--- a/Tools__HierarchicalChangesetDialog.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__HierarchicalChangesetDialog.st	Wed Jan 30 11:15:09 2013 +0000
@@ -71,6 +71,7 @@
 "
 ! !
 
+
 !HierarchicalChangesetDialog class methodsFor:'interface specs'!
 
 codeViewSpec
@@ -234,6 +235,7 @@
     "Modified: / 06-11-2008 / 17:51:26 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !HierarchicalChangesetDialog class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -256,6 +258,7 @@
     "Modified: / 03-04-2009 / 09:46:21 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !HierarchicalChangesetDialog methodsFor:'accessing'!
 
 changeSet
@@ -319,6 +322,7 @@
     "Created: / 06-11-2008 / 15:02:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !HierarchicalChangesetDialog methodsFor:'actions'!
 
 changeListToggleRemoved
@@ -336,6 +340,7 @@
         ifNotNil:[ selectedChangeSetHolder value:self selectedChangeSet ]
 ! !
 
+
 !HierarchicalChangesetDialog methodsFor:'aspects'!
 
 changeSetHolder
@@ -430,6 +435,7 @@
     "Modified: / 06-11-2008 / 15:04:41 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !HierarchicalChangesetDialog methodsFor:'change & update'!
 
 updateChangeSet
@@ -475,6 +481,7 @@
     "Modified (format): / 18-11-2011 / 14:59:31 / cg"
 ! !
 
+
 !HierarchicalChangesetDialog methodsFor:'hooks'!
 
 commonPostOpen
@@ -485,12 +492,14 @@
     "Modified: / 06-11-2008 / 17:11:58 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !HierarchicalChangesetDialog::Change class methodsFor:'documentation'!
 
 version
     ^'$Header: /cvs/stx/stx/libtool/Tools__HierarchicalChangesetDialog.st,v 1.4 2012-08-13 11:12:18 stefan Exp $'
 ! !
 
+
 !HierarchicalChangesetDialog::Change class methodsFor:'image specs'!
 
 checkedIcon
@@ -543,6 +552,7 @@
     "Created: / 06-11-2008 / 16:32:46 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !HierarchicalChangesetDialog::Change class methodsFor:'instance creation'!
 
 forChange: aChange
@@ -559,6 +569,7 @@
     "Created: / 26-11-2008 / 11:33:04 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !HierarchicalChangesetDialog::Change methodsFor:'accessing'!
 
 change
@@ -645,6 +656,7 @@
     "Modified: / 06-11-2008 / 16:31:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !HierarchicalChangesetDialog::Change methodsFor:'change & update'!
 
 updateRemoved
@@ -655,6 +667,7 @@
     "Created: / 06-11-2008 / 17:36:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !HierarchicalChangesetDialog::Change methodsFor:'private'!
 
 setRemoved: aBoolean
@@ -666,6 +679,7 @@
     "Created: / 06-11-2008 / 17:49:20 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !HierarchicalChangesetDialog::Change methodsFor:'testing'!
 
 isCompositeChange
@@ -691,6 +705,7 @@
     "Modified: / 18-11-2011 / 14:59:39 / cg"
 ! !
 
+
 !HierarchicalChangesetDialog class methodsFor:'documentation'!
 
 version_CVS
@@ -700,3 +715,4 @@
 version_SVN
     ^ '§Id: Tools__HierarchicalChangesetDialog.st 7486 2009-10-26 22:06:24Z vranyj1 §'
 ! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__HierarchicalClassCategoryList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,414 @@
+"
+ COPYRIGHT (c) 2004 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 }"
+
+ClassCategoryList subclass:#HierarchicalClassCategoryList
+	instanceVariableNames:'hierarchicalCategoryTree hierarchicalCategoryList
+		hierarchicalCategorySelection categoryToItemDictionary'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+HierarchicalItemWithLabel subclass:#ClassCategoryItem
+	instanceVariableNames:'category'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:HierarchicalClassCategoryList
+!
+
+!HierarchicalClassCategoryList class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2004 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.
+"
+!
+
+documentation
+"
+    embeddable application displaying the classes as listed by
+    the inputGenerator.
+    Provides an outputGenerator, which enumerates the classes and
+    their protocols (method-categories) in the selected classes.
+
+    [author:]
+	Claus Gittinger (cg@exept.de)
+"
+
+
+! !
+
+!HierarchicalClassCategoryList 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:HierarchicalClassCategoryList andSelector:#windowSpec
+     HierarchicalClassCategoryList new openInterface:#windowSpec
+     HierarchicalClassCategoryList open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ClassCategoryList'
+          #name: 'ClassCategoryList'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 16 46 316 346)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#HierarchicalListViewSpec
+              #name: 'List'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #tabable: true
+              #model: #hierarchicalCategorySelection
+              #menu: #menuHolder
+              #hasHorizontalScrollBar: true
+              #hasVerticalScrollBar: true
+              #miniScrollerHorizontal: true
+              #listModel: #hierarchicalCategoryList
+              #multipleSelectOk: true
+              #highlightMode: #line
+              #doubleClickSelector: #doubleClicked:
+              #showLines: false
+              #indicatorSelector: #indicatorPressed:
+              #useDefaultIcons: false
+              #properties: 
+             #(#PropertyListDictionary
+                #dragArgument: nil
+                #dropArgument: nil
+                #canDropSelector: #canDrop:
+                #dropSelector: #doDrop:
+              )
+            )
+           )
+         
+        )
+      )
+! !
+
+!HierarchicalClassCategoryList class methodsFor:'plugIn spec'!
+
+aspectSelectors
+    "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."
+
+    "Return a description of exported aspects;
+     these can be connected to aspects of an embedding application
+     (if this app is embedded in a subCanvas)."
+
+    ^ #(
+        #(#doubleClickChannel #action )
+        #forceGeneratorTrigger
+        #hideUnloadedClasses
+        #immediateUpdate
+        #inGeneratorHolder
+        #menuHolder
+        #nameSpaceFilter
+        #organizerMode
+        #outGeneratorHolder
+        #packageFilter
+        #selectedCategories
+        #selectionChangeCondition
+        #slaveMode
+        #updateTrigger
+        #showCoverageInformation
+      ).
+
+    "Modified: / 20-07-2011 / 14:29:15 / cg"
+! !
+
+!HierarchicalClassCategoryList methodsFor:'aspects'!
+
+addCategory:category
+    |item path parentPath parentCategory parentItem|
+
+    item:= categoryToItemDictionary at:category ifAbsent:nil.
+    item isNil ifTrue:[
+	path := category asCollectionOfSubstringsSeparatedBy:$-.
+
+	item := ClassCategoryItem new.
+	item category:category.
+	item label:(path last).
+	categoryToItemDictionary at:category put:item.
+
+	category size > 0 ifTrue:[
+	    "/ find the parent ...
+	    parentPath := path copyWithoutLast:1.
+	    parentCategory := parentPath asStringWith:$-.
+
+	    parentItem := self addCategory:parentCategory .
+
+	    parentItem add:item sortBlock:[:i1 :i2 | i1 category asLowercase < i2 category asLowercase].
+	]
+    ].
+    ^ item
+!
+
+generateHierarchicalCategoryTree
+    |anchor|
+
+    self categoryList value isNil ifTrue:[
+	self updateList.
+	self categoryList value isNil ifTrue:[
+	    ^ nil.
+	]
+    ].
+
+    anchor := ClassCategoryItem new.
+    anchor category:nil.
+    anchor label:nil.
+
+    categoryToItemDictionary := Dictionary new.
+    categoryToItemDictionary at:'' asSymbol put:anchor.
+
+    self categoryList value do:[:eachCategory |
+	(categoryToItemDictionary includesKey:eachCategory) ifFalse:[
+	    self addCategory:eachCategory 
+	].
+    ].
+
+    anchor recursiveSortChildren:[:i1 :i2 | i1 category asLowercase < i2 category asLowercase].
+    anchor expand.
+
+    ^ anchor
+!
+
+hierarchicalCategoryList
+    |anchor |
+
+    hierarchicalCategoryList isNil ifTrue:[
+	hierarchicalCategoryList := HierarchicalList new.
+	hierarchicalCategoryList showRoot:false.
+
+	(self slaveMode value ~~ true) ifTrue:[
+	    anchor := self generateHierarchicalCategoryTree.
+	    hierarchicalCategoryList root:anchor.
+	    listValid := true
+	] ifFalse:[
+	    listValid := false
+	]
+    ].
+    ^ hierarchicalCategoryList
+!
+
+hierarchicalCategorySelection
+    hierarchicalCategorySelection isNil ifTrue:[
+	hierarchicalCategorySelection := #() asValue.
+	hierarchicalCategorySelection addDependent:self.
+    ].
+    ^ hierarchicalCategorySelection.
+! !
+
+!HierarchicalClassCategoryList methodsFor:'change & update'!
+
+delayedUpdate:something with:aParameter from:changedObject
+    |cls sel oldMethod newMethod newPackage|
+
+    self inSlaveModeOrInvisible ifTrue:[
+	super delayedUpdate:something with:aParameter from:changedObject.
+	^ self.
+    ].
+
+    changedObject == updateTrigger ifTrue:[
+	hierarchicalCategoryTree := nil.
+	self hierarchicalCategoryList.
+	self updateTreeSelectionFromList.
+	^ self        
+    ].
+
+    changedObject == slaveMode ifTrue:[
+	listValid ~~ true ifTrue:[
+	    self enqueueDelayedUpdateList
+	].
+	"/ self invalidateList.
+	^  self
+    ].
+
+    changedObject == hierarchicalCategorySelection ifTrue:[
+	self updateSelectionFromTree.
+	^ self        
+    ].
+    changedObject == self selectedCategories ifTrue:[
+	"/ update the trees selection as appropriate
+"/        self updateTreeSelection.
+	self updateTreeSelectionFromList.
+    ].
+    changedObject == categoryList ifTrue:[
+	"/ update the tree
+	self hierarchicalCategoryList root:(self generateHierarchicalCategoryTree).
+	^ self.
+    ].
+
+    super delayedUpdate:something with:aParameter from:changedObject
+
+    "Created: / 17.2.2000 / 23:41:02 / cg"
+    "Modified: / 26.2.2000 / 01:21:49 / cg"
+!
+
+updateSelectionFromTree
+    |treeSelection|
+
+    treeSelection := hierarchicalCategorySelection value 
+		    collect:[:eachIndex |  |item|
+				    item := hierarchicalCategoryList at:eachIndex ifAbsent:nil.
+				    item category
+			    ].
+
+    treeSelection asSet ~= (self selectedCategories value ? #()) asSet ifTrue:[
+	self selectedCategories value:treeSelection.
+    ]
+!
+
+updateTreeSelectionFromList
+    |listSelection selectedTreeItems treeSelection|
+
+    listSelection := self selectedCategories value.
+    selectedTreeItems := listSelection collect:[:itemString | self treeItemForString:itemString string].
+    treeSelection := selectedTreeItems collect:[:eachItem | hierarchicalCategoryList identityIndexOf:eachItem].
+    treeSelection := treeSelection asOrderedCollection.
+"/hierarchicalCategorySelection value 
+"/                    collect:[:eachIndex |  |item|
+"/                                    item := hierarchicalCategoryList at:eachIndex ifAbsent:nil.
+"/                                    item category
+"/                            ].
+"/
+"/    treeSelection asSet ~= (self selectedCategories value ? #()) asSet ifTrue:[
+"/        self selectedCategories value:treeSelection.
+"/    ]
+    self hierarchicalCategorySelection value:treeSelection
+! !
+
+!HierarchicalClassCategoryList methodsFor:'private'!
+
+makeItemVisible:itemString
+    |treeItem idx listView|
+
+    treeItem := self treeItemForString:itemString.
+    idx := hierarchicalCategoryList identityIndexOf:treeItem.
+    idx ~~ 0 ifTrue:[
+	(listView := self listView) notNil ifTrue:[
+	    listView makeLineVisible:idx.
+	]
+    ]
+!
+
+release
+    super release.
+
+    hierarchicalCategorySelection removeDependent:self.
+!
+
+treeItemForString:itemString
+    |itemPath treeItem|
+
+    itemPath := itemString string asCollectionOfSubstringsSeparatedBy:$-.
+    treeItem := hierarchicalCategoryList root.
+    [itemPath notEmpty] whileTrue:[
+	treeItem expand.
+	treeItem := treeItem detect:[:childItem | childItem label string = itemPath first] ifNone:nil.
+	itemPath := itemPath copyFrom:2.
+    ].
+    ^ treeItem
+! !
+
+!HierarchicalClassCategoryList methodsFor:'user actions'!
+
+doubleClicked:anIndex
+    |item|
+
+    item := hierarchicalCategoryList at:anIndex ifAbsent:nil.
+    item isNil ifTrue:[
+	^ self
+    ].        
+
+    (item canExpand not or:[item isExpanded]) ifTrue:[
+	doubleClickChannel notNil ifTrue:[
+	    doubleClickChannel value:anIndex.
+	] ifFalse:[
+	    item collapse.
+	].
+	^ self
+    ].
+
+    item expand.
+!
+
+indicatorPressed:anIndex
+    |item sensor|
+
+    item := hierarchicalCategoryList at:anIndex ifAbsent:nil.
+
+    item isNil ifTrue:[
+	^ self
+    ].
+
+    sensor := self window sensor.
+    (sensor ctrlDown or:[sensor shiftDown]) ifTrue:[
+	item recursiveToggleExpand
+    ] ifFalse:[
+	item toggleExpand
+    ].
+! !
+
+!HierarchicalClassCategoryList::ClassCategoryItem methodsFor:'accessing'!
+
+category
+    ^ category
+!
+
+category:something
+    category := something.
+!
+
+icon
+    ^ nil "/ SystemBrowser packageIcon
+! !
+
+!HierarchicalClassCategoryList class methodsFor:'documentation'!
+
+version
+    ^ '$Id: Tools__HierarchicalClassCategoryList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_HierarchicalClassCategoryList.st,v 1.9 2011/07/20 12:54:09 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__HierarchicalClassCategoryList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+! !
--- a/Tools__HierarchicalClassList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__HierarchicalClassList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -13,7 +13,7 @@
 
 "{ NameSpace: Tools }"
 
-ClassList subclass:#HierarchicalClassList
+Tools::ClassList subclass:#HierarchicalClassList
 	instanceVariableNames:'topClassHolder'
 	classVariableNames:'InheritedEntry'
 	poolDictionaries:''
@@ -270,8 +270,14 @@
     nm := aClass name.
     nm isNil ifTrue:[^ '???'].
 
+    aClass isLoaded ifFalse:[
+        "/ nm := nm,(' (?) ' colorizeAllWith:Color grey).
+    ] ifTrue:[
+        nm := nm,((' (%1+%2) ' bindWith:(aClass methodDictionary size) with:(aClass class methodDictionary size)) 
+                                colorizeAllWith:self class pseudoEntryForegroundColor).
+    ].
+
     indent := 0.
-
     superClass := aClass superclass.
     [superClass notNil] whileTrue:[
         indent := indent + 1.
@@ -307,12 +313,12 @@
 
 !HierarchicalClassList class methodsFor:'documentation'!
 
-version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__HierarchicalClassList.st,v 1.1 2011-07-01 13:34:16 cg Exp $'
+version
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_HierarchicalClassList.st,v 1.10 2012/10/30 10:09:09 cg Exp $'
 !
 
 version_SVN
-    ^ '§Id: Tools__HierarchicalClassList.st 7796 2011-06-23 16:01:32Z vranyj1 §'
+    ^ '$Id: Tools__HierarchicalClassList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
 ! !
 
 HierarchicalClassList initialize!
--- a/Tools__HierarchicalLintRuleList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__HierarchicalLintRuleList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -27,7 +27,7 @@
 
 "{ NameSpace: Tools }"
 
-LintRuleList subclass:#HierarchicalLintRuleList
+Tools::LintRuleList subclass:#HierarchicalLintRuleList
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -64,6 +64,7 @@
 "
 ! !
 
+
 !HierarchicalLintRuleList class methodsFor:'interface specs'!
 
 windowSpec
@@ -123,6 +124,7 @@
       )
 ! !
 
+
 !HierarchicalLintRuleList class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -146,6 +148,7 @@
 
 ! !
 
+
 !HierarchicalLintRuleList methodsFor:'aspects'!
 
 listHolder
@@ -160,6 +163,7 @@
     "Created: / 15-04-2010 / 20:32:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !HierarchicalLintRuleList methodsFor:'private'!
 
 updateList
@@ -199,6 +203,7 @@
     "Modified: / 08-03-2012 / 03:11:19 / cg"
 ! !
 
+
 !HierarchicalLintRuleList class methodsFor:'documentation'!
 
 version_CVS
@@ -208,3 +213,4 @@
 version_SVN
     ^ '§Id: Tools__HierarchicalLintRuleList.st 7617 2010-08-25 12:56:19Z vranyj1 §'
 ! !
+
--- a/Tools__HierarchicalPackageFilterList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__HierarchicalPackageFilterList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -300,7 +300,7 @@
 !HierarchicalPackageFilterList::PackageItem class methodsFor:'documentation'!
 
 version
-    ^'$Id: Tools__HierarchicalPackageFilterList.st,v 1.2 2011-07-03 17:46:47 cg Exp $'
+    ^'$Id: Tools__HierarchicalPackageFilterList.st 7911 2012-02-22 09:55:48Z vranyj1 $'
 ! !
 
 !HierarchicalPackageFilterList::PackageItem class methodsFor:'image specs'!
@@ -460,9 +460,10 @@
 !HierarchicalPackageFilterList class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__HierarchicalPackageFilterList.st,v 1.2 2011-07-03 17:46:47 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__HierarchicalPackageFilterList.st,v 1.2 2011/07/03 17:46:47 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id§'
+    ^ '$Id: Tools__HierarchicalPackageFilterList.st 7911 2012-02-22 09:55:48Z vranyj1 $'
 ! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__HierarchicalProjectList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,530 @@
+"
+ COPYRIGHT (c) 2004 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 }"
+
+ProjectList subclass:#HierarchicalProjectList
+	instanceVariableNames:'hierarchicalProjectTree selectedProjectItems packageIcon
+		hierarchicalProjectList hierarchicalProjectSelection
+		packageToItemDictionary'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+HierarchicalItemWithLabel subclass:#ProjectItem
+	instanceVariableNames:'packageID'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:HierarchicalProjectList
+!
+
+!HierarchicalProjectList class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2004 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.
+"
+!
+
+documentation
+"
+    Like a ClassList, but shows classes hierarchical.
+
+    If topClassHolders value is non-nil, only that classes hierarchy
+    is shown.
+
+    embeddable application displaying the classes as listed by
+    the inputGenerator.
+    Provides an outputGenerator, which enumerates the classes and
+    their protocols (method-categories) in the selected classes.
+
+    [author:]
+	Claus Gittinger (cg@exept.de)
+"
+
+
+! !
+
+!HierarchicalProjectList 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:HierarchicalProjectList andSelector:#windowSpec
+     HierarchicalProjectList new openInterface:#windowSpec
+     HierarchicalProjectList open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ProjectList'
+          #name: 'ProjectList'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 16 46 316 346)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#HierarchicalListViewSpec
+              #name: 'HierarchicalListView1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #tabable: true
+              #model: #hierarchicalProjectSelection
+              #menu: #menuHolder
+              #hasHorizontalScrollBar: true
+              #hasVerticalScrollBar: true
+              #miniScrollerHorizontal: true
+              #listModel: #hierarchicalProjectList
+              #multipleSelectOk: true
+              #highlightMode: #line
+              #doubleClickSelector: #doubleClicked:
+              #indicatorSelector: #indicatorPressed:
+              #properties: 
+             #(#PropertyListDictionary
+                #dragArgument: nil
+                #dropArgument: nil
+                #canDropSelector: #canDrop:
+                #dropSelector: #doDrop:
+              )
+            )
+           )
+         
+        )
+      )
+!
+
+xxwindowSpec
+    "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:HierarchicalProjectList andSelector:#windowSpec
+     HierarchicalProjectList new openInterface:#windowSpec
+     HierarchicalProjectList open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+	#name: #windowSpec
+	#window: 
+       #(#WindowSpec
+	  #label: 'ProjectList'
+	  #name: 'ProjectList'
+	  #min: #(#Point 0 0)
+	  #max: #(#Point 1024 721)
+	  #bounds: #(#Rectangle 12 22 312 322)
+	)
+	#component: 
+       #(#SpecCollection
+	  #collection: #(
+	   #(#SelectionInTreeViewSpec
+	      #name: 'List'
+	      #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      #model: #selectedProjectItems
+	      #menu: #menuHolder
+	      #hasHorizontalScrollBar: true
+	      #hasVerticalScrollBar: true
+	      #miniScrollerHorizontal: true
+	      #showRoot: false
+	      #showDirectoryIndicator: true
+	      #isMultiSelect: true
+	      #valueChangeSelector: #selectionChangedByClick
+	      #hierarchicalList: #hierarchicalProjectTree
+	      #childrenSelector: #actionToRetrieveChildren
+	      #highlightMode: #line
+	      #doubleClickChannel: #doubleClickChannel
+	    )
+	   #(#HierarchicalListViewSpec
+	      #name: 'HierarchicalListView1'
+	      #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      #tabable: true
+	      #hasHorizontalScrollBar: true
+	      #hasVerticalScrollBar: true
+	      #miniScrollerHorizontal: true
+	      #listModel: #hierarchicalProjectList
+	      #multipleSelectOk: true
+	      #highlightMode: #line
+	      #doubleClickSelector: #doubleClicked:
+	      #indicatorSelector: #indicatorPressed:
+	      "/ #showLeftIndicators: false
+	    )
+	   )
+         
+	)
+      )
+! !
+
+!HierarchicalProjectList class methodsFor:'plugIn spec'!
+
+aspectSelectors
+    "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."
+
+    "Return a description of exported aspects;
+     these can be connected to aspects of an embedding application
+     (if this app is embedded in a subCanvas)."
+
+    ^ #(
+        #(#doubleClickChannel #action )
+        #forceGeneratorTrigger
+        #hideUnloadedClasses
+        #immediateUpdate
+        #inGeneratorHolder
+        #menuHolder
+        #organizerMode
+        #outGeneratorHolder
+        #selectedProjects
+        #selectionChangeCondition
+        #slaveMode
+        #updateTrigger
+        #showCoverageInformation
+      ).
+
+    "Modified: / 20-07-2011 / 14:29:26 / cg"
+! !
+
+!HierarchicalProjectList methodsFor:'aspects'!
+
+generateHierarchicalProjectTree
+    |anchor|
+
+    self projectList value isNil ifTrue:[
+	self updateList.
+	self projectList value isNil ifTrue:[
+	    ^ nil.
+	]
+    ].
+
+    anchor := ProjectItem new.
+    anchor package:''.
+    anchor label:nil.
+
+    packageToItemDictionary := IdentityDictionary new.
+    packageToItemDictionary at:'' asSymbol put:anchor.
+
+    self projectList value do:[:eachPackageString |
+	|package|
+
+	package := eachPackageString asSymbol.
+	(packageToItemDictionary includesKey:package) ifFalse:[
+	    self addPackage:package 
+	].
+    ].
+
+"/    Smalltalk allClassesDo:[:eachClass |
+"/        |package|
+"/
+"/        package := eachClass package asSymbol.
+"/        (packageToItemDictionary includesKey:package) ifFalse:[
+"/            self addPackage:package 
+"/        ].
+"/    ].
+    anchor recursiveSortChildren:[:i1 :i2 | i1 label asLowercase < i2 label asLowercase].
+    anchor expand.
+
+    ^ anchor
+!
+
+hierarchicalProjectList
+    |anchor |
+
+    hierarchicalProjectList isNil ifTrue:[
+	hierarchicalProjectList := HierarchicalList new.
+	hierarchicalProjectList showRoot:false.
+
+	(self slaveMode value ~~ true) ifTrue:[
+	    anchor := self generateHierarchicalProjectTree.
+	    hierarchicalProjectList root:anchor.
+	    listValid := true
+	] ifFalse:[
+	    listValid := false
+	]
+    ].
+    ^ hierarchicalProjectList
+!
+
+hierarchicalProjectSelection
+    hierarchicalProjectSelection isNil ifTrue:[
+	hierarchicalProjectSelection := #() asValue.
+	hierarchicalProjectSelection addDependent:self.
+    ].
+    ^ hierarchicalProjectSelection.
+!
+
+updateTreeSelection
+    "/ must expand items as required
+    |itemsToSelect oldSelection newSelection|
+
+    itemsToSelect := OrderedCollection new.
+
+    (self selectedProjects value ? #()) do:[:eachSelectedProject |
+        |item child|
+
+        item := hierarchicalProjectList root.
+        item notNil ifTrue:[
+            (eachSelectedProject asCollectionOfSubstringsSeparatedByAny:':/') do:[:part |
+                item expand.
+                child := item detect:[:child | child label = part] ifNone:nil.
+                child notNil ifTrue:[
+                    item := child.
+                ].
+            ].
+            itemsToSelect add:child.
+        ].
+    ].
+    oldSelection := hierarchicalProjectSelection value.
+    newSelection := itemsToSelect collect:[:eachItem | hierarchicalProjectList identityIndexOf:eachItem].
+    oldSelection ~= newSelection ifTrue:[
+        hierarchicalProjectSelection value:newSelection.
+    ].
+
+    "Modified: / 17-08-2006 / 09:56:32 / cg"
+! !
+
+!HierarchicalProjectList methodsFor:'change & update'!
+
+delayedUpdate:something with:aParameter from:changedObject
+    |cls sel oldMethod newMethod newPackage|
+
+    self inSlaveModeOrInvisible ifTrue:[
+	super delayedUpdate:something with:aParameter from:changedObject.
+	^ self.
+    ].
+
+"/    (self slaveMode value == true) ifTrue:[
+"/        super delayedUpdate:something with:aParameter from:changedObject.
+"/        ^ self
+"/    ].
+
+    changedObject == updateTrigger ifTrue:[
+	hierarchicalProjectList := nil.
+	self hierarchicalProjectList.
+	self updateTreeSelection.
+	^ self        
+    ].
+
+    changedObject == slaveMode ifTrue:[
+	listValid ~~ true ifTrue:[
+	    self enqueueDelayedUpdateList
+	].
+	"/ self invalidateList.
+	self updateTreeSelection.
+	^  self
+    ].
+
+    changedObject == hierarchicalProjectSelection ifTrue:[
+	self updateSelectionFromTree.
+	^ self        
+    ].
+"/    changedObject == self selectedProjects ifTrue:[
+"/        "/ update the trees selection as appropriate
+"/        self updateTreeSelection.
+"/    ].
+    changedObject == projectList ifTrue:[
+	"/ update the tree
+	self hierarchicalProjectList root:(self generateHierarchicalProjectTree).
+	^ self.
+    ].
+        
+    super delayedUpdate:something with:aParameter from:changedObject
+
+    "Created: / 17.2.2000 / 23:41:02 / cg"
+    "Modified: / 26.2.2000 / 01:21:49 / cg"
+!
+
+enqueueDelayedAddPackage:package
+    (NewSystemBrowser synchronousUpdate == true
+    or:[ immediateUpdate value == true ])
+    ifTrue:[
+        self addPackage:package.
+        ^ self
+    ].
+    ^ self
+        enqueueMessage:#addPackage:
+        for:self
+        arguments:(Array with:package)
+!
+
+update:something with:aParameter from:changedObject
+    something == #methodTrap ifTrue:[
+	"/ dont care for that.
+	^ self.
+    ].
+    changedObject == organizerMode ifTrue:[
+	"/ dont care for that.
+	^ self.
+    ].
+    super update:something with:aParameter from:changedObject
+!
+
+updateSelectionFromTree
+    |treeSelection|
+
+    treeSelection := hierarchicalProjectSelection value 
+		    collect:[:eachIndex |  |item|
+				    item := hierarchicalProjectList at:eachIndex ifAbsent:nil.
+				    item package
+			    ].
+
+    treeSelection asSet ~= (self selectedProjects value ? #()) asSet ifTrue:[
+	self selectedProjects value:treeSelection.
+    ]
+! !
+
+!HierarchicalProjectList methodsFor:'private'!
+
+addPackage:package
+    |i p pp l parentPackage parentItem idx|
+
+    i:= packageToItemDictionary at:package asSymbol ifAbsent:nil.
+    i isNil ifTrue:[
+	i := ProjectItem new.
+	i package:package.
+	packageToItemDictionary at:package asSymbol put:i.
+
+	package size > 0 ifTrue:[
+	    "/ find the parent ...
+	    p := package asCollectionOfSubstringsSeparatedByAny:':/.'.
+	    pp := p copyWithoutLast:1.
+	    l := (pp asStringWith:$/) size.
+	    parentPackage := package copyTo:l.
+
+	    parentItem := self addPackage:parentPackage asSymbol .
+
+	    parentPackage size == 0 ifTrue:[
+		idx := 1.
+	    ] ifFalse:[
+		idx := parentPackage size + 2
+	    ].
+	    i label:(package copyFrom:idx).
+
+	    parentItem add:i sortBlock:[:i1 :i2 | i1 label asLowercase < i2 label asLowercase].
+
+	    "/ TODO: special items for classes, resources etc.
+        
+	]
+    ].
+    ^ i
+!
+
+release
+    super release.
+
+    hierarchicalProjectSelection removeDependent:self.
+! !
+
+!HierarchicalProjectList methodsFor:'user actions'!
+
+doubleClicked:anIndex
+    |item|
+
+    item := hierarchicalProjectList at:anIndex ifAbsent:nil.
+    item isNil ifTrue:[
+	^ self
+    ].        
+
+    (item canExpand not or:[item isExpanded]) ifTrue:[
+	doubleClickChannel notNil ifTrue:[
+	    doubleClickChannel value:anIndex.
+	].
+	^ self
+    ].
+
+    item expand.
+!
+
+indicatorPressed:anIndex
+    |item sensor|
+
+    item := hierarchicalProjectList at:anIndex ifAbsent:nil.
+
+    item isNil ifTrue:[
+	^ self
+    ].
+
+    sensor := self window sensor.
+    (sensor ctrlDown or:[sensor shiftDown]) ifTrue:[
+	item recursiveToggleExpand
+    ] ifFalse:[
+	item toggleExpand
+    ].
+! !
+
+!HierarchicalProjectList::ProjectItem methodsFor:'accessing'!
+
+children
+    children isNil ifTrue:[
+        children := #()
+    ].
+    ^ children
+!
+
+icon
+    ^ SystemBrowser packageIcon
+!
+
+label:aString
+    label ~= aString ifTrue:[
+        label := aString.
+        self changed:#label
+    ].
+!
+
+package
+    ^ packageID
+!
+
+package:prefixOrPackageID
+    packageID := prefixOrPackageID
+! !
+
+!HierarchicalProjectList class methodsFor:'documentation'!
+
+version
+    ^ '$Id: Tools__HierarchicalProjectList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_HierarchicalProjectList.st,v 1.10 2011/07/20 12:54:00 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__HierarchicalProjectList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+! !
--- a/Tools__ImplementingClassList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ImplementingClassList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,27 +1,13 @@
 "
- Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague
- Copyright (c) 2009-2010 eXept Software AG
+ COPYRIGHT (c) 2004 by eXept Software AG
+              All Rights Reserved
 
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
+ 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' }"
 
@@ -38,29 +24,15 @@
 
 copyright
 "
- Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague
- Copyright (c) 2009-2010 eXept Software AG
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
+ COPYRIGHT (c) 2004 by eXept Software AG
+              All Rights Reserved
 
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
+ 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.
 "
 !
 
@@ -144,10 +116,10 @@
 
 !ImplementingClassList class methodsFor:'documentation'!
 
-version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ImplementingClassList.st,v 1.2 2011-07-03 13:37:11 cg Exp $'
+version
+    ^ '$Id: Tools__ImplementingClassList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
 !
 
 version_SVN
-    ^ '§Id: Tools__ImplementingClassList.st 7796 2011-06-23 16:01:32Z vranyj1 §'
+    ^ '$Id: Tools__ImplementingClassList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
 ! !
--- a/Tools__ImplementingMethodList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ImplementingMethodList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,27 +1,13 @@
 "
- Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague
- Copyright (c) 2009-2010 eXept Software AG
+ COPYRIGHT (c) 2004 by eXept Software AG
+              All Rights Reserved
 
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
+ 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' }"
 
@@ -38,29 +24,15 @@
 
 copyright
 "
- Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague
- Copyright (c) 2009-2010 eXept Software AG
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
+ COPYRIGHT (c) 2004 by eXept Software AG
+              All Rights Reserved
 
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
+ 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.
 "
 !
 
@@ -314,10 +286,10 @@
 
 !ImplementingMethodList class methodsFor:'documentation'!
 
-version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ImplementingMethodList.st,v 1.2 2011-07-03 13:37:06 cg Exp $'
+version
+    ^ '$Id: Tools__ImplementingMethodList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
 !
 
 version_SVN
-    ^ '§Id: Tools__ImplementingMethodList.st 7796 2011-06-23 16:01:32Z vranyj1 §'
+    ^ '$Id: Tools__ImplementingMethodList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
 ! !
--- a/Tools__InheritanceClassList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__InheritanceClassList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,33 +1,19 @@
 "
- Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague
- Copyright (c) 2009-2010 eXept Software AG
+ COPYRIGHT (c) 2004 by eXept Software AG
+              All Rights Reserved
 
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
-
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
+ 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 }"
 
-HierarchicalClassList subclass:#InheritanceClassList
+Tools::HierarchicalClassList subclass:#InheritanceClassList
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -38,29 +24,15 @@
 
 copyright
 "
- Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague
- Copyright (c) 2009-2010 eXept Software AG
-
- Permission is hereby granted, free of charge, to any person
- obtaining a copy of this software and associated documentation
- files (the 'Software'), to deal in the Software without
- restriction, including without limitation the rights to use,
- copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following
- conditions:
+ COPYRIGHT (c) 2004 by eXept Software AG
+              All Rights Reserved
 
- The above copyright notice and this permission notice shall be
- included in all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
- OTHER DEALINGS IN THE SOFTWARE.
+ 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.
 "
 !
 
@@ -89,35 +61,38 @@
 delayedUpdate:something with:aParameter from:changedObject
     |top oldSelection newSelection showMeta|
 
-    self inSlaveModeOrInvisible ifTrue:[^ self].
-"/    (self slaveMode value == true) ifTrue:[^ self].
+"/    self inSlaveModeOrInvisible ifTrue:[^ self].
+"/    self inSlaveMode ifTrue:[^ self].
 
     changedObject == slaveMode ifTrue:[
-	listValid ~~ true ifTrue:[
-	    self enqueueDelayedUpdateList
-	].
-	"/ self invalidateList.
-	^  self
+        self inSlaveMode ifTrue:[
+            self invalidateList.
+        ] ifFalse:[
+            listValid ifFalse:[
+                self updateList
+            ].
+        ].
+        ^  self
     ].
 
     changedObject == meta ifTrue:[
-	oldSelection := self selectedClasses value ? #().
-	showMeta := meta value.
+        oldSelection := self selectedClasses value ? #().
+        showMeta := meta value.
 
-	newSelection := oldSelection collect:[:cls | showMeta ifTrue:[cls theMetaclass] ifFalse:[cls theNonMetaclass]].
-	newSelection := newSelection asOrderedCollection.
+        newSelection := oldSelection collect:[:cls | showMeta ifTrue:[cls theMetaclass] ifFalse:[cls theNonMetaclass]].
+        newSelection := newSelection asOrderedCollection.
 
-	top := self topClassHolder value.
-	top notNil ifTrue:[
-	    top := showMeta ifTrue:[top theMetaclass] ifFalse:[top theNonMetaclass].
-	    self topClassHolder value:top.
-	].
-	self invalidateList.
+        top := self topClassHolder value.
+        top notNil ifTrue:[
+            top := showMeta ifTrue:[top theMetaclass] ifFalse:[top theNonMetaclass].
+            self topClassHolder value:top.
+        ].
+        self invalidateList.
 
-(newSelection includes:nil) ifTrue:[self halt:'should not happen'].
+        (newSelection includes:nil) ifTrue:[self halt:'should not happen'].
 
-	self selectedClasses value:newSelection.
-	^ self.
+        self selectedClasses value:newSelection.
+        ^ self.
     ].
     super delayedUpdate:something with:aParameter from:changedObject
 
@@ -214,10 +189,10 @@
 
 !InheritanceClassList class methodsFor:'documentation'!
 
-version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__InheritanceClassList.st,v 1.3 2011-07-03 13:34:57 cg Exp $'
+version
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_InheritanceClassList.st,v 1.5 2012/11/07 14:35:53 cg Exp $'
 !
 
 version_SVN
-    ^ '§Id: Tools__InheritanceClassList.st 7796 2011-06-23 16:01:32Z vranyj1 §'
+    ^ '$Id: Tools__InheritanceClassList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
 ! !
--- a/Tools__InlineMessageDialog.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__InlineMessageDialog.st	Wed Jan 30 11:15:09 2013 +0000
@@ -106,6 +106,7 @@
 "
 ! !
 
+
 !InlineMessageDialog class methodsFor:'accessing-colors'!
 
 defaultInformationBackground
@@ -122,6 +123,7 @@
     "Created: / 10-04-2012 / 19:30:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !InlineMessageDialog class methodsFor:'interface specs'!
 
 messageInfoSpec
@@ -315,12 +317,14 @@
       )
 ! !
 
+
 !InlineMessageDialog class methodsFor:'others'!
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/Tools__InlineMessageDialog.st,v 1.7 2012-05-17 15:31:22 vrany Exp $'
 ! !
 
+
 !InlineMessageDialog methodsFor:'accessing'!
 
 backgroundColor: aColor
@@ -358,6 +362,7 @@
     "Created: / 28-10-2010 / 18:24:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !InlineMessageDialog methodsFor:'accessing-presentation'!
 
 changeLayoutUponShowHide: aBoolean
@@ -372,6 +377,7 @@
     "Modified (comment): / 17-05-2012 / 13:56:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !InlineMessageDialog methodsFor:'actions'!
 
 doAbort
@@ -397,20 +403,27 @@
     "Modified: / 11-04-2012 / 16:24:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+doAbortIfWorking
+    worker notNil ifTrue:[ self doAbort ].
+
+    "Created: / 04-10-2012 / 19:20:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 doOK
     <resource: #uiCallback>
 
     (worker notNil and:[worker isDead not]) ifTrue:[
-        worker := nil.
+        "/ raise its prio to make it terminate quickly
+        worker priority:(Processor userSchedulingPriority + 1).
         worker terminate.
-        "/ raise its prio to make it terminate quickly
-        worker priority:(Processor userSchedulingPriority + 1)
+        worker := nil.
     ].
     self hide.
 
-    "Modified: / 11-04-2012 / 13:18:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 27-07-2012 / 15:42:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !InlineMessageDialog methodsFor:'adding & removing components'!
 
 addButton: aButton
@@ -512,6 +525,7 @@
     "Created: / 11-04-2012 / 00:51:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !InlineMessageDialog methodsFor:'aspects'!
 
 backgroundColorHolder
@@ -623,6 +637,7 @@
     "Modified: / 28-10-2010 / 18:29:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !InlineMessageDialog methodsFor:'change & update'!
 
 update:aspect with:parameter from:changedObject
@@ -637,6 +652,7 @@
     "Modified: / 10-04-2012 / 19:36:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !InlineMessageDialog methodsFor:'hooks'!
 
 commonPostBuild
@@ -665,6 +681,7 @@
     "Created: / 10-02-2012 / 10:42:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !InlineMessageDialog methodsFor:'private'!
 
 getMyView
@@ -697,6 +714,7 @@
 hide
 
     | myView otherView |
+    builder isNil ifTrue:[ ^ self ].
     myView := self  getMyView.
     otherView := self getOtherView.
 
@@ -712,12 +730,13 @@
         panelHiddenHolder value: true
     ].
     changeLayoutUponShowHide ~~ false ifTrue:[
-        otherView  layout: layout.
+        otherView layout: layout.
     ].
 
     self reset.
 
     "Created: / 29-10-2010 / 11:55:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 17-01-2013 / 23:35:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 show
@@ -761,6 +780,7 @@
     "Created: / 29-10-2010 / 11:48:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !InlineMessageDialog methodsFor:'utilities'!
 
 reset
@@ -855,6 +875,7 @@
     "Created: / 11-04-2012 / 13:38:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !InlineMessageDialog methodsFor:'utilities-obsolete'!
 
 information: message 
@@ -923,6 +944,7 @@
     "Created: / 13-02-2012 / 16:59:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !InlineMessageDialog class methodsFor:'documentation'!
 
 version
@@ -932,3 +954,4 @@
 version_SVN
     ^ '§Id: Tools__InlineMessageDialog.st 7976 2012-04-11 16:14:22Z vranyj1 §'
 ! !
+
--- a/Tools__Inspector2.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__Inspector2.st	Wed Jan 30 11:15:09 2013 +0000
@@ -56,6 +56,7 @@
 "
 ! !
 
+
 !Inspector2 class methodsFor:'initialization'!
 
 initialize
@@ -77,6 +78,7 @@
     "Modified: / 17-01-2012 / 12:57:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !Inspector2 class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -141,14 +143,17 @@
 )
 ! !
 
+
 !Inspector2 class methodsFor:'image specs'!
 
 settingsIcon
 
-    ^self settingsIcon5
+    <resource: #image>
 
-    "Modified: / 17-01-2012 / 12:45:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    ^self settingsIcon6
+
     "Modified: / 19-01-2012 / 14:00:35 / cg"
+    "Modified: / 28-02-2012 / 21:59:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 settingsIcon1
@@ -314,11 +319,44 @@
 !
 
 settingsIcon5
+
+    <resource: #image>
+
     ^ GenericToolbarIconLibrary palette16x16Icon
 
     "Created: / 19-01-2012 / 14:00:24 / cg"
+    "Modified: / 18-02-2012 / 16:28:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+settingsIcon6
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self settingsIcon6 inspect
+     ImageEditor openOnClass:self andSelector:#settingsIcon6
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'Tools::Inspector2 class settingsIcon6'
+        ifAbsentPut:[(Depth8Image new) width: 25; height: 25; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:N#(:IWY&Y&Y&Y1(!!8*J"4*J#""JCX6M3X6PJJ"YG]7]7]7]:H$O#8>O#8>(#MBP$IBP$J"(FA5]WU5]WV G3(:N#(:
+N*@+PTEAPTEA(I=X[7A/\F=/''1X1LSD1LSF_H34=OC0<OI>^T6-+Z6-+Z98QI2\''I2\''''!!,5MST5MSV^''T=''Y6]''Y6^]B2D!!HRD!!HY4TLC@0LB<0''Y1VX&I"
+X&I"''@<XFA XFA"\FRX&I"X&I)2[&9.[&9.[&9.[&9.[&9.[&9.[&9.[&9.[&V9;^7-;^8NY_(2L#H2L&I$]KB0.KB09&Y!!8#8>O#8>O&H&!!(ZF!!(ZFXIS<?
+O3<?O9"V](.K"8.K"9ZF''Y6]''Y6]%"@;N3,;N3.V%WRD!!XRD!!HRU_9&Y&Y&Y&YTWL#P2L#H2%YQ- HB@ HB@%G6U%YVU%YVTD"$)JR$)JYRSZW1<_G1<_IM9
+$YFQ$YFQ$00"H"H"H"JS$WI:^''):^''*Q X:N#(:N#)DPF!!(ZF!!(Z$YBP$IBP$IBP$IBP$IBP$IBP$IBP$IBP$IBNTU=_W5=_Z(9FTEAPTEA]# \JB 4JB!!VN
+#U-3\7M3\7NMSFU%YVU%YX4IGA0\GA0\#X)U[F1,[F1,"$%!!XVE!!XVFJA!!LSD1LSD8*IT&!!(ZF!!(ZH%GVU1YWE%Y"PPNC 8NC :I"D-#X6M#X6NHQEQTUEQT
+UH BB@ HB@ H"H]HW%9^W%9^!!4MNS$9NS$:G@@TEAPTEAX^BSU)ZV%)ZV(IER$)JR$)J  DC@0LC@0NB (JB (JB (JB (JB (JB (JB (JB (JB  @a') ; colorMapFromArray:#[88 88 211 89 89 220 91 91 215 94 94 231 96 96 219 97 97 234 99 99 224 100 100 217 101 101 239 103 103 227 105 105 229 211 88 88 170 88 211 105 106 229 106 106 243 220 89 89 176 89 220 215 91 91 174 91 215 110 110 248 211 88 170 111 111 242 219 96 96 178 96 219 231 94 94 220 89 176 185 94 231 215 91 174 114 114 252 177 100 217 217 100 100 224 99 99 182 99 224 234 97 97 189 97 234 219 96 178 227 103 103 186 103 227 231 94 185 239 101 101 217 100 177 193 101 239 229 105 105 224 99 182 188 105 229 229 106 105 188 106 229 234 97 188 234 97 189 243 106 106 197 106 243 227 103 186 198 106 243 239 101 193 229 105 188 229 106 188 242 111 111 198 111 242 248 110 110 202 110 248 243 106 197 243 106 198 252 114 114 206 114 252 242 111 198 248 110 202 252 114 206 88 170 211 91 174 215 89 176 220 100 177 217 96 178 219 88 197 88 99 182 224 94 185 231 91 201 91 103 186 227 89 205 89 97 189 234 211 170 88 105 188 229 100 204 100 96 206 96 215 174 91 101 193 239 99 209 99 220 176 89 217 177 100 219 178 96 106 197 243 94 216 94 103 213 103 106 198 243 111 198 242 97 219 97 105 216 105 224 182 99 110 202 248 231 185 94 101 223 101 227 186 103 114 206 252 229 188 105 234 189 97 106 228 106 170 211 88 111 228 111 239 193 101 110 232 110 174 215 91 177 217 100 243 197 106 243 198 106 242 198 111 176 220 89 114 236 114 178 219 96 248 202 110 182 224 99 252 206 114 186 227 103 211 211 211 185 231 94 188 229 105 189 234 97 215 215 215 217 217 217 219 219 219 193 239 101 220 220 220 223 223 223 198 242 111 197 243 106 198 243 106 224 224 224 225 225 225 226 226 226 227 227 227 228 228 228 202 248 110 229 229 229 230 230 230 231 231 231 206 252 114 233 233 233 234 234 234 235 235 235 236 236 236 237 237 237 239 239 239 240 240 240 241 241 241 242 242 242 243 243 243 244 244 244 245 245 245 246 246 246 248 248 248 249 249 249 250 250 250 251 251 251 252 252 252 253 253 253 254 254 254]; mask:((Depth1Image new) width: 25; height: 25; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'???? O???8C???>@???? O???8C???>@???? O???8C???>@???? O???8C???>@???? O???8C???>@???? O???8C???>@???? O???8C???>@???? O??
+?8C???>@???? @@a') ; yourself); yourself]
 ! !
 
+
 !Inspector2 class methodsFor:'interface specs'!
 
 windowSpec
@@ -374,6 +412,7 @@
       )
 ! !
 
+
 !Inspector2 class methodsFor:'menu specs'!
 
 mainMenu
@@ -606,6 +645,7 @@
       )
 ! !
 
+
 !Inspector2 class methodsFor:'startup'!
 
 openOn: anObject
@@ -617,6 +657,7 @@
     "Modified (format): / 11-07-2011 / 22:28:03 / cg"
 ! !
 
+
 !Inspector2 class methodsFor:'testing'!
 
 testSimpleShow
@@ -635,6 +676,7 @@
     "Modified: / 11-01-2008 / 20:36:37 / janfrog"
 ! !
 
+
 !Inspector2 methodsFor:'accessing'!
 
 backButtonEnabled:value 
@@ -685,6 +727,7 @@
     "Modified: / 19-08-2011 / 09:16:38 / cg"
 ! !
 
+
 !Inspector2 methodsFor:'aspects'!
 
 backButtonEnabledHolder
@@ -845,6 +888,7 @@
     "Modified: / 27-02-2008 / 12:05:56 / janfrog"
 ! !
 
+
 !Inspector2 methodsFor:'menu'!
 
 backButtonMenuChannel
@@ -861,6 +905,7 @@
     "Modified: / 22-02-2008 / 16:58:11 / janfrog"
 ! !
 
+
 !Inspector2 methodsFor:'menu actions'!
 
 backButtonAction
@@ -944,6 +989,7 @@
     "Created: / 21-08-2011 / 08:23:00 / cg"
 ! !
 
+
 !Inspector2 methodsFor:'opening'!
 
 closeDownViews
@@ -1005,6 +1051,7 @@
     "Created: / 15-07-2011 / 16:25:42 / cg"
 ! !
 
+
 !Inspector2::NavigationState class methodsFor:'creating classes'!
 
 for:anObject 
@@ -1017,6 +1064,7 @@
     "Modified (format): / 19-08-2011 / 09:24:40 / cg"
 ! !
 
+
 !Inspector2::NavigationState class methodsFor:'documentation'!
 
 version
@@ -1027,6 +1075,7 @@
     ^'§Id: Tools__Inspector2.st 115 2009-04-16 12:47:07Z vranyj1 §'
 ! !
 
+
 !Inspector2::NavigationState methodsFor:'accessing'!
 
 index
@@ -1103,6 +1152,7 @@
     "Modified: / 19-08-2011 / 09:16:25 / cg"
 ! !
 
+
 !Inspector2::NavigationState methodsFor:'comparing'!
 
 = anotherState
@@ -1120,6 +1170,7 @@
     "Created: / 21-02-2008 / 19:38:08 / janfrog"
 ! !
 
+
 !Inspector2::NavigationState methodsFor:'displaying'!
 
 displayString
@@ -1138,6 +1189,7 @@
     "Modified: / 13-06-2012 / 14:40:34 / cg"
 ! !
 
+
 !Inspector2::NavigationState methodsFor:'initialization'!
 
 initializeClassBrowserTab
@@ -1182,7 +1234,8 @@
 initializeCommonTabs
 
     "Unfinished code"
-    self initializeClassBrowserTab
+"/    JV@2012-04-20: Don't add class tab, only takes time and nobody uses it anyway
+"/    self initializeClassBrowserTab
 
 "/    tabs add:
 "/        (Tools::Inspector2Tab new
@@ -1193,7 +1246,7 @@
 
     "Created: / 16-01-2008 / 16:56:48 / janfrog"
     "Modified: / 17-02-2008 / 10:29:54 / janfrog"
-    "Modified: / 21-08-2011 / 10:03:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 20-04-2012 / 20:23:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 initializeExtraTabs
@@ -1236,6 +1289,7 @@
     "Created: / 21-08-2011 / 08:23:11 / cg"
 ! !
 
+
 !Inspector2 class methodsFor:'documentation'!
 
 version
@@ -1254,4 +1308,5 @@
     ^ '§Id: Tools__Inspector2.st 7486 2009-10-26 22:06:24Z vranyj1 §'
 ! !
 
+
 Inspector2 initialize!
--- a/Tools__Inspector2Tab.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__Inspector2Tab.st	Wed Jan 30 11:15:09 2013 +0000
@@ -36,6 +36,7 @@
 "
 ! !
 
+
 !Inspector2Tab methodsFor:'accessing'!
 
 application
@@ -112,6 +113,7 @@
     viewHolder := something.
 ! !
 
+
 !Inspector2Tab class methodsFor:'documentation'!
 
 version_CVS
@@ -125,3 +127,4 @@
 version_SVN
     ^ '§Id: Tools__Inspector2Tab.st 7486 2009-10-26 22:06:24Z vranyj1 §'
 ! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__LintAnnotation.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,134 @@
+"
+ 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:#LintAnnotation
+	instanceVariableNames:'startPosition endPosition line rule'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Lint'
+!
+
+!LintAnnotation 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.
+"
+! !
+
+!LintAnnotation class methodsFor:'instance creation'!
+
+from: start to: end rule: rule
+
+    ^self new
+        startPosition: start;
+        endPosition: end;
+        rule: rule;
+        yourself.
+
+    "Created: / 30-01-2012 / 15:23:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!LintAnnotation methodsFor:'accessing'!
+
+endPosition
+    ^ endPosition
+!
+
+endPosition:anInteger
+    endPosition := anInteger.
+!
+
+line
+    ^ line
+!
+
+line:anInteger
+    line := anInteger.
+!
+
+rule
+    ^ rule
+!
+
+rule:anRBLintRule
+    self assert: anRBLintRule isComposite not.
+    rule := anRBLintRule.
+
+    "Modified: / 30-01-2012 / 15:22:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+startPosition
+    ^ startPosition
+!
+
+startPosition:anInteger
+    startPosition := anInteger.
+! !
+
+!LintAnnotation methodsFor:'comparing'!
+
+< anObject
+
+    anObject isNumber ifTrue:[^startPosition < anObject].
+    anObject class == self class ifFalse:[^false].
+
+    ^endPosition < anObject startPosition
+
+    "Created: / 14-02-2010 / 13:39:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+<= aMagnitude
+    "return true, if the argument is greater or equal than the receiver"
+
+    ^ (aMagnitude < self) not
+!
+
+= anObject
+
+    anObject class == self class ifFalse:[^false].
+
+    ^startPosition == (anObject startPosition) and:
+        [endPosition == (anObject endPosition) and:
+            [rule = anObject rule]]
+
+    "Created: / 14-02-2010 / 13:33:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+> aMagnitude
+    "return true, if the argument is less than the receiver"
+
+    ^ aMagnitude < self
+!
+
+>= aMagnitude
+    "return true, if the argument is less or equal than the receiver"
+
+    ^ (self < aMagnitude) not
+! !
+
+!LintAnnotation class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: Tools__LintAnnotation.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
--- a/Tools__LintHighlighter.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__LintHighlighter.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,18 +1,49 @@
+"
+ 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:#LintHighlighter
-	instanceVariableNames:'rules formattingMethod emphasisError emphasisInformation
-		emphasisWarning'
+	instanceVariableNames:'rules annotations formattingMethod emphasisError
+		emphasisInformation emphasisWarning'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-Lint'
 !
 
+!LintHighlighter 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.
+"
+! !
+
 
 !LintHighlighter methodsFor:'accessing'!
 
+annotations
+    ^ annotations
+!
+
 rules
     ^ rules
 !
@@ -23,6 +54,7 @@
     "Modified (format): / 07-03-2012 / 17:24:02 / cg"
 ! !
 
+
 !LintHighlighter methodsFor:'accessing-emphasis'!
 
 emphasisForError
@@ -31,7 +63,7 @@
     emphasisError isNil ifTrue:[
         warnColor := Color red.
         emphasisError := Array 
-            with: #backgroundColor -> warnColor lightened lightened 
+            "/with: #backgroundColor -> warnColor lightened lightened 
             with: #underwave 
             with: #underlineColor -> warnColor                    
     ].
@@ -39,6 +71,7 @@
 
     "Created: / 05-08-2011 / 09:31:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 08-03-2012 / 03:00:51 / cg"
+    "Modified: / 20-04-2012 / 18:29:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 emphasisForInformation
@@ -47,7 +80,7 @@
     emphasisInformation isNil ifTrue:[
         warnColor := Color blue lighter.
         emphasisInformation := Array 
-            with: #backgroundColor -> warnColor lightened lightened
+            "/with: #backgroundColor -> warnColor lightened lightened
             with: #underwave 
             with: #underlineColor -> warnColor                    
     ].
@@ -55,6 +88,7 @@
 
     "Created: / 05-08-2011 / 09:31:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 08-03-2012 / 03:01:22 / cg"
+    "Modified: / 20-04-2012 / 18:29:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 emphasisForSeverity: severity
@@ -73,7 +107,7 @@
     emphasisWarning isNil ifTrue:[
         warnColor := (Color redByte: 224 greenByte: 200 blueByte: 45).
         emphasisWarning := Array 
-            with: #backgroundColor -> warnColor lightened lightened
+            "/with: #backgroundColor -> warnColor lightened lightened
             with: #underwave 
             with: #underlineColor -> warnColor                  
     ].
@@ -81,8 +115,10 @@
 
     "Created: / 05-08-2011 / 09:31:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 08-03-2012 / 03:00:19 / cg"
+    "Modified: / 20-04-2012 / 18:29:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintHighlighter methodsFor:'formatting'!
 
 formatClassDefinition:source in:class
@@ -133,42 +169,52 @@
     "Created: / 04-08-2011 / 23:42:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintHighlighter methodsFor:'formatting-private'!
 
 format: text
 
-    rules ? #() do:[:rule|
-        self format: text rule: rule
-    ].
+    | tree |
+    tree := RBParser parseMethod: text string onError:[:error :pos| ^ text ].
+    self format: text tree: tree.
     ^text
 
     "Created: / 04-08-2011 / 23:51:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-format: text rule: rule
+
 
-    | string emphasis |
+format: text tree: tree
 
-    string := text asString string.
-    emphasis := self emphasisForSeverity: rule severity.
+    annotations := SortedCollection new.
+    rules ? #() do:[:rule|
+        self format: text tree: tree rule: rule
+    ].
+    ^text
 
+    "Created: / 02-02-2012 / 23:32:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+format: text tree: tree rule: rule
+
+    | string |
+
+    string := text string.
     rule result isParseTreeEnvironment ifTrue:[
         formattingMethod ifTrue:[
-            | interval |
-            [
-                interval := rule result selectionIntervalFor: string.
-            ] on: Error do:[:ex |
-                Transcript showCR:'error in LintHighlighter: ', ex description.
-                self breakPoint:#jv.
-                interval := nil.
+            rule result selectionIntervalsForSource: string tree: tree do: [:interval|
+                interval notEmptyOrNil ifTrue:[
+                    (interval first == 1 and:[interval last == text size]) ifTrue:[
+                        (OperatingSystem getLoginName = 'jv') ifTrue:[
+                            Transcript showCR:'>> no meaningful selection interval for ' , rule printString.
+                        ].
+                    ] ifFalse:[
+                        self mark: text from: interval first to: interval last for: rule.
+                    ]
+                ]
             ].
-            interval notNil ifTrue:[
-                text asText 
-                    emphasisFrom: interval first to: interval last 
-                    add: emphasis.            
-            ]
         ].
-    ] ifFalse:[
+    ] ifFalse: [
         | searches |
 
         searches := rule result searchStrings asSet.
@@ -180,9 +226,7 @@
                 i := string findString: search startingAt: i.
                 i ~~ 0
             ] whileTrue:[
-                text asText 
-                    emphasisFrom: i to: (i + search size - 1) 
-                    add: emphasis.
+                self mark: text from: i to: (i + search size - 1) for: rule.
                 i := i + search size + 1.
             ]
             
@@ -190,10 +234,33 @@
         ]
     ]
 
-    "Created: / 04-08-2011 / 23:55:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 07-03-2012 / 18:18:25 / cg"
+    "Created: / 03-02-2012 / 10:39:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
+!LintHighlighter methodsFor:'initialization'!
+
+reset
+    annotations := #().
+
+    "Created: / 18-02-2012 / 22:54:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
+!LintHighlighter methodsFor:'markup'!
+
+mark: text from: start to: end for: rule
+    | emphasis |
+
+    emphasis := self emphasisForSeverity: rule severity.
+    text emphasisFrom: start to: end add: emphasis.     
+    annotations add:
+        (LintAnnotation from: start to: end rule: rule)
+
+    "Created: / 30-01-2012 / 15:30:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
 !LintHighlighter class methodsFor:'documentation'!
 
 version
@@ -202,4 +269,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/Tools__LintHighlighter.st,v 1.5 2012-03-08 03:16:18 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: Tools__LintHighlighter.st 8047 2012-09-07 11:37:19Z vranyj1 $'
 ! !
+
--- a/Tools__LintRuleDetail.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__LintRuleDetail.st	Wed Jan 30 11:15:09 2013 +0000
@@ -64,6 +64,7 @@
 "
 ! !
 
+
 !LintRuleDetail class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -89,6 +90,7 @@
     "Created: / 07-09-2011 / 04:08:11 / cg"
 ! !
 
+
 !LintRuleDetail class methodsFor:'interface specs'!
 
 windowSpec
@@ -178,6 +180,7 @@
       )
 ! !
 
+
 !LintRuleDetail class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -199,6 +202,7 @@
     "Modified: / 01-03-2012 / 16:31:04 / cg"
 ! !
 
+
 !LintRuleDetail methodsFor:'actions'!
 
 browseLintRule
@@ -216,6 +220,7 @@
     "Created: / 07-09-2011 / 04:09:38 / cg"
 ! !
 
+
 !LintRuleDetail methodsFor:'aspects'!
 
 rationaleVisibleHolder
@@ -321,6 +326,7 @@
     "Modified: / 01-03-2012 / 15:29:16 / cg"
 ! !
 
+
 !LintRuleDetail methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
@@ -364,6 +370,7 @@
     "Modified: / 04-09-2011 / 20:18:48 / cg"
 ! !
 
+
 !LintRuleDetail methodsFor:'initialization'!
 
 setupHTMLView:aView
@@ -375,6 +382,7 @@
     "Created: / 04-08-2011 / 18:00:36 / cg"
 ! !
 
+
 !LintRuleDetail methodsFor:'private'!
 
 heightWhenNotShowingRationale
@@ -436,6 +444,7 @@
     "Modified: / 01-03-2012 / 10:35:51 / cg"
 ! !
 
+
 !LintRuleDetail class methodsFor:'documentation'!
 
 version
@@ -449,3 +458,4 @@
 version_SVN
     ^ '§Id: Tools__LintRuleDetail.st 7617 2010-08-25 12:56:19Z vranyj1 §'
 ! !
+
--- a/Tools__LintRuleList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__LintRuleList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -27,7 +27,7 @@
 
 "{ NameSpace: Tools }"
 
-BrowserList subclass:#LintRuleList
+Tools::BrowserList subclass:#LintRuleList
 	instanceVariableNames:'listHolder filterHolder modeHolder listSelection listView
 		initialSelectionHolder'
 	classVariableNames:''
@@ -72,6 +72,7 @@
 "
 ! !
 
+
 !LintRuleList class methodsFor:'interface specs'!
 
 windowSpec
@@ -131,6 +132,7 @@
       )
 ! !
 
+
 !LintRuleList class methodsFor:'menu specs'!
 
 menu
@@ -166,6 +168,7 @@
       )
 ! !
 
+
 !LintRuleList class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -191,6 +194,7 @@
     "Modified: / 01-03-2012 / 10:48:43 / cg"
 ! !
 
+
 !LintRuleList methodsFor:'accessing'!
 
 mode
@@ -231,6 +235,7 @@
     "Modified: / 15-04-2010 / 20:56:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintRuleList methodsFor:'aspects'!
 
 filterHolder
@@ -325,6 +330,7 @@
     "Created: / 02-02-2010 / 20:43:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintRuleList methodsFor:'change & update'!
 
 delayedUpdate:something with:aParameter from:changedObject
@@ -368,6 +374,7 @@
     "Created: / 05-08-2011 / 00:10:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintRuleList methodsFor:'event processing'!
 
 buttonPress:button x:x y:y view:aView
@@ -401,6 +408,7 @@
     "Modified: / 15-04-2010 / 20:19:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintRuleList methodsFor:'generators'!
 
 makeGenerator
@@ -420,6 +428,7 @@
     "Modified: / 25-08-2010 / 13:39:51 / Jan Vrany <enter your email here>"
 ! !
 
+
 !LintRuleList methodsFor:'hooks'!
 
 commonPostOpen
@@ -437,6 +446,7 @@
     "Created: / 08-12-2009 / 14:10:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintRuleList methodsFor:'initialization'!
 
 initialize
@@ -448,6 +458,7 @@
     "Modified: / 25-08-2010 / 15:24:45 / Jan Vrany <enter your email here>"
 ! !
 
+
 !LintRuleList methodsFor:'menu actions'!
 
 menuInspect
@@ -460,6 +471,7 @@
     "Modified: / 25-08-2010 / 14:25:24 / Jan Vrany <enter your email here>"
 ! !
 
+
 !LintRuleList methodsFor:'private'!
 
 listEntryFor: anRBLintRule
@@ -531,6 +543,7 @@
     "Modified: / 07-03-2012 / 18:06:50 / cg"
 ! !
 
+
 !LintRuleList methodsFor:'queries'!
 
 supportsSearch
@@ -540,6 +553,7 @@
     "Created: / 04-08-2011 / 23:04:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintRuleList methodsFor:'selection'!
 
 selectionAdd: rule
@@ -571,6 +585,7 @@
     "Modified: / 26-08-2010 / 12:05:06 / Jan Vrany <enter your email here>"
 ! !
 
+
 !LintRuleList::ListEntry class methodsFor:'instance creation'!
 
 change: aChange
@@ -594,6 +609,7 @@
     "Created: / 25-07-2009 / 23:33:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !LintRuleList::ListEntry methodsFor:'accessing'!
 
 application
@@ -725,6 +741,7 @@
     "Modified: / 15-04-2010 / 20:48:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintRuleList::ListEntry methodsFor:'displaying'!
 
 displayLabel:aLabel h:lH on:aGC x:newX y:y h:h 
@@ -752,6 +769,7 @@
     "Created: / 15-04-2010 / 19:13:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintRuleList class methodsFor:'documentation'!
 
 version
@@ -765,3 +783,4 @@
 version_SVN
     ^ '§Id: Tools__LintRuleList.st 7619 2010-08-26 10:15:15Z vranyj1 §'
 ! !
+
--- a/Tools__LintRuleSelectionDialog.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__LintRuleSelectionDialog.st	Wed Jan 30 11:15:09 2013 +0000
@@ -97,6 +97,7 @@
 "
 ! !
 
+
 !LintRuleSelectionDialog class methodsFor:'interface specs'!
 
 windowSpec
@@ -227,6 +228,7 @@
     "Modified: / 01-03-2012 / 10:50:28 / cg"
 ! !
 
+
 !LintRuleSelectionDialog methodsFor:'accessing'!
 
 selection
@@ -250,6 +252,7 @@
     "Created: / 25-08-2010 / 14:10:58 / Jan Vrany <enter your email here>"
 ! !
 
+
 !LintRuleSelectionDialog methodsFor:'actions'!
 
 hideResultView
@@ -280,6 +283,7 @@
     "Modified: / 24-07-2010 / 15:30:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintRuleSelectionDialog methodsFor:'aspects'!
 
 allRulesHolder
@@ -320,6 +324,7 @@
     ^ selectionHolder
 ! !
 
+
 !LintRuleSelectionDialog methodsFor:'callbacks - post build'!
 
 postBuildVariablePanel: aPanel
@@ -329,6 +334,7 @@
     "Created: / 24-07-2010 / 15:05:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintRuleSelectionDialog class methodsFor:'documentation'!
 
 version_CVS
@@ -338,3 +344,4 @@
 version_SVN
     ^ '§Id: Tools__LintRuleSelectionDialog.st 7617 2010-08-25 12:56:19Z vranyj1 §'
 ! !
+
--- a/Tools__LintService.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__LintService.st	Wed Jan 30 11:15:09 2013 +0000
@@ -27,7 +27,7 @@
 
 "{ NameSpace: Tools }"
 
-CodeViewService subclass:#LintService
+Tools::CodeViewService subclass:#LintService
 	instanceVariableNames:'ruleHolderFromApp highlighter'
 	classVariableNames:''
 	poolDictionaries:''
@@ -64,6 +64,7 @@
 "
 ! !
 
+
 !LintService class methodsFor:'accessing'!
 
 label
@@ -75,6 +76,7 @@
     "Created: / 05-08-2011 / 11:01:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintService methodsFor:'accessing'!
 
 syntaxHighlighter
@@ -94,6 +96,7 @@
     "Modified: / 08-03-2012 / 01:23:48 / cg"
 ! !
 
+
 !LintService methodsFor:'aspects'!
 
 ruleHolderFromApp
@@ -132,6 +135,7 @@
     ].
 ! !
 
+
 !LintService methodsFor:'change & update'!
 
 update: aspect with: param from: sender
@@ -147,6 +151,7 @@
     "Modified: / 07-03-2012 / 17:16:59 / cg"
 ! !
 
+
 !LintService methodsFor:'initialization'!
 
 initialize
@@ -159,6 +164,7 @@
     "Created: / 05-08-2011 / 11:53:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintService methodsFor:'private'!
 
 syntaxHighlight: delayed
@@ -172,6 +178,7 @@
     "Created: / 05-08-2011 / 11:49:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !LintService methodsFor:'registering'!
 
 fetchLintRuleHolder
@@ -184,12 +191,13 @@
         (app respondsTo: #selectedLintRules) ifTrue:[
             self ruleHolderFromApp: app selectedLintRules
         ] ifFalse:[
-            self breakPoint:#jv.
+            "/self breakPoint:#jv.
             "/ Transcript showCR:'LintService [info]: app does not provide a lintRuleHolder'
         ]
     ].
 
     "Created: / 08-03-2012 / 01:16:38 / cg"
+    "Modified: / 22-03-2012 / 13:51:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 registerIn: aCodeView
@@ -201,6 +209,7 @@
     "Modified: / 08-03-2012 / 01:16:51 / cg"
 ! !
 
+
 !LintService class methodsFor:'documentation'!
 
 version
@@ -209,4 +218,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/Tools__LintService.st,v 1.6 2012-03-12 18:20:05 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: Tools__LintService.st 7953 2012-03-22 13:55:44Z vranyj1 $'
 ! !
+
--- a/Tools__MethodCategoryCache.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__MethodCategoryCache.st	Wed Jan 30 11:15:09 2013 +0000
@@ -151,9 +151,9 @@
 !MethodCategoryCache class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__MethodCategoryCache.st,v 1.4 2011-07-03 13:33:26 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__MethodCategoryCache.st,v 1.4 2011/07/03 13:33:26 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: Tools__MethodCategoryCache.st 7487 2009-10-28 21:11:04Z vranyj1 §'
-! !
+    ^ '$Id: Tools__MethodCategoryCache.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__MethodCategoryList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,2088 @@
+"
+ COPYRIGHT (c) 2000 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 }"
+
+BrowserList subclass:#MethodCategoryList
+	instanceVariableNames:'variableFilter filterClassVars lastSelectedProtocols classes
+		leafClasses protocolList rawProtocolList selectedProtocolIndices
+		lastGeneratedProtocols packageFilterOnInput
+		methodVisibilityHolder noAllItem noPseudoItems
+		showPseudoProtocols'
+	classVariableNames:'AdditionalEmptyCategoriesPerClassName MethodInfoCache
+		MethodInfoCacheAccessLock'
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+Object subclass:#CachedMethodInfo
+	instanceVariableNames:'flags'
+	classVariableNames:'FlagObsolete FlagSendsSuper FlagIsUncommented
+		FlagIsDocumentationMethod FlagIsLongMethod FlagIsExtension
+		FlagIsRedefine FlagIsRedefined FlagIsOverride
+		FlagIsSubclassResponsibility FlagIsTest FlagIsAnnotated'
+	poolDictionaries:''
+	privateIn:MethodCategoryList
+!
+
+Method variableSubclass:#MissingMethod
+	instanceVariableNames:'selector'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:MethodCategoryList
+!
+
+!MethodCategoryList class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2000 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.
+"
+!
+
+documentation
+"
+    I implement the method category (= protocol) list in the new system browser
+"
+! !
+
+!MethodCategoryList class methodsFor:'initialization'!
+
+flushMethodInfo
+    MethodInfoCache := Dictionary new.
+
+    "
+     self flushMethodInfo
+    "
+!
+
+initialize
+    MethodInfoCache := Dictionary new.
+    MethodInfoCacheAccessLock := RecursionLock new.
+! !
+
+!MethodCategoryList class methodsFor:'cleanup'!
+
+lowSpaceCleanup
+    self flushMethodInfo
+
+    "Created: / 08-08-2011 / 19:15:25 / cg"
+! !
+
+!MethodCategoryList class methodsFor:'interface specs'!
+
+singleProtocolWindowSpec
+    "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:MethodCategoryList andSelector:#singleProtocolWindowSpec
+     MethodCategoryList new openInterface:#singleProtocolWindowSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #singleProtocolWindowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ProtocolList'
+          #name: 'ProtocolList'
+          #min: #(#Point 0 0)
+          #max: #(#Point 1024 721)
+          #bounds: #(#Rectangle 12 22 312 322)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#LabelSpec
+              #label: 'ProtocolName'
+              #name: 'ProtocolLabel'
+              #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+              #translateLabel: true
+              #labelChannel: #protocolLabelHolder
+              #menu: #menuHolder
+            )
+           )
+         
+        )
+      )
+!
+
+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:MethodCategoryList andSelector:#windowSpec
+     MethodCategoryList new openInterface:#windowSpec
+     MethodCategoryList open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ProtocolList'
+          #name: 'ProtocolList'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 16 46 316 346)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#SequenceViewSpec
+              #name: 'List'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #tabable: true
+              #model: #selectedProtocolIndices
+              #menu: #menuHolder
+              #hasHorizontalScrollBar: true
+              #hasVerticalScrollBar: true
+              #miniScrollerHorizontal: true
+              #isMultiSelect: true
+              #valueChangeSelector: #selectionChangedByClick
+              #useIndex: true
+              #sequenceList: #protocolList
+              #doubleClickChannel: #doubleClickChannel
+              #properties: 
+             #(#PropertyListDictionary
+                #dragArgument: nil
+                #dropArgument: nil
+                #canDropSelector: #canDropContext:
+                #dropSelector: #doDropContext:
+              )
+            )
+           )
+         
+        )
+      )
+! !
+
+!MethodCategoryList class methodsFor:'plugIn spec'!
+
+aspectSelectors
+    "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."
+
+    "Return a description of exported aspects;
+     these can be connected to aspects of an embedding application
+     (if this app is embedded in a subCanvas)."
+
+    ^ #(
+        #(#doubleClickChannel #action )
+        #filterClassVars
+        #forceGeneratorTrigger
+        #immediateUpdate
+        #inGeneratorHolder
+        #menuHolder
+        #noAllItem
+        #showPseudoProtocols
+        #outGeneratorHolder
+        #packageFilter
+        #packageFilterOnInput
+        #selectedProtocols
+        #selectionChangeCondition
+        #updateTrigger
+        #variableFilter
+        #methodVisibilityHolder
+        #showCoverageInformation
+      ).
+
+    "Modified: / 27-04-2010 / 16:40:39 / cg"
+! !
+
+!MethodCategoryList methodsFor:'aspects'!
+
+browserNameList
+    ^ self protocolList 
+!
+
+defaultSlaveModeValue
+    ^ false.
+!
+
+filterClassVars
+    filterClassVars isNil ifTrue:[
+        filterClassVars := false asValue.
+        filterClassVars addDependent:self
+    ].
+    ^  filterClassVars
+
+    "Modified: / 31.1.2000 / 00:56:31 / cg"
+    "Created: / 5.2.2000 / 13:42:10 / cg"
+!
+
+filterClassVars:aValueHolder
+    filterClassVars notNil ifTrue:[
+        filterClassVars removeDependent:self
+    ].
+    filterClassVars := aValueHolder.
+    filterClassVars notNil ifTrue:[
+        filterClassVars addDependent:self
+    ].
+
+    "Modified: / 31.1.2000 / 00:56:31 / cg"
+    "Created: / 5.2.2000 / 13:42:10 / cg"
+!
+
+methodVisibilityHolder
+    methodVisibilityHolder isNil ifTrue:[
+        methodVisibilityHolder := false asValue.
+        methodVisibilityHolder addDependent:self
+    ].
+    ^  methodVisibilityHolder
+!
+
+methodVisibilityHolder:aValueHolder
+    methodVisibilityHolder notNil ifTrue:[
+        methodVisibilityHolder removeDependent:self
+    ].
+    methodVisibilityHolder := aValueHolder.
+    methodVisibilityHolder notNil ifTrue:[
+        methodVisibilityHolder addDependent:self
+    ].
+
+    "Modified: / 31.1.2000 / 00:56:31 / cg"
+    "Created: / 5.2.2000 / 13:42:10 / cg"
+!
+
+noAllItem
+    noAllItem isNil ifTrue:[
+        noAllItem := false asValue.
+        noAllItem addDependent:self
+    ].
+    ^  noAllItem
+!
+
+noAllItem:aValueHolder
+    noAllItem notNil ifTrue:[
+        noAllItem removeDependent:self
+    ].
+    noAllItem := aValueHolder.
+    noAllItem notNil ifTrue:[
+        noAllItem addDependent:self
+    ].
+!
+
+packageFilterOnInput
+    packageFilterOnInput isNil ifTrue:[
+        packageFilterOnInput := nil asValue.
+        packageFilterOnInput addDependent:self
+    ].
+    ^  packageFilterOnInput
+!
+
+packageFilterOnInput:aValueHolder
+    |prevFilter|
+
+    prevFilter := packageFilterOnInput value.
+    packageFilterOnInput notNil ifTrue:[
+        packageFilterOnInput removeDependent:self
+    ].
+    packageFilterOnInput := aValueHolder.
+    packageFilterOnInput notNil ifTrue:[
+        packageFilterOnInput addDependent:self
+    ].
+    prevFilter ~= packageFilterOnInput value ifTrue:[
+        self enqueueDelayedUpdateList
+    ].
+!
+
+protocolLabelHolder
+    ^ self pseudoListLabelHolder
+!
+
+protocolList
+    protocolList isNil ifTrue:[
+        protocolList := List new. "/ ValueHolder new
+    ].
+    ^ protocolList
+
+    "Modified: / 31.1.2000 / 00:56:31 / cg"
+    "Created: / 5.2.2000 / 13:42:10 / cg"
+!
+
+rawProtocolList
+    rawProtocolList isNil ifTrue:[
+        rawProtocolList := List new.
+    ].
+    ^ rawProtocolList
+!
+
+selectedProtocolIndices
+    selectedProtocolIndices isNil ifTrue:[
+        selectedProtocolIndices := ValueHolder new.
+        selectedProtocolIndices addDependent:self
+    ].
+    ^ selectedProtocolIndices.
+!
+
+selectedProtocols
+    ^ self selectionHolder
+!
+
+selectedProtocols:aValueHolder
+    ^ self selectionHolder:aValueHolder
+!
+
+showPseudoProtocols
+    showPseudoProtocols isNil ifTrue:[
+        showPseudoProtocols := true asValue.
+        showPseudoProtocols addDependent:self
+    ].
+    ^  showPseudoProtocols
+!
+
+showPseudoProtocols:aValueHolder
+    showPseudoProtocols notNil ifTrue:[
+        showPseudoProtocols removeDependent:self
+    ].
+    showPseudoProtocols := aValueHolder.
+    showPseudoProtocols notNil ifTrue:[
+        showPseudoProtocols addDependent:self
+    ].
+!
+
+variableFilter
+    variableFilter isNil ifTrue:[
+        variableFilter := false asValue.
+        variableFilter addDependent:self
+    ].
+    ^  variableFilter
+
+    "Modified: / 31.1.2000 / 00:56:31 / cg"
+    "Created: / 5.2.2000 / 13:42:10 / cg"
+!
+
+variableFilter:aValueHolder
+    variableFilter notNil ifTrue:[
+        variableFilter removeDependent:self
+    ].
+    variableFilter := aValueHolder.
+    variableFilter notNil ifTrue:[
+        variableFilter addDependent:self
+    ].
+
+    "Modified: / 31.1.2000 / 00:56:31 / cg"
+    "Created: / 5.2.2000 / 13:42:10 / cg"
+! !
+
+!MethodCategoryList methodsFor:'change & update'!
+
+classDefinitionChanged:aClass
+    |refetch anyChange|
+
+    anyChange := false.
+    refetch := [:oldClass | 
+                    |nm cls newClass|
+
+                    nm := oldClass theNonMetaclass name.
+                    oldClass isMeta ifTrue:[
+                        newClass := Smalltalk at:nm.
+                        newClass isNil ifTrue:[
+                            "/ Transcript showCR:'oops - browser lost class ' , nm.
+                            newClass := oldClass
+                        ] ifFalse:[
+                            newClass := newClass theMetaclass
+                        ]
+                    ] ifFalse:[
+                        newClass := Smalltalk at:nm
+                    ].
+                    newClass ~~ oldClass ifTrue:[
+                        anyChange := true.
+                    ].
+                    newClass
+            ].
+
+    classes := classes collect:refetch.
+    leafClasses := leafClasses collect:refetch.
+    anyChange ifTrue:[
+        self updateOutputGenerator
+    ].
+
+    "Modified: / 06-07-2011 / 11:44:13 / cg"
+!
+
+delayedUpdate:something with:aParameter from:changedObject
+    |sel oldMethod newMethod mthd selectedCategories selectedProtocolsHolder oldProtocol newProtocol
+     rawProtocolListHolder rawProtocolList oldSelectedProtocols newSelectedProtocols newIndices idx cls listView|
+
+    selectedProtocolsHolder := self selectedProtocols.
+    rawProtocolListHolder := self rawProtocolList.
+
+    changedObject == Smalltalk ifTrue:[
+        classes notNil ifTrue:[
+            something == #methodCategory ifTrue:[
+                cls := aParameter at:1.
+                (cls notNil and:[classes includesIdentical:cls]) ifTrue:[
+                    mthd := aParameter at:2.
+                    newProtocol := mthd category.
+                    oldProtocol := aParameter at:3.
+
+                    listValid == true ifTrue:[ self invalidateList ].
+
+                    selectedCategories := selectedProtocolsHolder value.
+                    selectedCategories size > 0 ifTrue:[
+                        selectedCategories := selectedCategories collect:[:each | each ifNil:[self class nameListEntryForNILCategory]].
+                        selectedCategories := selectedCategories collect:[:each | each string].
+
+                        ((selectedCategories includes:oldProtocol)
+                        or:[ (selectedCategories includes:newProtocol)
+                        or:[ selectedCategories includes:(self class nameListEntryForALL) ]])
+                        ifTrue:[
+                            self enqueueDelayedUpdateOutputGenerator "/ updateOutputGenerator.
+                        ].
+                    ].
+
+                ].
+                ^ self
+            ].
+
+            something == #methodInClass ifTrue:[
+                "/ a method has been added/removed/changed
+                cls := aParameter at:1.
+                (classes includesIdentical:cls) ifTrue:[
+                    sel := aParameter at:2.
+                    self flushMethodInfoForClassNamed:cls name selector:sel.
+                    oldMethod := aParameter at:3.
+                    newMethod := cls compiledMethodAt:sel.
+                    oldMethod notNil ifTrue:[
+                        variableFilter value size > 0 ifTrue:[
+                            "/ sigh - must invalidate
+                            listValid == true ifTrue:[ self invalidateList ].
+                        ].
+                        ^ self.
+                    ].
+                    "/ method was added - update the methodList
+                    "/ Q: is this needed (methodCategoryList should send me a new inGenerator)
+                    listValid == true ifTrue:[ self invalidateList ].
+
+                    "/ if its category is selected, updateOutputGenerator
+                    selectedCategories := selectedProtocolsHolder value.
+                    selectedCategories size > 0 ifTrue:[
+                        selectedCategories := selectedCategories collect:[:each | each ifNil:[self class nameListEntryForNILCategory]].
+                        selectedCategories := selectedCategories collect:[:each | each string].
+
+                        ((oldMethod notNil and:[selectedCategories includes:(oldMethod category)])
+                        or:[ (newMethod notNil and:[selectedCategories includes:(newMethod category)])])
+                        ifTrue:[
+                            self enqueueDelayedUpdateOutputGenerator "/ updateOutputGenerator.
+                        ].
+                    ].
+                ].
+                ^ self.
+            ].
+
+            something == #methodInClassRemoved ifTrue:[
+                cls := aParameter at:1.
+                (classes includesIdentical:cls) ifTrue:[
+                    sel := aParameter at:2.
+                    self flushMethodInfoForClassNamed:cls name selector:sel.
+                    "/ method was removed - update the list and output generator
+                    self invalidateList.
+                    "/ self updateOutputGenerator.
+                    self slaveMode value == true ifFalse:[
+                        self enqueueDelayedUpdateOutputGenerator.
+                    ]
+                ].
+                ^ self.
+            ].
+
+            (something == #classOrganization
+            or:[ something == #methodCategoryAdded
+            or:[ something == #methodCategoryRemoved
+            or:[ something == #methodCategoriesRemoved
+            or:[ something == #methodCategoryRenamed ]]]]) ifTrue:[
+                cls := (something == #classOrganization) ifTrue:aParameter ifFalse:[aParameter first].
+                (classes includesIdentical:cls) ifTrue:[
+                    listValid == true ifTrue:[ self invalidateList ].
+                ] ifFalse:[
+                    (classes contains:[:aClass | aClass name = cls name]) ifTrue:[
+                        listValid == true ifTrue:[ self invalidateList ].
+                        "/ self error:'obsolete class: should not happen'.
+                    ]
+                ].
+                ^ self.
+            ].
+
+            something == #projectOrganization ifTrue:[
+                aParameter notNil ifTrue:[
+                    cls := aParameter at:1.
+                    cls notNil ifTrue:[
+                        ((classes includes:cls theMetaclass)
+                        or:[(classes includes:cls theNonMetaclass)]) ifTrue:[
+                            self invalidateList.
+                            self slaveMode value == true ifFalse:[
+                                self enqueueDelayedUpdateOutputGenerator.
+                            ]
+                        ].
+                    ].
+                ] ifFalse:[
+                    listValid == true ifTrue:[ self invalidateList ].
+                ].
+                ^ self
+            ].
+
+            (something == #methodCoverageInformation) ifTrue:[
+                "/ already checked if it is one of my classes
+                listValid == true ifTrue:[ self invalidateList ].
+                ^ self
+            ].
+
+            (something == #classDefinition or:[something == #classVariables])
+            ifTrue:[
+                self classDefinitionChanged:aParameter.
+                ^ self
+            ].
+
+            "/ everything else is ignored    
+            "/ self halt.
+        ].
+        ^ self
+    ].
+
+    changedObject == self selectedProtocolIndices ifTrue:[
+        oldSelectedProtocols := selectedProtocolsHolder value ? #().
+        oldSelectedProtocols := oldSelectedProtocols collect:[:each | each ifNil:[self class nameListEntryForNILCategory]].
+        oldSelectedProtocols := oldSelectedProtocols collect:[:each | each string].
+        newSelectedProtocols := self getSelectedProtocolsFromIndices.
+        oldSelectedProtocols ~= newSelectedProtocols ifTrue:[
+            selectedProtocolsHolder value:newSelectedProtocols.
+        ].
+        newSelectedProtocols size > 1 ifTrue:[
+            (newSelectedProtocols includes:(self class nameListEntryForALL)) ifTrue:[
+                rawProtocolList := rawProtocolListHolder value.
+                idx := rawProtocolList indexOf: (newSelectedProtocols copy remove:(self class nameListEntryForALL); yourself) first.
+                idx ~~ 0 ifTrue:[
+                    (listView := self componentAt:#List) notNil ifTrue:[
+                        listView makeLineVisible:idx.
+                    ]
+                ]
+            ]
+        ].
+
+        ^ self
+    ].
+
+    changedObject == selectedProtocolsHolder ifTrue:[
+        rawProtocolList := rawProtocolListHolder value.
+        rawProtocolList size == 0 ifTrue:[
+            lastGeneratedProtocols := nil.
+            self updateList.
+            rawProtocolList := rawProtocolListHolder value.
+        ].
+        rawProtocolList notNil ifTrue:[
+            selectedCategories := selectedProtocolsHolder value ? #().
+            selectedCategories := selectedCategories collect:[:each | each ifNil:[self class nameListEntryForNILCategory]].
+            newIndices := selectedCategories 
+                            collect:[:each | rawProtocolList findFirst:[:p | p string = each string]].
+            newIndices := newIndices select:[:each | each ~~ 0].
+            newIndices ~= self selectedProtocolIndices value ifTrue:[
+                self selectedProtocolIndices 
+                    setValue:nil;                    "/ to force update
+                    value:newIndices.
+            ].
+            "/ cg: does not work (selecting all with testcase classes)
+            "/ don't see why, at the moment, but....
+            (lastGeneratedProtocols notNil
+            and:[(lastGeneratedProtocols includes:self class nameListEntryForALL)
+            and:[(selectedCategories ? #()) includes:self class nameListEntryForALL]])
+            ifTrue:[
+                "/ no need to update generator
+            ] ifFalse:[
+                self updateOutputGenerator.
+            ]
+        ].
+        ^ self
+    ].
+
+    (changedObject == variableFilter
+    or:[changedObject == filterClassVars
+    or:[changedObject == packageFilterOnInput]]) ifTrue:[
+        self invalidateList.
+        ^  self
+    ].
+
+    changedObject == methodVisibilityHolder ifTrue:[
+        self invalidateList.
+        self updateOutputGenerator.
+        ^  self
+    ].
+
+    lastGeneratedProtocols := nil.
+
+    changedObject == inGeneratorHolder ifTrue:[
+        selectedCategories := selectedProtocolsHolder value.
+
+        selectedCategories size > 0 ifTrue:[
+            oldSelectedProtocols := selectedCategories ? #().
+            oldSelectedProtocols := oldSelectedProtocols collect:[:each | each ifNil:[self class nameListEntryForNILCategory]].
+            oldSelectedProtocols := oldSelectedProtocols collect:[:each | each string].
+            self updateList.
+            rawProtocolList := rawProtocolListHolder value.
+            newSelectedProtocols := oldSelectedProtocols select:[:each | rawProtocolList includes:each].
+"/            selectedProtocolsHolder setValue:nil.                    "/ to force update
+            selectedProtocolsHolder value:newSelectedProtocols.
+            ^ self
+        ].
+    ].
+
+    super delayedUpdate:something with:aParameter from:changedObject
+
+    "Created: / 05-02-2000 / 13:42:10 / cg"
+    "Modified: / 23-09-2011 / 20:37:31 / cg"
+!
+
+getSelectedProtocolsFromIndices
+    |l|
+
+    l := self rawProtocolList value.
+    ^ self selectedProtocolIndices value collect:[:idx | l at:idx].
+!
+
+selectionChanged
+    |newSelectedCategories allEntry|
+
+    newSelectedCategories := self selectedProtocols value.
+
+    "/ the outputGenerator is only to be updated, if the output would really
+    "/ change ...
+    allEntry := self class nameListEntryForALL.
+
+    (lastSelectedProtocols notNil
+    and:[newSelectedCategories notNil
+    and:[(lastSelectedProtocols includes:(allEntry))
+    and:[newSelectedCategories includes:(allEntry)]]]) ifTrue:[
+        "/ no change ...
+        ^ self
+    ].
+
+    super selectionChanged.
+
+    "Created: / 5.2.2000 / 13:42:10 / cg"
+    "Modified: / 24.2.2000 / 14:12:12 / cg"
+!
+
+selectionChangedByClick
+    "we are not interested in that - get another notification
+     via the changed valueHolder"
+
+    lastSelectedProtocols := self getSelectedProtocolsFromIndices
+!
+
+update:something with:aParameter from:changedObject
+    |cls sel mthd oldMethod newMethod|
+
+    "/ some can be ignored immediately
+    changedObject == Smalltalk ifTrue:[
+        something isNil ifTrue:[
+            "/ self halt "/ huh - Smalltalk changed - so what ?
+            ^ self.
+        ].
+
+        something == #currentChangeSet ifTrue:[
+            listValid == true ifTrue:[ self invalidateList ].
+            ^ self.
+        ].
+
+        something == #methodInClass ifTrue:[
+            "/ a method has been added/removed/changed
+            cls := aParameter at:1.
+            (classes notNil and:[classes includesIdentical:cls]) ifFalse:[^ self].
+
+            sel := aParameter at:2.
+            self flushMethodInfoForClassNamed:cls name selector:sel.
+            oldMethod := aParameter at:3.
+            newMethod := cls compiledMethodAt:sel.
+            oldMethod notNil ifTrue:[
+                variableFilter value size > 0 ifTrue:[
+                    "/ sigh - must invalidate
+                    listValid ifTrue:[ self invalidateList ].
+                    ^ self.    
+                ].
+                oldMethod category ~= newMethod category ifTrue:[
+                    listValid ifTrue:[ self invalidateList ].
+                    ^ self.    
+                ].
+                "/ mhmh - its now changed (so coloring will change).
+                listValid ifTrue:[ self invalidateList ].
+                ^ self.
+            ].
+        ].
+
+"/        something == #classDefinition ifTrue:[
+"/            ^ self.
+"/        ].
+        something == #newClass ifTrue:[
+            ^ self.
+        ].
+        something == #classRemove ifTrue:[
+            ^ self.
+        ].
+        something == #classRename ifTrue:[
+            ^ self.
+        ].
+"/        something == #classVariables ifTrue:[
+"/            ^ self.
+"/        ].
+        something == #classComment ifTrue:[
+            ^ self.
+        ].
+        something == #organization ifTrue:[
+            ^ self.
+        ].
+        something == #methodTrap ifTrue:[
+            ^ self
+        ].
+
+        something == #methodCoverageInfo ifTrue:[
+            self showCoverageInformation value ifFalse:[^ self].
+            listValid ifFalse:[^ self ].
+
+            mthd := aParameter.
+            (classes notNil and:[classes includesIdentical:mthd mclass]) ifFalse:[^ self].
+
+            self enqueueDelayedUpdateList.
+            ^ self
+        ].
+    ].
+
+    something == #coverageInfo ifTrue:[
+        listValid == true ifTrue:[
+            self enqueueDelayedUpdateList
+        ].
+        ^ self.
+    ].
+
+    super update:something with:aParameter from:changedObject.
+
+    "Modified: / 05-06-2012 / 23:38:31 / cg"
+! !
+
+!MethodCategoryList methodsFor:'drag & drop'!
+
+canDropContext:aDropContext
+    |cat methods|
+
+    methods := aDropContext dropObjects collect:[:obj | obj theObject].
+    (methods conform:[:aMethod | aMethod isMethod]) ifFalse:[^ false].
+
+    cat := self categoryAtTargetPointOf:aDropContext.
+    cat isNil ifTrue:[^ false].
+
+    (methods contains:[:aMethod | aMethod category ~= cat]) ifFalse:[^ false].
+    ^ true
+
+    "Modified: / 13-09-2006 / 11:44:02 / cg"
+!
+
+categoryAtTargetPointOf:aDropContext
+    |p methodListView lineNr cat|
+
+    p := aDropContext targetPoint.
+
+    methodListView := aDropContext targetWidget.
+
+    lineNr := methodListView lineAtY:p y.
+    lineNr isNil ifTrue:[^ nil].
+
+    cat := rawProtocolList at:lineNr.
+    cat := cat string.
+    cat = self class nameListEntryForALL ifTrue:[^ nil].
+
+    ^ cat
+!
+
+doDropContext:aDropContext
+    "handle dropping of a method as a category change"
+
+    |cat methods|
+
+    methods := aDropContext dropObjects collect:[:aDropObject | aDropObject theObject].
+    (methods conform:[:something | something isMethod]) ifFalse:[^ self].
+
+    cat := self categoryAtTargetPointOf:aDropContext.
+    cat notNil ifTrue:[
+        self masterApplication moveMethods:methods toProtocol:cat.
+    ].
+
+    "Modified: / 13-09-2006 / 11:43:23 / cg"
+! !
+
+!MethodCategoryList methodsFor:'generators'!
+
+makeGenerator
+    "return a generator which enumerates the methods from the selected protocol;
+     that generator generates 4-element elements (includes the class and protocol), 
+     in order to make the consumers only depend on one input 
+     (i.e. to pass multiple-class and multiple-protocol info
+      without a need for another classHolder/protocolHolder in the methodList)."
+
+    ^ Iterator 
+        on:[:whatToDo |
+            |protocols 
+             allProtocols superSendProtocols uncommentedProtocols obsoleteProtocols 
+             documentationProtocols longProtocols extensionProtocols redefinedProtocols
+             redefineProtocols  overrideProtocols
+             missingRequiredProtocols subclassResponsibilities
+             notInstrumentedProtocols annotatedProtocols fullyCoveredProtocols 
+             partiallyCoveredProtocols uncoveredProtocols
+             noCat static notStatic classSelectorPairsAlreadyDone
+             packages remainingClasses remainingCategories classesAlreadyDone noPackage
+             catListed showChanged|
+
+            noPackage := PackageId noProjectID.
+            noCat := (self class nameListEntryForNILCategory).
+            static := (self class nameListEntryForStatic).
+            notStatic := (self class nameListEntryForNonStatic).
+
+            protocols := self selectedProtocols value ? #().
+            protocols := protocols collect:[:each | (each ifNil:[noCat]) string].
+            lastGeneratedProtocols := protocols.
+            protocols := protocols asSet.
+
+            (leafClasses size > 0 and:[protocols size > 0]) ifTrue:[
+                allProtocols := protocols includes:(self class nameListEntryForALL).
+                superSendProtocols := protocols includes:(self class nameListEntryForSuperSend).
+                uncommentedProtocols := protocols includes:(self class nameListEntryForUncommented).
+                obsoleteProtocols := protocols includes:(self class nameListEntryForObsolete).
+                documentationProtocols := protocols includes:(self class nameListEntryForDocumentation).
+                longProtocols := protocols includes:(self class nameListEntryForLong).
+                extensionProtocols := protocols includes:(self class nameListEntryForExtensions).
+                redefinedProtocols := protocols includes:(self class nameListEntryForRedefined).
+                redefineProtocols := protocols includes:(self class nameListEntryForRedefine).
+                overrideProtocols := protocols includes:(self class nameListEntryForOverride).
+                missingRequiredProtocols := protocols includes:(self class nameListEntryForRequired).
+                subclassResponsibilities := protocols includes:(self class nameListEntryForMustBeRedefinedInSubclass).
+                annotatedProtocols := protocols includes:(self class nameListEntryForAnnotated).
+
+                fullyCoveredProtocols := protocols includes:(self class nameListEntryForFullyCovered).
+                partiallyCoveredProtocols := protocols includes:(self class nameListEntryForPartiallyCovered).
+                uncoveredProtocols := protocols includes:(self class nameListEntryForUncovered).
+                notInstrumentedProtocols := protocols includes:(self class nameListEntryForNotInstrumented).
+            
+                packages := packageFilter value value.
+                (packages notNil and:[packages includes:(self class nameListEntryForALL)]) ifTrue:[
+                    packages := nil.
+                ].
+                showChanged := packages notNil and:[packages includes:(self class nameListEntryForChanged)].
+
+                remainingClasses := leafClasses copy asIdentitySet.
+                remainingCategories := protocols copy asSet.
+
+                classesAlreadyDone := IdentitySet new.
+                classSelectorPairsAlreadyDone := Set new.
+
+                leafClasses do:[:aLeafClass |  
+                    (self classesToProcessForClasses:(Array with:aLeafClass)) do:[:aClass |
+                        |supportsMethodCategories isJavaClass anyInThisClass requiredProtocolForClass|
+
+                        (classesAlreadyDone includes:aClass) ifFalse:[
+                            classesAlreadyDone add:aClass.
+
+                            supportsMethodCategories := aClass supportsMethodCategories.
+                            isJavaClass := aClass isJavaClass.
+                            anyInThisClass := false.
+
+                            aClass methodDictionary keysAndValuesDo:[:sel :mthd |
+                                |cat mPkg includeIt info|
+
+"/ sel == #metacelloCleanup ifTrue:[self halt].
+                                supportsMethodCategories ifTrue:[
+                                    cat := mthd category.
+                                ] ifFalse:[
+                                    isJavaClass ifTrue:[
+                                        cat := mthd isStatic ifTrue:[static] ifFalse:[notStatic]
+                                    ] ifFalse:[
+                                        cat := noCat.
+                                    ]
+                                ].
+                                catListed := cat.
+
+                                mPkg := mthd package.
+                                (packages isNil 
+                                    or:[ mPkg = noPackage 
+                                    or:[ (packages includes:mPkg)
+                                    or:[ allProtocols "(extensionProtocols and:[ mthd isExtension ])"
+                                    or:[ showChanged    
+                                    ]]]]
+                                ) ifTrue:[
+                                    "/ used to be a more readable or, but to reuse info, I've splitted it.
+                                    "/ because we should use the parser only once, we reuse the same methodInfo.
+                                    "/ otherwise, the list update becomes too slow for long classes (NewSystemBrowser)
+                                    includeIt := allProtocols.
+                                    includeIt ifFalse:[ includeIt := protocols includes:cat ].
+                                    includeIt ifFalse:[
+                                        superSendProtocols ifTrue:[
+                                            info isNil ifTrue:[ info := self methodInfoFor:mthd in:aClass selector:sel ].
+                                            includeIt := info sendsSuper ]]. 
+                                    includeIt ifFalse:[
+                                        uncommentedProtocols ifTrue:[
+                                            info isNil ifTrue:[ info := self methodInfoFor:mthd in:aClass selector:sel ].
+                                            includeIt := info isUncommented.
+                                            catListed := self class nameListEntryForUncommented ]]. 
+                                    includeIt ifFalse:[ 
+                                        obsoleteProtocols ifTrue:[
+                                            info isNil ifTrue:[ info := self methodInfoFor:mthd in:aClass selector:sel ].
+                                            includeIt := info isObsolete ]]. 
+                                    includeIt ifFalse:[ 
+                                        documentationProtocols ifTrue:[
+                                            info isNil ifTrue:[ info := self methodInfoFor:mthd in:aClass selector:sel ].
+                                            includeIt := info isDocumentationMethod ]].
+                                    includeIt ifFalse:[ 
+                                        longProtocols ifTrue:[
+                                            info isNil ifTrue:[ info := self methodInfoFor:mthd in:aClass selector:sel ].
+                                            includeIt := info isLongMethod ]].
+                                    includeIt ifFalse:[ 
+                                        extensionProtocols ifTrue:[
+                                            info isNil ifTrue:[ info := self methodInfoFor:mthd in:aClass selector:sel ].
+                                            includeIt := info isExtensionMethod.
+                                            catListed := self class nameListEntryForExtensions ]].
+                                    includeIt ifFalse:[ 
+                                        overrideProtocols ifTrue:[
+                                            info isNil ifTrue:[ info := self methodInfoFor:mthd in:aClass selector:sel ].
+                                            includeIt := info isOverride ]].
+"/                                    includeIt ifFalse:[ 
+"/                                        redefinedProtocols ifTrue:[
+"/                                            info isNil ifTrue:[ info := self methodInfoFor:mthd in:aClass selector:sel ].
+"/                                            includeIt := info isRedefined ]].
+                                    includeIt ifFalse:[ 
+                                        redefineProtocols ifTrue:[
+                                            info isNil ifTrue:[ info := self methodInfoFor:mthd in:aClass selector:sel ].
+                                            includeIt := info isRedefine ]].
+                                    includeIt ifFalse:[
+                                        subclassResponsibilities ifTrue:[
+                                            info isNil ifTrue:[ info := self methodInfoFor:mthd in:aClass selector:sel ].
+                                            includeIt := info isSubclassResponsibility ]].
+                                    includeIt ifFalse:[
+                                        annotatedProtocols ifTrue:[
+                                            info isNil ifTrue:[ info := self methodInfoFor:mthd in:aClass selector:sel ].
+                                            includeIt := info isAnnotated ]].
+
+                                    includeIt ifFalse:[
+                                        mthd isInstrumented ifTrue:[
+                                            mthd hasBeenCalled ifTrue:[
+                                                mthd haveAllBlocksBeenExecuted ifTrue:[
+                                                    includeIt := fullyCoveredProtocols.
+                                                ] ifFalse:[
+                                                    includeIt := partiallyCoveredProtocols 
+                                                ]
+                                            ] ifFalse:[
+                                                includeIt := uncoveredProtocols
+                                            ].
+                                        ] ifFalse:[
+                                            includeIt := notInstrumentedProtocols
+                                        ].
+                                    ].
+
+                                    includeIt ifTrue:[
+                                        (methodVisibilityHolder value == #class) ifTrue:[
+                                            whatToDo value:aClass value:catListed value:sel value:mthd.
+                                        ] ifFalse:[
+                                            (classSelectorPairsAlreadyDone includes:(aLeafClass->sel)) ifFalse:[
+                                                classSelectorPairsAlreadyDone add:(aLeafClass->sel).
+                                                whatToDo value:aClass value:catListed value:sel value:mthd.
+                                            ].
+                                        ].
+                                        anyInThisClass := true.
+                                        remainingCategories remove:catListed ifAbsent:nil.
+                                    ].
+                                ]
+                            ].
+
+                            missingRequiredProtocols ifTrue:[
+                                requiredProtocolForClass := SmalltalkCodeGeneratorTool missingRequiredProtocolFor:aClass.
+                                requiredProtocolForClass do:[:sel | 
+                                    |selectorInRed missingMethodPlaceHolder|
+
+                                    selectorInRed := sel colorizeAllWith:Color red.
+                                    missingMethodPlaceHolder := MissingMethod mclass:aClass selector:sel.
+                                    whatToDo value:aClass value:'required' value:selectorInRed value:missingMethodPlaceHolder.
+                                ].
+                            ].
+                            anyInThisClass ifTrue:[ remainingClasses remove:aClass ifAbsent:nil. ].
+                        ].
+                    ].
+                ].
+                remainingClasses do:[:aClass |
+                    whatToDo value:aClass value:nil value:nil value:nil.
+                ].
+                remainingCategories do:[:cat |
+                    whatToDo value:nil value:cat value:nil value:nil.
+                ]
+            ]
+      ]
+
+    "Created: / 05-02-2000 / 13:42:10 / cg"
+    "Modified: / 18-09-2011 / 12:51:45 / cg"
+! !
+
+!MethodCategoryList methodsFor:'private'!
+
+class:cls protocol:cat includesMethodsInAnyPackage:packageFilter
+    cls methodDictionary keysAndValuesDo:[:sel :mthd |
+        mthd category == cat ifTrue:[
+            (packageFilter includes:mthd package) ifTrue:[
+                ^ true
+            ]
+        ]
+    ].
+    ^ false
+!
+
+class:cls protocol:cat includesModsOfClassVariable:variablesToHighLight
+    "are there any methods in the protocol cat which modify any class variable in variablesToHighLight ?"
+
+    ^ self class:cls protocol:cat includesRefsToVariable:variablesToHighLight askParserWith:#modifiedClassVars
+!
+
+class:cls protocol:cat includesModsOfInstanceVariable:variablesToHighLight
+    "are there any methods in the protocol cat which modify any inst variable in variablesToHighLight ?"
+
+    ^ self class:cls protocol:cat includesRefsToVariable:variablesToHighLight askParserWith:#modifiedInstVars
+!
+
+class:cls protocol:cat includesRefsToClassVariable:variablesToHighLight
+    "are there any methods in the protocol cat which reference any class variable in variablesToHighLight ?"
+
+    ^ self class:cls protocol:cat includesRefsToVariable:variablesToHighLight askParserWith:#usedClassVars
+!
+
+class:cls protocol:cat includesRefsToInstanceVariable:variablesToHighLight
+    "are there any methods in the protocol cat which reference any inst variable in variablesToHighLight ?"
+
+    ^ self class:cls protocol:cat includesRefsToVariable:variablesToHighLight askParserWith:#usedInstVars
+!
+
+class:cls protocol:cat includesRefsToVariable:variablesToHighLight askParserWith:querySelector
+    "are there any methods in the protocol cat which reference/modify any inst/class variable in variablesToHighLight ?"
+
+    |anyVarNameAccessable|
+
+    anyVarNameAccessable := cls allInstVarNames includesAny:variablesToHighLight.
+    anyVarNameAccessable ifFalse:[
+        anyVarNameAccessable := cls theNonMetaclass allClassVarNames includesAny:variablesToHighLight.
+    ].
+    anyVarNameAccessable ifFalse:[
+        "/ no need to parse
+        ^ false
+    ].
+
+    cls selectorsAndMethodsDo:[:sel :mthd |
+        |src parser usedVars|
+
+        mthd category = cat ifTrue:[
+            src := mthd source.
+            src notNil ifTrue:[
+                "
+                 before doing a slow parse, quickly scan the
+                 methods source for the variables name ...
+                "
+                (variablesToHighLight contains:[:varName | (src findString:varName) ~~ 0]) ifTrue:[
+                    parser := Parser
+                                    parseMethod:src 
+                                    in:cls 
+                                    ignoreErrors:true 
+                                    ignoreWarnings:true.
+                    (parser notNil and:[parser ~~ #Error]) ifTrue:[
+                        usedVars := parser perform:querySelector.
+                        (usedVars includesAny:variablesToHighLight)
+                        ifTrue:[
+                            ^  true
+                        ]
+                    ]
+                ]        
+            ] ifFalse:[
+                Transcript showCR:'Oops - cannot access method source'.
+            ]        
+        ]
+    ].
+    ^ false
+
+    "Modified: / 06-07-2011 / 11:44:25 / cg"
+!
+
+classesToProcessForClasses:classes
+    ^ self classesToProcessForClasses:classes withVisibility:methodVisibilityHolder value.
+!
+
+commonPostOpen
+    super commonPostOpen.
+
+    self showPseudoProtocols ifTrue:[
+        "/ revalidate my list, because it was only shown lazy
+        self invalidateList.
+    ].
+!
+
+flushMethodInfoForClassNamed:className selector:selector
+    MethodInfoCacheAccessLock critical:[
+        MethodInfoCache notNil ifTrue:[
+            MethodInfoCache 
+                removeKey:(className,'>>',selector)
+                ifAbsent:[]
+        ].
+    ]
+
+    "Modified: / 08-08-2011 / 19:16:32 / cg"
+!
+
+listOfMethodCategories
+    |categoryList categoryBag plainCategories classesProcessed leafClassesProcessed
+     generator nm variablesToHighlight classVarsToHighLight
+     itemsWithVarRefs itemsWithVarMods itemsWithExtensions itemsWithSuppressedExtensions
+     itemsInChangeSet itemsInRemoteChangeSet
+     itemsWithInstrumentedMethods itemsWithCalledMethods itemsWithUncalledMethods
+     itemsWithPartiallyCoveredMethods itemsWithFullyCoveredMethods
+     packageFilterOnInput packageFilter showChanges nameListEntryForALL changeSet 
+     emphasizedPlus emphasisForRef emphasisForMod
+     numAll numObsolete numSuper numUncommented numDocumentation numLong numOverride
+     numRedefine numRedefined numExtension numMissingRequired numSubclassResponsibility
+     numAnnotated numFullyCovered numPartiallyCovered numUncovered numNotInstrumented 
+     showPseudoProtocols showCoverageInformation
+     addPseudoEntry addPseudoEntryWithColor countAll pseudoEntryColor userPreferences
+     startTime suppressPseudoProtocolsNow needsSpecialColoring|
+
+    userPreferences := UserPreferences current.
+    countAll := true.
+    startTime := Timestamp now.
+    suppressPseudoProtocolsNow := false.
+
+    generator := inGeneratorHolder value.
+    generator isNil ifTrue:[ ^ #() ].
+
+    showPseudoProtocols := self showPseudoProtocols value.
+    showCoverageInformation := self showCoverageInformation value.
+
+    nameListEntryForALL := self class nameListEntryForALL.
+
+    packageFilterOnInput := self packageFilterOnInput value.
+    (packageFilterOnInput notNil and:[packageFilterOnInput includes:nameListEntryForALL]) ifTrue:[
+        packageFilterOnInput := nil
+    ].
+    packageFilter := self packageFilter value.
+    (packageFilter notNil and:[packageFilter includes:nameListEntryForALL]) ifTrue:[
+        packageFilter := nil
+    ].
+    showChanges := false.
+    (packageFilter notNil and:[packageFilter includes:self class nameListEntryForChanged]) ifTrue:[
+        showChanges := true
+    ].
+
+    categoryList := Set new.
+    categoryBag := Bag new.
+    itemsWithVarRefs := Set new.
+    itemsWithVarMods := Set new.
+    itemsWithExtensions := Set new.
+    itemsWithSuppressedExtensions := Set new.
+    itemsInChangeSet := Set new.
+    itemsInRemoteChangeSet := Set new.
+
+    itemsWithInstrumentedMethods := Set new.
+    itemsWithCalledMethods := Set new. 
+    itemsWithUncalledMethods := Set new. 
+    itemsWithPartiallyCoveredMethods := Set new.
+    itemsWithFullyCoveredMethods := Set new.
+
+    plainCategories := Set new.
+    classesProcessed := IdentitySet new.
+    leafClassesProcessed := IdentitySet new.
+    variablesToHighlight := variableFilter value.
+    classVarsToHighLight := filterClassVars value.
+    numObsolete := numSuper := numUncommented := numDocumentation := numLong := 0.
+    numRedefine := numRedefined := numOverride := numExtension := numMissingRequired := numSubclassResponsibility := 0.
+    numNotInstrumented := numFullyCovered := numPartiallyCovered := numUncovered := 0.
+    numAnnotated := 0.
+
+    generator do:[:clsIn :catIn | 
+                        |emptyProtocols clsName doHighLight doHighLightRed includedCats|
+
+                        includedCats := Set new.
+
+                        leafClassesProcessed add:clsIn.
+                        (self classesToProcessForClasses:(Array with:clsIn)) do:[:cls |
+                            |cats processCategory|
+
+                            classesProcessed add:cls.
+
+                            cls ~~ clsIn ifTrue:[
+                                cats := cls categories
+                            ] ifFalse:[
+                                cats := Array with:catIn.
+                            ].
+                            cats do:[:cat | 
+                                |suppress|
+
+                                cat notNil ifTrue:[
+                                    suppress := packageFilterOnInput notNil 
+                                                and:[ (self class:cls protocol:cat includesMethodsInAnyPackage:packageFilterOnInput) not ].
+                                    suppress ifFalse:[
+                                        includedCats add:cat.
+
+                                        variablesToHighlight notEmptyOrNil ifTrue:[
+                                            (itemsWithVarRefs includes:cat) ifFalse:[
+                                                classVarsToHighLight ifTrue:[
+                                                    doHighLight := self class:cls protocol:cat includesRefsToClassVariable:variablesToHighlight.
+                                                    doHighLight ifTrue:[
+                                                        doHighLightRed := self class:cls protocol:cat includesModsOfClassVariable:variablesToHighlight.
+                                                    ].
+                                                ] ifFalse:[
+                                                    doHighLight := self class:cls protocol:cat includesRefsToInstanceVariable:variablesToHighlight.
+                                                    doHighLight ifTrue:[
+                                                        doHighLightRed := self class:cls protocol:cat includesModsOfInstanceVariable:variablesToHighlight.
+                                                    ].
+                                                ].
+                                                doHighLight ifTrue:[
+                                                    itemsWithVarRefs add:cat.
+                                                    doHighLightRed ifTrue:[
+                                                        itemsWithVarMods add:cat.
+                                                    ].
+                                                ]
+                                            ]
+                                        ].
+
+                                        AdditionalEmptyCategoriesPerClassName size > 0 ifTrue:[
+                                            clsName := cls name.
+                                            emptyProtocols := AdditionalEmptyCategoriesPerClassName at:clsName ifAbsent:nil.
+                                            emptyProtocols size > 0 ifTrue:[
+                                                emptyProtocols remove:cat ifAbsent:nil.    
+                                            ].
+                                            emptyProtocols size == 0 ifTrue:[
+                                                AdditionalEmptyCategoriesPerClassName removeKey:clsName ifAbsent:nil
+                                            ].
+                                        ].
+                                    ]
+                                ]
+                            ].
+
+                            cats := cats asSet.
+
+                            cls selectorsAndMethodsDo:[:sel :mthd |
+                                |info cat suppress|
+
+                                (includedCats includes:(cat := mthd category)) ifTrue:[
+                                    suppress := packageFilter notNil 
+                                                and:[ (packageFilter includes:mthd package) not 
+                                                and:[ showChanges not ]].
+                                    suppress ifFalse:[
+                                        categoryBag add:cat.
+                                        suppressPseudoProtocolsNow ifFalse:[
+                                            info := self methodInfoFor:mthd in:cls selector:sel lazy:suppressPseudoProtocolsNow.
+                                            info notNil ifTrue:[
+                                                info isObsolete ifTrue:[ numObsolete := numObsolete + 1 ].
+                                                info sendsSuper ifTrue:[ numSuper := numSuper + 1 ].
+                                                info isUncommented ifTrue:[ numUncommented := numUncommented + 1 ].
+                                                info isDocumentationMethod ifTrue:[ numDocumentation := numDocumentation + 1 ].
+                                                info isLongMethod ifTrue:[ numLong := numLong + 1 ].
+                                                info isExtensionMethod ifTrue:[ numExtension := numExtension + 1 ].
+                                                info isOverride ifTrue:[ numOverride := numOverride + 1 ].
+                                                info isRedefine ifTrue:[ numRedefine := numRedefine + 1 ].
+                                                info isRedefined ifTrue:[ numRedefined := numRedefined + 1 ].
+                                                info isSubclassResponsibility ifTrue:[ numSubclassResponsibility := numSubclassResponsibility + 1].
+                                                info isAnnotated ifTrue:[ numAnnotated := numAnnotated + 1].
+                                            ].
+                                            (Timestamp now deltaFrom:startTime) > 5 seconds ifTrue:[
+                                                suppressPseudoProtocolsNow := true.
+                                                "/ because we already computed for 5 seconds, more and more will be found in
+                                                "/ the cache, and eventually, pseudo protocols will be shown anyway
+                                                masterApplication showInfo:'suppress pseudo protocols - parsing took too long'.
+                                                "/ self enqueueDelayedUpdateList.
+                                            ].
+                                        ]
+                                    ]
+                                ].
+                            ].
+                        ]
+                 ].
+
+    numAll := 0.
+
+    changeSet := ChangeSet current.
+
+    classesProcessed do:[:eachClass |
+        |classPackage required|
+
+        classPackage := eachClass package.
+        eachClass methodDictionary keysAndValuesDo:[:mSelector :mthd |
+            |mPackage mCategory|
+
+            mPackage := mthd package.
+            mCategory := mthd category.    
+
+            #fixme.
+            mPackage = classPackage ifTrue:[
+                mPackage ~~ classPackage ifTrue:[
+                    mthd setPackage:(mPackage := mPackage string asSymbol).
+                ]
+            ].
+            mPackage ~~ classPackage ifTrue:[
+                (mCategory notNil and:[mPackage ~= PackageId noProjectID]) ifTrue:[
+                    itemsWithExtensions add:mCategory.    
+
+                    (packageFilter notNil 
+                    and:[ (packageFilter includes:mPackage) not])
+                    ifTrue:[
+                        itemsWithSuppressedExtensions add:mCategory.    
+                    ].
+                ].
+            ].
+
+            showCoverageInformation ifTrue:[
+                mthd isInstrumented ifTrue:[
+                    mthd category = 'documentation' ifFalse:[
+                        itemsWithInstrumentedMethods add:mCategory.
+                        mthd hasBeenCalled ifTrue:[
+                            itemsWithCalledMethods add:mCategory.
+                            mthd haveAllBlocksBeenExecuted ifTrue:[
+                                itemsWithFullyCoveredMethods add:mCategory.
+                                numFullyCovered := numFullyCovered + 1.
+                            ] ifFalse:[
+                                itemsWithPartiallyCoveredMethods add:mCategory.
+                                numPartiallyCovered := numPartiallyCovered + 1.
+                            ].
+                        ] ifFalse:[
+                            itemsWithUncalledMethods add:mCategory.
+                            numUncovered := numUncovered + 1.
+                        ].
+                    ].
+                ] ifFalse:[
+                    numNotInstrumented := numNotInstrumented + 1.
+                ].
+            ].
+            (changeSet includesChangeForClass:eachClass selector:mSelector) ifTrue:[
+                itemsInChangeSet add:mCategory.    
+            ].
+            (SmallTeam notNil and:[ SmallTeam includesChangeForClass:eachClass selector:mSelector] ) ifTrue:[
+                itemsInRemoteChangeSet add:mCategory.    
+            ].
+        ].
+
+        (packageFilter isNil or:[ packageFilter includes:eachClass package ]) ifTrue:[
+            (suppressPseudoProtocolsNow not and:[showPseudoProtocols]) ifTrue:[
+                "/ see if there is a subclassResponsibility in a superclass
+                required := SmalltalkCodeGeneratorTool missingRequiredProtocolFor:eachClass.
+                numMissingRequired := numMissingRequired + required size.
+            ].
+        ].
+        numAll := numAll + (eachClass methodDictionary size)
+    ].
+
+    pseudoEntryColor := self class pseudoEntryForegroundColor.
+
+    categoryList := categoryBag asSet asOrderedCollection.
+    self rawProtocolList removeAll.
+    rawProtocolList addAll:categoryList.
+
+    emphasizedPlus := (self colorizeForDifferentPackage:' [ + ]').
+    emphasisForRef := userPreferences emphasisForReadVariable.
+    emphasisForMod := userPreferences emphasisForWrittenVariable.
+
+    needsSpecialColoring :=
+        (itemsInChangeSet notEmpty 
+        or:[itemsInRemoteChangeSet notEmpty
+        or:[itemsWithExtensions notEmpty
+        or:[itemsWithVarRefs notEmpty
+        or:[itemsWithInstrumentedMethods notEmpty
+        or:[itemsWithCalledMethods notEmpty
+        or:[itemsWithUncalledMethods notEmpty
+        or:[itemsWithFullyCoveredMethods notEmpty
+        or:[itemsWithPartiallyCoveredMethods notEmpty]]]]]]]]).
+
+    rawProtocolList keysAndValuesDo:[:idx :cat |
+        |item inChangeSet inRemoteChangeSet hasExtensions hasVarRef hasVarMod
+         clr|
+
+        item := cat.
+
+        needsSpecialColoring ifTrue:[
+            inChangeSet := false.
+
+            showCoverageInformation ifTrue:[
+                (itemsWithInstrumentedMethods includes:cat) ifTrue:[
+                    (itemsWithCalledMethods includes:cat) ifTrue:[
+                        (itemsWithPartiallyCoveredMethods includes:cat) ifTrue:[
+                            clr := (userPreferences colorForInstrumentedPartiallyCoveredCode).
+                        ] ifFalse:[
+                            (itemsWithUncalledMethods includes:cat) ifTrue:[
+                                clr := (userPreferences colorForInstrumentedPartiallyCoveredCode).
+                            ] ifFalse:[
+                                 clr := (userPreferences colorForInstrumentedFullyCoveredCode).
+                            ]                    
+                        ]
+                    ] ifFalse:[
+                        clr := (userPreferences colorForInstrumentedNeverCalledCode).
+                    ].
+                    item := self colorize:cat with:(#color -> clr).
+                ]
+            ].
+            clr isNil ifTrue:[
+                inChangeSet := itemsInChangeSet includes:cat.
+                inChangeSet ifTrue:[
+                    item := self colorizeForChangedCode:cat.
+                ].
+
+                inRemoteChangeSet := itemsInRemoteChangeSet includes:cat.
+                inRemoteChangeSet ifTrue:[
+                    item := (self colorizeForChangedCodeInSmallTeam:'!! '),item.
+                ].
+            ].
+
+            hasVarRef := itemsWithVarRefs includes:cat.
+            hasVarRef ifTrue:[
+                hasVarMod := itemsWithVarMods includes:cat.
+                item := item asText 
+                            emphasisAllAdd:(hasVarMod ifTrue:[emphasisForMod] ifFalse:[emphasisForRef]).
+            ].
+        ].
+
+
+        item := item , ((' (%1)' bindWith:(categoryBag occurrencesOf:cat)) 
+                            colorizeAllWith:pseudoEntryColor).
+
+        needsSpecialColoring ifTrue:[
+            hasExtensions := itemsWithExtensions includes:cat.
+            hasExtensions ifTrue:[
+                item := item , emphasizedPlus.
+            ].
+            inChangeSet ifTrue:[
+                item := item , self class markForBeingInChangeList.
+            ].
+        ].
+
+        categoryList at:idx put:item.
+    ].
+
+    classesProcessed size > 0 ifTrue:[
+        "/ those are simulated - in ST/X, empty categories do not
+        "/ really exist; however, during browsing, it makes sense.
+        AdditionalEmptyCategoriesPerClassName size > 0 ifTrue:[
+            AdditionalEmptyCategoriesPerClassName keysAndValuesDo:[:clsName :protocols |
+                (classesProcessed contains:[:cls | cls name = clsName]) ifTrue:[
+                    categoryList addAll:protocols.
+                    rawProtocolList addAll:protocols.
+                ]
+            ]
+        ].
+    ].
+
+    self makeIndependent.
+    classes := classesProcessed.
+    leafClasses := leafClassesProcessed.
+    self makeDependent.
+
+    rawProtocolList sortWith:categoryList.
+    categoryList size == 1 ifTrue:[
+        nm := categoryList first string.
+        classes size == 1 ifTrue:[
+            nm := classes first name , '-' , nm
+        ].
+        self protocolLabelHolder value:nm
+    ].
+
+    categoryList notEmpty ifTrue:[
+        noAllItem value ~~ true ifTrue:[
+            |allName|
+
+            countAll ifTrue:[
+                allName := self class nameListEntryForALLWithCount bindWith:numAll.
+            ] ifFalse:[
+                allName := nameListEntryForALL.
+            ].
+            categoryList addFirst:(allName allItalic colorizeAllWith:pseudoEntryColor).
+            rawProtocolList addFirst:nameListEntryForALL.
+        ].
+    ].
+
+    (suppressPseudoProtocolsNow not and:[showPseudoProtocols]) ifTrue:[
+        addPseudoEntryWithColor := [:s :n :clr | 
+                                n > 0 ifTrue:[
+                                    categoryList 
+                                        add:((s bindWith:n) allItalic colorizeAllWith:clr).
+                                    rawProtocolList add:s.
+                                ].
+                           ].
+
+        addPseudoEntry := [:s :n | addPseudoEntryWithColor value:s value:n value:pseudoEntryColor].
+
+        addPseudoEntry value:self class nameListEntryForAnnotated value:numAnnotated.
+        addPseudoEntry value:self class nameListEntryForDocumentation value:numDocumentation.
+        addPseudoEntry value:self class nameListEntryForExtensions value:numExtension.
+        addPseudoEntry value:self class nameListEntryForLong value:numLong.
+        addPseudoEntry value:self class nameListEntryForMustBeRedefinedInSubclass value:numSubclassResponsibility.
+        addPseudoEntry value:self class nameListEntryForObsolete value:numObsolete.
+        addPseudoEntry value:self class nameListEntryForOverride value:numOverride.
+        addPseudoEntry value:self class nameListEntryForRedefine value:numRedefine.
+        addPseudoEntry value:self class nameListEntryForRedefined value:numRedefined.
+        "/ I think red is too much of an alert color (and we get more of them as we think...)
+"/        numMissingRequired > 0 ifTrue:[
+"/            categoryList add:((self class nameListEntryForRequired bindWith:numMissingRequired) allItalic "colorizeAllWith:Color red").
+"/            rawProtocolList add:self class nameListEntryForRequired.
+"/        ].
+        addPseudoEntry value:self class nameListEntryForRequired value:numMissingRequired.
+        addPseudoEntry value:self class nameListEntryForSuperSend value:numSuper.
+        addPseudoEntry value:self class nameListEntryForUncommented value:numUncommented.
+
+        showCoverageInformation ifTrue:[                                                                              
+            addPseudoEntry value:self class nameListEntryForNotInstrumented value:numNotInstrumented.
+            addPseudoEntryWithColor value:self class nameListEntryForUncovered value:numUncovered value:userPreferences colorForInstrumentedNeverCalledCode.
+            addPseudoEntryWithColor value:self class nameListEntryForPartiallyCovered value:numPartiallyCovered value:userPreferences colorForInstrumentedPartiallyCoveredCode.
+            addPseudoEntryWithColor value:self class nameListEntryForFullyCovered value:numFullyCovered value:userPreferences colorForInstrumentedFullyCoveredCode.
+        ].
+
+    ].
+    ^ categoryList
+
+    "Created: / 05-02-2000 / 13:42:11 / cg"
+    "Modified: / 31-08-2011 / 16:26:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 08-09-2011 / 04:56:47 / cg"
+!
+
+makeDependent
+    Smalltalk addDependent:self.
+"/    ChangeSet addDependent:self.
+
+    "Modified: / 10-11-2006 / 17:57:13 / cg"
+!
+
+makeIndependent
+    Smalltalk removeDependent:self.
+"/    ChangeSet removeDependent:self.
+!
+
+release
+    super release.
+
+    filterClassVars removeDependent:self.
+    methodVisibilityHolder removeDependent:self.
+    noAllItem removeDependent:self.
+    packageFilterOnInput removeDependent:self.
+    selectedProtocolIndices removeDependent:self.
+    variableFilter removeDependent:self.
+!
+
+updateList
+    |prevClasses prevSelection newSelection newList oldList sameContents selectedProtocolsHolder rawList|
+
+    selectedProtocolsHolder := self selectedProtocols.
+    
+    prevClasses := classes isNil ifTrue:[ #() ] ifFalse:[ classes copy ].
+    oldList := self protocolList value copy.
+    newList := self listOfMethodCategories.
+
+    "/ oldListSize := self browserNameList size.
+    "/ newListSize := newList size.
+    self selectedProtocolIndices removeDependent:self.
+    sameContents := self updateListFor:newList.
+    self selectedProtocolIndices addDependent:self.
+    sameContents ifFalse:[
+        prevSelection := lastSelectedProtocols ? (selectedProtocolsHolder value) ? #().
+        "/ prevSelection := selectedProtocolsHolder value ? lastSelectedProtocols ? #().
+
+        rawList := self rawProtocolList value.
+        newSelection := prevSelection select:[:item | rawList includes:item string].
+
+        newSelection size > 0 ifTrue:[
+            "/ force change (for dependents)
+"/                selectedProtocolsHolder value:nil.
+"/                selectedProtocolsHolder value:newSelection.
+            selectedProtocolsHolder setValue:newSelection.
+            selectedProtocolsHolder removeDependent:self.    
+            selectedProtocolsHolder changed:#value.
+            selectedProtocolsHolder addDependent:self.    
+        ] ifFalse:[
+            prevSelection := selectedProtocolsHolder value.
+            selectedProtocolsHolder value:nil.
+        ].
+        (prevSelection size > 0 or:[newSelection size > 0]) ifTrue:[
+            self enqueueDelayedUpdateOutputGenerator.
+            "/ self updateOutputGenerator.
+        ].
+
+"/        prevSelection notNil ifTrue:[
+"/            lastSelectedProtocols := prevSelection.
+"/        ].
+    ] ifTrue:[
+        "/ same list - but classes might have changed
+        "/ that is the case, if the class selection has been changed,
+        "/ to another class which has the same categories.
+        (prevClasses size ~= classes size 
+        or:[prevClasses asOrderedCollection ~= (classes ? #()) asOrderedCollection ]) ifTrue:[
+            (newList size > 0 or:[oldList size > 0]) ifTrue:[
+                self updateOutputGenerator
+            ]
+        ] ifFalse:[
+"/                self protocolList value:newList.
+        ]
+    ].
+    listValid := true.
+
+    "Created: / 05-02-2000 / 13:42:11 / cg"
+    "Modified: / 23-03-2012 / 15:53:41 / cg"
+! !
+
+!MethodCategoryList methodsFor:'private-info'!
+
+methodInfoFor:aMethod in:mclass selector:selector
+    ^ self methodInfoFor:aMethod in:mclass selector:selector lazy:false
+
+    "Modified: / 08-08-2011 / 18:21:03 / cg"
+!
+
+methodInfoFor:aMethod in:mclass selector:selector lazy:lazy
+    |info isDocumentationMethod isVersionMethod def methodsPackage|
+
+    "/ the first at:ifAbsent: is aktually not needed - it is here to
+    "/ reduce the average blocking time, and to allow for debugging the info generating
+    "/ code without deadlock
+    MethodInfoCacheAccessLock critical:[
+        info := MethodInfoCache at:aMethod "(mclass name,'>>',selector)" ifAbsent:nil.
+    ].
+    info isNil ifTrue:[
+        lazy ifTrue:[
+            "/ TODO: start a background thread to compute the stuff below,
+            "/ notify me to update the list, when all the lazy info is avail...
+        ] ifFalse:[
+            true "aMethod mclass language isSmalltalk" ifTrue:[
+                methodsPackage := aMethod package.
+
+                isVersionMethod := aMethod isVersionMethod.
+                isDocumentationMethod := isVersionMethod not and:[aMethod isDocumentationMethod].
+
+                info := CachedMethodInfo new.
+                info isObsolete:(aMethod isObsolete). "/ (aMethod isObsolete).
+                info sendsSuper:(aMethod superMessages notEmptyOrNil). "/ (aMethod superMessages notEmptyOrNil).
+                info isUncommented:(self methodIsMarkedAsUncommented:aMethod). "/ (self methodIsMarkedAsUncommented:aMethod).
+                info isDocumentationMethod:isDocumentationMethod.
+                info isLongMethod:(self methodIsMarkedAsLong:aMethod). "/ (self methodIsMarkedAsLong:aMethod).
+
+                methodsPackage ~= mclass package ifTrue:[
+                    methodsPackage ~= #'__NoProject__' ifTrue:[
+                        info isExtensionMethod:true.
+                        info isOverride:(
+                                          ((def := methodsPackage asPackageId projectDefinitionClass) notNil
+                                          and:[ (def methodOverwrittenBy:aMethod ) notNil ]) 
+                                        )
+                    ]
+                ] ifFalse:[
+                    info isExtensionMethod:false.
+                    info isOverride:false.
+                ].
+                info isRedefine:(
+                                    ( isVersionMethod not
+                                    and:[ isDocumentationMethod not
+                                    and:[ mclass superclass notNil
+                                    and:[ (mclass superclass whichClassIncludesSelector:selector ) notNil ]]]) 
+                                ).
+"/ too expensive - makes browser slow
+"/                info isRedefined:(
+"/                                    ( isVersionMethod not
+"/                                    and:[ isDocumentationMethod not
+"/                                    and:[ mclass allSubclasses contains:[:cls | cls includesSelector:selector ]]]) 
+"/                                ).
+
+                info isSubclassResponsibility:( aMethod sends:#subclassResponsibility or:#subclassResponsibility: ).
+                info isAnnotated:(aMethod hasAnnotation).
+
+                MethodInfoCacheAccessLock critical:[
+                    MethodInfoCache at:aMethod "(mclass name,'>>',selector)" put:info
+                ].
+            ].
+        ].
+    ].
+    ^ info
+
+    "Created: / 08-08-2011 / 18:18:14 / cg"
+!
+
+methodIsMarkedAsLong:aMethod
+    "if true, it will be also categorized under the pseudo category 'long'"
+
+    |src ast linesWithCode visitor|
+
+    src := aMethod source ? ''.
+    src asCollectionOfLines size < UserPreferences current numberOfLinesForLongMethod "~~30" ifTrue:[^ false].
+
+    "/ ok, it is long;
+    "/ but do not blame the user for writing documentation (dont count comments),
+    "/ or using literal arrays
+    RBParser notNil ifTrue:[
+        ast := RBParser parseMethod:src.
+        ast notNil ifTrue:[
+            visitor := RBProgramNodeVisitor new.
+            visitor pluggableNodeAction:
+                [:eachNode |
+                    |lno|
+                    lno := eachNode lineNumber.
+                    lno notNil ifTrue:[ linesWithCode add:lno ].
+                ].
+
+            linesWithCode := Set new.
+            ast acceptVisitor:visitor.
+            linesWithCode size < UserPreferences current numberOfLinesForLongMethod "~~30" ifTrue:[^ false].
+        ].
+    ].
+    ^ true.
+!
+
+methodIsMarkedAsUncommented:aMethod
+    "if true, it will be also categorized under the pseudo category 'undocumented'"
+
+    ^ aMethod comment isEmptyOrNil 
+    and:[aMethod isVersionMethod not]
+! !
+
+!MethodCategoryList methodsFor:'special'!
+
+addAdditionalProtocol:aProtocol forClass:aClass
+    "those are simulated - in ST/X, empty categories do not really exist; 
+     (because the category is an attribute of the method)
+     However, during browsing, it makes sense. Therefore, empty categories are
+     remembered here"
+
+    |categories|
+
+    AdditionalEmptyCategoriesPerClassName isNil ifTrue:[
+        AdditionalEmptyCategoriesPerClassName := Dictionary new.
+    ].
+    categories := AdditionalEmptyCategoriesPerClassName at:aClass name ifAbsent:nil.
+    categories isNil ifTrue:[
+        categories := Set new.
+        AdditionalEmptyCategoriesPerClassName at:aClass name put:categories.
+    ].
+    categories add:aProtocol.
+    aClass changed:#organization.                                                       "/ not really ... to force update
+    Smalltalk changed:#methodCategoryAdded with:(Array with:aClass with:aProtocol).     "/ not really ... to force update
+
+    "Modified (comment): / 01-08-2012 / 17:30:36 / cg"
+!
+
+additionalProtocolForClass:aClass
+    "those are simulated - in ST/X, empty categories do not really exist; 
+     (because the category is an attribute of the method)
+     However, during browsing, it makes sense. Therefore, empty categories are
+     remembered here"
+
+    AdditionalEmptyCategoriesPerClassName isNil ifTrue:[ ^ #() ].
+    ^ AdditionalEmptyCategoriesPerClassName at:aClass name ifAbsent:[ #() ].
+
+    "Modified (comment): / 01-08-2012 / 17:29:16 / cg"
+!
+
+clearLastSelectedProtocol
+    lastSelectedProtocols := nil
+!
+
+lastSelectedProtocols
+    ^ lastSelectedProtocols
+!
+
+removeAdditionalProtocol:aListOfProtocols forClass:aClass
+    "those are simulated - in ST/X, empty categories do not really exist; 
+     (because the category is an attribute of the method)
+     However, during browsing, it makes sense. Therefore, empty categories are
+     remembered here"
+
+    |categories|
+
+    AdditionalEmptyCategoriesPerClassName isNil ifTrue:[^ self].
+
+    categories := AdditionalEmptyCategoriesPerClassName at:aClass name ifAbsent:nil.
+    categories isNil ifTrue:[^ self].
+    categories removeAllFoundIn:aListOfProtocols.
+    categories isEmpty ifTrue:[
+        AdditionalEmptyCategoriesPerClassName removeKey:aClass name.
+    ].
+
+    aClass changed:#organization.                      "/ not really ... to force update
+    Smalltalk changed:#methodCategoriesRemoved with:(Array with:aClass with:aListOfProtocols).     "/ not really ... to force update
+
+    "Modified (comment): / 01-08-2012 / 17:29:59 / cg"
+!
+
+removeAllAdditionalProtocol
+    "those are simulated - in ST/X, empty categories do not really exist; 
+     (because the category is an attribute of the method)
+     However, during browsing, it makes sense. Therefore, empty categories are
+     remembered here"
+
+    AdditionalEmptyCategoriesPerClassName := nil
+
+    "Modified (comment): / 01-08-2012 / 17:30:05 / cg"
+!
+
+removeAllAdditionalProtocolForClass:aClass
+    "those are simulated - in ST/X, empty categories do not really exist; 
+     (because the category is an attribute of the method)
+     However, during browsing, it makes sense. Therefore, empty categories are
+     remembered here"
+
+    AdditionalEmptyCategoriesPerClassName notNil ifTrue:[
+        AdditionalEmptyCategoriesPerClassName removeKey:aClass name ifAbsent:nil
+    ].
+
+    "Modified (comment): / 01-08-2012 / 17:30:10 / cg"
+!
+
+renameAdditionalProtocol:oldName to:newName forClass:aClass
+    "those are simulated - in ST/X, empty categories do not really exist; 
+     (because the category is an attribute of the method)
+     However, during browsing, it makes sense. Therefore, empty categories are
+     remembered here"
+
+    |categories|
+
+    AdditionalEmptyCategoriesPerClassName isNil ifTrue:[^ self].
+    categories := AdditionalEmptyCategoriesPerClassName at:aClass name ifAbsent:nil.
+    categories isNil ifTrue:[^ self].
+    categories remove:oldName ifAbsent:nil.
+    categories add:newName.
+
+    aClass changed:#organization.                      "/ not really ... to force update
+    Smalltalk changed:#methodCategoryRenamed with:(Array with:aClass with:oldName with:newName).     "/ not really ... to force update
+
+    "Modified (comment): / 01-08-2012 / 17:30:16 / cg"
+! !
+
+!MethodCategoryList::CachedMethodInfo class methodsFor:'initialization'!
+
+initialize
+    FlagObsolete := 1.
+    FlagSendsSuper := 2.
+    FlagIsUncommented := 4.
+    FlagIsDocumentationMethod := 8.
+    FlagIsLongMethod := 16.
+    FlagIsExtension := 32.
+    FlagIsOverride := 64.
+    FlagIsRedefine := 128.
+    FlagIsSubclassResponsibility := 128.
+    FlagIsTest := 256.
+    FlagIsAnnotated := 512.
+    FlagIsRedefined := 1024.
+
+    "Modified: / 08-03-2010 / 18:33:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-09-2011 / 10:04:30 / cg"
+! !
+
+!MethodCategoryList::CachedMethodInfo class methodsFor:'instance creation'!
+
+new
+    ^ self basicNew flags:0.
+! !
+
+!MethodCategoryList::CachedMethodInfo methodsFor:'accessing'!
+
+flags:something
+    flags := something.
+!
+
+isAnnotated
+    ^ (flags ? 0) bitTest: FlagIsAnnotated
+
+    "Created: / 07-09-2011 / 10:04:56 / cg"
+!
+
+isAnnotated:aBoolean
+    flags := aBoolean
+                ifTrue:[ flags bitOr: FlagIsAnnotated ]
+                ifFalse:[ flags bitClear: FlagIsAnnotated]
+
+    "Created: / 07-09-2011 / 10:04:48 / cg"
+!
+
+isDocumentationMethod
+    ^ (flags ? 0) bitTest: FlagIsDocumentationMethod
+!
+
+isDocumentationMethod:aBoolean
+    flags := aBoolean
+                ifTrue:[ flags bitOr: FlagIsDocumentationMethod ]
+                ifFalse:[ flags bitClear: FlagIsDocumentationMethod]
+!
+
+isExtensionMethod
+    ^ (flags ? 0) bitTest: FlagIsExtension
+!
+
+isExtensionMethod:aBoolean
+    flags := aBoolean
+                ifTrue:[ flags bitOr: FlagIsExtension ]
+                ifFalse:[ flags bitClear: FlagIsExtension]
+!
+
+isLongMethod
+    ^ (flags ? 0) bitTest: FlagIsLongMethod
+!
+
+isLongMethod:aBoolean
+    flags := aBoolean
+                ifTrue:[ flags bitOr: FlagIsLongMethod ]
+                ifFalse:[ flags bitClear: FlagIsLongMethod]
+!
+
+isObsolete
+    ^ (flags ? 0) bitTest: FlagObsolete
+!
+
+isObsolete:aBoolean
+    flags := aBoolean
+                ifTrue:[ flags bitOr: FlagObsolete ]
+                ifFalse:[ flags bitClear: FlagObsolete]
+!
+
+isOverride
+    ^ (flags ? 0) bitTest: FlagIsOverride
+!
+
+isOverride:aBoolean
+    flags := aBoolean
+                ifTrue:[ flags bitOr: FlagIsOverride ]
+                ifFalse:[ flags bitClear: FlagIsOverride]
+!
+
+isRedefine
+    ^ (flags ? 0) bitTest: FlagIsRedefine
+!
+
+isRedefine:aBoolean
+    flags := aBoolean
+                ifTrue:[ flags bitOr: FlagIsRedefine ]
+                ifFalse:[ flags bitClear: FlagIsRedefine]
+!
+
+isRedefined
+    ^ (flags ? 0) bitTest: FlagIsRedefined
+!
+
+isRedefined:aBoolean
+    flags := aBoolean
+                ifTrue:[ flags bitOr: FlagIsRedefined ]
+                ifFalse:[ flags bitClear: FlagIsRedefined]
+!
+
+isSubclassResponsibility
+    ^ (flags ? 0) bitTest: FlagIsSubclassResponsibility
+!
+
+isSubclassResponsibility:aBoolean
+    flags := aBoolean
+                ifTrue:[ flags bitOr: FlagIsSubclassResponsibility ]
+                ifFalse:[ flags bitClear: FlagIsSubclassResponsibility]
+!
+
+isTest
+    ^ (flags ? 0) bitTest: FlagIsTest
+
+    "Created: / 08-03-2010 / 18:41:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isUncommented
+    ^ (flags ? 0) bitTest: FlagIsUncommented
+!
+
+isUncommented:aBoolean 
+    flags := aBoolean
+                ifTrue:[ flags bitOr: FlagIsUncommented ]
+                ifFalse:[ flags bitClear: FlagIsUncommented]
+!
+
+sendsSuper
+    ^ (flags ? 0) bitTest: FlagSendsSuper
+!
+
+sendsSuper:aBoolean
+    flags := aBoolean
+                ifTrue:[ flags bitOr: FlagSendsSuper ]
+                ifFalse:[ flags bitClear: FlagSendsSuper]
+! !
+
+!MethodCategoryList::MissingMethod class methodsFor:'instance creation'!
+
+mclass:aClass selector:aSelector
+    ^ self new mclass:aClass selector:aSelector
+! !
+
+!MethodCategoryList::MissingMethod methodsFor:'accessing'!
+
+mclass
+    ^ mclass
+!
+
+mclass:aClass
+    mclass := aClass
+!
+
+mclass:aClass selector:aSelector
+    mclass := aClass.
+    selector := aSelector.
+!
+
+selector
+    ^ selector
+!
+
+selector:something
+    selector := something.
+!
+
+source
+    ^ (SmalltalkCodeGeneratorTool basicNew
+        codeFor_shouldImplementFor:selector inClass:mclass) 
+            colorizeAllWith:Color red
+
+    "Modified: / 31-01-2011 / 18:29:17 / cg"
+! !
+
+!MethodCategoryList::MissingMethod methodsFor:'printing & storing'!
+
+printStringForBrowserWithSelector:selector inClass:aClass
+    ^ (selector,' (** missing required **)') colorizeAllWith:Color red
+! !
+
+!MethodCategoryList class methodsFor:'documentation'!
+
+version
+    ^ '$Id: Tools__MethodCategoryList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_MethodCategoryList.st,v 1.89 2012/11/07 16:34:06 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id:: Tools__MethodCategoryList.st 8083 2013-01-14 11:48:37Z vranyj1                                                         $'
+! !
+
+MethodCategoryList initialize!
+MethodCategoryList::CachedMethodInfo initialize!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__MethodList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,1830 @@
+"
+ COPYRIGHT (c) 2000 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 }"
+
+BrowserList subclass:#MethodList
+	instanceVariableNames:'classes selectedMethodNameIndices methodList lastSelectedMethods
+		browserNameList variableFilter filterClassVars updateProcess
+		lastShowClass lastShowCategory lastShowClassFirst
+		showMethodInheritance lastMethodClass lastMethodClassesSubclasses
+		classAndSelectorsRedefinedBySubclassesOfClass showClass
+		showMethodComplexity showMethodTypeIcon
+		showImageResourceMethodsImages showSyntheticMethods'
+	classVariableNames:'ShowComplexityValue'
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+!MethodList class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2000 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.
+"
+!
+
+documentation
+"
+    I implement the method list in the new system browser
+"
+! !
+
+!MethodList class methodsFor:'interface specs'!
+
+singleMethodWindowSpec
+    "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:MethodList andSelector:#singleMethodWindowSpec
+     MethodList new openInterface:#singleMethodWindowSpec
+    "
+
+    <resource: #canvas>
+
+    ^
+     #(#FullSpec
+	#name: #singleMethodWindowSpec
+	#window:
+       #(#WindowSpec
+	  #label: 'SingleSelectorList'
+	  #name: 'SingleSelectorList'
+	  #min: #(#Point 0 0)
+	  #max: #(#Point 1024 721)
+	  #bounds: #(#Rectangle 12 22 312 322)
+	)
+	#component:
+       #(#SpecCollection
+	  #collection: #(
+	   #(#LabelSpec
+	      #label: 'MethodName'
+	      #name: 'MethodLabel'
+	      #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+	      #translateLabel: true
+	      #labelChannel: #methodLabelHolder
+	      #menu: #menuHolder
+	   )
+	   )
+
+	)
+      )
+
+    "Modified: / 1.3.2000 / 20:50:15 / cg"
+!
+
+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:Tools::MethodList andSelector:#windowSpec
+     Tools::MethodList new openInterface:#windowSpec
+     Tools::MethodList open
+    "
+
+    <resource: #canvas>
+
+    ^
+     #(FullSpec
+	name: windowSpec
+	window:
+       (WindowSpec
+	  label: 'SelectorList'
+	  name: 'SelectorList'
+	  min: (Point 0 0)
+	  bounds: (Rectangle 0 0 300 300)
+	)
+	component:
+       (SpecCollection
+	  collection: (
+	   (SequenceViewSpec
+	      name: 'List'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      tabable: true
+	      model: selectedMethodNameIndices
+	      menu: menuHolder
+	      hasHorizontalScrollBar: true
+	      hasVerticalScrollBar: true
+	      miniScrollerHorizontal: true
+	      isMultiSelect: true
+	      valueChangeSelector: selectionChangedByClick
+	      useIndex: true
+	      sequenceList: browserNameList
+	      doubleClickChannel: doubleClickChannel
+	      properties:
+	     (PropertyListDictionary
+		canDropSelector: canDropContext:
+		dragArgument: nil
+		dropArgument: nil
+		dropSelector: doDropContext:
+	      )
+	    )
+	   )
+
+	)
+      )
+! !
+
+!MethodList class methodsFor:'plugIn spec'!
+
+aspectSelectors
+    "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."
+
+    "Return a description of exported aspects;
+     these can be connected to aspects of an embedding application
+     (if this app is embedded in a subCanvas)."
+
+    ^ #(
+	#(doubleClickChannel action)
+	#filterClassVars
+	#forceGeneratorTrigger
+	#immediateUpdate
+	#inGeneratorHolder
+	#menuHolder
+	#methodCategoryHolder
+	#packageFilter
+	#selectedMethods
+	#selectionChangeCondition
+	#showCoverageInformation
+	#showImageResourceMethodsImages
+	#showMethodComplexity
+	#showMethodInheritance
+	#showMethodTypeIcon
+	#sortBy
+	#updateTrigger
+	#variableFilter
+	#showSyntheticMethods
+      ).
+
+    "Modified: / 13-04-2012 / 16:11:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!MethodList methodsFor:'aspects'!
+
+browserNameList
+    browserNameList isNil ifTrue:[
+	browserNameList := List new.
+    ].
+    ^ browserNameList.
+
+    "Modified: / 31.1.2000 / 00:42:44 / cg"
+    "Created: / 5.2.2000 / 22:38:32 / cg"
+!
+
+defaultSlaveModeValue
+    ^ false.
+!
+
+filterClassVars
+    filterClassVars isNil ifTrue:[
+	filterClassVars := false asValue.
+	filterClassVars addDependent:self
+    ].
+    ^  filterClassVars
+!
+
+filterClassVars:aValueHolder
+    filterClassVars notNil ifTrue:[
+	filterClassVars removeDependent:self
+    ].
+    filterClassVars := aValueHolder.
+    filterClassVars notNil ifTrue:[
+	filterClassVars addDependent:self
+    ].
+!
+
+methodLabelHolder
+    ^ self pseudoListLabelHolder
+
+    "Created: / 1.3.2000 / 20:50:07 / cg"
+!
+
+methodList
+    ^ methodList
+!
+
+selectedMethodNameIndices
+    selectedMethodNameIndices isNil ifTrue:[
+	selectedMethodNameIndices := ValueHolder new.
+	selectedMethodNameIndices addDependent:self
+    ].
+    ^ selectedMethodNameIndices.
+
+    "Modified: / 5.2.2000 / 00:31:48 / cg"
+    "Created: / 5.2.2000 / 22:59:31 / cg"
+!
+
+selectedMethods
+    ^ self selectionHolder
+!
+
+selectedMethods:aValueHolder
+    ^ self selectionHolder:aValueHolder
+!
+
+showImageResourceMethodsImages
+    showImageResourceMethodsImages isNil ifTrue:[
+	showImageResourceMethodsImages := false asValue.
+	showImageResourceMethodsImages addDependent:self
+    ].
+    ^  showImageResourceMethodsImages
+!
+
+showImageResourceMethodsImages:aValueHolder
+    showImageResourceMethodsImages notNil ifTrue:[
+	showImageResourceMethodsImages removeDependent:self
+    ].
+    showImageResourceMethodsImages := aValueHolder.
+    showImageResourceMethodsImages notNil ifTrue:[
+	showImageResourceMethodsImages addDependent:self
+    ].
+!
+
+showMethodComplexity
+    showMethodComplexity isNil ifTrue:[
+	showMethodComplexity := false asValue.
+	showMethodComplexity addDependent:self
+    ].
+    ^  showMethodComplexity
+!
+
+showMethodComplexity:aValueHolder
+    showMethodComplexity notNil ifTrue:[
+	showMethodComplexity removeDependent:self
+    ].
+    showMethodComplexity := aValueHolder.
+    showMethodComplexity notNil ifTrue:[
+	showMethodComplexity addDependent:self
+    ].
+!
+
+showMethodInheritance
+    showMethodInheritance isNil ifTrue:[
+	showMethodInheritance := false asValue.
+	showMethodInheritance addDependent:self
+    ].
+    ^  showMethodInheritance
+!
+
+showMethodInheritance:aValueHolder
+    showMethodInheritance notNil ifTrue:[
+	showMethodInheritance removeDependent:self
+    ].
+    showMethodInheritance := aValueHolder.
+    showMethodInheritance notNil ifTrue:[
+	showMethodInheritance addDependent:self
+    ].
+!
+
+showMethodTypeIcon
+    showMethodTypeIcon isNil ifTrue:[
+	showMethodTypeIcon := true asValue.
+	showMethodTypeIcon addDependent:self
+    ].
+    ^  showMethodTypeIcon
+!
+
+showMethodTypeIcon:aValueHolder
+    showMethodTypeIcon notNil ifTrue:[
+	showMethodTypeIcon removeDependent:self
+    ].
+    showMethodTypeIcon := aValueHolder.
+    showMethodTypeIcon notNil ifTrue:[
+	showMethodTypeIcon addDependent:self
+    ].
+!
+
+showSyntheticMethods
+    showSyntheticMethods isNil ifTrue:[
+        showSyntheticMethods := false asValue.
+        showSyntheticMethods addDependent:self
+    ].
+    ^  showSyntheticMethods
+
+    "Created: / 13-04-2012 / 16:03:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showSyntheticMethods:aValueHolder
+    showSyntheticMethods notNil ifTrue:[
+        showSyntheticMethods removeDependent:self
+    ].
+    showSyntheticMethods := aValueHolder.
+    showSyntheticMethods notNil ifTrue:[
+        showSyntheticMethods addDependent:self
+    ].
+
+    "Created: / 13-04-2012 / 16:03:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+variableFilter
+    variableFilter isNil ifTrue:[
+	variableFilter := nil asValue.
+	variableFilter addDependent:self
+    ].
+    ^  variableFilter
+!
+
+variableFilter:aValueHolder
+    variableFilter notNil ifTrue:[
+	variableFilter removeDependent:self
+    ].
+    variableFilter := aValueHolder.
+    variableFilter notNil ifTrue:[
+	variableFilter addDependent:self
+    ].
+! !
+
+!MethodList methodsFor:'change & update'!
+
+delayedUpdate:something with:aParameter from:changedObject
+    |cls sel oldMethod newMethod methods newSelection
+     selectionHolder selection needSelectionChange|
+
+    selectionHolder := self selectedMethods.
+    selection := selectionHolder value.
+
+    changedObject == Smalltalk ifTrue:[
+        classes notNil ifTrue:[
+            something == #classDefinition ifTrue:[
+                cls := aParameter.
+                (classes contains:[:aClass | aClass name == cls name]) ifFalse:[
+                    ^ self   "/ I dont care for that class
+                ].
+                classes := classes collect:[:eachClass | eachClass isMeta ifTrue:[
+                                                             (Smalltalk at:eachClass theNonMetaclass name) class 
+                                                         ] ifFalse:[
+                                                             Smalltalk at:eachClass name
+                                                         ]
+                                           ].
+                self invalidateList.
+"/                self updateList.
+                ^ self.
+            ].
+
+            something == #methodCategory ifTrue:[
+                "/ ignore here - methodCategoryList will tell me if required
+                ^ self
+            ].
+            (something == #classOrganization
+            or:[ something == #methodCategoryAdded
+            or:[ something == #methodCategoryRemoved
+            or:[ something == #methodCategoriesRemoved
+            or:[ something == #methodCategoryRenamed ]]]]) ifTrue:[
+                "/ ignore here - methodCategoryList will tell me if required
+                ^ self
+            ].
+
+            (something == #methodInClass 
+            or:[something == #methodCoverageInfo]) ifTrue:[
+                "/ a method has been added/changed
+                cls := aParameter at:1.
+                (classes includesIdentical:cls) ifTrue:[
+                    sel := aParameter at:2.
+                    oldMethod := aParameter at:3.
+                    newMethod := cls compiledMethodAt:sel.
+                    (oldMethod notNil and:[newMethod notNil]) ifTrue:[
+                        "a method was changed & acccepted;
+                         No need for a rescan of the methodDictionary;
+                         however, ensure that the refs to the old method are updated
+                        "
+                        methods := selection.
+                        methods size > 0 ifTrue:[
+                            (methods includesIdentical:oldMethod) ifTrue:[
+                                needSelectionChange := true.
+                            ]
+                        ].
+                        methodList replaceAllIdentical:oldMethod with:newMethod.
+                        lastSelectedMethods notNil ifTrue:[
+                            lastSelectedMethods replaceAllIdentical:oldMethod with:newMethod
+                        ].
+                        methods size > 0 ifTrue:[
+                            methods := methods asOrderedCollection.
+                            methods replaceAllIdentical:oldMethod with:newMethod.
+                        ].
+
+                        needSelectionChange == true ifTrue:[
+                            selectionHolder setValue:methods.
+                            "/ self enqueueDelayedMethodsSelectionChanged.
+                            "/ need this to inform my browser that method was changed
+                            "/ by someone else.
+                            selectionHolder changed.
+                        ].
+                        "/JV@2011-07-22: Update always - I need to see immediately that
+                        "/the method has changed. Also, add/remove breakpoint etc.
+
+"/                        (variableFilter value size > 0
+"/                        or:[oldMethod package ~= newMethod package
+"/                        or:[oldMethod resources ~= newMethod resources
+"/                        or:[showMethodComplexity value == true]]])
+                        self autoUpdateOnChange ifTrue:[
+                            "/ only update that method's entry
+                            self updateListEntryFor:newMethod.    
+                            "/ sigh - must invalidate
+                            "/ self invalidateList.
+                        ].
+                        ^ self.
+                    ].
+                    "/ method was added - update the methodList
+                    "/ Q: is this needed (methodCategoryList should send me a new inGenerator)
+                    self invalidateList.
+                ].
+                ^ self.
+            ].
+
+            something == #methodInClassRemoved ifTrue:[
+                cls := aParameter at:1.
+                (classes includesIdentical:cls) ifTrue:[
+                    sel := aParameter at:2.
+                    "/ method was removed - update the methodList
+                    "/ Q: is this needed (methodCategoryList should send me a new inGenerator)
+                    self invalidateList.
+                ].
+                ^ self.
+            ].
+
+            something == #methodCoverageInfo ifTrue:[
+                "/ already checked if it is one of my classes
+                self updateListEntryFor:aParameter.    
+"/                self enqueueDelayedUpdateList.
+"/                listValid == true ifTrue:[
+"/                    self invalidateList.
+"/                ].
+                ^ self.
+            ].
+
+            (something == #methodTrap 
+            or:[ something == #lastTestRunResult 
+            or:[ something == #privacyOfMethod ]]) ifTrue:[
+                cls := aParameter at:1.
+                sel := aParameter at:2.
+                (classes includesIdentical:cls) ifFalse:[ ^ self].
+
+                newMethod := cls compiledMethodAt:sel.
+                newMethod isNil ifTrue:[
+                    self invalidateList.
+                    ^ self
+                ].
+
+                ((something == #privacyOfMethod) or:[something == #lastTestRunResult]) ifTrue:[
+                    self updateListEntryFor:newMethod.    
+                ].
+
+                (something == #methodTrap) ifTrue:[ 
+                    newMethod isWrapped ifTrue:[
+                        oldMethod := newMethod originalMethod
+                    ] ifFalse:[
+                        selection size > 0 ifTrue:[
+                            oldMethod := selection detect:[:each | each isWrapped and:[each originalMethod == newMethod]] ifNone:nil.
+                        ]
+                    ].
+
+                    selection size > 0 ifTrue:[
+                        (selection includesIdentical:oldMethod) ifTrue:[
+                            needSelectionChange := true.
+                        ]
+                    ].
+                    methodList replaceAllIdentical:oldMethod with:newMethod.
+                    lastSelectedMethods notNil ifTrue:[
+                        lastSelectedMethods replaceAllIdentical:oldMethod with:newMethod
+                    ].
+                    selection size > 0 ifTrue:[
+                        selection := selection asOrderedCollection.
+                        selection replaceAllIdentical:oldMethod with:newMethod.
+                    ].
+                    needSelectionChange == true ifTrue:[
+                        selectionHolder changed.
+                    ].
+
+                    "/ actually, could just change that single item ...
+                    "/ ... might be cheaper, if list is huge.
+                    "/ only update that methods entry
+                    self updateListEntryFor:newMethod.    
+                    "/ self invalidateList.
+                ].
+                ^ self
+            ].
+
+            (something == #projectOrganization
+            or:[something == #lastTestRunResult]) ifTrue:[
+                aParameter notNil ifTrue:[
+                    cls := aParameter at:1.
+                    cls notNil ifTrue:[
+                        ((classes includesIdentical:cls theNonMetaclass)
+                        or:[(classes includesIdentical:cls theMetaclass)]) ifTrue:[
+                            self invalidateList.
+                        ].
+                    ].
+                ] ifFalse:[
+                    self invalidateList.
+                ].
+                ^ self
+            ].
+
+            "/ everything else is ignored
+            "/ self halt.
+        ].
+        ^ self
+    ].
+
+"/    something == #organization ifTrue:[
+"/self halt:'no longer'.
+"/^ self.
+"/        "/ a methods cateory has changed
+"/        (classes includesIdentical:changedObject) ifTrue:[
+"/            aParameter isSymbol ifTrue:[
+"/                "/ a method with a new category
+"/                (self methodList includesIdentical:(changedObject compiledMethodAt:aParameter)) ifTrue:[
+"/                    self invalidateList.
+"/                ].
+"/                ^ self.
+"/            ].
+"/            "/ a new category (no method yet)
+"/            self invalidateList
+"/        ].
+"/        ^ self
+"/    ].
+
+"/    something == #methodDictionary ifTrue:[
+"/self halt:'no longer'.
+"/^ self.
+"/        "/ a method has been added/removed
+"/        (classes includesIdentical:changedObject) ifTrue:[
+"/            aParameter isArray ifTrue:[
+"/                sel := aParameter at:1.
+"/                oldMethod := aParameter at:2.
+"/                newMethod := changedObject compiledMethodAt:sel.
+"/                oldMethod notNil ifTrue:[
+"/                    "a method was changed & acccepted;
+"/                     No need for a rescan of the methodDictionary;
+"/                     however, ensure that the refs to the old method are updated
+"/                    "
+"/                    methods := selection.
+"/                    methods size > 0 ifTrue:[
+"/                        (methods includesIdentical:oldMethod) ifTrue:[
+"/                            needSelectionChange := true.
+"/                        ]
+"/                    ].
+"/                    methodList replaceAllIdentical:oldMethod with:newMethod.
+"/                    lastSelectedMethods notNil ifTrue:[
+"/                        lastSelectedMethods replaceAllIdentical:oldMethod with:newMethod
+"/                    ].
+"/                    methods size > 0 ifTrue:[
+"/                        methods := methods asOrderedCollection.
+"/                        methods replaceAllIdentical:oldMethod with:newMethod.
+"/                    ].
+"/                    needSelectionChange == true ifTrue:[
+"/                        selectionHolder setValue:methods.
+"/                        selectionHolder changed.
+"/                    ].
+"/                    ^ self.
+"/                ]
+"/            ].
+"/            "/ class has changed must update the methodList
+"/            self invalidateList.
+"/        ].
+"/        ^ self.
+"/    ].
+
+"/    something == #projectOrganization ifTrue:[
+"/        ((classes includesIdentical:changedObject theNonMetaclass)
+"/        or:[(classes includesIdentical:changedObject theMetaclass)]) ifTrue:[
+"/            self invalidateList.
+"/        ].
+"/        ^ self
+"/    ].
+
+    changedObject == sortBy ifTrue:[
+        listValid ~~ true ifTrue:[  "/ could be nil
+            inGeneratorHolder value isNil ifTrue:[
+                "/ ok, no need to react on that one 
+                "/ (will invalidate anyway, once I have more info at hand)
+                ^ self
+            ].
+        ].
+        self invalidateList.
+        ^ self
+    ].
+
+    (changedObject == variableFilter
+    or:[changedObject == filterClassVars
+    or:[changedObject == showMethodInheritance
+    or:[changedObject == showMethodComplexity]]]) ifTrue:[
+        self invalidateList.
+        ^  self
+    ].
+
+    changedObject == selectedMethodNameIndices ifTrue:[
+        newSelection := self selectedMethodNameIndices value collect:[:idx | methodList at:idx].
+        newSelection ~= selection ifTrue:[
+            selectionHolder value:newSelection.
+            lastSelectedMethods := newSelection.
+            lastSelectedMethods notNil ifTrue:[
+                lastSelectedMethods := lastSelectedMethods asOrderedCollection
+            ].
+        ] ifFalse:[
+            "/ a reselect - force update
+"/            selection size == 1 ifTrue:[
+                selectionHolder setValue:newSelection.
+                selectionHolder changed:#value.
+"/            ].
+        ].
+        ^ self 
+    ].
+    changedObject == selectionHolder ifTrue:[
+        self selectedMethodsChanged.
+        lastSelectedMethods := selectionHolder value.
+        lastSelectedMethods notNil ifTrue:[
+            lastSelectedMethods := lastSelectedMethods asOrderedCollection
+        ].
+        ^ self
+    ].
+"/    something == #methodTrap ifTrue:[
+"/self halt:'no longer'.
+"/^ self.
+"/        (classes includesIdentical:changedObject) ifTrue:[
+"/            newMethod := changedObject compiledMethodAt:aParameter.
+"/            newMethod isNil ifTrue:[
+"/                self invalidateList.
+"/                ^ self
+"/            ].
+"/            newMethod isWrapped ifTrue:[
+"/                oldMethod := newMethod originalMethod
+"/            ] ifFalse:[
+"/                selection size > 0 ifTrue:[
+"/                    oldMethod := selection detect:[:each | each isWrapped and:[each originalMethod == newMethod]] ifNone:nil.
+"/                ]
+"/            ].
+"/
+"/            selection size > 0 ifTrue:[
+"/                (selection includesIdentical:oldMethod) ifTrue:[
+"/                    needSelectionChange := true.
+"/                ]
+"/            ].
+"/"/            methodList replaceAllIdentical:oldMethod with:newMethod.
+"/            lastSelectedMethods notNil ifTrue:[
+"/                lastSelectedMethods replaceAllIdentical:oldMethod with:newMethod
+"/            ].
+"/            selection size > 0 ifTrue:[
+"/                selection := selection asOrderedCollection.
+"/                selection replaceAllIdentical:oldMethod with:newMethod.
+"/            ].
+"/            needSelectionChange == true ifTrue:[
+"/                selectionHolder changed.
+"/            ].
+"/            self invalidateList.
+"/            ^ self
+"/        ].
+"/        ^ self
+"/    ].
+    super delayedUpdate:something with:aParameter from:changedObject
+
+    "Created: / 05-02-2000 / 13:42:14 / cg"
+    "Modified: / 22-07-2011 / 18:12:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 05-06-2012 / 23:47:15 / cg"
+!
+
+selectedMethodsChanged
+    "the set of selected methods has changed;
+     update the selection-index collection (for the selectionInListView)"
+
+    |indices methods reverseMap
+     selectedMethodsHolder selectedMethods selectedMethodNameIndicesHolder|
+
+    methods := methodList ? #().
+    methods size == 0 ifTrue:[
+	"/ this may happen during early startup,
+	"/ when invoked with a preset methodSelection,
+	"/ and the methodGenerator has not yet been setup
+	"/ to not clobber the selection, defer the update
+	"/ until the methodList arrives ...
+	^ self
+    ].
+
+    selectedMethodsHolder := self selectedMethods.
+    selectedMethods := selectedMethodsHolder value.
+
+    "/ check if all is selected (likely)
+    ((selectedMethods size == methodList size)
+    and:[selectedMethods = methodList]) ifTrue:[
+	indices := (1 to:selectedMethods size)
+    ] ifFalse:[
+	selectedMethods size > 100 ifTrue:[
+	    "/ check if all is selected (likely)
+	    ((selectedMethods size == methodList size)
+	    and:[selectedMethods = methodList]) ifTrue:[
+		indices := (1 to:selectedMethods size)
+	    ] ifFalse:[
+		"/ for big collections, generate a reverse map
+		reverseMap := IdentityDictionary new.
+		methods keysAndValuesDo:[:idx :mthd | reverseMap at:mthd put:idx].
+		indices := selectedMethods collect:[:eachSelectedMethod |
+		    reverseMap at:eachSelectedMethod ifAbsent:0
+		]
+	    ]
+	] ifFalse:[
+	    indices := (selectedMethods ? #()) collect:[:eachSelectedMethod |
+		methods identityIndexOf:eachSelectedMethod.
+	    ]
+	].
+	indices := indices select:[:idx | idx ~= 0].
+    ].
+
+    selectedMethodNameIndicesHolder := self selectedMethodNameIndices.
+    selectedMethodNameIndicesHolder value ~= indices ifTrue:[
+	selectedMethodNameIndicesHolder value:indices.
+    ]
+!
+
+selectionChanged
+    |methods|
+
+    methods := ((self selectedMethodNameIndices value) ? #()) collect:[:idx | methodList at:idx].
+    methods notEmpty ifTrue:[
+	lastSelectedMethods := methods asOrderedCollection.
+    ].
+    "/ to allow reselect, change my valueHolder, even if the same collection
+"/    self selectedMethods value ~= methods ifTrue:[
+	self selectedMethods value:methods
+"/    ]
+
+    "Created: / 5.2.2000 / 13:42:14 / cg"
+    "Modified: / 5.2.2000 / 23:32:20 / cg"
+!
+
+selectionChangedByClick
+    "we are not interested in that - get another notification
+     via the changed valueHolder"
+
+!
+
+update:something with:aParameter from:changedObject
+    |cls mthd mustFlushInheritanceInfo|
+
+    mustFlushInheritanceInfo := true.
+
+    "/ some can be ignored immediately
+    changedObject == Smalltalk ifTrue:[
+        classes isNil ifTrue:[
+            ^ self.
+        ].
+        something isNil ifTrue:[
+            "/ self halt "/ huh - Smalltalk changed - so what ?
+            ^ self.
+        ].
+        something == #classComment ifTrue:[
+            ^ self.
+        ].
+        something == #classVariables ifTrue:[
+            ^ self.
+        ].
+        something == #organization ifTrue:[
+            ^ self.
+        ].
+        something == #methodCategory ifTrue:[
+            "/ ignore here - methodCategoryList will tell me if required
+            ^ self
+        ].
+        (something == #classOrganization
+        or:[ something == #methodCategoryAdded
+        or:[ something == #methodCategoryRemoved
+        or:[ something == #methodCategoriesRemoved
+        or:[ something == #methodCategoryRenamed ]]]]) ifTrue:[
+            "/ ignore here - methodCategoryList will tell me if required
+            ^ self
+        ].
+
+        something == #methodCoverageInfo ifTrue:[
+            self showCoverageInformation value ifFalse:[^ self].
+            mthd := aParameter.
+            (classes notNil and:[classes includesIdentical:mthd mclass]) ifFalse:[
+                ^ self   "/ I don't care for that class
+            ].
+            mustFlushInheritanceInfo := false.    
+        ].
+
+        (something == #methodTrap 
+        or:[ something == #methodPrivacy
+        or:[ something == #lastTestRunResult] ]) ifTrue:[
+            cls := aParameter at:1.
+            (classes includesIdentical:cls) ifFalse:[
+                ^ self   "/ I dont care for that class
+            ].
+            self window shown ifFalse:[
+                "JV@2011-11-17: Do not break the dependency here,
+                 because then the window won't get updates once
+                 deiconified -> leads to confusing behavior (browser
+                 shows obsolete info)"
+                "/changedObject removeDependent:self. "/ ?????
+                self invalidateList.
+                ^ self
+            ].
+            mustFlushInheritanceInfo := false.    
+        ].
+        something == #newClass ifTrue:[
+            ^ self.
+        ].
+
+        (something == #methodInClass 
+        or:[ something == #methodInClassRemoved ]) ifTrue:[
+            |sel|
+
+            sel := aParameter second.
+            (methodList contains:[:mthd | mthd selector = sel]) ifFalse:[
+                mustFlushInheritanceInfo := false.
+            ].
+        ].
+
+        mustFlushInheritanceInfo ifTrue:[
+            "/ as the organisation changes, flush my remembered redefinition-cache-info
+            classAndSelectorsRedefinedBySubclassesOfClass := nil.
+        ].
+
+        something == #classDefinition ifTrue:[
+            cls := aParameter.
+            (classes contains:[:aClass | aClass name == cls name]) ifFalse:[
+                ^ self   "/ I dont care for that class
+            ].
+            self enqueueDelayedUpdate:something with:aParameter from:changedObject.
+            ^ self.
+        ].
+        something == #classRemove ifTrue:[
+            ^ self.
+        ].
+        something == #classRename ifTrue:[
+            ^ self.
+        ].
+    ].
+
+    "/ these must lead to immediate update of the selectedMethods collection
+    "/ (otherwise, that collection might be updated too late, leading to
+    "/ an obsolete methods code being shown by the codeView.
+    (something == #methodInClass 
+    or:[ something == #methodCoverageInfo ]) ifTrue:[
+        "/ as the organisation changes, flush my remembered redefinition-cache-info
+        classAndSelectorsRedefinedBySubclassesOfClass := nil.
+        cls := aParameter at:1.
+        (classes includesIdentical:cls) ifFalse:[
+            ^ self   "/ I dont care for that class
+        ].
+        self enqueueDelayedUpdate:something with:aParameter from:changedObject.
+        ^ self
+    ].
+
+    something == #coverageInfo ifTrue:[
+        listValid == true ifTrue:[
+            self enqueueDelayedUpdateList
+        ].
+        ^ self.
+    ].
+
+    something == #methodInClassRemoved ifTrue:[
+        cls := aParameter at:1.
+        (classes includesIdentical:cls) ifFalse:[
+            ^ self   "/ I dont care for that class
+        ].
+    ].
+
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 17-11-2011 / 19:22:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 05-06-2012 / 23:41:50 / cg"
+! !
+
+!MethodList methodsFor:'drag & drop'!
+
+canDropContext:aDropContext
+    |methods|
+
+    aDropContext sourceWidget == aDropContext targetWidget ifTrue:[^ false].
+
+    methods := aDropContext dropObjects collect:[:obj | obj theObject].
+    (methods conform:[:aMethod | aMethod isMethod]) ifFalse:[^ false].
+
+    self masterApplication theSingleSelectedClass isNil ifTrue:[^ false].
+    ^ true
+
+    "Modified: / 13-09-2006 / 11:43:54 / cg"
+!
+
+doDropContext:aDropContext
+    |methods browser|
+
+    methods := aDropContext dropObjects collect:[:aDropObject | aDropObject theObject].
+    (methods conform:[:something | something isMethod]) ifFalse:[^ self].
+
+    browser := self masterApplication.
+    aDropContext dragType == DropContext dragTypeCopy ifTrue:[
+	browser
+	    copyMethods:methods
+	    toClass:(browser theSingleSelectedClass).
+    ] ifFalse:[
+	browser
+	    moveMethods:methods
+	    toClass:(browser theSingleSelectedClass).
+    ].
+
+    "Modified: / 13-09-2006 / 11:43:44 / cg"
+! !
+
+!MethodList methodsFor:'private'!
+
+isMethodToBeShown:aMethod
+    "invoked, when we get a change for aMethod which was previously not
+     in the list (for example, if I show a filtered list).
+     Check if that single method is to be shown now.
+     Used to speed up update for senders/string/implementors lists"
+
+    |generator|
+
+    generator := inGeneratorHolder value.
+    generator isNil ifTrue:[
+	^ false
+    ].
+
+    "/ generator generates nil-selector entries
+    "/ to pass multiple-class and multiple-protocol info
+
+    generator do:[:cls :cat :sel :mthd |
+	mthd == aMethod ifTrue:[
+	    (mthd isSynthetic not or:[self showSyntheticMethods value]) ifTrue:[
+		sel notNil ifTrue:[
+"/ cg: no longer filter those...
+"/                    (packageFilter value isNil
+"/                    or:[ packageFilter value includes:mthd package ]) ifTrue:[
+			^ true
+"/                    ]
+		]
+	    ].
+	    ^ false
+	]
+    ].
+    ^ false
+
+    "Created: / 17-08-2011 / 15:03:34 / cg"
+    "Modified: / 13-04-2012 / 17:57:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+listOfMethodNames
+    |methods entries selectorBag newNameList allClasses newClasses 
+     allCategories                 "allSelectors"
+     generator doShowClass doShowClassFirst doShowCategory enforceClassAndProtocolInList 
+     theMethod sortByClass anyMethodToWatch mclass
+     packageFilterValue nameListEntryForExtensions 
+     suppressInheritanceInfoNow startTime|
+
+    suppressInheritanceInfoNow := (showMethodInheritance value ? true) not.
+    startTime := Timestamp now.
+
+    generator := inGeneratorHolder value.
+    generator isNil ifTrue:[
+        ^ #()
+    ].
+    allClasses := IdentitySet new.
+    allCategories := IdentitySet new.
+    
+    "/ allSelectors := Set new.
+    
+    newClasses := IdentitySet new.
+    selectorBag := Bag new.
+    entries := OrderedCollection new.
+    enforceClassAndProtocolInList := false.
+    anyMethodToWatch := false.
+"/ no longer filter those
+"/    packageFilterValue := packageFilter value.
+
+    "/ generator generates nil-selector entries
+    "/ to pass multiple-class and multiple-protocol info
+    nameListEntryForExtensions := self class nameListEntryForExtensions.
+
+    generator do:[:cls :cat :sel :mthd |
+        |categoryIsExtensionsPseudoCategory|
+
+        categoryIsExtensionsPseudoCategory := (cat = nameListEntryForExtensions).
+
+        (cls isNil and:[ cat isNil and:[ sel isNil ] ]) ifTrue:[
+            enforceClassAndProtocolInList := true
+        ] ifFalse:[
+            cls notNil ifTrue:[
+                allClasses add:cls.
+            ].
+"/            cat notNil ifTrue:[
+"/                allCategories add:cat.
+"/            ].
+            "/ JV: Filter method through package filter
+            "/ but not, if it is an extension method and we are showing extensions
+            (mthd notNil 
+                and:[ (mthd isSynthetic not or:[ self showSyntheticMethods value ])
+                and:[ sel notNil ]]
+            ) ifTrue:[ 
+                (packageFilterValue isNil 
+                    or:[ (packageFilterValue includes:mthd package)
+                    or:[ categoryIsExtensionsPseudoCategory and:[ mthd isExtension] ]]
+                ) ifTrue:[
+                    entries add:(Array with:cls with:sel with:mthd).
+                    selectorBag add:sel.
+                    newClasses add:cls.
+                    
+                    allCategories add:mthd category.
+                    "/ allSelectors add:sel.
+                ]
+            ]
+        ].
+        (mthd notNil and:[ mthd isWrapped ]) ifTrue:[
+            (mthd isTiming or:[ mthd isCounting or:[ mthd isCountingMemoryUsage ] ]) ifTrue:[
+                anyMethodToWatch := true
+            ]
+        ].
+    ].
+    showMethodInheritance value ~~ false ifTrue:[
+        "/ collect redefinition information once (big speedup for #methodIsRedefinedbelow)
+        classAndSelectorsRedefinedBySubclassesOfClass isNil ifTrue:[
+            classAndSelectorsRedefinedBySubclassesOfClass := IdentityDictionary new.
+        ].
+        allClasses do:[:cls | 
+            |d|
+
+            d := classAndSelectorsRedefinedBySubclassesOfClass.
+            (d notNil and:[ (d includesKey:cls) not ]) ifTrue:[
+                cls isLoaded ifTrue:[
+                    d at:cls put:(self setOfAllSelectorsImplementedBelow:cls)
+                ]
+            ]
+        ].
+    ].
+    
+    "/ multiple classes must: add the className for some
+    
+    doShowClass := enforceClassAndProtocolInList or:[ allClasses size > 1 ].
+    
+    "/ multiple categories: must add the categorie for some
+    
+    doShowCategory := enforceClassAndProtocolInList or:[ allCategories size > 1 ].
+
+    doShowClassFirst := doShowClass.
+    doShowClassFirst := doShowClass and:[ sortBy value == #class ].
+    sortBy value == false ifTrue:[
+        "/ do not sort
+    ] ifFalse:[
+        (doShowClass not and:[ sortBy value == #class ]) ifTrue:[
+            "/ multiple classes must add the className for some
+            "/ check, if doShowClass must be enforced
+            entries do:[:entry | 
+                |cls sel mthd s needClass|
+
+                cls := entry at:1.
+                sel := entry at:2.
+                mthd := entry at:3.
+                doShowClass ifFalse:[
+                    doShowClass := (selectorBag occurrencesOf:sel) > 1
+                ].
+            ].
+        ].
+        sortByClass := doShowClass and:[ sortBy value == #class ].
+        sortByClass ifTrue:[
+            entries 
+                sort:[:a :b | 
+                    |nmA nmB clsNmA clsNmB nsNmA nsNmB|
+
+                    clsNmA := (a at:1) name.
+                    clsNmB := (b at:1) name.
+                    clsNmA = clsNmB ifTrue:[
+                        nmA := (a at:2) asSymbol selector.
+                        nmB := (b at:2) asSymbol selector.
+                        nmA = nmB ifTrue:[
+                            nsNmA := (a at:3) nameSpaceName.
+                            nsNmB := (b at:3) nameSpaceName.
+                            nsNmA < nsNmB
+                        ] ifFalse:[ nmA < nmB ]
+                    ] ifFalse:[
+                        clsNmA < clsNmB
+                    ]
+                ].
+        ] ifFalse:[
+            sortBy value == #category ifTrue:[
+                entries 
+                    sort:[:a :b | 
+                        |nmA nmB catA catB clsNmA clsNmB nsNmA nsNmB|
+
+                        catA := (a at:3) category.
+                        catB := (b at:3) category.
+                        catA = catB ifTrue:[
+                            nmA := (a at:2) asSymbol selector.
+                            nmB := (b at:2) asSymbol selector.
+                            nmA = nmB ifTrue:[
+                                clsNmA := (a at:1) name.
+                                clsNmB := (b at:1) name.
+                                clsNmA = clsNmB ifTrue:[
+                                    nsNmA := (a at:3) nameSpaceName.
+                                    nsNmB := (b at:3) nameSpaceName.
+                                    nsNmA < nsNmB
+                                ] ifFalse:[
+                                    clsNmA < clsNmB
+                                ]
+                            ] ifFalse:[ nmA < nmB ]
+                        ] ifFalse:[
+                            catA < catB
+                        ]
+                    ].
+            ] ifFalse:[
+                entries 
+                    sort:[:a :b | 
+                        |nmA nmB clsNmA clsNmB nsNmA nsNmB|
+
+                        nmA := (a at:2) asSymbol selector.
+                        nmB := (b at:2) asSymbol selector.
+                        nmA = nmB ifTrue:[
+                            clsNmA := (a at:1) name.
+                            clsNmB := (b at:1) name.
+                            clsNmA = clsNmB ifTrue:[
+                                nsNmA := (a at:3) nameSpaceName.
+                                nsNmB := (b at:3) nameSpaceName.
+                                nsNmA < nsNmB
+                            ] ifFalse:[
+                                clsNmA < clsNmB
+                            ]
+                        ] ifFalse:[ nmA < nmB ]
+                    ].
+            ].
+        ].
+    ].
+    methods := OrderedCollection new:(entries size).
+    
+    "/ first generate the new methodList, and see if it is different ...
+    
+    entries do:[:entry | 
+        |sel mthd|
+
+        mthd := entry at:3.
+        methods add:mthd.
+    ].
+    false "methodList = methods" "does not care for changed icons" ifTrue:[
+        "/ same list
+        newNameList := self browserNameList.
+    ] ifFalse:[
+        newNameList := OrderedCollection new:(entries size).
+        
+        "/ multiple classes must add the className for some
+        
+        entries do:[:entry | 
+            |cls sel mthd s needClass|
+
+            cls := entry at:1.
+            sel := entry at:2.
+            mthd := entry at:3.
+            needClass := doShowClass.
+            
+"/        needClass ifFalse:[
+"/            needClass := (selectorBag occurrencesOf:sel) > 1
+"/        ].
+            (suppressInheritanceInfoNow not
+            and:[ (Timestamp now deltaFrom:startTime) > 3 seconds ]) ifTrue:[
+                suppressInheritanceInfoNow := true.
+            ].
+
+            s := self 
+                    listEntryForMethod:mthd
+                    selector:sel
+                    class:cls
+                    showClass:needClass
+                    showCategory:doShowCategory
+                    classFirst:doShowClassFirst
+                    suppressInheritanceInfo:suppressInheritanceInfoNow.
+            
+            newNameList add:s.
+        ].
+    ].
+    self makeIndependent.
+    classes := newClasses.
+    self makeDependent.
+    methodList := methods.
+    methods size == 1 ifTrue:[
+        theMethod := methods first.
+        mclass := theMethod mclass.
+        mclass isNil ifTrue:[
+            theMethod isWrapped ifTrue:[
+                theMethod := theMethod originalMethod.
+                mclass := theMethod mclass.
+            ].
+        ].
+        self methodLabelHolder value:(mclass isNil 
+                    ifTrue:[ ('???' , ' ' , '???') ]
+                    ifFalse:[ (mclass name , ' ' , theMethod selector) ])
+    ].
+"/    anyMethodToWatch ifTrue:[
+"/        self startWatchProcess.
+"/    ] ifFalse:[
+"/        self stopWatchProcess.
+"/    ].
+    
+    "/ remember these, in case of an incremental (single method only)
+    "/ update in the future.
+    
+    lastShowClass := doShowClass.
+    lastShowClassFirst := doShowClassFirst.
+    lastShowCategory := doShowCategory.
+    ^ newNameList.
+
+    "Created: / 05-02-2000 / 22:43:40 / cg"
+    "Modified: / 24-08-2010 / 20:34:09 / Jan Vrany <enter your email here>"
+    "Modified: / 20-07-2012 / 20:00:58 / cg"
+    "Modified: / 03-12-2012 / 17:37:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+makeDependent
+    Smalltalk addDependent:self.
+"/    ChangeSet addDependent:self.
+
+    "Modified: / 10-11-2006 / 17:57:01 / cg"
+!
+
+makeIndependent
+    Smalltalk removeDependent:self.
+"/    ChangeSet removeDependent:self.
+!
+
+method:mthd includesModsOfClassVariable:variablesToHighLight
+    ^ self method:mthd includesRefsToVariable:variablesToHighLight askParserWith:#modifiedClassVars
+!
+
+method:mthd includesModsOfInstanceVariable:variablesToHighLight
+    ^ self method:mthd includesRefsToVariable:variablesToHighLight askParserWith:#modifiedInstVars
+!
+
+method:mthd includesRefsToClassVariable:variablesToHighLight
+    ^ self method:mthd includesRefsToVariable:variablesToHighLight askParserWith:#usedClassVars
+!
+
+method:mthd includesRefsToInstanceVariable:variablesToHighLight
+    ^ self method:mthd includesRefsToVariable:variablesToHighLight askParserWith:#usedInstVars
+!
+
+method:mthd includesRefsToVariable:variablesToHighLight askParserWith:querySelector
+    |cls src parser usedVars anyVarNameAccessable|
+
+    cls := mthd mclass.
+    cls isNil ifTrue:[^ false].
+
+    anyVarNameAccessable := cls allInstVarNames includesAny:variablesToHighLight.
+    anyVarNameAccessable ifFalse:[
+	anyVarNameAccessable := cls theNonMetaclass allClassVarNames includesAny:variablesToHighLight.
+    ].
+    anyVarNameAccessable ifFalse:[
+	"/ no need to parse
+	^ false
+    ].
+
+    src := mthd source.
+    src notNil ifTrue:[
+	"
+	 before doing a slow parse, quickly scan the
+	 methods source for the variables name ...
+	"
+	(variablesToHighLight contains:[:varName | (src findString:varName) ~~ 0]) ifTrue:[
+	    parser := Parser
+			    parseMethod:src
+			    in:cls
+			    ignoreErrors:true
+			    ignoreWarnings:true.
+	    (parser notNil and:[parser ~~ #Error]) ifTrue:[
+		usedVars := parser perform:querySelector.
+		(usedVars includesAny:variablesToHighLight)
+		ifTrue:[
+		    ^  true
+		]
+	    ]
+	]
+    ].
+    ^ false
+!
+
+methodIsInheritedFromAbove:aMethod
+    |mClass|
+
+    mClass := aMethod mclass.
+    (mClass notNil and:[mClass superclass notNil]) ifTrue:[
+	^ (mClass superclass whichClassIncludesSelector:aMethod selector) notNil.
+    ].
+    ^ false
+!
+
+methodIsRedefinedBelow:aMethod
+    |mclass subClasses setOfRedefinedSelectors|
+
+    mclass := aMethod mclass.
+    mclass isNil ifTrue:[^ false].
+
+    "/ if possible, make use of info prepared by listOfMethodNames
+    classAndSelectorsRedefinedBySubclassesOfClass notNil
+    ifTrue:[
+	setOfRedefinedSelectors := classAndSelectorsRedefinedBySubclassesOfClass at:mclass ifAbsent:nil.
+	setOfRedefinedSelectors notNil ifTrue:[
+	    ^ setOfRedefinedSelectors includes:aMethod selector
+	]
+    ].
+
+    lastMethodClass == mclass ifTrue:[
+	subClasses := lastMethodClassesSubclasses
+    ] ifFalse:[
+	subClasses := aMethod mclass allSubclasses.
+	lastMethodClassesSubclasses := subClasses.
+	lastMethodClass := mclass.
+    ].
+    ^ subClasses contains:[:cls | cls includesSelector:aMethod selector].
+!
+
+redefinedOrInheritedIconFor:aMethod
+    |inherited redefined subclassResponsibility|
+
+    inherited := self methodIsInheritedFromAbove:aMethod.
+    redefined := self methodIsRedefinedBelow:aMethod.
+
+    inherited ifTrue:[
+	redefined ifTrue:[
+	    ^ self methodInheritedFromAboveAndRedefinedBelowIcon.
+	].
+	^ self methodInheritedFromAboveIcon.
+    ].
+
+    subclassResponsibility := aMethod sends:#subclassResponsibility.
+    redefined ifTrue:[
+	subclassResponsibility ifTrue:[
+	    ^ self methodIsSubclassResponsibilityAndRedefinedBelowIcon.
+	].
+	^ self methodRedefinedBelowIcon.
+    ].
+    subclassResponsibility ifTrue:[
+	^ self methodIsSubclassResponsibilityIcon.
+    ].
+
+    ^ self methodEmptyInheritedIcon
+!
+
+release
+    super release.
+
+    filterClassVars removeDependent:self.
+    selectedMethodNameIndices removeDependent:self.
+    showMethodInheritance removeDependent:self.
+    variableFilter removeDependent:self.
+!
+
+resourceIconForMethod:aMethod
+    ^ SystemBrowser resourceIconForMethod:aMethod
+
+    "Modified: / 17-08-2006 / 09:09:01 / cg"
+!
+
+setOfAllSelectorsImplementedBelow:aClass
+    |set|
+
+    set := IdentitySet new.
+    aClass allSubclassesDo:[:eachSubclass |
+	set addAll:(eachSubclass methodDictionary keys).
+    ].
+    ^ set
+!
+
+updateList
+    |prevSelection newList newSelection newSelIdx reverseMap sameContents newListSize oldListSize
+     prevClasses methodSet selectedMethodsHolder|
+
+    selectedMethodsHolder := self selectedMethods.
+    prevSelection := selectedMethodsHolder value ? #().
+
+    prevClasses := classes ifNil:[ #() ] ifNotNil:[ classes copy ].
+
+    oldListSize := self browserNameList size.
+
+	self topApplication withWaitCursorDo:[
+	    newList := self listOfMethodNames.
+	].
+	newListSize := newList size.
+	sameContents := self updateListFor:newList.
+
+	sameContents ifFalse:[
+    "/            self browserNameList value:newList.
+
+	    (prevSelection size == 0
+	    and:[selectedMethodsHolder value size ~~ 0]) ifTrue:[
+		"/ this happens during early startup time,
+		"/ when the selection is already (pre-)set,
+		"/ and the methodList is generated the first time
+		"/ (i.e. when opened with preset selection
+
+		"/ do not clobber the selection in this case.
+		prevSelection := selectedMethodsHolder value.
+	    ].
+
+	    (methodList size == 0 or:[prevSelection size == 0]) ifTrue:[
+		newSelection := #()
+	    ] ifFalse:[
+		methodSet := methodList.
+
+		"/ inclusion test is much faster with sets, if the number of items is large
+		methodList size > 30 ifTrue:[
+		    "/ however, only if its worth building the set ...
+		    prevSelection size > 5 ifTrue:[
+			methodSet := methodSet asIdentitySet.
+		    ]
+		].
+		newSelection := prevSelection select:[:item | methodSet includesIdentical:item].
+	    ].
+	    newSelection size > 0 ifTrue:[
+		newSelection size > 100 ifTrue:[
+		    "/ need selection indices - might be expensive if done straight forward...
+		    reverseMap := IdentityDictionary new.
+		    methodList keysAndValuesDo:[:idx :mthd | reverseMap at:mthd put:idx].
+		    newSelIdx := newSelection collect:[:mthd | reverseMap at:mthd].
+		] ifFalse:[
+		    newSelIdx := newSelection collect:[:mthd | methodList identityIndexOf:mthd]
+		].
+"/ self halt.
+		"/ force change (for dependents)
+		newSelIdx ~= selectedMethodNameIndices value ifTrue:[
+		    selectedMethodNameIndices value:newSelIdx.
+		].
+	    ] ifFalse:[
+		lastSelectedMethods := selectedMethodsHolder value.
+		lastSelectedMethods notNil ifTrue:[
+		    lastSelectedMethods := lastSelectedMethods asOrderedCollection
+		].
+		selectedMethodNameIndices value size > 0 ifTrue:[
+		    selectedMethodNameIndices value:#().
+		]
+	    ].
+
+	    newSelection ~= prevSelection ifTrue:[
+		self selectionChanged.
+	    ]
+	] ifTrue:[
+	    "/ same list - but classes might have changed
+	    "/ that is the case, if the class selection has been changed,
+	    "/ to another class which has the same categories.
+
+	    (prevClasses size ~= classes size
+	    or:[prevClasses asOrderedCollection ~= (classes ? #()) asOrderedCollection ]) ifTrue:[
+		(newListSize > 0 or:[oldListSize > 0]) ifTrue:[
+		    self selectionChanged.
+		]
+	    ]
+	]
+    "/ ].
+
+    "Modified: / 05-03-2007 / 16:07:24 / cg"
+!
+
+updateListEntryFor:aMethod
+    "update my list for a single method.
+     (used when a single methods package, code or whatever changes, and a full udpate
+      would be too slow)"
+
+    |s idx|
+
+    s := self 
+            listEntryForMethod:aMethod 
+            selector:aMethod selector 
+            class:aMethod mclass 
+            showClass:lastShowClass 
+            showCategory:lastShowCategory
+            classFirst:lastShowClassFirst
+            suppressInheritanceInfo:false.
+
+    idx := methodList identityIndexOf:aMethod.
+    idx == 0 ifTrue:[
+        aMethod isWrapped ifTrue:[
+            idx := methodList identityIndexOf:aMethod originalMethod.
+            idx == 0 ifTrue:[
+                "/ aMethod (wrapped) has changed its status, but is not in the list.
+                ^ self.
+            ].
+        ]
+    ].
+    idx == 0 ifTrue:[
+        "/ method was not previously shown; try to avoid a full update
+        (self isMethodToBeShown:aMethod) ifTrue:[
+            self invalidateList
+        ].
+    ] ifFalse:[
+        self browserNameList at:idx put:s.
+    ]
+
+    "Modified: / 17-08-2011 / 15:05:02 / cg"
+! !
+
+!MethodList methodsFor:'private-presentation'!
+
+colorForCoverageInformationOfMethod:aMethod
+    aMethod isInstrumented ifFalse:[^ nil].
+    aMethod category = 'documentation' ifTrue:[^ nil].
+
+    aMethod hasBeenCalled ifTrue:[
+	aMethod haveAllBlocksBeenExecuted ifTrue:[
+	    ^ UserPreferences current colorForInstrumentedFullyCoveredCode
+	].
+	^ UserPreferences current colorForInstrumentedPartiallyCoveredCode
+    ].
+    ^ UserPreferences current colorForInstrumentedNeverCalledCode
+
+    "Created: / 30-04-2010 / 11:53:38 / cg"
+!
+
+listEntryForMethod:aMethod selector:selector class:cls showClass:showClass showCategory:showCategory classFirst:showClassFirst
+    "answer a method list entry 
+     gimmics: 
+        adding a little image to breakPointed methods,
+        inheritance indicators,
+        highlight accessors of variable"
+
+    ^ self
+        listEntryForMethod:aMethod 
+        selector:selector 
+        class:cls 
+        showClass:showClass showCategory:showCategory
+        classFirst:showClassFirst
+        suppressInheritanceInfo:false
+!
+
+listEntryForMethod:aMethod selector:selector class:cls showClass:showClass showCategory:showCategory classFirst:showClassFirst suppressInheritanceInfo:suppressInheritanceInfo
+    "answer a method list entry 
+     gimmics: 
+        adding a little image to breakPointed methods,
+        inheritance indicators,
+        highlight accessors of variable"
+
+    |s icn variablesToHighlight classVarsToHighLight 
+     doHighLight doHighLightRed clr emp cat l redefIcon 
+     metrics complexity complexityString complexityIcon mark lastResultOrNil|
+
+    aMethod isNil ifTrue:[
+        "/ a non-existing (pseudo) method (such as required protocol)
+        ^ selector colorizeAllWith:Color red.
+    ].
+
+    showClassFirst ifTrue:[
+        s := aMethod printStringForBrowserWithSelector:selector allBold inClass:cls.
+        s := cls nameInBrowser , ' ' , s
+    ] ifFalse:[
+        s := aMethod printStringForBrowserWithSelector:selector inClass:cls.
+    ].
+
+    "/
+    "/ wrap icons (i.e. break- or trace points)
+    "/ have higher prio ...
+    "/
+    (aMethod notNil and:[aMethod isWrapped]) ifTrue:[
+        (s endsWith:' !!') ifTrue:[
+            s := s copyWithoutLast:2
+        ].
+        aMethod isBreakpointed ifTrue:[
+            icn := self stopIcon
+        ] ifFalse:[
+            aMethod isTimed ifTrue:[
+                icn := self timeIcon
+            ] ifFalse:[
+                icn := self traceIcon
+            ]
+        ].
+    ].
+
+    icn isNil ifTrue:[
+        self showImageResourceMethodsImages value ~~ false ifTrue:[
+            (aMethod hasImageResource) ifTrue:[
+                aMethod mclass isMeta ifTrue:[
+                    icn := aMethod valueWithReceiver:nil arguments:nil .
+                ].
+            ].
+        ].
+    ].
+
+    icn isNil ifTrue:[
+        showMethodTypeIcon value ~~ false ifTrue:[
+            icn := self resourceIconForMethod:aMethod.
+        ].
+        icn isNil ifTrue:[
+            aMethod isProtected ifTrue:[
+                icn := self protectedMethodIcon
+            ] ifFalse:[
+                aMethod isPrivate ifTrue:[
+                    icn := self privateMethodIcon
+                ] ifFalse:[
+                    (aMethod isIgnored) ifTrue:[
+                        icn := self ignoredMethodIcon
+                    ] ifFalse:[
+                        (aMethod isJavaMethod and:[aMethod isAbstract]) ifTrue:[
+                            icn := self abstractMethodIcon
+                        ]
+                    ]
+                ]
+            ].
+        ].
+    ].
+    icn isNil ifTrue:[
+        (selector startsWith:'test') ifTrue:[
+            ((cls isSubclassOf:TestCase) 
+            and:[cls isAbstract not]) ifTrue:[
+                "JV@2011-11-17: Show thumbs even if not all test were run"
+
+                lastResultOrNil := cls rememberedOutcomeFor:selector.
+                lastResultOrNil notNil ifTrue:[
+                    (lastResultOrNil result == TestResult statePass) ifTrue:[
+                        icn := SystemBrowser testCasePassedIcon
+                    ] ifFalse:[
+                        ((lastResultOrNil result == TestResult stateError)
+                        or:[ (lastResultOrNil result == TestResult stateFail) ]) ifTrue:[
+                            icn := SystemBrowser testCaseFailedIcon
+                        ] 
+                    ]
+                ].
+            ].
+        ]
+    ].
+
+    showClass ifTrue:[
+        showClassFirst ifFalse:[
+            s := s , ' [' , cls name allBold , ']'.
+        ]
+    ].
+    showCategory ifTrue:[
+        cat := aMethod category.
+        cat notNil ifTrue:[
+            s := s , ' {' , (cat "asText allItalic" colorizeAllWith:Color grey), '}'
+        ]
+    ].
+
+    self showCoverageInformation value ifTrue:[
+        clr := self colorForCoverageInformationOfMethod:aMethod.
+        clr notNil ifTrue:[
+            s := self colorize:s with:(#color->clr).
+            "/ aMethod isInstrumented ifTrue:[
+            "/     icn := self instrumentationIcon
+            "/ ].
+        ].
+    ] ifFalse:[
+        (ChangeSet current includesChangeForClass:cls selector:selector) ifTrue:[
+            mark := self class markForBeingInChangeList.
+            "/ mark := self colorizeForChangedCode:mark.
+            s := s , mark.
+            "/ cg: I dont know why this was disabled - it is req'd to
+            "/ see changed methods in a method list (implementors...)
+            s := self colorizeForChangedCode:s.
+        ].
+
+        (SmallTeam notNil and:[SmallTeam includesChangeForClass:cls selector:selector]) ifTrue:[
+            s := (self colorizeForChangedCodeInSmallTeam:'!! '),s
+        ].
+    ].
+
+    variablesToHighlight := variableFilter value.
+    variablesToHighlight size > 0 ifTrue:[
+        classVarsToHighLight := filterClassVars value.
+        classVarsToHighLight ifTrue:[
+            doHighLight := self method:aMethod includesRefsToClassVariable:variablesToHighlight.
+            doHighLight ifTrue:[
+                doHighLightRed := self method:aMethod includesModsOfClassVariable:variablesToHighlight.
+            ].
+        ] ifFalse:[
+            doHighLight := self method:aMethod includesRefsToInstanceVariable:variablesToHighlight.
+            doHighLight ifTrue:[
+                doHighLightRed := self method:aMethod includesModsOfInstanceVariable:variablesToHighlight
+            ]
+        ].
+        doHighLight ifTrue:[
+            s := s allBold.
+            doHighLightRed ifTrue:[
+                emp := (UserPreferences current emphasisForWrittenVariable)
+            ] ifFalse:[
+                emp := (UserPreferences current emphasisForReadVariable)
+            ].
+            s := s emphasisAllAdd:emp
+        ]
+    ].
+
+    (showMethodComplexity value == true 
+    and:[ OOM::MethodMetrics notNil ]) ifTrue:[
+        icn isNil ifTrue:[
+                metrics := OOM::MethodMetrics forMethod:aMethod.
+                complexity := metrics complexity ? 0.
+                complexityIcon := OOM::MethodMetrics iconForComplexity:complexity.
+
+                ShowComplexityValue == true ifTrue:[
+                    complexityString := '{' , complexity printString , '}'.
+                    s := complexityString , ' ' , s.
+                ].
+                "/ icn := icn ? complexityIcon.
+                s := LabelAndIcon icon:complexityIcon string:s.
+        ].
+    ].
+
+    (showMethodInheritance value ? true) ifTrue:[
+        suppressInheritanceInfo ifTrue:[
+            redefIcon := self methodEmptyInheritedIcon.
+        ] ifFalse:[
+            redefIcon := self redefinedOrInheritedIconFor:aMethod.
+        ].
+    ].
+
+    (icn notNil or:[redefIcon notNil]) ifTrue:[
+        "/eXept version
+        "/l := LabelAndIcon icon:redefIcon string:s.
+        "/l image:icn.
+        "/JV:
+        l := LabelAndIcon icon:icn string:s.
+        l image:redefIcon.
+        icn isNil ifTrue:[l offset: 13].
+        l gap:1.
+        ^ l
+    ].
+    ^ s
+
+    "Created: / 22-10-1996 / 19:51:00 / cg"
+    "Modified: / 15-08-2009 / 13:13:32 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 17-11-2011 / 20:51:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-03-2012 / 19:06:09 / cg"
+! !
+
+!MethodList methodsFor:'private-watching'!
+
+startWatchProcess
+    updateProcess notNil ifTrue:[
+	^ self
+    ].
+    updateProcess := [
+			[true] whileTrue:[
+			    Delay waitForSeconds:1.
+			    self enqueueDelayedUpdateList
+			]
+		     ] fork.
+!
+
+stopWatchProcess
+    |p|
+
+    (p := updateProcess) notNil ifTrue:[
+	updateProcess := nil.
+	p terminate
+    ].
+! !
+
+!MethodList methodsFor:'setup'!
+
+postBuildWith:aBuilder
+    |methodListView|
+
+    super postBuildWith:aBuilder.
+
+    methodListView := aBuilder componentAt:'List'.
+    methodListView notNil ifTrue:[
+	methodListView allowDrag:true.
+	methodListView dragObjectConverter:[:obj |
+					    |nm method idx|
+
+					    nm := obj theObject asString string string.
+					    idx := browserNameList value findFirst:[:item | item string string = nm].
+					    method := methodList value at:idx.
+					    DropObject newMethod:method.
+					 ].
+    ]
+! !
+
+!MethodList class methodsFor:'documentation'!
+
+version
+    ^ '$Id: Tools__MethodList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_MethodList.st,v 1.74 2012/11/07 23:04:35 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__MethodList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+! !
--- a/Tools__MethodRewriter.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__MethodRewriter.st	Wed Jan 30 11:15:09 2013 +0000
@@ -68,6 +68,7 @@
 "
 ! !
 
+
 !MethodRewriter class methodsFor:'example templates'!
 
 templateReplaceAtIfAbsentByAtAifAbsentPut
@@ -155,6 +156,7 @@
     "Created: / 12-12-2007 / 11:03:32 / janfrog"
 ! !
 
+
 !MethodRewriter class methodsFor:'interface specs'!
 
 classesSpec
@@ -500,6 +502,7 @@
     "Modified: / 12-12-2007 / 11:39:31 / janfrog"
 ! !
 
+
 !MethodRewriter class methodsFor:'list specs'!
 
 tabList
@@ -538,6 +541,7 @@
     "Modified: / 12-12-2007 / 11:21:27 / janfrog"
 ! !
 
+
 !MethodRewriter methodsFor:'accessing'!
 
 actionInProgress: aBoolean
@@ -622,69 +626,66 @@
     "Created: / 12-12-2007 / 11:17:55 / janfrog"
 ! !
 
+
 !MethodRewriter methodsFor:'actions'!
 
-doRewrite
-    | methodsMatching anyChange compositeChangeCollector |
+
 
-    compositeChangeCollector := CompositeRefactoryChange new.
-    compositeChangeCollector name:'Rewrite Change'.
+doRewrite: methodsMatching
+    | changes compositeChangeCollector |
+
+    changes := ChangeSet new name:'Rewrite Changes'.    
 
-    anyChange := false.
+    methodsMatching isEmptyOrNil ifTrue:[^Dialog warn:'No methods matching'].
 
-    methodsMatching := self methodsMatching.
-    methodsMatching isEmptyOrNil ifTrue:[^Dialog warn:'No methods matching'].
-    methodsMatching do:[:mth|
-        | newTree change |
+    self withMethods: methodsMatching do:[:mth|
+        | newTree newSource change |
 
-        newTree := ParseTreeRewriter new
+        newTree := ParseTreeSourceRewriter new
                     replace: self searchPattern 
                     with: self replacePattern;
                     executeTree: mth parseTree;
                     tree.
+        newSource := newTree source notNil
+                        ifTrue:[newTree source]
+                        ifFalse:[newTree formattedCode].
 
-        change := InteractiveAddMethodChange compile:(newTree formattedCode) in:mth mclass classified:mth category.
+        change := InteractiveAddMethodChange compile: newSource in:mth mclass classified:mth category.
 
         "/ collect in order to have only one change in the undo-list (instead of many)
-        compositeChangeCollector addChange:change.
-        anyChange := true.
+        changes add: change.
 
 "/        mth mclass 
 "/            compile: newTree formattedCode
 "/            classified: mth category
     ].
 
-    anyChange ifTrue:[
-        RefactoryChangeManager performChange:compositeChangeCollector.
-    ].
+    changes isEmpty ifTrue:[ ^ self ].
+
+    "/Let the user to inspect and confirm changes...."
+    changes := ChangeSetBrowser2 confirmChanges: changes.
+    changes isEmpty ifTrue:[ ^ self ].
+
+    "/Perform the refactoring..."
+    compositeChangeCollector := CompositeRefactoryChange new.
+    compositeChangeCollector name:'Rewrite Change'.
+    compositeChangeCollector changes: changes.
+    RefactoryChangeManager performChange:compositeChangeCollector.
 
     "Created: / 20-07-2007 / 16:03:47 / janfrog"
     "Modified: / 21-07-2007 / 06:55:42 / janfrog"
     "Modified: / 04-08-2011 / 19:05:25 / cg"
+    "Created: / 22-03-2012 / 18:22:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 doRewriteAction
 
-    self 
-        doSearch: self searchPattern
-        withResultDo:
-            [:methodsMatching|
-            self 
-                withMethods:methodsMatching 
-                do:
-                    [:mth|
-                    | newTree |
-                    newTree := ParseTreeRewriter new
-                                replace: self searchPattern with: self replacePattern;
-                                executeTree: mth parseTree;
-                                tree.
-                    mth mclass ifNotNil:
-                        [mth mclass 
-                            compile: newTree formattedCode
-                            classified: mth category]]
-                finallyDo:[]]
+    self doSearch: self searchPattern withResultDo: [:methodsMatching|
+        self doRewrite:  methodsMatching
+    ].
 
     "Created: / 12-12-2007 / 11:14:19 / janfrog"
+    "Modified: / 22-03-2012 / 18:23:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 doSearch
@@ -734,6 +735,7 @@
     "Created: / 12-12-2007 / 11:14:15 / janfrog"
 ! !
 
+
 !MethodRewriter methodsFor:'aspects'!
 
 actionInProgresHolder
@@ -901,6 +903,7 @@
     "Created: / 12-12-2007 / 11:17:16 / janfrog"
 ! !
 
+
 !MethodRewriter methodsFor:'change & update'!
 
 selectedTemplateIndexChanged
@@ -911,6 +914,7 @@
     "Created: / 12-12-2007 / 11:20:16 / janfrog"
 ! !
 
+
 !MethodRewriter methodsFor:'drag & drop'!
 
 canDropClasses: dropContext
@@ -939,6 +943,7 @@
     "Created: / 20-07-2007 / 16:58:16 / janfrog"
 ! !
 
+
 !MethodRewriter methodsFor:'hooks'!
 
 postBuildFindTextView: scrollableView
@@ -955,6 +960,7 @@
     "Created: / 20-07-2007 / 15:55:29 / janfrog"
 ! !
 
+
 !MethodRewriter methodsFor:'private'!
 
 doSearch: pattern withResultDo: block
@@ -1037,6 +1043,13 @@
     "Created: / 21-07-2007 / 06:51:36 / janfrog"
 !
 
+withMethods: givenMethods do: methodBlock 
+
+    ^self withMethods: givenMethods do: methodBlock finallyDo: []
+
+    "Created: / 22-03-2012 / 18:25:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 withMethods: methods do: methodBlock finallyDo: finallyBlock
 
     [
@@ -1066,6 +1079,7 @@
     "Modified: / 12-12-2007 / 10:32:48 / janfrog"
 ! !
 
+
 !MethodRewriter methodsFor:'testing method'!
 
 testXXX
@@ -1075,6 +1089,7 @@
     "Modified: / 12-12-2007 / 10:45:20 / janfrog"
 ! !
 
+
 !MethodRewriter class methodsFor:'documentation'!
 
 version_CVS
@@ -1084,3 +1099,4 @@
 version_SVN
     ^ '§Id: Tools__MethodRewriter.st 7486 2009-10-26 22:06:24Z vranyj1 §'
 ! !
+
--- a/Tools__NamespaceFilter.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__NamespaceFilter.st	Wed Jan 30 11:15:09 2013 +0000
@@ -105,9 +105,10 @@
 !NamespaceFilter class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__NamespaceFilter.st,v 1.2 2011-07-03 13:37:47 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__NamespaceFilter.st,v 1.2 2011/07/03 13:37:47 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id§'
+    ^ '$Id: Tools__NamespaceFilter.st 7911 2012-02-22 09:55:48Z vranyj1 $'
 ! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__NamespaceList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,569 @@
+"
+ COPYRIGHT (c) 2000 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 }"
+
+BrowserList subclass:#NamespaceList
+	instanceVariableNames:'namespaceNameList namespaceList'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+!NamespaceList class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2000 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.
+"
+!
+
+documentation
+"
+    I implement the namespace list in the new system browser
+"
+! !
+
+!NamespaceList class methodsFor:'interface specs'!
+
+singleNameSpaceWindowSpec
+    "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:ClassCategoryList andSelector:#singleCategoryWindowSpec
+     ClassCategoryList new openInterface:#singleCategoryWindowSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+	#name: #singleNameSpaceWindowSpec
+	#window: 
+       #(#WindowSpec
+	  #label: 'NameSpaceList'
+	  #name: 'NameSpaceList'
+	  #min: #(#Point 0 0)
+	  #max: #(#Point 1024 721)
+	  #bounds: #(#Rectangle 218 175 518 475)
+	)
+	#component: 
+       #(#SpecCollection
+	  #collection: #(
+	   #(#LabelSpec
+	      #label: 'NameSpaceName'
+	      #name: 'NameSpaceLabel'
+	      #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+	      #translateLabel: true
+	      #labelChannel: #nameSpaceLabelHolder
+	      #menu: #menuHolder
+	    )
+	   )
+
+	)
+      )
+!
+
+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:ProjectList andSelector:#windowSpec
+     ProjectList new openInterface:#windowSpec
+     ProjectList open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'NamespaceList'
+          #name: 'NamespaceList'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 13 23 313 323)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#SequenceViewSpec
+              #name: 'List'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #tabable: true
+              #model: #selectedNamespaces
+              #menu: #menuHolder
+              #hasHorizontalScrollBar: true
+              #hasVerticalScrollBar: true
+              #miniScrollerHorizontal: true
+              #isMultiSelect: true
+              #valueChangeSelector: #selectionChangedByClick
+              #useIndex: false
+              #sequenceList: #nameSpaceList
+              #doubleClickChannel: #doubleClickChannel
+              #properties: 
+             #(#PropertyListDictionary
+                #dragArgument: nil
+                #dropArgument: nil
+                #canDropSelector: #canDropContext:
+                #dropSelector: #doDropContext:
+              )
+            )
+           )
+
+        )
+      )
+
+    "Created: / 18.2.2000 / 01:06:05 / cg"
+    "Modified: / 18.2.2000 / 01:24:50 / cg"
+! !
+
+!NamespaceList class methodsFor:'queries-plugin'!
+
+aspectSelectors
+    ^ #( 
+        #(#doubleClickChannel #action )
+        immediateUpdate 
+        selectedNamespaces 
+        menuHolder 
+        inGeneratorHolder 
+        outGeneratorHolder 
+        selectionChangeCondition 
+        updateTrigger
+        forceGeneratorTrigger
+        hideUnloadedClasses
+        showAllClassesInNameSpaceOrganisation
+        organizerMode
+        slaveMode
+       )
+
+    "Created: / 18-02-2000 / 01:06:27 / cg"
+    "Modified: / 05-03-2007 / 16:47:45 / cg"
+! !
+
+!NamespaceList methodsFor:'aspects'!
+
+itemList
+    ^ self nameSpaceList value
+!
+
+nameSpaceLabelHolder
+    ^ self pseudoListLabelHolder
+!
+
+nameSpaceList
+    namespaceList isNil ifTrue:[
+	namespaceList := ValueHolder new
+    ].
+    ^ namespaceList
+
+    "Created: / 18.2.2000 / 00:59:01 / cg"
+!
+
+selectedNamespaces
+    ^ self selectionHolder
+
+!
+
+selectedNamespaces:aValueHolder
+    ^ self selectionHolder:aValueHolder
+
+! !
+
+!NamespaceList methodsFor:'change & update'!
+
+delayedUpdate:something with:aParameter from:changedObject
+
+    self inSlaveModeOrInvisible 
+    ifTrue:[
+	changedObject == Smalltalk ifTrue:[
+	    something == #classComment ifTrue:[^ self].
+	].
+	self invalidateList.
+	^ self
+    ].
+
+    changedObject == slaveMode ifTrue:[
+	listValid ~~ true ifTrue:[
+	    self enqueueDelayedUpdateList
+	].
+	"/ self invalidateList.
+	^  self
+    ].
+
+    changedObject == Smalltalk ifTrue:[
+	something == #newClass ifTrue:[
+	    listValid == true ifTrue:[
+		aParameter isNameSpace ifTrue:[
+		    (namespaceList value includes:aParameter name) ifFalse:[
+			self invalidateList.
+		    ]
+		].
+	    ].
+	    ^ self
+	].
+	something == #classRemove ifTrue:[
+	    listValid == true ifTrue:[
+		aParameter isNameSpace ifTrue:[
+		    self invalidateList.
+		].
+	    ].
+	    ^ self
+	].
+	^ self
+    ].
+
+    super delayedUpdate:something with:aParameter from:changedObject
+
+    "Created: / 18.2.2000 / 01:00:07 / cg"
+    "Modified: / 26.2.2000 / 01:10:46 / cg"
+!
+
+selectionChangedByClick
+    "we are not interested in that - get another notification
+     via the changed valueHolder"
+
+    "Created: / 18.2.2000 / 01:00:14 / cg"
+!
+
+update:something with:aParameter from:changedObject
+    changedObject == Smalltalk ifTrue:[
+        something == #methodDictionary ifTrue:[
+            ^ self 
+        ].
+        something == #methodTrap ifTrue:[
+            ^ self
+        ].
+        something == #methodCoverageInfo ifTrue:[
+            ^ self
+        ].
+        something == #methodInClass ifTrue:[
+            ^ self
+        ].
+        something == #classVariables ifTrue:[
+            ^ self
+        ].
+        something == #classComment ifTrue:[
+            ^ self.
+        ].
+        something == #methodInClassRemoved ifTrue:[
+            ^ self.
+        ].
+    ].
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 20-07-2011 / 18:55:12 / cg"
+! !
+
+!NamespaceList methodsFor:'drag & drop'!
+
+canDropContext:aDropContext
+    |objects nameSpace|
+
+    objects := aDropContext dropObjects collect:[:obj | obj theObject].
+    (objects conform:[:aMethodOrClass | aMethodOrClass isClass ]) ifFalse:[^ false].
+
+    nameSpace := self nameSpaceAtTargetPointOf:aDropContext.
+    nameSpace isNil ifTrue:[^ false].
+    nameSpace = self class nameListEntryForALL ifTrue:[^ false].
+
+    ^ (objects contains:[:aClass | aClass nameSpace name ~= nameSpace]) 
+!
+
+doDropContext:aDropContext
+    |nameSpaceName nameSpace objects|
+
+    objects := aDropContext dropObjects collect:[:aDropObject | aDropObject theObject].
+    (objects conform:[:something | something isClass]) ifTrue:[
+        nameSpaceName := self nameSpaceAtTargetPointOf:aDropContext.
+        (nameSpaceName notNil
+        and:[ nameSpaceName ~= self class nameListEntryForALL]) ifTrue:[
+            nameSpace := NameSpace name:nameSpaceName.
+            objects do:[:eachClassToMove |
+                |className|
+
+                className := eachClassToMove nameWithoutPrefix.
+                nameSpace == Smalltalk ifTrue:[
+                    Smalltalk renameClass:eachClassToMove to:className asSymbol.
+                ] ifFalse:[
+                    Smalltalk renameClass:eachClassToMove to:(nameSpace name , '::' , className) asSymbol.
+                    nameSpace changed.
+                ].
+            ].
+            Smalltalk changed.
+        ].
+        ^ self
+    ].
+!
+
+nameSpaceAtTargetPointOf:aDropContext
+    |p targetView lineNr item|
+
+    p := aDropContext targetPoint.
+
+    targetView := aDropContext targetWidget.
+
+    lineNr := targetView yVisibleToLineNr:p y.
+    lineNr isNil ifTrue:[^ nil].
+
+    item := self itemList at:lineNr.
+    item isNil ifTrue:[^ nil].
+
+    ^ item
+! !
+
+!NamespaceList methodsFor:'generators'!
+
+makeGenerator
+    "return a generator which enumerates the classes from the selected namespace(s)."
+
+    |spaceNames hideUnloadedClasses showAllClasses showChangedClasses|
+
+    spaceNames := self selectedNamespaces value.
+    spaceNames size == 0 ifTrue:[
+        ^ #()
+    ].
+
+    hideUnloadedClasses := self hideUnloadedClasses value.
+    showAllClasses := self showAllClassesInNameSpaceOrganisation value.
+    showChangedClasses := spaceNames includes:(self class nameListEntryForChanged).
+
+    (showAllClasses or:[spaceNames includes:(self class nameListEntryForALL)]) ifTrue:[
+        hideUnloadedClasses ifTrue:[
+            ^ Iterator on:[:whatToDo |
+                               Smalltalk allClassesDo:[:cls |
+                                   cls isLoaded ifTrue:[
+                                       cls isRealNameSpace ifFalse:[
+                                           whatToDo value:cls
+                                       ]
+                                   ]
+                               ]
+                          ]
+        ].
+        ^ Iterator on:[:whatToDo |
+                           Smalltalk allClassesDo:whatToDo
+                      ]
+    ].
+
+    (spaceNames size == 1 
+     and:[spaceNames first = 'Smalltalk']) ifTrue:[
+        "/ somewhat tuned - quick look if classes name includes colons ...
+        ^ Iterator on:[:whatToDo |
+                       Smalltalk allClassesDo:[:cls |
+                           |includeIt|
+
+                           includeIt := (cls name includes:$:) not.
+                           includeIt := includeIt
+                                        or:[(cls isPrivate not 
+                                            and:[(cls nameSpace == Smalltalk)])].
+                           includeIt := includeIt
+                                        or:[(cls isPrivate  
+                                            and:[(cls topOwningClass nameSpace == Smalltalk)])].
+
+                           includeIt := includeIt
+                                        and:[hideUnloadedClasses not or:[cls isLoaded]].
+
+                           includeIt := includeIt
+                                        or:[ cls extensions 
+                                                contains:[:mthd | 
+                                                            |sel parts|
+                                                            sel := mthd selector.
+                                                            (sel isNameSpaceSelector
+                                                            and:[ parts := sel nameSpaceSelectorParts.
+                                                                  spaceNames includes:parts first])  
+                                                         ]
+                                           ].
+
+                           includeIt ifTrue:[
+                               cls isRealNameSpace ifFalse:[
+                                   whatToDo value:cls
+                               ]
+                           ]
+                       ]
+                      ]
+    ].
+
+    ^ Iterator on:[:whatToDo |
+                       |changedClasses|
+
+                        showChangedClasses ifTrue:[ changedClasses := ChangeSet current changedClasses collect:[:cls | cls theNonMetaclass]].
+
+                        Smalltalk allClassesDo:[:cls |
+                            |spaceOfClass spaceNameOfClass includeIt|
+
+                            spaceOfClass := cls isPrivate ifTrue:[cls topOwningClass nameSpace] ifFalse:[cls nameSpace].
+                            spaceNameOfClass := spaceOfClass name.
+
+                            includeIt := spaceNames contains:[:nm | nm = spaceNameOfClass
+                                                                    or:[spaceNameOfClass startsWith:(nm , '::')]].
+                            includeIt ifFalse:[
+                                (showChangedClasses and:[ (changedClasses includes:cls theNonMetaclass) ]) ifTrue:[
+                                    includeIt := true
+                                ].
+                            ].
+                            hideUnloadedClasses ifTrue:[
+                                includeIt := includeIt and:[cls isLoaded].
+                            ].
+                            includeIt ifTrue:[
+                                cls isRealNameSpace ifFalse:[
+                                    whatToDo value:cls
+                                ]
+                            ]
+                        ]
+                  ]
+
+    "Created: / 18-02-2000 / 01:01:58 / cg"
+    "Modified: / 05-03-2007 / 23:01:21 / cg"
+! !
+
+!NamespaceList methodsFor:'private'!
+
+defaultSlaveModeValue
+    |mode|
+
+    mode := self topApplication perform:#initialOrganizerMode ifNotUnderstood:nil.
+    mode == OrganizerCanvas organizerModeNamespace ifTrue:[^ false].
+"/    self organizerMode value == OrganizerCanvas organizerModeCategory ifTrue:[^ true].
+"/    ^ false
+    mode isNil ifTrue:[^ false].
+    ^ true
+!
+
+initialOrganizerMode
+    ^ OrganizerCanvas organizerModeNamespace
+!
+
+listOfNamespaces
+    |allNamespaces showAllNamespaces generator|
+
+    showAllNamespaces := false.    "/ only topLevel namespaces are shown
+    showAllNamespaces := true.
+
+    allNamespaces := IdentitySet new.
+
+    inGeneratorHolder isNil ifTrue:[
+        (self hideUnloadedClasses value) ifTrue:[
+            Smalltalk allClassesDo:[:eachClass |
+                eachClass isLoaded ifTrue:[
+                    allNamespaces add:(eachClass theNonMetaclass topNameSpace)
+                ].
+            ]
+        ] ifFalse:[
+            allNamespaces := NameSpace allNameSpaces.
+        ].
+
+        showAllNamespaces ifFalse:[
+            "/ only topLevel namespaces are shown
+            "/ i.e. ignore subspaces 
+
+            allNamespaces := allNamespaces select:[:ns | ns isTopLevelNameSpace].
+        ].
+        "/JV@2011-12-04: Do not show java packages, they are all shown
+        "/when JAVA namespace is shown. Use #askFor: here, as eXept's libbasic
+        "/does not have #isJavaPackage
+        allNamespaces := allNamespaces reject:[:ns | ns askFor: #isJavaPackage ].
+
+        allNamespaces := allNamespaces collect:[:ns | ns name].
+    ] ifFalse:[
+        generator := inGeneratorHolder value.
+        generator isNil ifTrue:[^ #() ].
+        generator do:[:ns | allNamespaces add:ns].
+    ].
+
+    allNamespaces := allNamespaces asOrderedCollection.
+    allNamespaces sort.
+    allNamespaces size == 1 ifTrue:[
+        self nameSpaceLabelHolder value:(LabelAndIcon icon:(self class nameSpaceIcon) string:allNamespaces first).
+    ].
+
+"/ for now: disabled, because it gets replicated into the nameSpace filter, which
+"/ does not (yet) handle it correctly
+"/    numClassesInChangeSet := ChangeSet current changedClasses size.
+"/    numClassesInChangeSet > 0 ifTrue:[
+"/        "/ dont include count - makeGenerator compares against the un-expanded nameListEntry (sigh - need two lists)
+"/        allNamespaces addFirst:((self class nameListEntryForChanged "bindWith:numClassesInChangeSet") allItalic).
+"/    ].
+
+    allNamespaces addFirst:(self class nameListEntryForALL allItalic).
+    ^ allNamespaces
+
+    "Created: / 18-02-2000 / 01:04:27 / cg"
+    "Modified: / 25-02-2000 / 22:11:29 / cg"
+    "Modified: / 04-12-2011 / 12:30:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+makeDependent
+    Smalltalk addDependent:self
+
+    "Created: / 18.2.2000 / 01:04:36 / cg"
+!
+
+makeIndependent
+    Smalltalk removeDependent:self.
+
+    "Created: / 18.2.2000 / 01:04:42 / cg"
+!
+
+updateList
+    |newList oldSelection newSelection selectedNamespacesHolder|
+
+    selectedNamespacesHolder := self selectedNamespaces.
+    oldSelection := selectedNamespacesHolder value.
+    newList := self listOfNamespaces.
+    newList ~= namespaceList value ifTrue:[
+"/        oldSelection size > 0 ifTrue:[
+"/            selectedNamespacesHolder removeDependent:self.
+"/            selectedNamespacesHolder value:#().
+"/            selectedNamespacesHolder addDependent:self.
+"/        ].
+	self nameSpaceList value:newList.
+
+	oldSelection size > 0 ifTrue:[
+	    newSelection := oldSelection select:[:nm | 
+				(nm = self class nameListEntryForALL) 
+				or:[ (Smalltalk at:nm asSymbol) isNameSpace]
+			    ].
+	    newSelection ~= oldSelection ifTrue:[
+		selectedNamespacesHolder value:newSelection.
+	    ]
+	]
+    ].
+    listValid := true.
+! !
+
+!NamespaceList class methodsFor:'documentation'!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_NamespaceList.st,v 1.20 2012/10/20 19:36:38 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__NamespaceList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+! !
--- a/Tools__NavigationHistory.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__NavigationHistory.st	Wed Jan 30 11:15:09 2013 +0000
@@ -53,6 +53,7 @@
 "
 ! !
 
+
 !NavigationHistory class methodsFor:'instance creation'!
 
 new
@@ -61,6 +62,7 @@
     "Created: / 21-02-2008 / 15:26:05 / janfrog"
 ! !
 
+
 !NavigationHistory methodsFor:'accessing'!
 
 currentItem
@@ -97,6 +99,7 @@
     "Modified: / 03-07-2011 / 16:00:45 / cg"
 ! !
 
+
 !NavigationHistory methodsFor:'backward list compatibility'!
 
 addFirst:anEntry
@@ -204,6 +207,7 @@
     "Created: / 04-07-2011 / 22:44:28 / cg"
 ! !
 
+
 !NavigationHistory methodsFor:'initialization'!
 
 beGlobalHistory
@@ -228,6 +232,7 @@
     "Modified: / 03-07-2011 / 14:43:08 / cg"
 ! !
 
+
 !NavigationHistory methodsFor:'menu & menu actions'!
 
 goBackMenu
@@ -256,6 +261,7 @@
     "Modified: / 27-02-2008 / 11:52:26 / janfrog"
 ! !
 
+
 !NavigationHistory methodsFor:'navigation'!
 
 goBack
@@ -316,6 +322,7 @@
     "Modified: / 03-07-2011 / 16:03:11 / cg"
 ! !
 
+
 !NavigationHistory methodsFor:'queries'!
 
 canGoBack
@@ -335,6 +342,7 @@
     "Created: / 21-02-2008 / 16:40:48 / janfrog"
 ! !
 
+
 !NavigationHistory class methodsFor:'documentation'!
 
 version_CVS
@@ -348,3 +356,4 @@
 version_SVN
     ^ '§Id: Tools__NavigationHistory.st 7486 2009-10-26 22:06:24Z vranyj1 §'
 ! !
+
--- a/Tools__NavigationHistoryTests.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__NavigationHistoryTests.st	Wed Jan 30 11:15:09 2013 +0000
@@ -36,6 +36,7 @@
 "
 ! !
 
+
 !NavigationHistoryTests methodsFor:'initialization'!
 
 setUp
@@ -45,6 +46,7 @@
     "Created: / 21-02-2008 / 16:52:19 / janfrog"
 ! !
 
+
 !NavigationHistoryTests methodsFor:'tests'!
 
 test_01
@@ -122,6 +124,7 @@
     "Modified: / 06-06-2008 / 09:31:40 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !NavigationHistoryTests class methodsFor:'documentation'!
 
 version_CVS
@@ -131,3 +134,4 @@
 version_SVN
     ^ '§Id: Tools__NavigationHistoryTests.st 7486 2009-10-26 22:06:24Z vranyj1 §'
 ! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__NavigationState.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,1718 @@
+"
+ COPYRIGHT (c) 2000 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:#NavigationState
+	instanceVariableNames:'browserLabel codeModifiedHolder categoryList classList
+		packageFilter nameSpaceFilter hidePrivateClasses canvasType
+		notMetaToggle metaToggle metaToggleLabel organizerMode codeAspect
+		codeHolder classDocumentationHolder canvas selectorListGenerator
+		protocolListGenerator classListPerNameSpaceGenerator
+		classListGenerator categoryListGenerator nameSpaceListGenerator
+		projectListGenerator classHierarchyTopClass meta selectedMethods
+		selectedProtocols selectedClasses selectedCategories
+		selectedProjects selectedNamespaces selectedLintRules
+		variableFilter filterClassVars sortBy noAllItem autoSearchPattern
+		autoSearchIgnoreCase autoSearchAction realModifiedStateHolder
+		methodInfo versionDiffApplication selectorListGeneratorArray
+		selectedMethodsArray infoLabelHolder packageLabelHolder
+		cursorLineLabelHolder cursorColLabelHolder modeLabelHolder
+		sortVariablesBy editModeHolder scrollableCodeView specialEditors
+		selectedEditorNoteBookTabIndexHolder editorNoteBookListHolder
+		editorNoteBookCanvasHolder codeView stringSearchToolView
+		noteBookView inheritanceView documentationView languageHolder
+		messageSpecHolder messageHolder progressHolder tabContentView
+		messagePaneView codePaneAndPluginView
+		codePaneAndPluginViewRelativeCorners pluginVisibleHolder
+		bookmarkHolder worker packageInfoBackgroundColorHolder
+		packageInfoButton showMethodTemplate lastMethodShownInCodeView showingParseError'
+	classVariableNames:'CodeAspectTranslations'
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+!NavigationState class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2000 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.
+"
+! !
+
+!NavigationState class methodsFor:'initialization'!
+
+initialize
+    "Invoked at system start or when the class is dynamically loaded."
+
+    "/ please change as required (and remove this comment)
+
+    CodeAspectTranslations := Dictionary new.
+    CodeAspectTranslations at: #newApplication put: SyntaxHighlighter codeAspectClassDefinition.
+    CodeAspectTranslations at: #newError put: SyntaxHighlighter codeAspectClassDefinition.
+
+
+    "/ Add more...
+
+    "Modified: / 23-10-2012 / 11:27:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!NavigationState methodsFor:'accessing'!
+
+autoSearchAction
+    ^ autoSearchAction
+!
+
+autoSearchAction:something
+    autoSearchAction := something.
+!
+
+autoSearchIgnoreCase
+    "return true if the autSearch is to be case-insensitive"
+
+    ^ autoSearchIgnoreCase
+!
+
+autoSearchIgnoreCase:aBoolean
+    "change the autSearches case-insensitivenes"
+
+    autoSearchIgnoreCase := aBoolean
+!
+
+autoSearchPattern
+    "return the automatic search pattern"
+
+    ^ autoSearchPattern
+!
+
+autoSearchPattern:aPattern
+    "change the automatic search pattern"
+
+    autoSearchPattern := aPattern.
+!
+
+browserLabel
+    "return the assigned state-label (to be shown in the tab)."
+
+    ^ browserLabel
+!
+
+browserLabel:aString
+    "set the assigned state-label (to be shown in the tab)."
+
+    browserLabel := aString
+!
+
+canvas
+    ^ canvas
+!
+
+canvas:something
+    canvas := something.
+    canvasType isNil ifTrue:[
+        canvasType := something spec
+    ].
+!
+
+canvasType
+    "return the type of canvas"
+
+    ^ canvasType
+!
+
+canvasType:aSpecSymbol
+    "set the type of canvas"
+
+    canvasType notNil ifTrue:[
+        canvasType ~~ aSpecSymbol ifTrue:[
+            self halt:'cannot be changed, once set'.
+        ]
+    ].
+    canvasType := aSpecSymbol
+!
+
+codeAspect
+    "return the codeAspect; a symbol describing what is shown in the codeView"
+
+    ^ codeAspect
+
+    "Created: / 11.2.2000 / 12:43:29 / cg"
+!
+
+codeAspect:aSymbolOrNil
+    "set the codeAspect; a symbol describing what is shown in the codeView"
+
+    codeAspect := aSymbolOrNil.
+    (codeView notNil and:[codeView isCodeView2]) ifTrue:[
+        | xlatedCodeAspect |
+
+        xlatedCodeAspect := CodeAspectTranslations at: aSymbolOrNil ifAbsent: aSymbolOrNil.
+        codeView codeAspect: xlatedCodeAspect
+    ].
+
+    "Created: / 11-02-2000 / 12:43:45 / cg"
+    "Modified: / 22-10-2012 / 17:05:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+codePaneAndPluginView
+    ^ codePaneAndPluginView
+!
+
+codePaneAndPluginView:something
+    codePaneAndPluginView := something.
+!
+
+codePaneAndPluginViewRelativeCorners
+    codePaneAndPluginViewRelativeCorners ifNil:[
+        codePaneAndPluginViewRelativeCorners := #(0.76 1.0)
+    ].
+    ^ codePaneAndPluginViewRelativeCorners
+
+    "Modified: / 04-10-2010 / 08:20:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+codePaneAndPluginViewRelativeCorners: anArray
+
+    codePaneAndPluginViewRelativeCorners := anArray.
+
+    "Modified: / 04-10-2010 / 08:14:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+editorNoteBookCanvasHolder
+    editorNoteBookCanvasHolder isNil ifTrue:[
+        editorNoteBookCanvasHolder := nil asValue.
+    ].
+    ^ editorNoteBookCanvasHolder
+!
+
+editorNoteBookListHolder
+    editorNoteBookListHolder isNil ifTrue:[
+        editorNoteBookListHolder := #() asValue.
+    ].
+    ^ editorNoteBookListHolder
+!
+
+environment
+    ^ Smalltalk
+!
+
+lastMethodShownInCodeView
+    ^ lastMethodShownInCodeView
+!
+
+lastMethodShownInCodeView:something
+    lastMethodShownInCodeView := something.
+!
+
+messagePaneView
+    ^ messagePaneView
+!
+
+messagePaneView:something
+    messagePaneView := something.
+!
+
+modified
+    "check for modified code by asking the editTextView;
+     this one returns true if ever modified - even if
+     the modifications where undone in the editor
+     (i.e. not really modified).
+     Use #reallyModified if the contents should be compared
+     against the original contents"
+
+    |v|
+
+    self realModifiedState == true ifTrue:[^ true].
+    self anySpecialEditorModified ifTrue:[^ true].
+
+    ^ (v := self codeView) notNil and:[v modified]
+!
+
+modified:aBoolean
+    |codeView|
+
+    (codeView := self codeView) notNil ifTrue:[
+        codeView modified:aBoolean
+    ].
+    specialEditors notNil ifTrue:[
+        specialEditors do:[:anEditor | 
+            anEditor application modified:aBoolean
+        ].    
+    ].
+!
+
+noteBookView
+    ^ noteBookView
+!
+
+noteBookView:something
+    noteBookView := something.
+!
+
+realModifiedState
+    ^ self realModifiedStateHolder value
+!
+
+realModifiedState:aBoolean
+    self realModifiedStateHolder value:aBoolean
+!
+
+realModifiedStateHolder
+    realModifiedStateHolder isNil ifTrue:[
+        realModifiedStateHolder := ValueHolder new.
+    ].
+    ^ realModifiedStateHolder
+!
+
+selectedEditorNoteBookTabIndexHolder
+    selectedEditorNoteBookTabIndexHolder isNil ifTrue:[
+        selectedEditorNoteBookTabIndexHolder := 1 asValue.
+    ].
+    ^ selectedEditorNoteBookTabIndexHolder
+!
+
+showMethodTemplate
+    ^ showMethodTemplate ? true
+
+    "Created: / 12-02-2012 / 08:49:32 / cg"
+!
+
+showMethodTemplate: aBoolean
+    showMethodTemplate := aBoolean
+
+    "Created: / 12-02-2012 / 08:49:45 / cg"
+!
+
+showingParseError
+    ^ showingParseError
+!
+
+showingParseError:something
+    showingParseError := something.
+!
+
+stringSearchToolView
+    ^ stringSearchToolView
+!
+
+stringSearchToolView: aStringSearchTool
+
+    stringSearchToolView := aStringSearchTool
+!
+
+tabContentView
+    ^ tabContentView
+!
+
+tabContentView:something
+    tabContentView := something.
+!
+
+worker
+    ^ worker
+!
+
+worker:aProcess
+    worker := aProcess.
+! !
+
+!NavigationState methodsFor:'accessing-selection'!
+
+theSingleSelectedClass
+    "if only one class is selected, return it.
+     Otherwise, return nil"
+
+    |classes|
+
+    classes := self selectedClasses value.
+    classes size == 1 ifTrue:[
+        ^ classes first
+    ].
+    ^ nil
+!
+
+theSingleSelectedMethod
+    "if only one method is selected, return it.
+     Otherwise, return nil"
+
+    |methods|
+
+    methods := self selectedMethods value.
+    methods size == 1 ifTrue:[
+        ^ methods first
+    ].
+    ^ nil
+! !
+
+!NavigationState methodsFor:'accessing-subApps'!
+
+applicationOfComponent:aComponentName
+    ^ self applicationOfComponent:aComponentName or:nil
+
+!
+
+applicationOfComponent:aComponentName or:anotherComponentName
+    |builder view|
+
+    canvas isNil ifTrue:[^ nil].
+
+    builder := canvas builder.
+
+    view := builder findVisibleComponentAt:aComponentName.
+    (view isNil and:[anotherComponentName notNil]) ifTrue:[
+        view := builder findVisibleComponentAt:anotherComponentName.
+    ].
+
+    view notNil ifTrue:[
+        ^ view application
+    ].
+    ^ nil
+!
+
+classCategoryListApplication
+    ^ self applicationOfComponent:#ClassCategoryList
+
+!
+
+classHierarchyListApplication
+    ^ self applicationOfComponent:#ClassHierarchyList
+!
+
+classListApplication
+    ^ self applicationOfComponent:#ClassList
+
+!
+
+metaToggleComponent
+    ^ canvas builder findComponentAt:#ClassToggle.
+!
+
+methodCategoryListApplication
+    ^ self applicationOfComponent:#MethodCategoryList
+!
+
+methodListApplication
+    ^ self applicationOfComponent:#MethodList
+!
+
+nameSpaceListApplication
+    ^ self applicationOfComponent:#NamespaceList or:#PseudoNamespaceList
+!
+
+projectListApplication
+    ^ self applicationOfComponent:#ProjectList or:#PseudoProjectList
+!
+
+variableListApplication
+    ^ self applicationOfComponent:#VariableList 
+!
+
+versionDiffApplication
+    ^ versionDiffApplication
+
+!
+
+versionDiffApplication:anApplication
+    versionDiffApplication := anApplication
+
+! !
+
+!NavigationState methodsFor:'accessing-subViews'!
+
+anySpecialEditorModified
+    specialEditors notNil ifTrue:[
+        ^ specialEditors contains:[:anEditor | anEditor application isModified].    
+    ].
+    ^ false
+!
+
+codeView
+    codeView isNil ifTrue:[
+        codeView := self scrollableCodeView scrolledView
+    ].
+    ^ codeView
+!
+
+doSaveInSpecialEditors
+    specialEditors notNil ifTrue:[
+        specialEditors do:[:anEditor | 
+            anEditor application isModified ifTrue:[
+                anEditor application save.
+                ^ self.
+            ]
+        ].    
+    ].
+!
+
+documentationView
+    |textView|
+
+    documentationView isNil ifTrue:[
+        textView := CodeView new.
+        documentationView := HVScrollableView forView:textView.
+    ].
+    ^ documentationView
+!
+
+getCodeView
+    ^ codeView
+!
+
+inheritanceView
+    inheritanceView isNil ifTrue:[
+        |classTreeView scrolledView|
+
+        classTreeView := ClassTreeGraphView new.
+        scrolledView := HVScrollableView forView:classTreeView.
+        classTreeView middleButtonMenu:nil.
+        inheritanceView := scrolledView
+    ].
+    ^ inheritanceView
+!
+
+methodCategoryList: aView
+
+    | builder |
+
+    builder := canvas builder.
+    builder namedComponents at: #MethodCategoryList put: aView.
+
+    "Created: / 08-08-2011 / 09:18:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+methodList: aView
+
+    | builder |
+
+    builder := canvas builder.
+    builder namedComponents at: #MethodList put: aView.
+
+    "Created: / 08-08-2011 / 15:32:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+packageInfoButton
+    ^ packageInfoButton
+!
+
+packageInfoButton:something
+    packageInfoButton := something.
+!
+
+scrollableCodeView
+    scrollableCodeView isNil ifTrue:[
+        scrollableCodeView := self setUpScrollableCodeView.
+    ].
+    ^ scrollableCodeView
+!
+
+setUpScrollableCodeView
+    |v aScrollableCodeView codeView |
+
+    (UserPreferences current useCodeView2In: #Browser) ifTrue:[
+        codeView := aScrollableCodeView := CodeView2 new.
+        codeView mode: #method.
+        codeView methodHolder: self theSingleSelectedMethodHolder.
+        codeView classHolder: self theSingleSelectedClassHolder.
+    ] ifFalse:[
+        aScrollableCodeView := HVScrollableView for:CodeView.
+        codeView := aScrollableCodeView scrolledView.
+        aScrollableCodeView horizontalMini:true.
+    ].
+
+    aScrollableCodeView name:'CodeView'.
+    codeView modifiedChannel:self codeModifiedHolder.
+    codeView model:self codeHolder.
+    codeView canTab:true.
+    UserPreferences current useCodeView2InTools ifTrue:[
+        codeView
+            classHolder:self theSingleSelectedClassFromMethodHolder;
+            languageHolder:self languageHolder
+    ].
+
+    UserPreferences current showAcceptCancelBarInBrowser ifTrue:[
+        ViewWithAcceptAndCancelBar notNil ifTrue:[
+            v := ViewWithAcceptAndCancelBar new.
+            v slaveView:aScrollableCodeView.
+            v reallyModifiedHolder:self realModifiedStateHolder.
+            v cancelAction:
+                [
+                    "/ codeView setClipboardText:(codeView contents).   "/ for undo
+                    codeView device rememberInCopyBufferHistory:(codeView contents).  "/ for undo
+                    codeView application
+                        delayedUpdateCodeWithAutoSearch:false checkModified:false.
+                    codeView requestFocus.
+                ].
+            v compareAction:
+                [
+                    codeView application doCompareIn:self.
+                    codeView requestFocus
+                ].
+            aScrollableCodeView := v.
+        ]
+    ].
+
+   ^aScrollableCodeView
+
+    "Modified: / 05-07-2011 / 10:34:33 / cg"
+    "Modified: / 05-08-2011 / 09:44:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+specialEditorCanvasClassForResourceType:resourceTypeSymbol
+    resourceTypeSymbol == #fileImage ifTrue:[
+        ^ nil
+    ].
+    ^ SystemBrowser resourceEditorClassFor:resourceTypeSymbol
+!
+
+specialEditorCanvasForResourceType:resourceTypeSymbol
+    |appClass app editorView|
+
+    specialEditors isNil ifTrue:[
+        specialEditors := Dictionary new.    
+    ].
+    editorView := specialEditors at:resourceTypeSymbol ifAbsent:nil.
+    editorView isNil ifTrue:[
+        appClass := self specialEditorCanvasClassForResourceType:resourceTypeSymbol.
+        appClass notNil ifTrue:[
+            app := appClass new.
+            app masterApplication:self canvas application.
+            app isEmbeddedInBrowser:true.
+            app infoLabelHolder:(self canvas application infoLabelHolder).
+
+            editorView := ApplicationSubView new.
+            editorView buildMenu:true.
+            editorView client:app.
+            app builder window:editorView.
+
+            specialEditors at:resourceTypeSymbol put:editorView.
+        ].
+    ].
+    ^ editorView
+! !
+
+!NavigationState methodsFor:'aspects'!
+
+bookmarkHolder
+    "return/create the 'bookmarkHolder' value holder (automatically generated)"
+
+    bookmarkHolder isNil ifTrue:[
+        bookmarkHolder := ValueHolder with: self theSingleSelectedBookmarkFromMethodOrClass.
+        self selectedMethods onChangeSend: #updateBookmarkHolder to: self.
+        self selectedClasses onChangeSend: #updateBookmarkHolder to: self.
+    ].
+    ^ bookmarkHolder
+
+    "Modified: / 03-06-2011 / 12:00:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+categoryList
+    categoryList isNil ifTrue:[
+        categoryList := nil asValue.
+    ].
+    ^ categoryList
+
+    "Modified: / 25.2.2000 / 01:35:42 / cg"
+    "Created: / 25.2.2000 / 01:57:45 / cg"
+!
+
+categoryListGenerator
+    categoryListGenerator isNil ifTrue:[
+        categoryListGenerator := nil asValue.
+    ].
+    ^ categoryListGenerator
+
+    "Created: / 25.2.2000 / 01:34:30 / cg"
+    "Modified: / 25.2.2000 / 01:35:42 / cg"
+!
+
+classDocumentationHolder
+    classDocumentationHolder isNil ifTrue:[
+        classDocumentationHolder := nil asValue.
+    ].
+    ^ classDocumentationHolder
+!
+
+classHierarchyTopClass
+    classHierarchyTopClass isNil ifTrue:[
+        classHierarchyTopClass := nil asValue.
+    ].
+    ^ classHierarchyTopClass
+
+!
+
+classList
+    classList isNil ifTrue:[
+        classList := nil asValue.
+    ].
+    ^ classList
+
+    "Created: / 25.2.2000 / 01:57:28 / cg"
+!
+
+classListGenerator
+    classListGenerator isNil ifTrue:[
+        classListGenerator := nil asValue.
+    ].
+    ^ classListGenerator
+
+
+!
+
+classListPerNameSpaceGenerator
+    classListPerNameSpaceGenerator isNil ifTrue:[
+        classListPerNameSpaceGenerator := nil asValue.
+    ].
+    ^ classListPerNameSpaceGenerator
+
+    "Created: / 18.8.2000 / 14:15:34 / cg"
+!
+
+codeHolder
+    codeHolder isNil ifTrue:[
+        codeHolder := nil asValue.
+    ].
+    ^ codeHolder
+
+!
+
+codeModifiedHolder
+    codeModifiedHolder isNil ifTrue:[
+        codeModifiedHolder := false asValue.
+    ].
+    ^ codeModifiedHolder
+!
+
+cursorColLabelHolder
+    cursorColLabelHolder isNil ifTrue:[
+"/        self codeView isNil ifTrue:[^ nil].
+
+        cursorColLabelHolder := BlockValue 
+                                    with:[:v | v printString]
+                                    argument:self codeView cursorColHolder.
+    ].
+    ^ cursorColLabelHolder
+!
+
+cursorLineLabelHolder
+    cursorLineLabelHolder isNil ifTrue:[
+"/        self codeView isNil ifTrue:[^ nil].
+
+        cursorLineLabelHolder := BlockValue 
+                                    with:[:v | v printString]
+                                    argument:self codeView cursorLineHolder.
+    ].
+    ^ cursorLineLabelHolder
+!
+
+editModeHolder
+    editModeHolder isNil ifTrue:[
+        editModeHolder := self codeView editModeHolder.
+    ].
+    ^ editModeHolder
+!
+
+filterClassVars
+    filterClassVars isNil ifTrue:[
+        filterClassVars := false asValue.
+    ].
+    ^ filterClassVars
+
+    "Created: / 24.2.2000 / 23:45:28 / cg"
+!
+
+hidePrivateClasses
+    hidePrivateClasses isNil ifTrue:[
+        hidePrivateClasses := false asValue.
+    ].
+    ^ hidePrivateClasses
+
+    "Created: / 24.2.2000 / 16:17:02 / cg"
+!
+
+infoLabelHolder 
+    infoLabelHolder isNil ifTrue:[
+        infoLabelHolder := '' asValue.
+    ].
+    ^ infoLabelHolder
+!
+
+languageHolder
+
+    languageHolder ifNil:[
+        languageHolder := ValueHolder with: self theSingleSelectedLanguageFromMethodOrClass.
+        self selectedMethods onChangeSend: #updateLanguageHolder to: self.
+        self selectedClasses onChangeSend: #updateLanguageHolder to: self.
+    ].
+    ^languageHolder
+
+    "Created: / 20-07-2010 / 16:03:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+lintRuleListGenerator
+
+    | result |
+    result := self objectAttributeAt: #lintRuleListGenerator.
+    result ifNil:
+        [result := ValueHolder new.
+        self objectAttributeAt: #lintRuleListGenerator put: result].
+    ^result
+
+    "Created: / 22-07-2009 / 15:27:48 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+messageHolder
+    "return/create the 'messageHolder' value holder (automatically generated)"
+
+    messageHolder isNil ifTrue:[
+        messageHolder := ValueHolder new.
+    ].
+    ^ messageHolder
+!
+
+messageHolder:aValueHolder
+    "set the 'messageHolder' value holder (automatically generated)"
+
+    messageHolder := aValueHolder.
+!
+
+messageSpecHolder
+    "return/create the 'messageSpecHolder' value holder (automatically generated)"
+
+    messageSpecHolder isNil ifTrue:[
+        messageSpecHolder := ValueHolder with:#messageInfoSpec.
+    ].
+    ^ messageSpecHolder
+
+    "Modified: / 28-08-2010 / 11:40:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+messageSpecHolder:something
+    "set the 'messageSpecHolder' value holder (automatically generated)"
+
+    messageSpecHolder := something.
+!
+
+meta
+    meta isNil ifTrue:[
+        meta := false asValue.
+    ].
+    ^ meta
+
+
+!
+
+metaToggleLabelHolder
+    metaToggleLabel isNil ifTrue:[
+        metaToggleLabel := 'Class' asValue.
+    ].
+    ^ metaToggleLabel
+!
+
+methodInfo
+    methodInfo isNil ifTrue:[
+        methodInfo := nil asValue.
+    ].
+    ^ methodInfo
+
+!
+
+methodList
+    |methodListApplication|
+
+    methodListApplication := self methodListApplication.
+    methodListApplication isNil ifTrue:[^ nil].
+
+    ^ methodListApplication methodList
+!
+
+modeLabelHolder
+    modeLabelHolder isNil ifTrue:[
+        modeLabelHolder := self codeView modeLabelHolder.
+    ].
+    ^ modeLabelHolder
+!
+
+nameSpaceFilter
+    nameSpaceFilter isNil ifTrue:[
+        nameSpaceFilter := nil asValue.
+    ].
+    ^ nameSpaceFilter
+
+    "Created: / 18.8.2000 / 14:25:24 / cg"
+!
+
+nameSpaceListGenerator
+    nameSpaceListGenerator isNil ifTrue:[
+        nameSpaceListGenerator := nil asValue.
+    ].
+    ^ nameSpaceListGenerator
+
+    "Created: / 18.8.2000 / 14:26:19 / cg"
+    "Modified: / 18.8.2000 / 14:27:59 / cg"
+!
+
+navigationHistory
+
+    | history |
+    history := self objectAttributeAt: #navigationHistory.
+    history ifNil:
+        [history := NavigationHistory new.
+        self objectAttributeAt: #navigationHistory put: history].
+    ^history
+
+    "Created: / 21-02-2008 / 20:08:43 / janfrog"
+    "Modified: / 21-07-2009 / 22:39:57 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+noAllItem
+    noAllItem isNil ifTrue:[
+        noAllItem := nil asValue.
+    ].
+    ^ noAllItem
+!
+
+organizerMode
+    "return the organizerMode holder; 
+     holding a symbol describing how things are organized
+     (#category, #hierarchy, #project or #namespace)"
+
+    organizerMode isNil ifTrue:[
+        organizerMode := OrganizerCanvas organizerModeCategory asValue.
+    ].
+    ^ organizerMode
+
+    "Created: / 18.2.2000 / 13:33:55 / cg"
+    "Modified: / 18.8.2000 / 18:37:22 / cg"
+!
+
+packageFilter
+    packageFilter isNil ifTrue:[
+        packageFilter := nil asValue.
+    ].
+    ^ packageFilter
+
+    "Created: / 24.2.2000 / 23:45:28 / cg"
+!
+
+packageInfoBackgroundColorHolder
+
+    packageInfoBackgroundColorHolder isNil ifTrue:[
+        packageInfoBackgroundColorHolder := nil asValue.
+    ].
+    ^ packageInfoBackgroundColorHolder
+
+    "Created: / 03-10-2011 / 14:04:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+packageLabelHolder
+    packageLabelHolder isNil ifTrue:[
+        packageLabelHolder := '' asValue.
+    ].
+    ^ packageLabelHolder
+!
+
+pluginVisibleHolder
+    pluginVisibleHolder isNil ifTrue:[
+        pluginVisibleHolder := false asValue.
+    ].
+    ^ pluginVisibleHolder
+
+    "Created: / 03-10-2010 / 17:50:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+profilerStatistics
+
+    | statistics |
+    statistics := self objectAttributeAt: #profilerStatistics.
+    statistics ifNil:
+        [statistics := ValueHolder new.
+        self objectAttributeAt: #profilerStatistics put: statistics].
+    ^statistics
+
+    "Created: / 21-02-2008 / 20:08:43 / janfrog"
+    "Modified: / 21-07-2009 / 22:40:34 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+profilerStatistics: anObject
+
+    self objectAttributeAt: #profilerStatistics put: anObject
+
+    "Created: / 21-02-2008 / 20:08:43 / janfrog"
+    "Modified: / 21-07-2009 / 22:41:02 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+progressHolder
+    "return/create the 'progressHolder' value holder (automatically generated)"
+
+    progressHolder isNil ifTrue:[
+        progressHolder := ValueHolder new.
+    ].
+    ^ progressHolder
+!
+
+progressHolder:aValueHolder
+    "set the 'progressHolder' value holder (automatically generated)"
+
+    progressHolder := aValueHolder.
+!
+
+projectListGenerator
+    projectListGenerator isNil ifTrue:[
+        projectListGenerator := nil asValue.
+    ].
+    ^ projectListGenerator
+
+    "Modified: / 25.2.2000 / 01:35:42 / cg"
+    "Created: / 25.2.2000 / 02:43:26 / cg"
+!
+
+protocolListGenerator
+    protocolListGenerator isNil ifTrue:[
+        protocolListGenerator := nil asValue.
+    ].
+    ^ protocolListGenerator
+
+!
+
+selectedCategories
+    selectedCategories isNil ifTrue:[
+        selectedCategories := nil asValue.
+    ].
+    ^ selectedCategories
+
+!
+
+    "bad name- it's a holder, baby"
+
+selectedLintRules
+    selectedLintRules isNil ifTrue:[
+        selectedLintRules := nil asValue.
+    ].
+    ^ selectedLintRules
+
+    "Modified: / 02-02-2010 / 20:42:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectedMethods
+    selectedMethods isNil ifTrue:[
+        selectedMethods := nil asValue.
+    ].
+    ^ selectedMethods
+
+!
+
+selectedMethodsArrayAt:index
+    |holder|
+
+    selectedMethodsArray isNil ifTrue:[
+        selectedMethodsArray := OrderedCollection new 
+    ].
+    index > selectedMethodsArray size ifTrue:[
+        selectedMethodsArray grow:index
+    ].
+    holder := selectedMethodsArray at:index.
+    holder isNil ifTrue:[
+        selectedMethodsArray at:index put:(holder := ValueHolder new)
+    ].
+    ^ holder.
+!
+
+selectedNamespaces
+    selectedNamespaces isNil ifTrue:[
+        selectedNamespaces := nil asValue.
+    ].
+    ^ selectedNamespaces
+
+!
+
+selectedProjects
+    selectedProjects isNil ifTrue:[
+        selectedProjects := nil asValue.
+    ].
+    ^ selectedProjects
+
+!
+
+selectedProtocols
+    selectedProtocols isNil ifTrue:[
+        selectedProtocols := nil asValue.
+    ].
+    ^ selectedProtocols
+
+!
+
+selectorListGenerator
+    selectorListGenerator isNil ifTrue:[
+        selectorListGenerator := nil asValue.
+    ].
+    ^ selectorListGenerator
+
+!
+
+selectorListGeneratorArray
+    self halt:'should not be invoked'.
+!
+
+selectorListGeneratorArrayAt:index
+    |holder|
+
+    selectorListGeneratorArray isNil ifTrue:[
+        selectorListGeneratorArray := OrderedCollection new 
+    ].
+    index > selectorListGeneratorArray size ifTrue:[
+        selectorListGeneratorArray grow:index
+    ].
+    holder := selectorListGeneratorArray at:index.
+    holder isNil ifTrue:[
+        selectorListGeneratorArray at:index put:(holder := ValueHolder new)
+    ].
+    ^ holder.
+!
+
+sortBy
+    sortBy isNil ifTrue:[
+        sortBy := nil asValue.
+    ].
+    ^ sortBy
+!
+
+theSingleSelectedBookmarkFromMethodOrClass
+
+    | mth cls |
+
+    mth := self theSingleSelectedMethod. 
+    (mth notNil and:[mth mclass notNil])
+        ifTrue:[^Tools::NewSystemBrowser bookmarkForClass:mth mclass selector:mth selector].
+    cls := self theSingleSelectedClass.
+    cls 
+        ifNotNil:[^Tools::NewSystemBrowser bookmarkForClass:cls selector:nil].
+    ^nil
+
+    "Created: / 02-06-2011 / 22:16:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 02-06-2011 / 23:19:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+theSingleSelectedClassFromMethodHolder
+
+    ^BlockValue 
+        with:
+            [:i1 :i2| | mth cls |
+            mth := self theSingleSelectedMethod. 
+            cls := mth ifNil:[nil] ifNotNil:[mth mclass].
+            cls ifNil:[
+            cls := self theSingleSelectedClass].
+            cls]
+        argument: self selectedMethods
+        argument: self selectedClasses.
+
+    "Created: / 14-02-2010 / 10:05:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+theSingleSelectedClassHolder
+
+    ^BlockValue 
+        with:
+            [:i1 | self theSingleSelectedClass]
+        argument: 
+            self selectedClasses
+
+    "Created: / 05-08-2011 / 09:44:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+theSingleSelectedLanguageFromMethodOrClass
+
+    | mth cls |
+
+    mth := self theSingleSelectedMethod. 
+    mth ifNotNil:[^mth programmingLanguage].
+    cls := self theSingleSelectedClass.
+    cls ifNotNil:[^cls programmingLanguage].
+    ^SmalltalkLanguage instance
+
+    "Created: / 20-07-2010 / 15:59:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+theSingleSelectedMethodHolder
+
+    ^BlockValue 
+        with:
+            [:i1 | self theSingleSelectedMethod]
+        argument: 
+            self selectedMethods
+
+    "Created: / 17-06-2011 / 12:39:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateBookmarkHolder
+
+   ^self bookmarkHolder value: self theSingleSelectedBookmarkFromMethodOrClass
+
+    "Created: / 02-06-2011 / 22:13:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateLanguageHolder
+
+   ^self languageHolder value: self theSingleSelectedLanguageFromMethodOrClass
+
+    "Created: / 20-07-2010 / 16:05:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+variableFilter
+    variableFilter isNil ifTrue:[
+        variableFilter := nil asValue.
+    ].
+    ^ variableFilter
+
+    "Created: / 24.2.2000 / 23:45:28 / cg"
+! !
+
+!NavigationState methodsFor:'aspects-kludges'!
+
+metaToggle
+    metaToggle isNil ifTrue:[
+        metaToggle := PluggableAdaptor on:(self meta).
+        metaToggle
+            getBlock:[:m | m value == true]
+            putBlock:[:m :newValue | m value:(newValue ? false)]
+            updateBlock:[:m :aspect :param | true].
+    ].
+    ^ metaToggle
+!
+
+notMetaToggle
+    notMetaToggle isNil ifTrue:[
+        notMetaToggle := PluggableAdaptor on:(self meta).
+        notMetaToggle
+            getBlock:[:m | m value == false]
+            putBlock:[:m :newValue | m value:(newValue ? false) not]
+            updateBlock:[:m :aspect :param | true].
+    ].
+    ^ notMetaToggle
+! !
+
+!NavigationState methodsFor:'history'!
+
+addToHistory: class selector: selector
+
+    | entry |
+    "/selector ifNil:[^self].
+    entry := SystemBrowser historyEntryForClass: class selector: selector.
+    self navigationHistory goTo: entry.
+    ^entry
+
+    "Created: / 22-02-2008 / 08:44:05 / janfrog"
+    "Modified: / 22-02-2008 / 17:20:00 / janfrog"
+    "Modified: / 06-04-2012 / 10:55:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!NavigationState methodsFor:'printing & storing'!
+
+colorizeForModifiedBuffer:someString
+    ^ someString asText emphasisAllAdd:(UserPreferences current emphasisForModifiedBuffer)
+!
+
+nameString
+    "a descriptive string of what this state shows"
+
+    |s|
+
+    s := self rawNameStringOrNil ? 'nothing selected'.
+
+    (self realModifiedState == true) ifTrue:[
+        ^ self colorizeForModifiedBuffer:s string
+    ].
+    ^ s
+!
+
+nameStringOrNil
+    "a descriptive string of what this state shows"
+
+    |s "codeView"|
+
+    s := self rawNameStringOrNil.
+    s notNil ifTrue:[
+        self realModifiedState == true 
+"/    ((codeView := self codeView) notNil
+"/    and:[codeView modified]) 
+        ifTrue:[
+            ^ self colorizeForModifiedBuffer:s string
+        ].
+    ].
+    ^ s
+!
+
+rawNameStringForCategory
+    |categories theCategory|
+
+    categories := self selectedCategories value.
+    categories size == 1 ifTrue:[
+        theCategory := categories first.
+        theCategory notNil ifTrue:[
+            ^ theCategory string, ' [Category]'
+        ].
+    ].
+    ^ nil
+
+    "Created: / 18.8.2000 / 19:42:42 / cg"
+!
+
+rawNameStringForNameSpace
+    |namespaces theNamespace nsName s|
+
+    namespaces := self selectedNamespaces value.
+    namespaces size == 1 ifTrue:[
+        theNamespace := namespaces first
+    ].
+    theNamespace notNil ifTrue:[
+        theNamespace isNameSpace ifTrue:[
+            nsName := theNamespace name
+        ] ifFalse:[
+            nsName := theNamespace
+        ].
+        s := nsName , ' [NameSpace]'.
+        (self isNameSpaceBrowser or:[self isNameSpaceFullBrowser]) ifTrue:[
+            ^ LabelAndIcon icon:(NewSystemBrowser nameSpaceIcon) string:s.
+        ].
+        ^ s
+    ].
+    ^ nil
+
+    "Created: / 18.8.2000 / 20:15:02 / cg"
+!
+
+rawNameStringForProject
+    |projects theProject s|
+
+    projects := self selectedProjects value.
+    projects size == 1 ifTrue:[
+        theProject := projects first
+    ].
+    theProject notNil ifTrue:[
+        s := theProject , ' [Project]'.
+        (self isProjectBrowser or:[self isProjectFullBrowser]) ifTrue:[
+            ^ LabelAndIcon icon:(NewSystemBrowser packageIcon) string:s.
+        ].
+        ^ s
+    ].
+    ^ nil
+
+    "Created: / 18.8.2000 / 20:18:34 / cg"
+!
+
+rawNameStringOrNil
+    "a descriptive string of what this state shows; nil, if nothing is selected"
+
+    ^ self rawNameStringOrNilWantShort:false
+!
+
+rawNameStringOrNilWantShort:shortName
+    "a descriptive string of what this state shows; nil, if nothing is selected"
+
+    |lbl nr numClasses numMethods numCategories cats classes theClass   
+     "protocols theProtocol" 
+     methods theSingleMethod projects theProject longName nm methodName suffix cls|
+
+    browserLabel notNil ifTrue:[
+        "/ add the number of selected methods
+        ((canvasType == #singleFullProtocolBrowserSpec)
+        or:[canvasType == #methodListBrowserSpec]) ifTrue:[
+            nr := self selectedMethods value size.
+            nr > 5 ifTrue:[
+                ^ browserLabel string , ' - ' , nr printString , ' methods'
+            ].
+        ].
+        ^ browserLabel
+    ].
+
+    suffix := ''.
+
+    self isProtocolOrFullProtocolBrowser ifTrue:[
+        lbl := self rawNameStringForProject.
+        lbl notNil ifTrue:[^ lbl].
+        suffix := ' [Protocol]'.
+    ].
+
+    self isCategoryBrowser ifTrue:[
+        lbl := self rawNameStringForCategory.
+        lbl notNil ifTrue:[^ lbl].
+        suffix := ' [Category]'.
+    ].
+
+    self isNameSpaceBrowser ifTrue:[
+        lbl := self rawNameStringForNameSpace.
+        lbl notNil ifTrue:[^ lbl].
+        suffix := ' [NameSpace]'.
+    ].
+
+    self isProjectBrowser ifTrue:[
+        projects := self selectedProjects value.
+        projects size == 1 ifTrue:[
+            theProject := projects first
+        ].
+        suffix := ' [Project]'.
+        theProject notNil ifTrue:[
+            ^ theProject , suffix
+        ]
+    ].
+
+    classes := self selectedClasses value.
+    classes size == 1 ifTrue:[
+        theClass := classes first.
+        theClass notNil ifTrue:[
+            theClass := theClass theNonMetaclass
+        ]
+    ].
+
+    self isClassBrowser ifTrue:[
+        suffix := ' [Class]'.
+        theClass notNil ifTrue:[
+            ^ theClass name , suffix
+        ]
+    ].
+
+"/    protocols := self selectedProtocols value.
+"/    protocols size == 1 ifTrue:[
+"/        theProtocol := protocols first
+"/    ].
+
+    methods := self selectedMethods value.
+    methods size == 1 ifTrue:[
+        theSingleMethod := methods first
+    ].
+
+    theSingleMethod notNil ifTrue:[
+        methodName := theSingleMethod selector.
+        methodName isSymbol ifTrue:[methodName := methodName selector].
+        theSingleMethod isJavaMethod ifTrue:[
+            methodName := theSingleMethod printStringForBrowserWithSelector:methodName.
+        ].
+    ].
+
+    self isMethodBrowser ifTrue:[
+        suffix := ' [Selector]'.
+
+        theSingleMethod notNil ifTrue:[
+            theSingleMethod mclass isNil ifTrue:[
+                ^ '???'
+            ].
+            ^ theSingleMethod mclass name , ' ' , methodName , suffix
+        ]
+    ].
+
+    self isCategoryBrowser ifTrue:[
+        suffix :=  ' [Category]'.
+    ] ifFalse:[
+        self isFullClassSourceBrowser ifTrue:[
+            suffix :=  ' [Full]'.
+        ] ifFalse:[
+            self isClassDocumentationBrowser ifTrue:[
+                suffix :=  ' [Doc]'.
+            ] ifFalse:[
+                self isProjectBrowser ifTrue:[
+                    suffix :=  ' [Project]'.
+                ]
+            ]
+        ]
+    ].
+
+    nm := nil.
+    (numClasses := classes size) > 0 ifTrue:[
+        numClasses > 1 ifTrue:[
+            methods size > 0 ifTrue:[
+                theSingleMethod notNil ifTrue:[
+                    cls := theSingleMethod mclass.
+                    cls isNil ifTrue:[ 
+                        "/ oops - unbound
+                        nm := '???'
+                    ] ifFalse:[
+                        longName := nm := cls nameInBrowser.
+                        shortName ifTrue:[
+                            nm := cls nameWithoutPrefix.
+                            cls isPrivate ifTrue:[
+                                nm := ':' , nm
+                            ]
+                        ].
+                    ].
+                    nm := nm , ' ', (methodName ? '???')
+                ] ifFalse:[
+                    nm := methods size printString , ' methods'.
+                    numClasses := (methods collect:[:each | each mclass]) asIdentitySet size.
+                    numClasses > 1 ifTrue:[
+                        nm := nm , ' in ' , numClasses printString , ' classes'.
+                    ].
+                ].
+                ^ nm , suffix.
+            ].
+
+            nm := numClasses printString , ' classes in '.
+            "/ cats := self selectedCategories value
+            cats := classes collect:[:each | each category] as:Set.
+            (numCategories := cats size) == 1 ifTrue:[
+                nm := nm , cats first
+            ] ifFalse:[
+                nm := nm , numCategories printString , ' categories'
+            ]
+        ] ifFalse:[
+            cls := theClass theNonMetaclass.
+            longName := nm := cls nameInBrowser.
+            shortName ifTrue:[
+                nm := cls nameWithoutPrefix.
+                cls isPrivate ifTrue:[
+                    nm := ':' , nm
+                ]
+            ].
+            methods := self selectedMethods value.
+            (numMethods := methods size) > 0 ifTrue:[
+                numMethods == 1 ifTrue:[
+                    theSingleMethod := methods first.
+                    nm := nm , ' ', (methodName ? '???')
+                ] ifFalse:[
+                    nm := numMethods printString , ' methods in ' , nm
+                ]
+            ]
+        ]
+    ] ifFalse:[
+        (self isNameSpaceBrowser 
+        or:[self isNameSpaceFullBrowser
+        or:[organizerMode value == OrganizerCanvas organizerModeNamespace]]) ifTrue:[
+            lbl := self rawNameStringForNameSpace.
+            lbl notNil ifTrue:[^ lbl].
+            suffix := ' [NameSpace]'.
+        ] ifFalse:[
+            (self isProjectBrowser 
+            or:[self isProjectFullBrowser
+            or:[organizerMode value == OrganizerCanvas organizerModeProject]]) ifTrue:[
+                lbl := self rawNameStringForProject.
+                lbl notNil ifTrue:[^ lbl].
+                suffix := ' [Project]'.
+            ] ifFalse:[
+                cats := self selectedCategories value.
+                cats size == 1 ifTrue:[
+                    nm := cats first string
+                ]
+            ]
+        ].
+    ].
+    nm isNil ifTrue:[ ^ nil ].
+    ^ nm , suffix.
+
+    "Created: / 11-02-2000 / 13:32:16 / cg"
+    "Modified: / 18-08-2000 / 21:06:35 / cg"
+    "Modified: / 20-07-2010 / 10:52:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+shortNameString
+    "a descriptive string of what this state shows"
+
+    |s|
+
+    s := (self rawNameStringOrNilWantShort:true) ? 'nothing selected'.
+
+    (self realModifiedState == true) ifTrue:[
+        ^ self colorizeForModifiedBuffer:s string
+    ].
+    ^ s
+! !
+
+!NavigationState methodsFor:'queries'!
+
+isCategoryBrowser
+    ^ canvasType == #categoryBrowserSpec
+      or:[ canvasType == #singleCategoryBrowserSpec
+      or:[ canvasType == #multipleCategoryBrowserSpec ]]
+
+    "Modified: / 25.2.2000 / 01:17:02 / cg"
+!
+
+isChainBrowser
+    ^ canvasType == #chainBrowserSpec    
+!
+
+isCheckOutputBrowser
+    ^ canvasType == #multipleClassWithInfoAndMethodWithInfoBrowserSpec
+      or:[canvasType == #multipleMethodWithInfoBrowserSpec
+      or:[canvasType == #multipleClassWithInfoBrowserSpec]]
+!
+
+isClassBrowser
+    ^ canvasType == #classBrowserSpec
+      or:[ canvasType == #singleClassBrowserSpec
+      or:[ canvasType == #multipleClassBrowserSpec ]]
+
+    "Modified: / 25.2.2000 / 00:38:07 / cg"
+!
+
+isClassDocumentationBrowser
+    ^ canvasType == #classDocumentationBrowserSpec
+
+    "Created: / 24.2.2000 / 14:54:40 / cg"
+!
+
+isClassExtensionBrowser
+    ^ canvasType == #multipleClassExtensionBrowserSpec
+
+    "Created: / 24.2.2000 / 14:54:40 / cg"
+!
+
+isFullBrowser
+    ^ canvasType == #fullBrowserSpec
+!
+
+isFullClassSourceBrowser
+    ^ canvasType == #fullClassSourceBrowserSpec
+
+    "Created: / 24.2.2000 / 14:54:40 / cg"
+!
+
+isFullProtocolBrowser
+    ^ canvasType == #singleFullProtocolBrowserSpec
+      or:[ canvasType == #multipleFullProtocolBrowserSpec ]
+
+    "Created: / 24.2.2000 / 21:32:09 / cg"
+    "Modified: / 25.2.2000 / 03:11:00 / cg"
+!
+
+isLintResultBrowser
+    ^ canvasType == #smallLintByRuleResultBrowserSpec
+!
+
+isMethodBrowser
+    ^ canvasType == #methodListBrowserSpec
+      or:[ canvasType == #singleMethodBrowserSpec
+      or:[ canvasType == #multipleMethodBrowserSpec
+      or:[ canvasType == #multipleMethodWithInfoBrowserSpec ]]]
+
+    "Modified: / 1.3.2000 / 13:35:12 / cg"
+!
+
+isMethodListBrowser
+    canvasType == #methodListBrowserSpec ifTrue:[^ true].
+    canvasType == #multipleMethodBrowserSpec ifTrue:[^ true].
+    canvasType == #singleProtocolBrowserSpec ifTrue:[^ true].
+    ^ false.
+!
+
+isNameSpaceBrowser
+    ^ canvasType == #singleNameSpaceBrowserSpec
+      or:[ canvasType == #multipleNameSpaceBrowserSpec]
+
+    "Modified: / 18.8.2000 / 16:12:34 / cg"
+!
+
+isNameSpaceFullBrowser
+    ^ canvasType == #singleNameSpaceFullBrowserSpec
+      or:[ canvasType == #multipleNameSpaceFullBrowserSpec ]
+
+    "Created: / 18.8.2000 / 14:58:36 / cg"
+!
+
+isProjectBrowser
+    ^ canvasType == #singleProjectBrowserSpec
+      or:[ canvasType == #multipleProjectBrowserSpec ]
+
+    "Created: / 24.2.2000 / 21:32:09 / cg"
+    "Modified: / 25.2.2000 / 03:11:00 / cg"
+!
+
+isProjectFullBrowser
+    ^ canvasType == #singleProjectFullBrowserSpec
+      or:[ canvasType == #multipleProjectFullBrowserSpec ]
+
+    "Created: / 18.8.2000 / 19:02:49 / cg"
+!
+
+isProtocolBrowser
+    ^ canvasType == #singleProtocolBrowserSpec
+      or:[ canvasType == #multipleProtocolBrowserSpec ]
+
+    "Created: / 24.2.2000 / 21:32:09 / cg"
+    "Modified: / 25.2.2000 / 03:11:00 / cg"
+!
+
+isProtocolOrFullProtocolBrowser
+    ^ self isProtocolBrowser
+      or:[ self isFullProtocolBrowser ]
+!
+
+isSingleCategoryBrowser
+    ^ canvasType == #singleCategoryBrowserSpec    
+!
+
+isSingleClassBrowser
+    ^ canvasType == #singleClassBrowserSpec    
+!
+
+isSingleFullProtocolBrowser
+    ^ canvasType == #singleFullProtocolBrowserSpec    
+!
+
+isSingleMethodBrowser
+    ^ canvasType == #singleMethodBrowserSpec
+
+    "Created: / 1.3.2000 / 13:35:52 / cg"
+!
+
+isSingleNamespaceBrowser
+    ^ canvasType == #singleNameSpaceBrowserSpec
+!
+
+isSingleNamespaceFullBrowser
+    ^ canvasType == #singleNameSpaceFullBrowserSpec
+!
+
+isSingleProjectBrowser
+    ^ canvasType == #singleProjectBrowserSpec
+      or:[ canvasType == #singleProjectFullBrowserSpec ]
+
+    "Created: / 24.2.2000 / 21:32:09 / cg"
+    "Modified: / 25.2.2000 / 03:11:00 / cg"
+!
+
+isSingleProjectFullBrowser
+    ^ canvasType == #singleProjectFullBrowserSpec
+
+    "Created: / 24.2.2000 / 21:32:09 / cg"
+    "Modified: / 25.2.2000 / 03:11:00 / cg"
+!
+
+isSingleProtocolBrowser
+    ^ canvasType == #singleProtocolBrowserSpec    
+!
+
+isVersionDiffBrowser
+    ^ canvasType == #multipleClassRepositoryDiffBrowserSpec
+! !
+
+!NavigationState class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_NavigationState.st,v 1.47 2012/11/03 14:22:14 cg Exp $'
+!
+
+version_CVS
+    ^ 'Header: /cvs/stx/stx/libtool/Tools_NavigationState.st,v 1.47 2012/11/03 14:22:14 cg Exp '
+!
+
+version_SVN
+    ^ '$Id: Tools__NavigationState.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+! !
+
+NavigationState initialize!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__NavigatorCanvas.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,6937 @@
+"
+ COPYRIGHT (c) 2000 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 }"
+
+NavigatorModel subclass:#NavigatorCanvas
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+!NavigatorCanvas class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2000 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.
+"
+! !
+
+!NavigatorCanvas class methodsFor:'interface specs'!
+
+categoryAndClassOnlySpec
+    "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:NavigatorCanvas andSelector:#categoryAndClassOnlySpec
+     NavigatorCanvas new openInterface:#categoryAndClassOnlySpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #fullClassSourceBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'Full Class Browser'
+          #name: 'Full Class Browser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 18 51 480 351)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#SubCanvasSpec
+              #name: 'Organizer'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #majorKey: #'OrganizerCanvas'
+              #minorKey: #windowSpecWithoutMetaToggles
+              #subAspectHolders: 
+             #(#Array
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #classCategoryListMenuHolder
+                  #aspect: #categoryPopUpMenu
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #classCategoryDoubleClickChannel
+                  #callBack: #classCategoryDoubleClicked
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #classDoubleClickChannel
+                  #callBack: #classDoubleClicked
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #nameSpaceDoubleClickChannel
+                  #callBack: #nameSpaceDoubleClicked
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #projectDoubleClickChannel
+                  #callBack: #projectDoubleClicked
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #variableDoubleClickChannel
+                  #callBack: #variableDoubleClicked
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #classHierarchyListMenuHolder
+                  #aspect: #hierarchyPopUpMenu
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #classHierarchyTopClass
+                  #aspect: #classHierarchyTopClass
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #classListMenuHolder
+                  #aspect: #classPopUpMenu
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #hidePrivateClasses
+                  #aspect: #hidePrivateClasses
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #hideUnloadedClasses
+                  #aspect: #hideUnloadedClasses
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #showClassPackages
+                  #aspect: #showClassPackages
+                )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+"/                     #(#SubChannelInfoSpec
+"/                        #subAspect: #showMethodComplexity
+"/                        #aspect: #showMethodComplexity
+"/                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #immediateUpdate
+                  #aspect: #immediateUpdate
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #meta
+                  #aspect: #meta
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #metaToggleLabelHolder
+                  #aspect: #metaToggleLabelHolder
+                )
+
+               #(#SubChannelInfoSpec
+                  #subAspect: #nameSpaceListMenuHolder
+                  #aspect: #nameSpacePopUpMenu
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #organizerMode
+                  #aspect: #organizerMode
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #outGeneratorHolder
+                  #aspect: #protocolListGenerator
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #packageFilter
+                  #aspect: #packageFilter
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #projectListMenuHolder
+                  #aspect: #projectPopUpMenu
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectedCategories
+                  #aspect: #selectedCategories
+                  #callBack: #categorySelectionChanged
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectedClasses
+                  #aspect: #selectedClasses
+                  #callBack: #classSelectionChanged
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectedNamespaces
+                  #aspect: #selectedNamespaces
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectedProjects
+                  #aspect: #selectedProjects
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectionChangeCondition
+                  #aspect: #selectionChangeConditionHolder
+                )
+              )
+              #createNewApplication: true
+              #createNewBuilder: true
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 20-07-2011 / 14:19:31 / cg"
+    "Modified: / 13-04-2012 / 16:14:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+categoryAndSingleClassOnlySpec
+    "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:NavigatorCanvas andSelector:#categoryAndSingleClassOnlySpec
+     NavigatorCanvas new openInterface:#categoryAndSingleClassOnlySpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #categoryAndSingleClassOnlySpec
+        #window: 
+       #(#WindowSpec
+          #label: 'Full Class Browser'
+          #name: 'Full Class Browser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 12 22 474 322)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#SubCanvasSpec
+              #name: 'Organizer'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #majorKey: #'OrganizerCanvas'
+              #minorKey: #windowSpecWithoutMetaToggles
+              #subAspectHolders: 
+             #(#Array
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #classCategoryListMenuHolder
+                  #aspect: #categoryPopUpMenu
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #classCategoryDoubleClickChannel
+                  #callBack: #classCategoryDoubleClicked
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #classDoubleClickChannel
+                  #callBack: #classDoubleClicked
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #nameSpaceDoubleClickChannel
+                  #callBack: #nameSpaceDoubleClicked
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #projectDoubleClickChannel
+                  #callBack: #projectDoubleClicked
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #variableDoubleClickChannel
+                  #callBack: #variableDoubleClicked
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #classHierarchyListMenuHolder
+                  #aspect: #hierarchyPopUpMenu
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #classHierarchyTopClass
+                  #aspect: #classHierarchyTopClass
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #classListMenuHolder
+                  #aspect: #classPopUpMenu
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #hidePrivateClasses
+                  #aspect: #hidePrivateClasses
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #hideUnloadedClasses
+                  #aspect: #hideUnloadedClasses
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #showClassPackages
+                  #aspect: #showClassPackages
+                )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+"/                     #(#SubChannelInfoSpec
+"/                        #subAspect: #showMethodComplexity
+"/                        #aspect: #showMethodComplexity
+"/                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #immediateUpdate
+                  #aspect: #immediateUpdate
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #meta
+                  #aspect: #meta
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #nameSpaceListMenuHolder
+                  #aspect: #nameSpacePopUpMenu
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #organizerMode
+                  #aspect: #organizerMode
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #outGeneratorHolder
+                  #aspect: #protocolListGenerator
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #packageFilter
+                  #aspect: #packageFilter
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #projectListMenuHolder
+                  #aspect: #projectPopUpMenu
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectedCategories
+                  #aspect: #selectedCategories
+                  #callBack: #categorySelectionChanged
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectedClasses
+                  #aspect: #selectedClasses
+                  #callBack: #classSelectionChanged
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectedNamespaces
+                  #aspect: #selectedNamespaces
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectedProjects
+                  #aspect: #selectedProjects
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectionChangeCondition
+                  #aspect: #selectionChangeConditionHolder
+                )
+              )
+              #createNewApplication: true
+              #createNewBuilder: true
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 20-07-2011 / 14:19:38 / cg"
+    "Modified: / 13-04-2012 / 16:14:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fullBrowserSpec
+
+    ^UserPreferences current showEmbeddedTestRunnerInBrowser
+        ifTrue: [self fullBrowserSpecWithEmbeddedTestRunner]
+        ifFalse:[self fullBrowserSpecPlain]
+
+    "Modified: / 11-03-2010 / 10:15:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fullBrowserSpecPlain
+    "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:NavigatorCanvas andSelector:#fullBrowserSpec
+     NavigatorCanvas new openInterface:#fullBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #fullBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'SystemBrowser'
+          #name: 'SystemBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 18 51 480 351)
+          #icon: #defaultIcon
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#SubCanvasSpec
+                    #name: 'Organizer'
+                    #majorKey: #'OrganizerCanvas'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #classCategoryListMenuHolder
+                        #aspect: #categoryPopUpMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #classCategoryDoubleClickChannel
+                        #callBack: #classCategoryDoubleClicked
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #classDoubleClickChannel
+                        #callBack: #classDoubleClicked
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #nameSpaceDoubleClickChannel
+                        #callBack: #nameSpaceDoubleClicked
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #projectDoubleClickChannel
+                        #callBack: #projectDoubleClicked
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableDoubleClickChannel
+                        #callBack: #variableDoubleClicked
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #classHierarchyListMenuHolder
+                        #aspect: #hierarchyPopUpMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #classHierarchyTopClass
+                        #aspect: #classHierarchyTopClass
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #classListMenuHolder
+                        #aspect: #classPopUpMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #hideUnloadedClasses
+                        #aspect: #hideUnloadedClasses
+                      )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showClassPackages
+                        #aspect: #showClassPackages
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #meta
+                        #aspect: #meta
+                      ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #metaToggleLabelHolder
+                  #aspect: #metaToggleLabelHolder
+                )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #nameSpaceListMenuHolder
+                        #aspect: #nameSpacePopUpMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #organizerMode
+                        #aspect: #organizerMode
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #projectListMenuHolder
+                        #aspect: #projectPopUpMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedCategories
+                        #aspect: #selectedCategories
+                        #callBack: #categorySelectionChanged
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedClasses
+                        #aspect: #selectedClasses
+                        #callBack: #classSelectionChanged
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedNamespaces
+                        #aspect: #selectedNamespaces
+                        #callBack: #nameSpaceSelectionChanged
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProjects
+                        #aspect: #selectedProjects
+                        #callBack: #projectSelectionChanged
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #nameSpaceFilter
+                        #aspect: #nameSpaceFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                        #callBack: #variableSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variablesMenuHolder
+                        #aspect: #variablesPopUpMenu
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #sortVariablesByName
+                        #aspect: #sortVariablesByName
+                      )
+
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodCategoryList'
+                    #majorKey: #'MethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showPseudoProtocols
+                        #aspect: #showPseudoProtocols
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                        #callBack: #protocolSelectionChanged
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                        #callBack: #variableSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                        #callBack: #variableSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.5 0.75 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Created: / 11-03-2010 / 08:41:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 20-07-2011 / 14:20:41 / cg"
+    "Modified: / 13-04-2012 / 16:17:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fullBrowserSpecWithEmbeddedTestRunner
+    "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:Tools::NavigatorCanvas andSelector:#fullBrowserSpec_new
+     Tools::NavigatorCanvas new openInterface:#fullBrowserSpec_new
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: #'fullBrowserSpec_new'
+        window: 
+       (WindowSpec
+          label: 'SystemBrowser'
+          name: 'SystemBrowser'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 462 300)
+          icon: defaultIcon
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (VariableHorizontalPanelSpec
+              name: 'VariableHorizontalPanel1'
+              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              barWidth: 2
+              showHandle: false
+              component: 
+             (SpecCollection
+                collection: (
+                 (SubCanvasSpec
+                    name: 'Organizer'
+                    majorKey: OrganizerCanvas
+                    subAspectHolders: 
+                   (Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: classCategoryListMenuHolder
+                        aspect: categoryPopUpMenu
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: classCategoryDoubleClickChannel
+                        callBack: classCategoryDoubleClicked
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: classDoubleClickChannel
+                        callBack: classDoubleClicked
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: nameSpaceDoubleClickChannel
+                        callBack: nameSpaceDoubleClicked
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: projectDoubleClickChannel
+                        callBack: projectDoubleClicked
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: variableDoubleClickChannel
+                        callBack: variableDoubleClicked
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: classHierarchyListMenuHolder
+                        aspect: hierarchyPopUpMenu
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: classHierarchyTopClass
+                        aspect: classHierarchyTopClass
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: classListMenuHolder
+                        aspect: classPopUpMenu
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: hideUnloadedClasses
+                        aspect: hideUnloadedClasses
+                      )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: markApplicationsHolder
+                        aspect: markApplicationsHolder
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: showClassPackages
+                        aspect: showClassPackages
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: immediateUpdate
+                        aspect: immediateUpdate
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: meta
+                        aspect: meta
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: metaToggleLabelHolder
+                        aspect: metaToggleLabelHolder
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: nameSpaceListMenuHolder
+                        aspect: nameSpacePopUpMenu
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: organizerMode
+                        aspect: organizerMode
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: outGeneratorHolder
+                        aspect: protocolListGenerator
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: packageFilter
+                        aspect: packageFilter
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: projectListMenuHolder
+                        aspect: projectPopUpMenu
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: selectedCategories
+                        aspect: selectedCategories
+                        callBack: categorySelectionChanged
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: selectedClasses
+                        aspect: selectedClasses
+                        callBack: classSelectionChanged
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: selectedNamespaces
+                        aspect: selectedNamespaces
+                        callBack: nameSpaceSelectionChanged
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: selectedProjects
+                        aspect: selectedProjects
+                        callBack: projectSelectionChanged
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: selectionChangeCondition
+                        aspect: selectionChangeConditionHolder
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: nameSpaceFilter
+                        aspect: nameSpaceFilter
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: variableFilter
+                        aspect: variableFilter
+                        callBack: variableSelectionChanged
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: filterClassVars
+                        aspect: filterClassVars
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: variablesMenuHolder
+                        aspect: variablesPopUpMenu
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: sortVariablesByName
+                        aspect: sortVariablesByName
+                      )
+                    )
+                    createNewApplication: true
+                    createNewBuilder: true
+                  )
+                 (SubCanvasSpec
+                    name: 'CategoryAndMethodList'
+                    hasHorizontalScrollBar: false
+                    hasVerticalScrollBar: false
+                    majorKey: #'Tools::NavigatorCanvas'
+                    minorKey: protocolAndMethodListSpec
+                    createNewBuilder: false
+                  )
+                 )
+               
+              )
+              handles: (Any 0.5 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Created: / 11-03-2010 / 08:41:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 20-07-2011 / 14:43:02 / cg"
+!
+
+multipleCategoryBrowserSpec
+    "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:NavigatorCanvas andSelector:#multipleCategoryBrowserSpec
+     NavigatorCanvas new openInterface:#multipleCategoryBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #multipleCategoryBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'CategoryBrowser'
+          #name: 'CategoryBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 18 51 480 351)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableVerticalPanelSpec
+              #name: 'VariableVerticalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#VariableHorizontalPanelSpec
+                    #name: 'VariableHorizontalPanel1'
+                    #barWidth: 2
+                    #showHandle: false
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#SubCanvasSpec
+                          #name: 'CategoryList'
+                          #majorKey: #'ClassCategoryList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #showClassPackages
+                              #aspect: #showClassPackages
+                            )
+                          #(#SubChannelInfoSpec
+                             #subAspect: #doubleClickChannel
+                             #callBack: #classCategoryDoubleClicked
+                           )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #inGeneratorHolder
+                              #aspect: #categoryListGenerator
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #categoryPopUpMenu
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classListGenerator
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedCategories
+                              #aspect: #selectedCategories
+                              #callBack: #categorySelectionChanged
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeConditionHolder
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       #(#ViewSpec
+                          #name: 'Box1'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#VariableVerticalPanelSpec
+                                #name: 'VariableVerticalPanel2'
+                                #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+                                #showHandle: false
+                                #handlePosition: #left
+                                #snapMode: #both
+                                #component: 
+                               #(#SpecCollection
+                                  #collection: #(
+                                   #(#SubCanvasSpec
+                                      #name: 'ClassList'
+                                      #majorKey: #'ClassList'
+                                      #subAspectHolders: 
+                                     #(#Array
+                                        
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                                       #(#SubChannelInfoSpec
+                                          #subAspect: #doubleClickChannel
+                                          #callBack: #classDoubleClicked
+                                        ) 
+                                       #(#SubChannelInfoSpec
+                                          #subAspect: #hideUnloadedClasses
+                                          #aspect: #hideUnloadedClasses
+                                        )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                        
+                                       #(#SubChannelInfoSpec
+                                          #subAspect: #immediateUpdate
+                                          #aspect: #immediateUpdate
+                                        ) 
+                                       #(#SubChannelInfoSpec
+                                          #subAspect: #inGeneratorHolder
+                                          #aspect: #classListGenerator
+                                        )
+                                        
+                                       #(#SubChannelInfoSpec
+                                          #subAspect: #menuHolder
+                                          #aspect: #classPopUpMenu
+                                        ) 
+                                       #(#SubChannelInfoSpec
+                                          #subAspect: #meta
+                                          #aspect: #meta
+                                        )
+                                        
+                                       #(#SubChannelInfoSpec
+                                          #subAspect: #organizerMode
+                                          #aspect: #organizerMode
+                                        ) 
+                                       #(#SubChannelInfoSpec
+                                          #subAspect: #outGeneratorHolder
+                                          #aspect: #protocolListGenerator
+                                        )
+                                        
+                                       #(#SubChannelInfoSpec
+                                          #subAspect: #packageFilter
+                                          #aspect: #packageFilter
+                                        ) 
+                                       #(#SubChannelInfoSpec
+                                          #subAspect: #selectedClasses
+                                          #aspect: #selectedClasses
+                                          #callBack: #classSelectionChanged
+                                        )
+                                        
+                                       #(#SubChannelInfoSpec
+                                          #subAspect: #selectionChangeCondition
+                                          #aspect: #selectionChangeConditionHolder
+                                        )
+                                      )
+                                      #createNewApplication: true
+                                      #createNewBuilder: true
+                                    )
+                                   #(#SubCanvasSpec
+                                      #name: 'VariableList'
+                                      #majorKey: #'VariableList'
+                                      #subAspectHolders: 
+                                       #(#Array
+
+                                         #(#SubChannelInfoSpec
+                                            #subAspect: #classHolder
+                                            #aspect: #selectedClasses
+                                          ) 
+                                         #(#SubChannelInfoSpec
+                                            #subAspect: #doubleClickChannel
+                                            #callBack: #variableDoubleClicked
+                                          )
+                                         #(#SubChannelInfoSpec
+                                            #subAspect: #menuHolder
+                                            #aspect: #variablesPopUpMenu
+                                          )
+
+                                         #(#SubChannelInfoSpec
+                                            #subAspect: #selectedVariables
+                                            #aspect: #variableFilter
+                                          )
+                                         #(#SubChannelInfoSpec
+                                            #subAspect: #showClassVarsInVariableList
+                                            #aspect: #filterClassVars
+                                          )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                        )
+                                      #createNewApplication: true
+                                      #createNewBuilder: true
+                                    )
+                                   )
+                                 
+                                )
+                                #handles: #(#Any 0.5 1.0)
+                              )
+                             #(#UISubSpecification
+                                #name: 'MetaToggles'
+                                #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                                #majorKey: #'NavigatorModel'
+                                #minorKey: #metaSpec
+                              )
+                             )
+                           
+                          )
+                        )
+                       #(#SubCanvasSpec
+                          #name: 'MethodCategoryList'
+                          #majorKey: #'MethodCategoryList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #inGeneratorHolder
+                              #aspect: #protocolListGenerator
+                            )
+                           #(#SubChannelInfoSpec
+                              #subAspect: #doubleClickChannel
+                              #callBack: #protocolDoubleClicked
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #protocolMenu
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #selectorListGenerator
+                            )
+                            
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showPseudoProtocols
+                        #aspect: #showPseudoProtocols
+                      )
+                           #(#SubChannelInfoSpec
+                              #subAspect: #packageFilter
+                              #aspect: #packageFilter
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedProtocols
+                              #aspect: #selectedProtocols
+                              #callBack: #protocolSelectionChanged
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeConditionHolder
+                            )
+                           #(#SubChannelInfoSpec
+                              #subAspect: #variableFilter
+                              #aspect: #variableFilter
+                            )
+                           #(#SubChannelInfoSpec
+                              #subAspect: #filterClassVars
+                              #aspect: #filterClassVars
+                            )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       #(#SubCanvasSpec
+                          #name: 'MethodList'
+                          #majorKey: #'MethodList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #doubleClickChannel
+                              #callBack: #methodDoubleClicked
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #inGeneratorHolder
+                              #aspect: #selectorListGenerator
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #selectorPopUpMenu
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #packageFilter
+                              #aspect: #packageFilter
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #variableFilter
+                              #aspect: #variableFilter
+                            )
+                           #(#SubChannelInfoSpec
+                              #subAspect: #filterClassVars
+                              #aspect: #filterClassVars
+                            )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedMethods
+                              #aspect: #selectedMethods
+                              #callBack: #methodsSelectionChanged
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeConditionHolder
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                    #handles: #(#Any 0.25 0.5 0.75 1.0)
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 18:35:49 / cg"
+    "Modified: / 13-04-2012 / 16:17:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+multipleClassBrowserSpec
+    "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:NavigatorCanvas andSelector:#multipleClassBrowserSpec
+     NavigatorCanvas new openInterface:#multipleClassBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #multipleClassBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ClassBrowser'
+          #name: 'ClassBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 18 51 480 351)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#VariableVerticalPanelSpec
+                          #name: 'VariableVerticalPanel1'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassList'
+                                #majorKey: #'ClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #classDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassPackages
+                                    #aspect: #showClassPackages
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #classListGenerator
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classPopUpMenu
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortBy
+                                    #aspect: #sortBy
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #protocolListGenerator
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #packageFilter
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                    #callBack: #classSelectionChanged
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeConditionHolder
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'VariableList'
+                                #majorKey: #'VariableList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #variableDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #classHolder
+                                    #aspect: #selectedClasses
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesPopUpMenu
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedVariables
+                                    #aspect: #variableFilter
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassVarsInVariableList
+                                    #aspect: #variableFilter
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          #showHandle: false
+                          #handlePosition: #left
+                          #snapMode: #both
+                          #handles: #(#Any 0.5 1.0)
+                        )
+                       #(#UISubSpecification
+                          #name: 'MetaToggles'
+                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                          #majorKey: #'NavigatorModel'
+                          #minorKey: #metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodCategoryList'
+                    #majorKey: #'MethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showPseudoProtocols
+                        #aspect: #showPseudoProtocols
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                        #callBack: #protocolSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.333333 0.666667 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 18:36:29 / cg"
+    "Modified: / 13-04-2012 / 16:16:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+multipleClassDiffBrowserSpec
+    "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:NavigatorCanvas andSelector:#multipleClassDiffBrowserSpec
+     NavigatorCanvas new openInterface:#multipleClassDiffBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #multipleClassDiffBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ClassBrowser'
+          #name: 'ClassBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 12 22 474 322)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#SubCanvasSpec
+              #name: 'ClassList'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -30 1.0)
+              #majorKey: #'ClassList'
+              #subAspectHolders: 
+             #(#Array
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #doubleClickChannel
+                  #callBack: #classDoubleClicked
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #hideUnloadedClasses
+                  #aspect: #hideUnloadedClasses
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #showClassPackages
+                  #aspect: #showClassPackages
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #immediateUpdate
+                  #aspect: #immediateUpdate
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #inGeneratorHolder
+                  #aspect: #classListGenerator
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #menuHolder
+                  #aspect: #classPopUpMenu
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortBy
+                  #aspect: #sortBy
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #meta
+                  #aspect: #meta
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #organizerMode
+                  #aspect: #organizerMode
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #outGeneratorHolder
+                  #aspect: #protocolListGenerator
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #packageFilter
+                  #aspect: #packageFilter
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectedClasses
+                  #aspect: #selectedClasses
+                  #callBack: #classSelectionChanged
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectionChangeCondition
+                  #aspect: #selectionChangeConditionHolder
+                )
+              )
+              #createNewApplication: true
+              #createNewBuilder: true
+            )
+           #(#LabelSpec
+              #label: 'projectInfo'
+              #name: 'Label1'
+              #layout: #(#LayoutFrame 0 0 -30 1 0 1 0 1)
+              #level: -1
+              #labelChannel: #classesProjectInfoHolder
+              #adjust: #left
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 18:36:38 / cg"
+!
+
+multipleClassExtensionBrowserSpec
+    "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:NavigatorCanvas andSelector:#multipleClassExtensionBrowserSpec
+     NavigatorCanvas new openInterface:#multipleClassExtensionBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #multipleClassExtensionBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ClassBrowser'
+          #name: 'ClassBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 16 46 478 346)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#VariableVerticalPanelSpec
+                          #name: 'VariableVerticalPanel1'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassList'
+                                #majorKey: #'ClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #classDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassPackages
+                                    #aspect: #showClassPackages
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #classListGenerator
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classPopUpMenu
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortBy
+                                    #aspect: #sortBy
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #protocolListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                    #callBack: #classSelectionChanged
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeConditionHolder
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'ProjectList'
+                                #majorKey: #'ProjectList'
+                                #subAspectHolders: 
+                               #(#Array
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #projectListGenerator
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedProjects
+                                    #aspect: #selectedProjects
+                                    #callBack: #projectSelectionChangedForFilter
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeConditionHolder
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #projectPopUpMenu
+                                  ) 
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'VariableList'
+                                #majorKey: #'VariableList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #variableDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #classHolder
+                                    #aspect: #selectedClasses
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesPopUpMenu
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedVariables
+                                    #aspect: #variableFilter
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassVarsInVariableList
+                                    #aspect: #filterClassVars "/variableFilter
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          "/ #handles: #(#Any 0.333333 0.666667 1.0)
+                          #handles: #(#Any 0.7 1.0 1.0)
+                        )
+                       #(#UISubSpecification                 
+                          #name: 'MetaToggles'
+                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                          #majorKey: #'NavigatorModel'
+                          #minorKey: #metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodCategoryList'
+                    #majorKey: #'MethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showPseudoProtocols
+                        #aspect: #showPseudoProtocols
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                        #callBack: #variableSelectionChanged
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilterOnInput
+                        #aspect: #packageFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                        #callBack: #protocolSelectionChanged
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                        #callBack: #variableSelectionChanged
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.333333 0.666667 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 18:36:44 / cg"
+    "Modified: / 13-04-2012 / 16:16:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+multipleFullProtocolBrowserSpec
+    "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:NavigatorCanvas andSelector:#multipleFullProtocolBrowserSpec
+     NavigatorCanvas new openInterface:#multipleFullProtocolBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #multipleFullProtocolBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ProtocolBrowser'
+          #name: 'ProtocolBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 12 22 474 322)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#SubCanvasSpec
+                    #name: 'MethodCategoryList'
+                    #majorKey: #'MethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #noAllItem
+                        #aspect: #noAllItem
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #sortBy
+                        #aspect: #sortBy
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.5 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 20-07-2011 / 14:39:15 / cg"
+!
+
+multipleNameSpaceBrowserSpec
+    "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:NavigatorCanvas andSelector:#multipleNameSpaceBrowserSpec
+     NavigatorCanvas new openInterface:#multipleNameSpaceBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #multipleNameSpaceBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'NameSpaceBrowser'
+          #name: 'NameSpaceBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 18 51 480 351)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#SubCanvasSpec
+                    #name: 'NameSpaceList'
+                    #majorKey: #'NameSpaceList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #nameSpacePopUpMenu
+                            ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #hideUnloadedClasses
+                        #aspect: #hideUnloadedClasses
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showClassPackages
+                        #aspect: #showClassPackages
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #nameSpaceDoubleClicked
+                      ) 
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #nameSpaceListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #classListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedNamespaces
+                        #aspect: #selectedNamespaces
+                        #callBack: #nameSpaceSelectionChanged
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#VariableVerticalPanelSpec
+                          #name: 'VariableVerticalPanel1'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+                          #showHandle: false
+                          #handlePosition: #left
+                          #snapMode: #both
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassList'
+                                #majorKey: #'ClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #classDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #classListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #protocolListGenerator
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #packageFilter
+                                  )
+                           #(#SubChannelInfoSpec
+                              #subAspect: #nameSpaceFilter
+                              #aspect: #selectedNamespaces
+                            ) 
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                    #callBack: #classSelectionChanged
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeConditionHolder
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'VariableList'
+                                #majorKey: #'VariableList'
+                                #subAspectHolders: 
+                               #(#Array
+
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #variableDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #classHolder
+                                    #aspect: #selectedClasses
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesPopUpMenu
+                                  )
+
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedVariables
+                                    #aspect: #variableFilter
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassVarsInVariableList
+                                    #aspect: #filterClassVars
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          #handles: #(#Any 0.5 1.0)
+                        )
+                       #(#UISubSpecification
+                          #name: 'MetaToggles'
+                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                          #majorKey: #'NavigatorModel'
+                          #minorKey: #metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodCategoryList'
+                    #majorKey: #'MethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showPseudoProtocols
+                        #aspect: #showPseudoProtocols
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      ) 
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                        #callBack: #protocolSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.25 0.5 0.75 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 18:36:54 / cg"
+    "Modified: / 13-04-2012 / 16:16:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+multipleNameSpaceFullBrowserSpec
+    "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:NavigatorCanvas andSelector:#multipleNameSpaceFullBrowserSpec
+     NavigatorCanvas new openInterface:#multipleNameSpaceFullBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #multipleNameSpaceFullBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'NameSpaceBrowser'
+          #name: 'NameSpaceBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 127 62 589 362)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#VariableVerticalPanelSpec
+                    #name: 'VariableVerticalPanel2'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#SubCanvasSpec
+                          #name: 'NameSpaceList'
+                          #majorKey: #'NamespaceList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #nameSpacePopUpMenu
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #showClassPackages
+                              #aspect: #showClassPackages
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #doubleClickChannel
+                              #callBack: #nameSpaceDoubleClicked
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #inGeneratorHolder
+                              #aspect: #nameSpaceListGenerator
+                            ) 
+"/                           #(#SubChannelInfoSpec
+"/                              #subAspect: #outGeneratorHolder
+"/                              #aspect: #classListGenerator
+"/                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedNamespaces
+                              #aspect: #selectedNamespaces
+                              #callBack: #nameSpaceSelectionChanged
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeConditionHolder
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       #(#SubCanvasSpec
+                          #name: 'ClassCategoryList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          #majorKey: #'ClassCategoryList'
+                          #subAspectHolders: 
+                         #(#Array
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #nameSpaceFilter
+                              #aspect: #selectedNamespaces
+                            ) 
+                          #(#SubChannelInfoSpec
+                             #subAspect: #doubleClickChannel
+                             #callBack: #classCategoryDoubleClicked
+                           )
+                           #(#SubChannelInfoSpec
+                              #subAspect: #forceGeneratorTrigger
+                              #aspect: #forceClassCategoryGeneratorTrigger
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #categoryPopUpMenu
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #organizerMode
+                              #aspect: #organizerMode
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classListGenerator
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedCategories
+                              #aspect: #selectedCategories
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeCondition
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #slaveMode
+                              #aspect: #categoryListSlaveMode
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #updateTrigger
+                              #aspect: #classCategoryListUpdateTrigger
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                    #handles: #(#Any 0.5 1.0)
+                  )
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#VariableVerticalPanelSpec
+                          #name: 'VariableVerticalPanel1'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+                          #showHandle: false
+                          #handlePosition: #left
+                          #snapMode: #both
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassList'
+                                #majorKey: #'ClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classPopUpMenu
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #nameSpaceFilter
+                                    #aspect: #selectedNamespaces
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #classDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #classListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #protocolListGenerator
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #packageFilter
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                    #callBack: #classSelectionChanged
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeConditionHolder
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'VariableList'
+                                #majorKey: #'VariableList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #variableDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #classHolder
+                                    #aspect: #selectedClasses
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesPopUpMenu
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedVariables
+                                    #aspect: #variableFilter
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassVarsInVariableList
+                                    #aspect: #filterClassVars
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          #handles: #(#Any 0.5 1.0)
+                        )
+                       #(#UISubSpecification
+                          #name: 'MetaToggles'
+                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                          #majorKey: #'NavigatorModel'
+                          #minorKey: #metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodCategoryList'
+                    #majorKey: #'MethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showPseudoProtocols
+                        #aspect: #showPseudoProtocols
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                        #callBack: #protocolSelectionChanged
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.25 0.5 0.75 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 18:37:01 / cg"
+    "Modified: / 13-04-2012 / 16:16:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+multipleProjectBrowserSpec
+    "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:NavigatorCanvas andSelector:#multipleProjectBrowserSpec
+     NavigatorCanvas new openInterface:#multipleProjectBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #multipleProjectBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ProjectBrowser'
+          #name: 'ProjectBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 18 51 480 351)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#SubCanvasSpec
+                    #name: 'ProjectList'
+                    #majorKey: #'ProjectList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #projectPopUpMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #hideUnloadedClasses
+                        #aspect: #hideUnloadedClasses
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #projectDoubleClicked
+                      ) 
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showClassPackages
+                        #aspect: #showClassPackages
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #projectListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #classListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProjects
+                        #aspect: #selectedProjects
+                        #callBack: #projectSelectionChanged
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#VariableVerticalPanelSpec
+                          #name: 'VariableVerticalPanel1'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+                          #showHandle: false
+                          #handlePosition: #left
+                          #snapMode: #both
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassList'
+                                #majorKey: #'ClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #classDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #classListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #protocolListGenerator
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #packageFilter
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                    #callBack: #classSelectionChanged
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeConditionHolder
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'VariableList'
+                                #majorKey: #'VariableList'
+                                #subAspectHolders: 
+                               #(#Array
+
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #variableDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #classHolder
+                                    #aspect: #selectedClasses
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesPopUpMenu
+                                  )
+
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedVariables
+                                    #aspect: #variableFilter
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassVarsInVariableList
+                                    #aspect: #filterClassVars
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          #handles: #(#Any 0.5 1.0)
+                        )
+                       #(#UISubSpecification
+                          #name: 'MetaToggles'
+                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                          #majorKey: #'NavigatorModel'
+                          #minorKey: #metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodCategoryList'
+                    #majorKey: #'MethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showPseudoProtocols
+                        #aspect: #showPseudoProtocols
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                        #callBack: #variableSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                        #callBack: #protocolSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                        #callBack: #variableSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.25 0.5 0.75 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 18:37:12 / cg"
+    "Modified: / 13-04-2012 / 16:16:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+multipleProjectFullBrowserSpec
+    "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:NavigatorCanvas andSelector:#multipleProjectFullBrowserSpec
+     NavigatorCanvas new openInterface:#multipleProjectFullBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #multipleProjectFullBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ProjectBrowser'
+          #name: 'ProjectBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 23 111 485 411)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#VariableVerticalPanelSpec
+                    #name: 'VariableVerticalPanel2'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#SubCanvasSpec
+                          #name: 'ProjectList'
+                          #majorKey: #'ProjectList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #projectPopUpMenu
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #doubleClickChannel
+                              #callBack: #projectDoubleClicked
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #showClassPackages
+                              #aspect: #showClassPackages
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #inGeneratorHolder
+                              #aspect: #projectListGenerator
+                            )
+                            
+"/                           #(#SubChannelInfoSpec
+"/                              #subAspect: #outGeneratorHolder
+"/                              #aspect: #classListGenerator
+"/                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedProjects
+                              #aspect: #selectedProjects
+                              #callBack: #projectSelectionChanged
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeConditionHolder
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                        #(#SubCanvasSpec
+                          #name: 'ClassCategoryList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          #majorKey: #'ClassCategoryList'
+                          #subAspectHolders: 
+                         #(#Array
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #packageFilter
+                              #aspect: #selectedProjects
+                            ) 
+                          #(#SubChannelInfoSpec
+                             #subAspect: #doubleClickChannel
+                             #callBack: #classCategoryDoubleClicked
+                           )
+                           #(#SubChannelInfoSpec
+                              #subAspect: #forceGeneratorTrigger
+                              #aspect: #forceClassCategoryGeneratorTrigger
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #categoryPopUpMenu
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #organizerMode
+                              #aspect: #organizerMode
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classListGenerator
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedCategories
+                              #aspect: #selectedCategories
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeCondition
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #slaveMode
+                              #aspect: #categoryListSlaveMode
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #updateTrigger
+                              #aspect: #classCategoryListUpdateTrigger
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                    #handles: #(#Any 0.5 1.0)
+                  )
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#VariableVerticalPanelSpec
+                          #name: 'VariableVerticalPanel1'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+                          #showHandle: false
+                          #handlePosition: #left
+                          #snapMode: #both
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassList'
+                                #majorKey: #'ClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classPopUpMenu
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #selectedProjects
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #classDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #classListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #protocolListGenerator
+                                  ) 
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                    #callBack: #classSelectionChanged
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeConditionHolder
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'VariableList'
+                                #majorKey: #'VariableList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #variableDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #classHolder
+                                    #aspect: #selectedClasses
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesPopUpMenu
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedVariables
+                                    #aspect: #variableFilter
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassVarsInVariableList
+                                    #aspect: #filterClassVars
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          #handles: #(#Any 0.5 1.0)
+                        )
+                       #(#UISubSpecification
+                          #name: 'MetaToggles'
+                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                          #majorKey: #'NavigatorModel'
+                          #minorKey: #metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodCategoryList'
+                    #majorKey: #'MethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showPseudoProtocols
+                        #aspect: #showPseudoProtocols
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                        #callBack: #variableSelectionChanged
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                        #callBack: #protocolSelectionChanged
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                        #callBack: #variableSelectionChanged
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.25 0.5 0.75 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 18:37:24 / cg"
+    "Modified (format): / 13-04-2012 / 16:16:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+multipleProtocolBrowserSpec
+    "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:NavigatorCanvas andSelector:#multipleProtocolBrowserSpec
+     NavigatorCanvas new openInterface:#multipleProtocolBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #multipleProtocolBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ProtocolBrowser'
+          #name: 'ProtocolBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 12 22 474 322)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#SubCanvasSpec
+                    #name: 'MethodCategoryList'
+                    #majorKey: #'MethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #noAllItem
+                        #aspect: #noAllItem
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #sortBy
+                        #aspect: #sortBy
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.5 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 27-04-2010 / 16:43:01 / cg"
+!
+
+protocolAndMethodListSpec
+    "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:Tools::NavigatorCanvas andSelector:#protocolAndMethodListSpec
+     Tools::NavigatorCanvas new openInterface:#protocolAndMethodListSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: protocolAndMethodListSpec
+        window: 
+       (WindowSpec
+          label: 'Protocol and Method List'
+          name: 'Protocol and Method List'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 498 456)
+          icon: defaultIcon
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (SubCanvasSpec
+              name: 'ProtocolAndMethodListCanvas'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              majorKey: #'Tools::NavigatorCanvas'
+              minorKey: #'protocolAndMethodListSpec_Both'
+              specHolder: organizerProtocolAndMethodListSpecHolder
+              createNewBuilder: false
+            )
+           (SubCanvasSpec
+              name: 'TestRunnerEmbedded'
+              layout: (LayoutFrame 0 0 -50 1 0 1 0 1)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              majorKey: #'Tools::TestRunnerEmbedded'
+              subAspectHolders: 
+             (Array
+                
+               (SubChannelInfoSpec
+                  subAspect: methodGeneratorHolder
+                  aspect: selectorListGenerator
+                ) 
+               (SubChannelInfoSpec
+                  subAspect: selectedClassesHolder
+                  aspect: selectedClasses
+                )
+                
+               (SubChannelInfoSpec
+                  subAspect: selectedMethodsHolder
+                  aspect: selectedMethods
+                ) 
+               (SubChannelInfoSpec
+                  subAspect: selectedProtocolsHolder
+                  aspect: selectedProtocols
+                )
+                
+               (SubChannelInfoSpec
+                  subAspect: infoHolder
+                  aspect: infoLabelHolder
+                )
+              )
+              createNewApplication: true
+              createNewBuilder: true
+            )
+           )
+         
+        )
+      )
+!
+
+selectorBrowserSpec
+    "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:NavigatorCanvas andSelector:#selectorBrowserSpec
+     NavigatorCanvas new openInterface:#selectorBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #selectorBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'SelectorBrowser'
+          #name: 'SelectorBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 12 22 474 322)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#SubCanvasSpec
+                    #name: 'AllMethodCategoryList'
+                    #majorKey: #'FullMethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                        #callBack: #protocolSelectionChanged
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'ImplementedMethodList'
+                    #majorKey: #'ImplementingMethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #xxxDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #implementingClassListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'ImplementingClassList'
+                    #majorKey: #'ImplementingClassList'
+                    #minorKey: #windowSpec
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #implementingClassListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.333333 0.666667 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 27-04-2010 / 16:43:16 / cg"
+!
+
+singleCategoryBrowserSpec
+    "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:NavigatorCanvas andSelector:#singleCategoryBrowserSpec
+     NavigatorCanvas new openInterface:#singleCategoryBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #singleCategoryBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'CategoryBrowser'
+          #name: 'CategoryBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 18 51 480 351)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#SubCanvasSpec
+                          #name: 'PseudoCategoryList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+                          #majorKey: #'ClassCategoryList'
+                          #minorKey: #singleCategoryWindowSpec
+                          #subAspectHolders: 
+                         #(#Array
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #categoryPopUpMenu
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #showClassPackages
+                              #aspect: #showClassPackages
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #inGeneratorHolder
+                              #aspect: #categoryListGenerator
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classListGenerator
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedCategories
+                              #aspect: #selectedCategories
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       #(#VariableVerticalPanelSpec
+                          #name: 'VariableVerticalPanel1'
+                          #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 -25 1.0)
+                          #showHandle: false
+                          #handlePosition: #left
+                          #snapMode: #both
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassList'
+                                #majorKey: #'ClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #classDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #classListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classPopUpMenu
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #protocolListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #packageFilter
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                    #callBack: #classSelectionChanged
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeConditionHolder
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'VariableList'
+                                #majorKey: #'VariableList'
+                                #subAspectHolders: 
+                               #(#Array
+
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #variableDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #classHolder
+                                    #aspect: #selectedClasses
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesMenuHolder
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesPopUpMenu
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedVariables
+                                    #aspect: #variableFilter
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassVarsInVariableList
+                                    #aspect: #filterClassVars
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          #handles: #(#Any 0.5 1.0)
+                        )
+                       #(#UISubSpecification
+                          #name: 'MetaToggles'
+                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                          #majorKey: #'NavigatorModel'
+                          #minorKey: #metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodCategoryList'
+                    #majorKey: #'MethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showPseudoProtocols
+                        #aspect: #showPseudoProtocols
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                        #callBack: #protocolSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders:                          
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      )                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.333333 0.666667 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 18:37:34 / cg"
+    "Modified: / 13-04-2012 / 16:15:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+singleClassBrowserSpec
+    "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:NavigatorCanvas andSelector:#singleClassBrowserSpec
+     NavigatorCanvas new openInterface:#singleClassBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #singleClassBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ClassBrowser'
+          #name: 'ClassBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 16 46 478 346)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#SubCanvasSpec
+                          #name: 'PseudoClassList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+                          #majorKey: #'ClassList'
+                          #minorKey: #singleClassWindowSpec
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+                           #(#SubChannelInfoSpec
+                              #subAspect: #showClassPackages
+                              #aspect: #showClassPackages
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #inGeneratorHolder
+                              #aspect: #classListGenerator
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #meta
+                              #aspect: #meta
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #protocolListGenerator
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedClasses
+                              #aspect: #selectedClasses
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #classPopUpMenu
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       #(#VariableVerticalPanelSpec
+                          #name: 'VariableVerticalPanel1'
+                          #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 -25 1.0)
+                          #showHandle: false
+                          #snapMode: #both
+                          #handlePosition: #left
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'MethodCategoryList'
+                                #majorKey: #'MethodCategoryList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showPseudoProtocols
+                        #aspect: #showPseudoProtocols
+                      )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #protocolListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #protocolDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #protocolMenu
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #selectorListGenerator
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #variableFilter
+                                    #aspect: #variableFilter
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #filterClassVars
+                                    #aspect: #filterClassVars
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #packageFilter
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedProtocols
+                                    #aspect: #selectedProtocols
+                                    #callBack: #protocolSelectionChanged
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeConditionHolder
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'VariableList'
+                                #majorKey: #'VariableList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #variableDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #classHolder
+                                    #aspect: #selectedClasses
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesPopUpMenu
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedVariables
+                                    #aspect: #variableFilter
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassVarsInVariableList
+                                    #aspect: #filterClassVars
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          #handles: #(#Any 0.5 1.0)
+                        )
+                       #(#UISubSpecification
+                          #name: 'MetaToggles'
+                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                          #majorKey: #'NavigatorModel'
+                          #minorKey: #metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.5 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 18:37:41 / cg"
+    "Modified: / 13-04-2012 / 16:15:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+singleFullProtocolBrowserSpec
+    "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:NavigatorCanvas andSelector:#singleFullProtocolBrowserSpec
+     NavigatorCanvas new openInterface:#singleFullProtocolBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #singleFullProtocolBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ProtocolBrowser'
+          #name: 'ProtocolBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 12 22 474 322)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#ViewSpec
+              #name: 'Box1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#SubCanvasSpec
+                    #name: 'PseudoProtocolList'
+                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+                    #majorKey: #'MethodCategoryList'
+                    #minorKey: #singleProtocolWindowSpec
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                      #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                    #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 0 1.0)
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #sortBy
+                        #aspect: #sortBy
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 20-07-2011 / 14:40:48 / cg"
+!
+
+singleNameSpaceBrowserSpec
+    "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:NavigatorCanvas andSelector:#singleNameSpaceBrowserSpec
+     NavigatorCanvas new openInterface:#singleNameSpaceBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #singleNameSpaceBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'NameSpaceBrowser'
+          #name: 'NameSpaceBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 18 51 480 351)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#SubCanvasSpec
+                          #name: 'PseudoNameSpaceList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+                          #majorKey: #'NamespaceList'
+                          #minorKey: #singleNameSpaceWindowSpec
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #showClassPackages
+                              #aspect: #showClassPackages
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #inGeneratorHolder
+                              #aspect: #nameSpaceListGenerator
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classListGenerator
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedNamespaces
+                              #aspect: #selectedNamespaces
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       #(#VariableVerticalPanelSpec
+                          #name: 'VariableVerticalPanel1'
+                          #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 -25 1.0)
+                          #showHandle: false
+                          #handlePosition: #left
+                          #snapMode: #both
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassList'
+                                #majorKey: #'ClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #classDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #classListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classPopUpMenu
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #protocolListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #callBack: #packageFilter
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                    #callBack: #classSelectionChanged
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeConditionHolder
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'VariableList'
+                                #majorKey: #'VariableList'
+                                #subAspectHolders: 
+                               #(#Array
+
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #variableDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #classHolder
+                                    #aspect: #selectedClasses
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesPopUpMenu
+                                  )
+
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedVariables
+                                    #aspect: #variableFilter
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassVarsInVariableList
+                                    #aspect: #filterClassVars
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          #handles: #(#Any 0.5 1.0)
+                        )
+                       #(#UISubSpecification
+                          #name: 'MetaToggles'
+                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                          #majorKey: #'NavigatorModel'
+                          #minorKey: #metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodCategoryList'
+                    #majorKey: #'MethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showPseudoProtocols
+                        #aspect: #showPseudoProtocols
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                        #callBack: #protocolSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.333333 0.666667 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 18:37:52 / cg"
+    "Modified: / 13-04-2012 / 16:15:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+singleNameSpaceFullBrowserSpec
+    "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:NavigatorCanvas andSelector:#singleNameSpaceFullBrowserSpec
+     NavigatorCanvas new openInterface:#singleNameSpaceFullBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #singleNameSpaceFullBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'NameSpaceBrowser'
+          #name: 'NameSpaceBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 102 220 564 520)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#SubCanvasSpec
+                          #name: 'PseudoNameSpaceList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+                          #majorKey: #'NamespaceList'
+                          #minorKey: #singleNameSpaceWindowSpec
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #showClassPackages
+                              #aspect: #showClassPackages
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #inGeneratorHolder
+                              #aspect: #nameSpaceListGenerator
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classListPerNameSpaceGenerator
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedNamespaces
+                              #aspect: #selectedNamespaces
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       #(#SubCanvasSpec
+                          #name: 'ClassCategoryList'
+                          #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 0 1.0)
+                          #majorKey: #'ClassCategoryList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                          #(#SubChannelInfoSpec
+                             #subAspect: #doubleClickChannel
+                             #callBack: #classCategoryDoubleClicked
+                           )
+                           #(#SubChannelInfoSpec
+                              #subAspect: #forceGeneratorTrigger
+                              #aspect: #forceClassCategoryGeneratorTrigger
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #nameSpaceFilter
+                              #aspect: #selectedNamespaces
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #categoryPopUpMenu
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #organizerMode
+                              #aspect: #organizerMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classListGenerator
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedCategories
+                              #aspect: #selectedCategories
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeCondition
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #slaveMode
+                              #aspect: #categoryListSlaveMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #updateTrigger
+                              #aspect: #classCategoryListUpdateTrigger
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#ViewSpec
+                    #name: 'Box2'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#VariableVerticalPanelSpec
+                          #name: 'VariableVerticalPanel2'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+                          #showHandle: false
+                          #handlePosition: #left
+                          #snapMode: #both
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassList'
+                                #majorKey: #'ClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                               #(#SubChannelInfoSpec
+                                  #subAspect: #nameSpaceFilter
+                                  #aspect: #selectedNamespaces
+                                ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #classDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #classListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classPopUpMenu
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #protocolListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #callBack: #packageFilter
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                    #callBack: #classSelectionChanged
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeConditionHolder
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'VariableList'
+                                #majorKey: #'VariableList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #variableDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #classHolder
+                                    #aspect: #selectedClasses
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesPopUpMenu
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedVariables
+                                    #aspect: #variableFilter
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassVarsInVariableList
+                                    #aspect: #filterClassVars
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          #handles: #(#Any 0.5 1.0)
+                        )
+                       #(#UISubSpecification
+                          #name: 'MetaToggles'
+                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                          #majorKey: #'NavigatorModel'
+                          #minorKey: #metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodCategoryList'
+                    #majorKey: #'MethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showPseudoProtocols
+                        #aspect: #showPseudoProtocols
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                        #callBack: #protocolSelectionChanged
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.25 0.5 0.75 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 18:37:57 / cg"
+    "Modified: / 13-04-2012 / 16:15:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+singleProjectBrowserSpec
+    "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:NavigatorCanvas andSelector:#singleProjectBrowserSpec
+     NavigatorCanvas new openInterface:#singleProjectBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #singleProjectBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ProjectBrowser'
+          #name: 'ProjectBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 18 51 480 351)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#SubCanvasSpec
+                          #name: 'PseudoProjectList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+                          #majorKey: #'ProjectList'
+                          #minorKey: #singleProjectWindowSpec
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #projectPopUpMenu
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #showClassPackages
+                              #aspect: #showClassPackages
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #inGeneratorHolder
+                              #aspect: #projectListGenerator
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classListGenerator
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedProjects
+                              #aspect: #selectedProjects
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       #(#VariableVerticalPanelSpec
+                          #name: 'VariableVerticalPanel1'
+                          #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 -25 1.0)
+                          #showHandle: false
+                          #handlePosition: #left
+                          #snapMode: #both
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassList'
+                                #majorKey: #'ClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #classDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #classListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classPopUpMenu
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #protocolListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #packageFilter
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                    #callBack: #classSelectionChanged
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeConditionHolder
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'VariableList'
+                                #majorKey: #'VariableList'
+                                #subAspectHolders: 
+                               #(#Array
+
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #variableDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #classHolder
+                                    #aspect: #selectedClasses
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesPopUpMenu
+                                  )
+
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedVariables
+                                    #aspect: #variableFilter
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassVarsInVariableList
+                                    #aspect: #filterClassVars
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          #handles: #(#Any 0.5 1.0)
+                        )
+                       #(#UISubSpecification
+                          #name: 'MetaToggles'
+                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                          #majorKey: #'NavigatorModel'
+                          #minorKey: #metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodCategoryList'
+                    #majorKey: #'MethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showPseudoProtocols
+                        #aspect: #showPseudoProtocols
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      ) 
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                        #callBack: #protocolSelectionChanged
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.333333 0.666667 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 18:38:02 / cg"
+    "Modified: / 13-04-2012 / 16:15:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+singleProjectFullBrowserSpec
+    "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:NavigatorCanvas andSelector:#singleProjectFullBrowserSpec
+     NavigatorCanvas new openInterface:#singleProjectFullBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #singleProjectFullBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ProjectBrowser'
+          #name: 'ProjectBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 30 74 492 374)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#SubCanvasSpec
+                          #name: 'PseudoProjectList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+                          #majorKey: #'ProjectList'
+                          #minorKey: #singleProjectWindowSpec
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #projectPopUpMenu
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #showClassPackages
+                              #aspect: #showClassPackages
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #inGeneratorHolder
+                              #aspect: #projectListGenerator
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classListGenerator
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedProjects
+                              #aspect: #selectedProjects
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                        #(#SubCanvasSpec
+                          #name: 'ClassCategoryList'
+                          #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 0 1.0)
+                          #majorKey: #'ClassCategoryList'
+                          #subAspectHolders: 
+                         #(#Array
+
+                          #(#SubChannelInfoSpec
+                             #subAspect: #doubleClickChannel
+                             #callBack: #classCategoryDoubleClicked
+                           )
+                           #(#SubChannelInfoSpec
+                              #subAspect: #forceGeneratorTrigger
+                              #aspect: #forceClassCategoryGeneratorTrigger
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #packageFilter
+                              #aspect: #selectedProjects
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #categoryPopUpMenu
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #organizerMode
+                              #aspect: #organizerMode
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classListGenerator
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedCategories
+                              #aspect: #selectedCategories
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeCondition
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #slaveMode
+                              #aspect: #categoryListSlaveMode
+                            )
+
+                           #(#SubChannelInfoSpec
+                              #subAspect: #updateTrigger
+                              #aspect: #classCategoryListUpdateTrigger
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#ViewSpec
+                    #name: 'Box2'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#VariableVerticalPanelSpec
+                          #name: 'VariableVerticalPanel2'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+                          #showHandle: false
+                          #handlePosition: #left
+                          #snapMode: #both
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'SubCanvas2'
+                                #majorKey: #'ClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #classDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  )
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #classListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classPopUpMenu
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #protocolListGenerator
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #selectedProjects
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                    #callBack: #classSelectionChanged
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeConditionHolder
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'SubCanvas3'
+                                #majorKey: #'VariableList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #callBack: #variableDoubleClicked
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #classHolder
+                                    #aspect: #selectedClasses
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesPopUpMenu
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedVariables
+                                    #aspect: #variableFilter
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassVarsInVariableList
+                                    #aspect: #filterClassVars
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          #handles: #(#Any 0.5 1.0)
+                        )
+                       #(#UISubSpecification
+                          #name: 'SubSpecification1'
+                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                          #majorKey: #'NavigatorModel'
+                          #minorKey: #metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodCategoryList'
+                    #majorKey: #'MethodCategoryList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showPseudoProtocols
+                        #aspect: #showPseudoProtocols
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #protocolDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                        #callBack: #protocolSelectionChanged
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #variableFilter
+                        #aspect: #variableFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #filterClassVars
+                        #aspect: #filterClassVars
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(SubChannelInfoSpec
+                        subAspect: showSyntheticMethods
+                        aspect: showSyntheticMethods
+                      )
+
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.25 0.5 0.75 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 18:38:13 / cg"
+    "Modified: / 13-04-2012 / 16:15:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+singleProtocolBrowserSpec
+    "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:NavigatorCanvas andSelector:#singleProtocolBrowserSpec
+     NavigatorCanvas new openInterface:#singleProtocolBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #singleProtocolBrowserSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ProtocolBrowser'
+          #name: 'ProtocolBrowser'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 12 22 474 322)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#ViewSpec
+              #name: 'Box1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#SubCanvasSpec
+                    #name: 'PseudoProtocolList'
+                    #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+                    #majorKey: #'MethodCategoryList'
+                    #minorKey: #singleProtocolWindowSpec
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #protocolListGenerator
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedProtocols
+                        #aspect: #selectedProtocols
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #protocolMenu
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MethodList'
+                    #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 0 1.0)
+                    #majorKey: #'MethodList'
+                    #subAspectHolders: 
+                   #(#Array
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #callBack: #methodDoubleClicked
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #selectorListGenerator
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #selectorPopUpMenu
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #packageFilter
+                        #aspect: #packageFilter
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #sortBy
+                        #aspect: #sortBy
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedMethods
+                        #aspect: #selectedMethods
+                        #callBack: #methodsSelectionChanged
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeConditionHolder
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 27-04-2010 / 16:44:12 / cg"
+!
+
+windowSpec
+    ^ self fullBrowserSpec
+! !
+
+!NavigatorCanvas class methodsFor:'misc'!
+
+classResources
+    ^ NewSystemBrowser classResources
+! !
+
+!NavigatorCanvas methodsFor:'accessing'!
+
+initialOrganizerMode
+    ^ nil  "/ dummy
+! !
+
+!NavigatorCanvas methodsFor:'actions'!
+
+classDoubleClicked
+    self subclassResponsibility
+! !
+
+!NavigatorCanvas methodsFor:'queries'!
+
+showAllClassesInNameSpaceOrganisation
+    ^ true
+! !
+
+!NavigatorCanvas class methodsFor:'documentation'!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_NavigatorCanvas.st,v 1.17 2011/08/07 18:41:11 vrany Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__NavigatorCanvas.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__NavigatorModel.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,370 @@
+"
+ COPYRIGHT (c) 2000 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 }"
+
+ApplicationModel subclass:#NavigatorModel
+	instanceVariableNames:''
+	classVariableNames:'AllEntry SuperSendEntry UncommentedEntry'
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+!NavigatorModel class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2000 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.
+"
+! !
+
+!NavigatorModel class methodsFor:'initialization'!
+
+initialize
+    AllEntry := '* all *'.
+
+    "Created: / 24.2.2000 / 13:41:29 / cg"
+! !
+
+!NavigatorModel class methodsFor:'defaults'!
+
+isPseudoCategory:cat
+    ^ cat = self nameListEntryForChanged
+    or:[ cat = self nameListEntryForUndocumented
+    or:[ cat = self nameListEntryForUnloaded
+    or:[ cat = self nameListEntryForExtendedClasses
+    or:[ cat = self nameListEntryForALL ]]]]
+!
+
+isPseudoProtocol:protocol
+    ^ protocol = self nameListEntryForObsolete
+    or:[ protocol = self nameListEntryForSuperSend
+    or:[ protocol = self nameListEntryForUncommented ]]
+!
+
+markForBeingInChangeList
+    ^ ' *'
+
+    "Created: / 29-08-2006 / 10:26:05 / cg"
+!
+
+markForBeingManagedBySVN: package
+
+    | repo branch mark |    
+
+    (ConfigurableFeatures includesFeature: #SubversionSupportEnabled) ifFalse:[^''].
+    package = PackageId noProjectID ifTrue:[^''].
+    
+    "/ use Smalltalk-at to trick the dependency/prerequisite generator
+    repo := (Smalltalk at:#SVN::RepositoryManager) current 
+                repositoryForPackage: package onlyFromCache: true.
+    repo ifNil:[^''].
+    mark := ' [SVN]'.
+    branch := repo workingCopy branchOrNil.
+    branch ifNotNil:[mark := ' [SVN: ', branch path,']'].
+    ^mark asText colorizeAllWith: Color gray
+
+    "Created: / 06-04-2010 / 11:23:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 07-09-2011 / 10:43:00 / cg"
+    "Modified: / 19-01-2012 / 10:44:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+markForBeingManagedBySVN: package branch: branch
+
+    | mark |
+    mark := branch 
+                ifNil:
+                    [' [SVN]']
+                ifNotNil:
+                    [' [SVN: ',branch,']'].
+
+    ^mark asText colorizeAllWith: Color gray.
+
+    "Created: / 14-12-2010 / 15:56:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+nameListEntryForALL
+    ^ AllEntry ? '* all *'
+
+    "Created: / 24.2.2000 / 13:39:10 / cg"
+    "Modified: / 25.2.2000 / 21:18:30 / cg"
+!
+
+nameListEntryForALLWithCount
+    ^ '* all (%1) *'
+!
+
+nameListEntryForAnnotated
+    ^ '* annotated (%1) *'
+
+    "Created: / 07-09-2011 / 10:11:40 / cg"
+!
+
+nameListEntryForBookmarked
+    ^ '* bookmarked (%1) *'
+!
+
+nameListEntryForChanged
+    ^ '* changed *'
+!
+
+nameListEntryForChangedWithCount
+    ^ '* changed (%1) *'
+!
+
+nameListEntryForDocumentation
+    ^ '* documentation (%1) *'
+!
+
+nameListEntryForExtendedClasses
+    ^ '* extended *'
+!
+
+nameListEntryForExtendedClassesWithCount
+    ^ '* extended (%1) *'
+!
+
+nameListEntryForExtensions
+    ^ '* extensions (%1) *'
+!
+
+nameListEntryForFailedTests
+    ^ '* failed tests (%1) *'
+
+    "Created: / 08-03-2010 / 18:26:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+nameListEntryForFullyCovered
+    ^ '* covered (%1) *'
+
+    "Created: / 20-07-2011 / 18:20:53 / cg"
+!
+
+nameListEntryForLong
+    ^ '* long (%1) *'
+!
+
+nameListEntryForMustBeRedefinedInSubclass
+    ^ '* must be redefined (%1) *'
+!
+
+nameListEntryForNILCategory
+    ^ '* no category *'
+!
+
+nameListEntryForNonStatic
+    ^ '* instance *'
+!
+
+nameListEntryForNotInstrumented
+    ^ '* coverage unknown/not instrumented (%1) *'
+
+    "Created: / 20-07-2011 / 18:41:53 / cg"
+!
+
+nameListEntryForObsolete
+    ^ '* obsolete (%1) *'
+!
+
+nameListEntryForOverride
+    ^ '* override (%1) *'
+!
+
+nameListEntryForPartiallyCovered
+    ^ '* partially covered (%1) *'
+
+    "Created: / 20-07-2011 / 18:21:05 / cg"
+!
+
+nameListEntryForPassedTests
+    ^ '* passed tests (%1) *'
+
+    "Created: / 08-03-2010 / 18:26:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+nameListEntryForRedefine
+    ^ '* redefine (%1) *'
+!
+
+nameListEntryForRedefined
+    ^ '* redefined (%1) *'
+!
+
+nameListEntryForRequired
+    ^ '* required (%1) *'
+!
+
+nameListEntryForStatic
+    ^ '* static *'
+!
+
+nameListEntryForSuperSend
+    ^ '* super (%1) *'
+!
+
+nameListEntryForUncommented
+    ^ '* uncommented (%1) *'
+!
+
+nameListEntryForUncovered
+    ^ '* not covered (%1) *'
+
+    "Created: / 20-07-2011 / 18:20:44 / cg"
+!
+
+nameListEntryForUndocumented
+    ^ '* undocumented *'
+!
+
+nameListEntryForUndocumentedWithCount
+    ^ '* undocumented (%1) *'
+!
+
+nameListEntryForUnloaded
+    ^ '* unloaded *'
+!
+
+nameListEntryForUnloadedWithCount
+    ^ '* unloaded (%1) *'
+!
+
+nameListEntryForVisited
+    ^ '* visited (%1) *'
+!
+
+pseudoEntryForegroundColor
+    ^ UserPreferences current colorForPseudoProtocolsInMethodListInBrowser.
+
+    "Modified: / 07-09-2011 / 09:59:55 / cg"
+! !
+
+!NavigatorModel class methodsFor:'interface specs'!
+
+metaSpec
+    "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:Tools::NavigatorModel andSelector:#metaSpec
+     Tools::NavigatorModel new openInterface:#metaSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: metaSpec
+        window: 
+       (WindowSpec
+          label: 'MetaToggles'
+          name: 'MetaToggles'
+          min: (Point 0 0)
+          max: (Point 1024 721)
+          bounds: (Rectangle 0 0 300 28)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (RadioButtonSpec
+              label: 'Instance'
+              name: 'InstanceToggle'
+              layout: (LayoutFrame 0 0.0 0 0.0 0 0.5 25 0)
+              translateLabel: true
+              tabable: true
+              model: notMetaToggle
+              isTriggerOnDown: true
+              select: true
+              isToggle: true
+            )
+           (RadioButtonSpec
+              label: 'Class'
+              name: 'ClassToggle'
+              layout: (LayoutFrame 0 0.5 0 0 0 1.0 25 0)
+              translateLabel: true
+              labelChannel: metaToggleLabelHolder
+              tabable: false
+              model: metaToggle
+              isTriggerOnDown: true
+              select: true
+              isToggle: true
+            )
+           )
+         
+        )
+      )
+! !
+
+!NavigatorModel class methodsFor:'misc'!
+
+classResources
+    ^ NewSystemBrowser classResources
+! !
+
+!NavigatorModel class methodsFor:'queries'!
+
+hasSubversionSupport
+    ^ ConfigurableFeatures includesFeature: #SubversionSupportEnabled
+
+    "Created: / 06-04-2010 / 11:09:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-09-2011 / 10:45:45 / cg"
+    "Modified: / 19-01-2012 / 10:43:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!NavigatorModel methodsFor:'misc'!
+
+resources
+    "answer the resources of my masterApp, if there is one"
+
+    |m|
+
+    (m := self masterApplication) notNil ifTrue:[
+        ^ m resources
+    ].
+    ^ super resources
+! !
+
+!NavigatorModel methodsFor:'queries'!
+
+hasSubversionSupport
+    ^ ConfigurableFeatures includesFeature: #SubversionSupportEnabled
+
+    "Modified: / 07-09-2011 / 10:45:49 / cg"
+    "Modified: / 19-01-2012 / 10:43:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!NavigatorModel class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_NavigatorModel.st,v 1.23 2012/11/07 13:57:05 cg Exp $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_NavigatorModel.st,v 1.23 2012/11/07 13:57:05 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__NavigatorModel.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+! !
+
+NavigatorModel initialize!
--- a/Tools__NewClassWizardDialog.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__NewClassWizardDialog.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1247,5 +1247,9 @@
 !NewClassWizardDialog class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewClassWizardDialog.st,v 1.17 2012-01-27 13:55:52 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__NewClassWizardDialog.st,v 1.17 2012/01/27 13:55:52 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__NewClassWizardDialog.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/Tools__NewSystemBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__NewSystemBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -44,12 +44,20 @@
 		LastImportedPackage LastLintRules NewNavigationHistory
 		DefaultSortByNameAndInheritance LastLiteralReplacementType
 		LastLiteralReplacementNewName LastLiteralReplacementOldLiteral
-		LastNewProjectType LastClassProcessingBlockString
-		RecentlyClosedList LastClassSearchBoxShowedFullName'
+		LastNewProjectType DefaultShowSyntheticMethods
+		LastClassProcessingBlockString RecentlyClosedList
+		LastClassSearchBoxShowedFullName'
 	poolDictionaries:''
 	category:'Interface-Browsers-New'
 !
 
+Object subclass:#ClassCompletionEntry
+	instanceVariableNames:'klass showPrefix'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:NewSystemBrowser
+!
+
 !NewSystemBrowser class methodsFor:'documentation'!
 
 aboutThisApplicationText
@@ -99,6 +107,7 @@
 "
 ! !
 
+
 !NewSystemBrowser class methodsFor:'initialization'!
 
 initialize
@@ -228,6 +237,7 @@
     ].
 ! !
 
+
 !NewSystemBrowser class methodsFor:'accessing-history'!
 
 addToBookMarks:aClass selector:aSelectorOrNil
@@ -286,7 +296,7 @@
     |newEntry history|
 
     newEntry := self historyEntryForClass:class selector:selector.
-    newEntry isNil ifTrue:[^ nil].
+    newEntry isNil ifTrue:[^ historyOrNil].
 
     (history := historyOrNil) isNil ifTrue:[
 	history := OrderedCollection new.
@@ -306,7 +316,9 @@
     ^ history
 
     "Created: / 08-09-2012 / 21:09:19 / cg"
-! !
+    "Modified: / 13-09-2012 / 18:14:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 
 !NewSystemBrowser class methodsFor:'defaults'!
 
@@ -321,6 +333,7 @@
     "Modified (comment): / 24-08-2011 / 15:33:27 / cg"
 ! !
 
+
 !NewSystemBrowser class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -489,6 +502,7 @@
 )
 ! !
 
+
 !NewSystemBrowser class methodsFor:'image specs'!
 
 defaultIcon
@@ -731,6 +745,7 @@
     ^ ToolbarIconLibrary startNewSystemBrowserIcon
 ! !
 
+
 !NewSystemBrowser class methodsFor:'interface specs'!
 
 browserPageSpec
@@ -3470,6 +3485,11 @@
 			subAspect: showMethodTypeIcon
 			aspect: showMethodTypeIcon
 		      )
+		     (SubChannelInfoSpec
+			subAspect: showSyntheticMethods
+			aspect: showSyntheticMethods
+		      )
+
 
 		     (SubChannelInfoSpec
 			subAspect: filterClassVars
@@ -3491,6 +3511,7 @@
       )
 
     "Modified: / 17-08-2011 / 13:57:39 / cg"
+    "Modified: / 13-04-2012 / 16:13:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 protocolAndMethodListSpec_JustMethodList
@@ -3580,6 +3601,10 @@
 		  aspect: showMethodComplexity
 		)
 	       (SubChannelInfoSpec
+		    subAspect: showSyntheticMethods
+		    aspect: showSyntheticMethods
+		  )
+	       (SubChannelInfoSpec
 		  subAspect: showMethodTypeIcon
 		  aspect: showMethodTypeIcon
 		)
@@ -3599,6 +3624,7 @@
       )
 
     "Modified: / 17-08-2011 / 13:57:59 / cg"
+    "Modified (format): / 13-04-2012 / 18:00:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 searchSpec
@@ -5433,6 +5459,7 @@
     "Modified: / 07-06-2011 / 14:39:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !NewSystemBrowser class methodsFor:'interface specs-dialogs'!
 
 repositoryConsistencyDialogSpec
@@ -5690,6 +5717,7 @@
       )
 ! !
 
+
 !NewSystemBrowser class methodsFor:'interface specs-message pane'!
 
 messageInfoSpec
@@ -5802,6 +5830,7 @@
       )
 ! !
 
+
 !NewSystemBrowser class methodsFor:'menu specs'!
 
 browseMenu
@@ -6385,6 +6414,11 @@
 		  label: 'SIF as...'
 		  itemValue: categoryMenuFileOutSIFAs
 		  translateLabel: true
+		)
+	       (MenuItem
+		  enabled: hasCategorySelectedAndCanFileOutCypressHolder
+		  label: 'Cypress as...'
+		  itemValue: categoryMenuFileOutCypressAs
 		  showBusyCursorWhilePerforming: true
 		)
 	       (MenuItem
@@ -8130,6 +8164,42 @@
       )
 !
 
+classNewGroovyClassSlice
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+
+    "
+     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#classNewGroovytClassSlice
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classNewGroovytClassSlice)) startUp
+    "
+
+    <resource: #menu>
+
+    ^
+     #(Menu
+	(
+	 (MenuItem
+	    label: '-'
+	    isVisible: hasGroovySupport
+	  )
+	 (MenuItem
+	    label: 'Groovy Class'
+	    itemValue: classMenuNewGroovyClass
+	    translateLabel: true
+	    isVisible: hasGroovySupport
+	  )
+	 )
+	nil
+	nil
+      )
+
+    "Created: / 18-02-2012 / 17:01:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 classNewHaskellClassSlice
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
@@ -8326,6 +8396,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#classNewSlice
      (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classNewSlice)) startUp
@@ -8372,6 +8443,13 @@
 	    isMenuSlice: true
 	  )
 	 (MenuItem
+	    label: 'Groovy Class Slice'
+	    nameKey: classNewGroovyClassSlice
+	    translateLabel: true
+	    submenuChannel: classNewGroovyClassSlice
+	    isMenuSlice: true
+	  )
+	 (MenuItem
 	    label: 'Lisp Class Slice'
 	    nameKey: classNewLispClassSlice
 	    translateLabel: true
@@ -8412,7 +8490,6 @@
 	nil
 	nil
       )
-
     "Modified: / 21-08-2012 / 12:31:32 / cg"
 !
 
@@ -9889,6 +9966,11 @@
 		  showBusyCursorWhilePerforming: true
 		)
 	       (MenuItem
+		  enabled: hasProjectSelectedAndCanFileOutCypressHolder
+		  label: 'Cypress as...'
+		  itemValue: projectMenuFileOutCypressAs
+		)
+	       (MenuItem
 		  label: '-'
 		)
 	       (MenuItem
@@ -12399,6 +12481,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#viewMenuCommonSlice
      (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser viewMenuCommonSlice)) startUp
@@ -12573,6 +12656,15 @@
 		  label: '-'
 		)
 	       (MenuItem
+		  label: 'Show Synthetic Methods'
+		  translateLabel: true
+		  hideMenuOnActivated: false
+		  indication: showSyntheticMethods
+		)
+	       (MenuItem
+		  label: '-'
+		)
+	       (MenuItem
 		  label: 'Show Method Inheritance Indicator'
 		  translateLabel: true
 		  hideMenuOnActivated: false
@@ -12913,6 +13005,7 @@
       )
 ! !
 
+
 !NewSystemBrowser class methodsFor:'menu specs-SCM-category'!
 
 categoryMenuSCMCommon
@@ -13067,8 +13160,8 @@
 
 
     "
-     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#classMenuSCMSliceAll
-     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSliceAll)) startUp
+     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#categoryMenuSCMSliceAll
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser categoryMenuSCMSliceAll)) startUp
     "
 
     <resource: #menu>
@@ -13095,6 +13188,14 @@
 	    argument: SVNSourceCodeManager
 	  )
 	 (MenuItem
+	    enabled: hasProjectSelectedAndSourceCodeManagerHolder
+	    label: 'Mercurial+'
+	    isVisible: hgRepositoryMenusAreShown
+	    submenuChannel: projectMenuSCMFor:
+	    labelImage: (ResourceRetriever ToolbarIconLibrary repositoryP4Icon 'Mercurial+')
+	    argument: HGSourceCodeManager
+	  )
+	 (MenuItem
 	    enabled: hasClassSelectedAndSourceCodeManagerHolder
 	    label: 'Perforce'
 	    translateLabel: true
@@ -13103,12 +13204,18 @@
 	    labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'Perforce')
 	    argument: PerforceSourceCodeManager
 	  )
-	 )
-	nil
-	nil
-      )
-
-    "Created: / 15-10-2011 / 12:22:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+	 (MenuItem
+	    enabled: hasClassSelectedAndSourceCodeManagerHolder
+	    label: 'Git+'
+	    isVisible: git2RepositoryMenusAreShown
+	    submenuChannel: categoryMenuSCMFor:
+	    labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'Git+')
+	    argument: GitSourceCodeManager2
+	  )
+	 )
+	nil
+	nil
+      )
 !
 
 categoryMenuSCMSlice_compact
@@ -13283,6 +13390,7 @@
       )
 ! !
 
+
 !NewSystemBrowser class methodsFor:'menu specs-SCM-class'!
 
 classCVSMenu
@@ -14467,7 +14575,22 @@
 	  )
 	 (MenuItem
 	    enabled: hasClassSelectedAndSourceCodeManagerHolder
-	    isVisible: mercurialRepositoryMenusAreShown
+	    label: 'Mercurial+'
+	    isVisible: hgRepositoryMenusAreShown
+	    submenuChannel: classMenuSCMFor:
+	    labelImage: (ResourceRetriever ToolbarIconLibrary repositoryHGIcon 'Mercurial+')
+	    argument: HGSourceCodeManager
+	  )
+	 (MenuItem
+	    enabled: hasClassSelectedAndSourceCodeManagerHolder
+	    label: 'Git+'
+	    isVisible: git2RepositoryMenusAreShown
+	    submenuChannel: classMenuSCMFor:
+	    labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'Git+')
+	    argument: GitSourceCodeManager2
+	  )
+	 (MenuItem
+	    enabled: hasClassSelectedAndSourceCodeManagerHolder
 	    label: 'Mercurial'
 	    translateLabel: true
 	    submenuChannel: classMenuSCMFor:
@@ -14487,8 +14610,6 @@
 	nil
 	nil
       )
-
-    "Modified: / 15-01-2012 / 14:50:44 / cg"
 !
 
 classMenuSCMSlice_compact
@@ -15191,6 +15312,7 @@
     "Modified: / 28-10-2012 / 11:54:14 / cg"
 ! !
 
+
 !NewSystemBrowser class methodsFor:'menu specs-SCM-project'!
 
 projectCVSMenu
@@ -15916,8 +16038,8 @@
 
 
     "
-     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#classMenuSCMSliceAll
-     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSliceAll)) startUp
+     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#projectMenuSCMSliceAll
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser projectMenuSCMSliceAll)) startUp
     "
 
     <resource: #menu>
@@ -15945,6 +16067,22 @@
 	  )
 	 (MenuItem
 	    enabled: hasProjectSelectedAndSourceCodeManagerHolder
+	    label: 'Mercurial+'
+	    isVisible: hgRepositoryMenusAreShown
+	    submenuChannel: projectMenuSCMFor:
+	    labelImage: (ResourceRetriever ToolbarIconLibrary repositoryP4Icon 'Mercurial+')
+	    argument: HGSourceCodeManager
+	  )
+	 (MenuItem
+	    enabled: hasProjectSelectedAndSourceCodeManagerHolder
+	    label: 'Git+'
+	    isVisible: git2RepositoryMenusAreShown
+	    submenuChannel: projectMenuSCMFor:
+	    labelImage: (ResourceRetriever ToolbarIconLibrary repositoryP4Icon 'Git+')
+	    argument: GitSourceCodeManager2
+	  )
+	 (MenuItem
+	    enabled: hasProjectSelectedAndSourceCodeManagerHolder
 	    label: 'Perforce'
 	    translateLabel: true
 	    isVisible: hasPerforceSupport
@@ -15965,9 +16103,6 @@
 	nil
 	nil
       )
-
-    "Created: / 12-10-2011 / 20:38:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 01-12-2011 / 21:12:53 / cg"
 !
 
 projectMenuSCMSlice_compact
@@ -16123,6 +16258,7 @@
     "Modified: / 24-07-2012 / 17:40:34 / cg"
 ! !
 
+
 !NewSystemBrowser class methodsFor:'menu specs-SCM-selector'!
 
 selectorMenuCVS
@@ -16305,8 +16441,8 @@
 
 
     "
-     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#classMenuSCMSliceAll
-     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSliceAll)) startUp
+     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#selectorMenuSCMSliceAll
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser selectorMenuSCMSliceAll)) startUp
     "
 
     <resource: #menu>
@@ -16334,6 +16470,22 @@
 	  )
 	 (MenuItem
 	    enabled: hasMethodSelectedAndSourceCodeManagerHolder
+	    label: 'Mercurial+'
+	    isVisible: hgRepositoryMenusAreShown
+	    submenuChannel: selectorMenuSCMFor:
+	    labelImage: (ResourceRetriever ToolbarIconLibrary repositoryP4Icon 'Mercurial+')
+	    argument: HGSourceCodeManager
+	  )
+	 (MenuItem
+	    enabled: hasMethodSelectedAndSourceCodeManagerHolder
+	    label: 'Git+'
+	    isVisible: perforceRepositoryMenusAreShown
+	    submenuChannel: selectorMenuSCMFor:
+	    labelImage: (ResourceRetriever ToolbarIconLibrary repositoryP4Icon 'Git+')
+	    argument: HGSourceCodeManager2
+	  )
+	 (MenuItem
+	    enabled: hasMethodSelectedAndSourceCodeManagerHolder
 	    label: 'Perforce'
 	    translateLabel: true
 	    isVisible: hasPerforceSupport
@@ -16345,9 +16497,6 @@
 	nil
 	nil
       )
-
-    "Created: / 12-10-2011 / 20:47:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 01-12-2011 / 21:13:19 / cg"
 !
 
 selectorMenuSCMSlice_compact
@@ -16478,6 +16627,7 @@
       )
 ! !
 
+
 !NewSystemBrowser class methodsFor:'menu specs-dialogs'!
 
 classesWhichHaveBeenModifiedPopupMenu
@@ -16670,6 +16820,7 @@
     "Modified: / 29-09-2006 / 16:11:08 / cg"
 ! !
 
+
 !NewSystemBrowser class methodsFor:'menu specs-popup'!
 
 categoryPopUpMenu
@@ -16815,6 +16966,7 @@
     "Created: / 18.2.2000 / 11:58:25 / cg"
 ! !
 
+
 !NewSystemBrowser class methodsFor:'menu specs-subversion'!
 
 classSubversionMenu
@@ -17078,6 +17230,7 @@
       )
 ! !
 
+
 !NewSystemBrowser class methodsFor:'menu specs-toolbar'!
 
 toolBarMenu
@@ -17396,6 +17549,7 @@
       )
 ! !
 
+
 !NewSystemBrowser class methodsFor:'queries'!
 
 hasSubversionSupport
@@ -17405,6 +17559,7 @@
     "Modified: / 19-01-2012 / 10:46:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !NewSystemBrowser class methodsFor:'startup'!
 
 browseClass:aClass
@@ -17624,6 +17779,7 @@
     "Created: / 06-07-2011 / 18:27:53 / cg"
 ! !
 
+
 !NewSystemBrowser class methodsFor:'utilities'!
 
 enterBoxTitle:title okText:okText label:label
@@ -17642,6 +17798,7 @@
     "Created: / 6.2.2000 / 01:07:11 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'accessing'!
 
 isEmbeddedBrowser
@@ -17656,6 +17813,7 @@
     isEmbedded := aBoolean.
 ! !
 
+
 !NewSystemBrowser methodsFor:'aspects'!
 
 bookmarkHolder
@@ -17961,6 +18119,7 @@
     builder aspectAt:#suppressChangeSetUpdate put:aBoolean
 ! !
 
+
 !NewSystemBrowser methodsFor:'aspects-environment'!
 
 selectedCategoriesAsEnvironment
@@ -18088,6 +18247,7 @@
     "Modified: / 28-02-2012 / 16:28:38 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'aspects-kludges'!
 
 metaToggle
@@ -18101,6 +18261,7 @@
 
 ! !
 
+
 !NewSystemBrowser methodsFor:'aspects-menus'!
 
 categoryMenu
@@ -18132,6 +18293,14 @@
     "Modified: / 19-01-2012 / 10:44:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+git2RepositoryMenusAreShown
+    | manager |
+    ^(manager := Smalltalk at:#GitSourceCodeManager2) notNil
+	and:[manager shownInBrowserMenus]
+
+    "Modified: / 14-11-2012 / 19:33:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 gitRepositoryClassMenusAreShown
     ^ self gitRepositoryMenusAreShown
     and:[ ConfigurableFeatures includesFeature: #GitSupportEnabled ]
@@ -18145,6 +18314,14 @@
     "Created: / 23-07-2012 / 13:35:17 / cg"
 !
 
+hgRepositoryMenusAreShown
+    | manager |
+    ^(manager := Smalltalk at:#HGSourceCodeManager) notNil
+	and:[manager shownInBrowserMenus]
+
+    "Modified: / 14-11-2012 / 19:33:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 mercurialRepositoryMenusAreShown
     ^ ConfigurableFeatures includesFeature: #MercurialSupportEnabled
 
@@ -18282,6 +18459,7 @@
     ^ self class visitedClassNamesHistory
 ! !
 
+
 !NewSystemBrowser methodsFor:'aspects-navigation'!
 
 categoryList
@@ -18502,6 +18680,7 @@
     "Created: / 24.2.2000 / 23:28:06 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'aspects-organization'!
 
 categoryMenuVisible
@@ -18975,6 +19154,7 @@
     "Modified: / 18.8.2000 / 19:03:48 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'aspects-presentation'!
 
 bookmarkBarVisibleHolder
@@ -19352,6 +19532,21 @@
     ^ holder
 !
 
+showSyntheticMethods
+    |holder|
+
+    (holder := builder bindingAt:#showSyntheticMethods) isNil ifTrue:[
+	holder := (DefaultShowSyntheticMethods ? false) asValue.
+	builder aspectAt:#showSyntheticMethods put: holder.
+	holder onChangeEvaluate:[
+	    DefaultShowSyntheticMethods := holder value
+	].
+    ].
+    ^ holder
+
+    "Created: / 13-04-2012 / 16:07:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 showUnloadedClasses
     |holder|
 
@@ -19417,6 +19612,7 @@
     "Created: / 02-07-2011 / 18:27:29 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'aspects-queries'!
 
 anyBreakOrTracePointsAreSet
@@ -19902,6 +20098,12 @@
     "Created: / 4.2.2000 / 22:04:12 / cg"
 !
 
+hasCategorySelectedAndCanFileOutCypressHolder
+    ^ [ self hasCategorySelected and:[self hasCypress] ]
+
+    "Modified: / 07-09-2012 / 19:23:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 hasCategorySelectedAndCanFileOutSIFHolder
     ^ [ self hasCategorySelected and:[self canFileOutSIF] ]
 !
@@ -20377,6 +20579,14 @@
     "Modified: / 28-02-2012 / 16:55:19 / cg"
 !
 
+hasCypress
+    "Return true, if Cypress reader/writer is present"
+
+    ^ConfigurableFeatures includesFeature: #Cypress
+
+    "Created: / 07-09-2012 / 19:15:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 hasDataBaseRepositoryFor: package
     ^ ConfigurableFeatures hasDatabaBaseSourceCodeManagerSupport
     "/ use Smalltalk-at to trick the dependency/prerequisite generator
@@ -20516,6 +20726,14 @@
     "Created: / 23-07-2012 / 13:34:15 / cg"
 !
 
+hasGroovySupport
+    "Return true, if Groovy support is loaded"
+
+    ^ConfigurableFeatures includesFeature: #GroovySupport
+
+    "Created: / 18-02-2012 / 16:59:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 hasInstanceMethodsSelected
     ^ self hasOnlyMethodsSelectedForWhich:[:m | m mclass isMeta not]
 
@@ -21141,6 +21359,12 @@
 
 !
 
+hasProjectSelectedAndCanFileOutCypressHolder
+    ^ [ self hasProjectSelected and:[self hasCypress] ].
+
+    "Modified: / 07-09-2012 / 19:24:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 hasProjectSelectedAndCanFileOutSIFHolder
     ^ [ self hasProjectSelected and:[self canFileOutSIF] ]
 
@@ -22105,6 +22329,7 @@
     ^ UserPreferences current useSearchBarInBrowser or:[self codeView searchBarActionBlock notNil]
 ! !
 
+
 !NewSystemBrowser methodsFor:'change & update'!
 
 categorySelectionChanged
@@ -23229,6 +23454,7 @@
     self navigationState versionDiffApplication:diffApp.
 ! !
 
+
 !NewSystemBrowser methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -23256,8 +23482,16 @@
     ^ super flyByHelpTextFor:aComponent
 ! !
 
+
 !NewSystemBrowser methodsFor:'history'!
 
+addToHistory: class
+
+    self addToHistory: class selector: nil.
+
+    "Created: / 06-04-2012 / 10:56:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 addToHistory: class selector: selector
     self class addToHistory: class selector: selector.
     ^ self navigationState addToHistory: class selector: selector
@@ -23267,6 +23501,7 @@
     "Modified: / 02-07-2011 / 18:33:22 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-browse'!
 
 browseImplementorsOf
@@ -25561,6 +25796,7 @@
 viewMenuSelectAllClasses
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-buffers'!
 
 bufferMenuCreateBuffer
@@ -25725,6 +25961,7 @@
     "Modified: / 28-02-2012 / 10:22:24 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-category'!
 
 categoryMenuCheckInEach
@@ -25914,6 +26151,19 @@
     self normalLabel.
 !
 
+categoryMenuFileOutCypressAs
+    "automatically generated by UIEditor ..."
+
+    "*** the code below performs no action"
+    "*** (except for some feedback on the Transcript)"
+    "*** Please change as required and accept in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    "action to be added ..."
+
+    Transcript showCR:self class name, ': action for #categoryMenuFileOutCypressAs ...'.
+!
+
 categoryMenuFileOutEachBinaryIn
     "fileOut selected categories as individual files - binary format"
 
@@ -26520,6 +26770,7 @@
     self spawnCategoryBrowserFor:(self selectedCategoriesValue) in:where
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-checks-lint'!
 
 foo
@@ -26661,19 +26912,6 @@
     "Modified: / 17-04-2010 / 09:42:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-smalllintRulesAll
-    | all checks |
-
-    all := RBCompositeLintRule allRules.
-    checks := all rules detect:[ :each | each isLintChecksGroupParent ].
-    checks rules: (checks rules reject: [ :each | each isSqueakBugsGroupParent ]).
-    ^all
-
-    "Created: / 17-04-2010 / 10:07:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 25-08-2010 / 14:38:21 / Jan Vrany <enter your email here>"
-    "Modified: / 07-03-2012 / 20:26:29 / cg"
-!
-
 smalllintRulesFromUser
     |dlg|
 
@@ -26904,6 +27142,7 @@
     "Modified: / 01-03-2012 / 19:52:57 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-checks-old'!
 
 classMenuCheck
@@ -27065,6 +27304,7 @@
     "Modified (comment): / 01-03-2012 / 14:10:43 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-class'!
 
 addClassesToRemoveForClass:aClass to:classesToRemove removingSubclasses:removingSubclasses withCancel:withCancel
@@ -27202,18 +27442,30 @@
 	    eachClassToRemove revision notNil ifTrue:[
 		(removingSubclasses or:[eachClassToRemove == aClass])
 		ifTrue:[
+		    "JV@2012-02-09: Only ask if configured source code manager is CVS,
+		     as other managers handles removals nicely (they version whole tree).
+		     Such a query is not only annoying but also  confusing to newcomers
+		    "
+		    eachClassToRemove sourceCodeManager isCVS ifTrue:[
 		    confirmed := Dialog
 				confirmWithCancel:(resources
 					string:'Remove the source container for ''%1'' in the repository ?\\Warning: can only be undone by manually fixing the CVS repository !!'
 					with:eachClassToRemove name allBold) withCRs
 				default:false.
+		    ] ifFalse:[
+			"JV@2012-02-09: Mhh, mhh, what to return here?"
+			confirmed := false. "/false avoids timely listing of huge expecco's repository,
+					    "/Obviously, this should be fixed in libsvn.
+		    ].
 		    confirmed isNil ifTrue:[
 			"/ cancelled
 
 			AbortSignal raise
 		    ].
 		    confirmed ifTrue:[
-			SourceCodeManagerUtilities default
+			"JV@2012-02-09: Use class's sourcecode manager's utilities,
+			 not default one"
+			eachClassToRemove sourceCodeManager utilities
 			    removeSourceContainerForClass:eachClassToRemove
 			    confirm:true
 			    warn:true
@@ -27291,6 +27543,7 @@
     ]
 
     "Modified: / 21-12-2011 / 20:22:34 / cg"
+    "Modified (comment): / 09-02-2012 / 15:13:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 askForGlobalCoverageRecording
@@ -27378,6 +27631,38 @@
     "Modified: / 28-02-2012 / 16:45:08 / cg"
 !
 
+checkCompilabilityOf:aClass errorsOnly:errorsOnly notify:warningCollector reportFailedMethodsInto:aBlock
+    "check compilability of aClass; write warning and errormessages to outStream.
+     (meant for a human to read)"
+
+    aClass theNonMetaclass withAllPrivateClassesDo:[:eachClass |
+	eachClass instAndClassSelectorsAndMethodsDo:[:aSelector :aMethod |
+	    Parser warningSignal
+		handle:[:ex | self halt. ex proceed ]
+		do:[
+		    aMethod source isEmpty ifTrue:[
+			aBlock value:aMethod value:('No source for method: ',aMethod whoString).
+		    ] ifFalse:[
+			eachClass compilerClass new
+			    compile:aMethod source
+			    forClass:aMethod mclass
+			    inCategory:'others'
+			    notifying:warningCollector
+			    install:false
+			    skipIfSame:false
+			    silent:false
+			    foldConstants:true
+			    ifFail:[
+				aBlock value:aMethod value:('not compilable: ',aMethod whoString).
+			    ]
+		    ]
+		]
+	].
+    ].
+
+    "Created: / 13-06-2012 / 13:12:42 / cg"
+!
+
 checkCompilabilityOf:aClass withExtensions:withExtensions errorsOnly:errorsOnly notify:warningCollector reportFailedMethodsInto:aBlock
     "check compilability of aClass; write warning and errormessages to outStream.
      (meant for a human to read)"
@@ -27528,9 +27813,10 @@
 			metaClassUsed:metaClassUsedOrNil).
 
     self setAcceptActionForMetaClassUsed:metaClassUsedOrNil.
-    self codeAspect:#newClassDefinition.
-
-    "Modified: / 10.12.2001 / 19:55:31 / cg"
+    self codeAspect: SyntaxHighlighter codeAspectClassDefinition
+
+    "Modified: / 10-12-2001 / 19:55:31 / cg"
+    "Modified: / 12-09-2012 / 11:59:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 classListMenuAddClassToList
@@ -27626,6 +27912,7 @@
 
     "Created: / 16-11-2006 / 14:53:21 / cg"
     "Modified: / 13-06-2012 / 13:26:16 / cg"
+    "Modified: / 11-04-2012 / 15:00:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 classMenuChildrenToSiblings
@@ -30503,12 +30790,20 @@
 
     aClass theNonMetaclass methodDictionary keysAndValuesDo:[:sel :mthd |
 	mthd package = oldProject ifTrue:[
+	    "/ JV@2012-02-11
+	    "/ this is required, because otherwise I would no longer be able to
+	    "/ reconstruct my sourcecode (as the connection to the source-file is lost).
+	    mthd makeLocalStringSource.
 	    mthd setPackage:newProject.
 	    movedInstMethods add:mthd.
 	].
     ].
     aClass theMetaclass methodDictionary keysAndValuesDo:[:sel :mthd |
 	mthd package = oldProject ifTrue:[
+	    "/ JV@2012-02-11
+	    "/ this is required, because otherwise I would no longer be able to
+	    "/ reconstruct my sourcecode (as the connection to the source-file is lost).
+	    mthd makeLocalStringSource.
 	    mthd setPackage:newProject.
 	    movedClassMethods add:mthd.
 	].
@@ -30522,6 +30817,8 @@
 	aClass theMetaclass changed:#projectOrganization.
 	Smalltalk changed:#projectOrganization with:(Array with:aClass theMetaclass with:movedClassMethods).
     ]
+
+    "Modified: / 09-03-2012 / 23:41:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 doRemoveClass:aClass
@@ -31415,13 +31712,13 @@
     |numClasses lbl classes|
 
     (numClasses := aCollectionOfClasses size) == 1 ifTrue:[
-	lbl := 'References to %1 and its subclasses' bindWith:aCollectionOfClasses first theNonMetaclass.
-    ] ifFalse:[
-	lbl := 'References to %1 classes and their subclasses' bindWith:numClasses
+        lbl := 'References to %1 and its subclasses' bindWith:aCollectionOfClasses first theNonMetaclass.
+    ] ifFalse:[
+        lbl := 'References to %1 classes and their subclasses' bindWith:numClasses
     ].
     classes := Set new.
     aCollectionOfClasses do:[:eachClassInQuestion |
-	classes addAll:(eachClassInQuestion theNonMetaclass withAllSubclasses)
+        classes addAll:(eachClassInQuestion theNonMetaclass withAllSubclasses)
     ].
     ^ self spawnClassReferencesBrowserFor:(classes asOrderedCollection) label:lbl in:openHow
 !
@@ -31447,9 +31744,9 @@
     |lbl numClasses|
 
     (numClasses := aCollectionOfClasses size) == 1 ifTrue:[
-	lbl := 'References to ' , aCollectionOfClasses first name
-    ] ifFalse:[
-	lbl := 'References to any of %1 classes' bindWith:numClasses
+        lbl := 'References to ' , aCollectionOfClasses first name
+    ] ifFalse:[
+        lbl := 'References to any of %1 classes' bindWith:numClasses
     ].
     ^ self spawnClassReferencesBrowserFor:aCollectionOfClasses label:lbl in:openHow
 !
@@ -31460,98 +31757,98 @@
     |searchBlock brwsr patternsForCodeSearch|
 
     searchBlock := [
-	|allRefs|
-
-	allRefs := IdentitySet new.
-	aCollectionOfClasses do:[:eachClassInQuestion |
-	    |findRefs classesNameSpace eachNonMetaClassInQuestion symOutsideNamespace symInsideNamespace symInsideOwner refsHere|
-
-	    eachNonMetaClassInQuestion := eachClassInQuestion theNonMetaclass.
-	    classesNameSpace := eachNonMetaClassInQuestion nameSpace.
-
-	    findRefs :=
-		[:setOfClasses :sym :fullNameSym|
-		    self class
-			findMethodsIn:setOfClasses
-			where:[:cls :mthdIn :sel |
-			    |mthd mSource isCandidate isReference usedGlobals|
-
-			    mthd := mthdIn.
-			    mthd isWrapped ifTrue:[ mthd := mthd originalMethod ].
-
-			    "/ kludge: Lazy methods do not include symbols in the literal array - sigh
-			    mthd isLazyMethod ifTrue:[
-				mSource := mthd source.
-				isCandidate := mSource notNil and:[ mSource includesString:sym].
-			    ] ifFalse:[
-				isCandidate := (mthd referencesLiteral:sym)
-						or:[mthd referencesLiteral:fullNameSym]
-			    ].
-			    isReference := false.
-			    isCandidate ifTrue:[
-				usedGlobals := mthd usedGlobals.
-				isReference := (usedGlobals includes:sym) or:[usedGlobals includes:fullNameSym].
-				isReference ifFalse:[
-				    (mthd referencesLiteral:classesNameSpace name) ifTrue:[
-					isReference := mthd sendsAny:#(#'at:' #'at:ifAbsent:' #'classNamed:')
-				    ].
-				    isReference ifFalse:[
-					classesNameSpace ~= Smalltalk ifTrue:[
-					    (mthd referencesLiteral:#Smalltalk) ifTrue:[
-						isReference := mthd sendsAny:#(#'at:' #'at:ifAbsent:' #'classNamed:')
-					    ].
-					]
-				    ]
-				]
-			    ].
-			    isReference
-			].
-		].
-
-	    symOutsideNamespace := eachNonMetaClassInQuestion name.
-
-	    refsHere := findRefs value:(Smalltalk allClasses) value:symOutsideNamespace value:symOutsideNamespace.
-	    allRefs addAll:refsHere.
-
-	    (eachNonMetaClassInQuestion nameSpace notNil
-	    and:[ eachNonMetaClassInQuestion nameSpace ~~ Smalltalk ]) ifTrue:[
-		symInsideNamespace := eachNonMetaClassInQuestion nameWithoutNameSpacePrefix asSymbol.
-		refsHere := findRefs
-				value:(eachNonMetaClassInQuestion topNameSpace allClassesWithAllPrivateClasses)
-				value:symInsideNamespace
-				value:symOutsideNamespace.
-		allRefs addAll:refsHere.
-	    ].
-	    (eachNonMetaClassInQuestion owningClass notNil) ifTrue:[
-		symInsideOwner := eachNonMetaClassInQuestion nameWithoutPrefix asSymbol.
-		refsHere := findRefs
-				value:(Array with:eachNonMetaClassInQuestion owningClass)
-				value:symInsideOwner
-				value:symOutsideNamespace.
-		allRefs addAll:refsHere.
-	    ].
-	].
-	allRefs
+        |allRefs|
+
+        allRefs := IdentitySet new.
+        aCollectionOfClasses do:[:eachClassInQuestion |
+            |findRefs classesNameSpace eachNonMetaClassInQuestion symOutsideNamespace symInsideNamespace symInsideOwner refsHere|
+
+            eachNonMetaClassInQuestion := eachClassInQuestion theNonMetaclass.
+            classesNameSpace := eachNonMetaClassInQuestion nameSpace.
+
+            findRefs := 
+                [:setOfClasses :sym :fullNameSym| 
+                    self class
+                        findMethodsIn:setOfClasses
+                        where:[:cls :mthdIn :sel |   
+                            |mthd mSource isCandidate isReference usedGlobals|
+
+                            mthd := mthdIn.
+                            mthd isWrapped ifTrue:[ mthd := mthd originalMethod ].
+
+                            "/ kludge: Lazy methods do not include symbols in the literal array - sigh
+                            mthd isLazyMethod ifTrue:[
+                                mSource := mthd source.
+                                isCandidate := mSource notNil and:[ mSource includesString:sym].
+                            ] ifFalse:[
+                                isCandidate := (mthd referencesLiteral:sym)
+                                                or:[mthd referencesLiteral:fullNameSym]
+                            ].
+                            isReference := false.
+                            isCandidate ifTrue:[
+                                usedGlobals := mthd usedGlobals.
+                                isReference := (usedGlobals includes:sym) or:[usedGlobals includes:fullNameSym].
+                                isReference ifFalse:[
+                                    (mthd referencesLiteral:classesNameSpace name) ifTrue:[
+                                        isReference := mthd sendsAny:#(#'at:' #'at:ifAbsent:' #'classNamed:')
+                                    ].
+                                    isReference ifFalse:[
+                                        classesNameSpace ~= Smalltalk ifTrue:[
+                                            (mthd referencesLiteral:#Smalltalk) ifTrue:[
+                                                isReference := mthd sendsAny:#(#'at:' #'at:ifAbsent:' #'classNamed:')
+                                            ].
+                                        ]
+                                    ]
+                                ]
+                            ].
+                            isReference
+                        ].
+                ].
+
+            symOutsideNamespace := eachNonMetaClassInQuestion name.
+
+            refsHere := findRefs value:(Smalltalk allClasses) value:symOutsideNamespace value:symOutsideNamespace.
+            allRefs addAll:refsHere.
+
+            (eachNonMetaClassInQuestion nameSpace notNil
+            and:[ eachNonMetaClassInQuestion nameSpace ~~ Smalltalk ]) ifTrue:[
+                symInsideNamespace := eachNonMetaClassInQuestion nameWithoutNameSpacePrefix asSymbol.
+                refsHere := findRefs 
+                                value:(eachNonMetaClassInQuestion topNameSpace allClassesWithAllPrivateClasses)
+                                value:symInsideNamespace
+                                value:symOutsideNamespace.
+                allRefs addAll:refsHere.
+            ].
+            (eachNonMetaClassInQuestion owningClass notNil) ifTrue:[
+                symInsideOwner := eachNonMetaClassInQuestion nameWithoutPrefix asSymbol.
+                refsHere := findRefs 
+                                value:(Array with:eachNonMetaClassInQuestion owningClass)
+                                value:symInsideOwner            
+                                value:symOutsideNamespace.
+                allRefs addAll:refsHere.
+            ].
+        ].
+        allRefs
     ].
 
     brwsr := self spawnMethodBrowserForSearch:searchBlock sortBy:#class in:openHow label:lbl.
     brwsr notNil ifTrue:[
-	"/ setup an autosearch action - when selected, the codeView automatically searches
-	"/ the refactory-searcher is not aware of namespaces (simply compares globals by name);
-	"/ therefore, we setup a multiple pattern search here (sigh)
-	patternsForCodeSearch := OrderedCollection new.
-	aCollectionOfClasses do:[:each |
-	    |nm nm2 nm3|
-
-	    nm := each theNonMetaclass name.
-	    nm2 := each theNonMetaclass nameWithoutPrefix.
-	    nm3 := each theNonMetaclass nameWithoutNameSpacePrefix.
-	    patternsForCodeSearch add:nm.
-	    nm2 ~= nm ifTrue:[ patternsForCodeSearch add:nm2 ].
-	    nm3 ~= nm ifTrue:[ patternsForCodeSearch add:nm3 ].
-	].
-
-	brwsr autoSearchCodePatterns:patternsForCodeSearch "autoSearchPattern:singleClassName ignoreCase:false".
+        "/ setup an autosearch action - when selected, the codeView automatically searches
+        "/ the refactory-searcher is not aware of namespaces (simply compares globals by name);
+        "/ therefore, we setup a multiple pattern search here (sigh)
+        patternsForCodeSearch := OrderedCollection new.
+        aCollectionOfClasses do:[:each |
+            |nm nm2 nm3|
+
+            nm := each theNonMetaclass name.
+            nm2 := each theNonMetaclass nameWithoutPrefix.
+            nm3 := each theNonMetaclass nameWithoutNameSpacePrefix.
+            patternsForCodeSearch add:nm.
+            nm2 ~= nm ifTrue:[ patternsForCodeSearch add:nm2 ].
+            nm3 ~= nm ifTrue:[ patternsForCodeSearch add:nm3 ].
+        ].
+
+        brwsr autoSearchCodePatterns:patternsForCodeSearch "autoSearchPattern:singleClassName ignoreCase:false".
     ].
 
     "Modified (format): / 25-11-2011 / 14:02:17 / cg"
@@ -31743,6 +32040,7 @@
     self classMenuGenerateMultiSetterMethod
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-class hierarchy'!
 
 classHierarchyMenuSelectWithAllSubclasses
@@ -31795,6 +32093,7 @@
     ^ self selectedClasses
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-class packaging'!
 
 excludeClasses: toExclude fromProject:aDefinitionClass using:generator
@@ -31826,6 +32125,7 @@
     aDefinitionClass makeClassesAutoloaded:toMakeAutoloaded usingCompiler:generator
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-class repository'!
 
 allKnownTagsInClasses:aCollectionOfClasses
@@ -32166,12 +32466,18 @@
 
     |classesNotInPackage utilities msg answer errors|
 
-    errors := self checkCompilabilityOfAll:aCollectionOfClasses withExtensions:true "false" errorsOnly:true.
-    errors notEmptyOrNil ifTrue:[
+    "JV@2012-04-11: Kludge for SVNSourceCodeManager that does the check itself using
+     new ProjectChecker and I don't want same message to appear twice. Anyway, there
+     is another check for bad selectors in SCM, sigh"
+
+    (aManagerOrNil isNil or:[aManagerOrNil performsCompilabilityChecks not]) ifTrue:[
+        errors := self checkCompilabilityOfAll:aCollectionOfClasses withExtensions: true errorsOnly:true.
+        errors notEmptyOrNil ifTrue:[
 	(TextBox openOn:errors title:'Attention: about to check in class with errors' readOnly:true) isNil
 	ifTrue:[
 	    AbortSignal raise
 	].
+        ].
     ].
 
     utilities := aManagerOrNil isNil
@@ -32227,6 +32533,7 @@
     ].
 
     "Created: / 21-12-2011 / 18:22:58 / cg"
+    "Modified: / 13-12-2012 / 15:24:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 checkOutClass:aClass askForRevision:askForRevision
@@ -32656,6 +32963,17 @@
     "Created: / 21-12-2011 / 20:16:21 / cg"
 !
 
+classMenuCheckOutNewestUsingManagerNamed: managerName
+    "check-out the newest version of the selected class(es) from the source repository.
+     Offer chance to either overwrite the current version,
+     or merge-in the repository version.
+     "
+
+     ^self classMenuCheckOutNewestUsingManager: (Smalltalk at:managerName asSymbol)
+
+    "Created: / 02-02-2012 / 10:52:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 classMenuCheckOutUsingManager: manager
     "check-out selected class(es) from the source repository.
      Individually ask for class revisions.
@@ -33799,6 +34117,7 @@
      classesToUnload current repository diffs allDiffs
      title|
 
+
     collectionOfClasses size == 1 ifTrue:[
 	self compareAgainstNewestInRepository:(collectionOfClasses first theNonMetaclass) usingManager:aManagerOrNil.
 	^ self.
@@ -33914,6 +34233,7 @@
     "Modified: / 12-09-2011 / 11:54:42 / cg"
     "Created: / 11-10-2011 / 10:32:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 21-12-2011 / 20:10:53 / cg"
+    "Modified (format): / 18-07-2012 / 10:16:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 generateDiffSetForClasses:collectionOfClasses newest:newest
@@ -34305,11 +34625,8 @@
     "show a classes repository log - append to codeView.
      CAVEAT: that is almost the same code as found in SystemBrowser;
 	     move to SourceCodeManagerUtilities."
-
     |codeView aStream|
-
     aStream := WriteStream on:(String new:200).
-
     Processor activeProcess
 	withPriority:Processor activePriority-1 to:Processor activePriority
     do:[
@@ -34320,25 +34637,19 @@
 		ifFalse:[ managerOrNil utilities ])
 	    repositoryLogOf:aClass short:shortOrNot onto:aStream
     ].
-
     self codeAspect:#repositoryLog.
     self selectedMethods value:nil.
     self selectProtocols:nil.
-
     codeView := self codeView.
     codeView contents:(codeView contents ,
 		       Character cr asString ,
 		       Character cr asString ,
 		       aStream contents).
-
     codeView modified:false.
     navigationState realModifiedState:false.
-
 "/    self clearAcceptAction.
 "/    self clearExplainAction.
-
     self normalLabel
-
     "Created: / 11-10-2011 / 20:33:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 21-12-2011 / 20:24:55 / cg"
 !
@@ -34444,6 +34755,7 @@
     "Created: / 21-12-2011 / 20:11:25 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-code'!
 
 codeMenuAddClassVariable:newName inClass:aClass asValueHolder:asValueHolder
@@ -36186,10 +36498,26 @@
     rslt := self
 		handlingRefactoringErrorDo:
 		    [
+			| changes |
 			aRefactoring isRefactoryChange ifTrue:[
-			    RefactoryChangeManager performChange:aRefactoring
+			    changes := aRefactoring.
+			    (UserPreferences current confirmRefactorings and:[changes shouldBeConfirmed]) ifTrue:[
+				changes := ChangeSetBrowser2 confirmChanges: changes.
+			    ].
+			    RefactoryChangeManager performChange:changes.
 			] ifFalse:[
-			    aRefactoring execute
+			    UserPreferences current confirmRefactorings ifTrue:[
+				aRefactoring primitiveExecute.
+				changes := aRefactoring changes.
+				changes changes size > 1 ifTrue:[
+				    changes := ChangeSetBrowser2 confirmChanges: changes.
+				    changes := (CompositeRefactoryChange named: (aRefactoring printString)) changes: changes.
+				].
+				RefactoryChangeManager performChange:changes.
+				RefactoringManager instance addRefactoring: aRefactoring performChanges: false.
+			    ] ifFalse:[
+				aRefactoring execute
+			    ]
 			].
 		    ].
 
@@ -36197,6 +36525,7 @@
     ^ rslt
 
     "Modified: / 16-11-2006 / 19:34:19 / cg"
+    "Modified: / 15-05-2012 / 13:12:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 selectedClassVariableOrNil
@@ -36308,6 +36637,7 @@
     aTwoArgBlock value:cls value:selector.
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-debug'!
 
 classMenuClearCoverageInfo
@@ -36907,6 +37237,7 @@
     "Modified: / 28-02-2012 / 16:52:45 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-help'!
 
 openClassDocumentation
@@ -36929,6 +37260,7 @@
     HTMLDocumentView openFullOnDocumentationFile:'TOP.html'
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-inheritance'!
 
 inheritanceMenuNavigateToClass
@@ -36939,8 +37271,26 @@
     self updateSpecialCodeEditorVisibility
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-methodList'!
 
+methodListMenuCheckInClass
+    "check the selected methods class(es) into the source repository."
+
+    <resource: #obsolete> "use ...Using:manager variant"
+
+    |classes|
+
+    classes := self selectedMethodsClasses asOrderedCollection.
+
+    ^ self
+	classMenuCheckIn:true
+	classes:classes
+
+    "Modified: / 18-11-2011 / 18:49:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-02-2012 / 09:12:37 / cg"
+!
+
 methodListMenuCheckInClassUsingManager: manager
     "check the selected methods class(es) into the source repository."
 
@@ -37150,6 +37500,7 @@
     "Modified: / 28-02-2012 / 16:27:44 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-namespace'!
 
 nameSpaceMenuCheckOut
@@ -37275,6 +37626,7 @@
     "Modified: / 28-02-2012 / 16:53:04 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-other'!
 
 editModeInsert
@@ -37340,6 +37692,7 @@
     "Created: / 15-10-2011 / 12:02:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-project'!
 
 classMenuCheckInBuildSupportFiles
@@ -39130,8 +39483,7 @@
 !
 
 projectMenuFileOutAsWithFormat:aFormatSymbolOrNil
-    |currentProject selectedProjects fileBox suffix saveName dir
-     fileName "methodsToFileOut fileNameForExtensions" mgr s classesToFileout|
+    |currentProject selectedProjects suffix saveName fileName "methodsToFileOut fileNameForExtensions" mgr s classesToFileout|
 
     selectedProjects := self selectedProjectsValue.
     currentProject := self theSingleSelectedProject.
@@ -39140,9 +39492,12 @@
     ] ifFalse:[
 	fileName := 'someProjects'
     ].
-    aFormatSymbolOrNil == #xml ifTrue:[
+    aFormatSymbolOrNil == #cypress ifTrue:[
+	suffix := ''.
+    ] ifFalse:[
+	aFormatSymbolOrNil == #xml ifTrue:[
 	suffix := '.xml'
-    ] ifFalse:[
+	] ifFalse:[
 	aFormatSymbolOrNil == #sif ifTrue:[
 	    suffix := '.sif'
 	] ifFalse:[
@@ -39152,6 +39507,7 @@
 		suffix := '.st'
 	    ]
 	]
+	].
     ].
     fileName := fileName , suffix.
 
@@ -39160,10 +39516,16 @@
 	^ self
     ].
 
+    aFormatSymbolOrNil == #cypress ifTrue:[
+	saveName := Dialog
+	    requestDirectoryName: (resources string:'FileOut %1 in:' with:(currentProject ? 'selected projects'))
+	    "default: (FileSelectionBox lastFileSelectionDirectory)"
+    ] ifFalse:[
     saveName := Dialog
 	requestFileNameForSave:(resources string:'FileOut %1 as:' with:(currentProject ? 'selected projects'))
 	default:fileName
 	fromDirectory:(FileSelectionBox lastFileSelectionDirectory).
+    ].
 
 "/    fileBox := FileSelectionBox
 "/                    title:(resources string:'FileOut %1 as:' with:(currentProject ? 'selected projects'))
@@ -39241,9 +39603,20 @@
 	^ self.
     ].
 
+    aFormatSymbolOrNil == #cypress ifTrue:[
+	mgr := (Smalltalk at:#CypressWriter) new.
+	self showMessage: (resources string:'Writing Cypress package...')
+		   while: [ mgr writePackage: currentProject asCypressPackage to: saveName asFilename ]
+	    inBackground: true.
+	^ self
+    ].
+
+
+
     self shouldImplement.
 
     "Modified: / 27-10-2010 / 11:34:45 / cg"
+    "Modified: / 02-10-2012 / 11:23:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 projectMenuFileOutBuildSupportFiles
@@ -39317,6 +39690,12 @@
     "Modified: / 23-02-2011 / 15:27:20 / cg"
 !
 
+projectMenuFileOutCypressAs
+    ^self projectMenuFileOutAsWithFormat:#cypress
+
+    "Modified: / 07-09-2012 / 19:26:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 projectMenuFileOutEachBinaryIn
     "fileOut selected projects as individual files - binary format"
 
@@ -40699,6 +41078,7 @@
     "Modified: / 23-10-2006 / 11:01:42 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-project-monticello'!
 
 projectMenuMonticelloBrowseRepositories
@@ -40707,6 +41087,7 @@
     "Created: / 01-12-2011 / 21:47:24 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-protocol'!
 
 doMoveSelectedProtocolsToProject:newProject
@@ -40970,7 +41351,7 @@
      cls suggestion|
 
     LastNewProtocols notEmptyOrNil ifTrue:[
-	suggestion := LastNewProtocols first.
+        suggestion := LastNewProtocols first.
     ].
 
 "/    allMethodCategories := Set new.
@@ -40979,61 +41360,61 @@
 "/    ].
 "/
     SharedMethodCategoryCache isNil ifTrue:[
-	SharedMethodCategoryCache := MethodCategoryCache new
+        SharedMethodCategoryCache := MethodCategoryCache new
     ].
     allMethodCategories := SharedMethodCategoryCache allMethodCategories.
 
     "/ remove existing ones ...
     (cls := self theSingleSelectedClass) notNil ifTrue:[
-	classesMethodCategories := cls categories asSet.
-	someMethodCategories := allMethodCategories select:[:cat | (classesMethodCategories includes:cat) not].
+        classesMethodCategories := cls categories asSet.
+        someMethodCategories := allMethodCategories select:[:cat | (classesMethodCategories includes:cat) not].
 "/        someMethodCategories removeAllFoundIn:classesMethodCategories.
-	(classesMethodCategories includes:suggestion) ifTrue:[
-	    suggestion := nil.
-	].
+        (classesMethodCategories includes:suggestion) ifTrue:[
+            suggestion := nil.
+        ].
     ].
 
     someMethodCategories := (someMethodCategories ? allMethodCategories) asOrderedCollection sort.
 
     someRecentlyVisitedMethodCategories := self methodCategoryListApp lastSelectedProtocols.
     someRecentlyVisitedMethodCategories notEmptyOrNil ifTrue:[
-	someRecentlyVisitedMethodCategories := someRecentlyVisitedMethodCategories asOrderedCollection sort.
-	someMethodCategories addFirst:''.
-	someMethodCategories addAllFirst:someRecentlyVisitedMethodCategories.
-	suggestion isNil ifTrue:[
-	    suggestion := someRecentlyVisitedMethodCategories first
-	].
+        someRecentlyVisitedMethodCategories := someRecentlyVisitedMethodCategories asOrderedCollection sort.
+        someMethodCategories addFirst:''.
+        someMethodCategories addAllFirst:someRecentlyVisitedMethodCategories.
+        suggestion isNil ifTrue:[
+            suggestion := someRecentlyVisitedMethodCategories first
+        ].
     ].
 
     newProtocol := self
-			askForMethodCategory:'Name of new protocol:\(Tab for completion)' withCRs
-			title:'New MethodCategory'
-			okLabel:'Create'
-			list:someMethodCategories
-			recentList:LastNewProtocols
-			initialAnswer:suggestion.
+                        askForMethodCategory:'Name of new protocol:\(Tab for completion)' withCRs
+                        title:'New MethodCategory'
+                        okLabel:'Create'
+                        list:someMethodCategories
+                        recentList:LastNewProtocols
+                        initialAnswer:suggestion.
 
     newProtocol isNil ifTrue:[^ self].
     newProtocol isWideString ifTrue:[
-	Dialog warn:'Sorry - for now, non-ascii categories are not allowed (no 2-byte symbols).'.
-	^ self.
+        Dialog warn:'Sorry - for now, non-ascii categories are not allowed (no 2-byte symbols).'.
+        ^ self.
     ].
 
     self immediateUpdate value:true.
     self selectedClassesDo:[:cls |
-	self methodCategoryListApp addAdditionalProtocol:newProtocol forClass:cls.
+        self methodCategoryListApp addAdditionalProtocol:newProtocol forClass:cls.
     ].
     self selectProtocol:newProtocol.
     self clearAutoSelectOfLastSelectedProtocol.
     self immediateUpdate value:false.
 
     LastNewProtocols isNil ifTrue:[
-	LastNewProtocols := OrderedCollection new
+        LastNewProtocols := OrderedCollection new
     ].
     LastNewProtocols remove:newProtocol ifAbsent:[].
     LastNewProtocols addFirst:newProtocol.
     LastNewProtocols size > 10 ifTrue:[
-	LastNewProtocols removeLast
+        LastNewProtocols removeLast
     ].
 
     "Modified: / 25.2.2000 / 00:56:04 / cg"
@@ -41118,30 +41499,30 @@
     self hasProtocolSelected ifFalse:[^ self].
 
     LastProtocolRenames isNil ifTrue:[
-	LastProtocolRenames := OrderedCollection new.
+        LastProtocolRenames := OrderedCollection new.
     ].
     currentMethodCategory := self theSingleSelectedProtocol.
     currentMethodCategory isNil ifTrue:[
-	LastProtocolRenames size > 0 ifTrue:[
-	    last := LastProtocolRenames last
-	].
-    ] ifFalse:[
-	currentMethodCategory := currentMethodCategory string.
-
-	last := LastProtocolRenames detect:[:ren | ren key = currentMethodCategory] ifNone:nil.
-	last notNil ifTrue:[
-	    suggestion := last value
-	]
+        LastProtocolRenames size > 0 ifTrue:[
+            last := LastProtocolRenames last
+        ].
+    ] ifFalse:[
+        currentMethodCategory := currentMethodCategory string.
+
+        last := LastProtocolRenames detect:[:ren | ren key = currentMethodCategory] ifNone:nil.
+        last notNil ifTrue:[
+            suggestion := last value
+        ]
     ].
     last isNil ifTrue:[
-	suggestion := currentMethodCategory
+        suggestion := currentMethodCategory
     ].
 
     currentMethodCategory isNil ifTrue:[
-	msg := resources string:'Rename selected categories to:'
-    ] ifFalse:[
-	msg := resources string:'Rename method category ''%1'' to:'
-			 with:currentMethodCategory allBold
+        msg := resources string:'Rename selected categories to:'
+    ] ifFalse:[
+        msg := resources string:'Rename method category ''%1'' to:'
+                         with:currentMethodCategory allBold
     ].
 "/    box := self class
 "/                enterBoxTitle:msg
@@ -41157,31 +41538,31 @@
 
     "/ offer the current classes's protocols in the dialog
     (selClasses := self selectedClassesValue) notEmptyOrNil ifTrue:[
-	selClasses do:[:eachClass |
-	    someCategories addAll:(eachClass categories).
-	]
-    ] ifFalse:[
-	"/ offer the current method-classes' protocols in the dialog
-	(selMethods := self selectedMethodsValue) notNil ifTrue:[
-	    selMethods do:[:eachMethod | |cls|
-		(cls := eachMethod mclass) notNil ifTrue:[
-		    someCategories addAll:cls categories
-		]
-	    ]
-	]
+        selClasses do:[:eachClass |
+            someCategories addAll:(eachClass categories).
+        ]
+    ] ifFalse:[
+        "/ offer the current method-classes' protocols in the dialog
+        (selMethods := self selectedMethodsValue) notNil ifTrue:[
+            selMethods do:[:eachMethod | |cls|
+                (cls := eachMethod mclass) notNil ifTrue:[
+                    someCategories addAll:cls categories
+                ]
+            ]
+        ]
     ].
     someCategories := someCategories asOrderedCollection sort.
     someCategories notEmpty ifTrue:[
-	someCategories add:''.
+        someCategories add:''.
     ].
     someCategories addAll:(Smalltalk allMethodCategories select:[:cat | (someCategories includes:cat) not]) asOrderedCollection sort.
 
     newCategory := self
-			askForMethodCategory:msg
-			title:'Rename MethodCategory'
-			okLabel:'Rename'
-			list:someCategories
-			initialAnswer:suggestion.
+                        askForMethodCategory:msg
+                        title:'Rename MethodCategory'
+                        okLabel:'Rename'
+                        list:someCategories
+                        initialAnswer:suggestion.
 
     newCategory isNil ifTrue:[^ self].
     newCategory := newCategory withoutSeparators.
@@ -41190,42 +41571,42 @@
     newCategory = currentMethodCategory ifTrue:[^ self].
 
     newCategory isWideString ifTrue:[
-	Dialog warn:'Sorry - for now, non-ascii categories are not allowed (no 2-byte symbols).'.
-	^ self.
+        Dialog warn:'Sorry - for now, non-ascii categories are not allowed (no 2-byte symbols).'.
+        ^ self.
     ].
 
     self withWaitCursorDo:[
-	LastProtocolRenames := LastProtocolRenames select:[:ren | ren key ~= currentMethodCategory].
-	LastProtocolRenames addLast:(currentMethodCategory -> newCategory).
-	LastProtocolRenames size > 20 ifTrue:[LastProtocolRenames removeFirst].
-
-	methodCategoryListApp := self methodCategoryListApp.
-
-	newCategory := newCategory asSymbol.
-	self selectedProtocolsDo:[:cls :protocol |
-	    |methods|
-
-	    methods := cls methodDictionary values select:[:m | m category = protocol].
-	    self moveMethods:methods toProtocol:newCategory.
+        LastProtocolRenames := LastProtocolRenames select:[:ren | ren key ~= currentMethodCategory].
+        LastProtocolRenames addLast:(currentMethodCategory -> newCategory).
+        LastProtocolRenames size > 20 ifTrue:[LastProtocolRenames removeFirst].
+
+        methodCategoryListApp := self methodCategoryListApp.
+
+        newCategory := newCategory asSymbol.
+        self selectedProtocolsDo:[:cls :protocol |
+            |methods|
+
+            methods := cls methodDictionary values select:[:m | m category = protocol].
+            self moveMethods:methods toProtocol:newCategory.
 
 "/            cls renameCategory:protocol to:newCategory.
-	    "/ kludge - must also rename in addedProtocols
-	    methodCategoryListApp notNil ifTrue:[
-		methodCategoryListApp renameAdditionalProtocol:protocol to:newCategory forClass:cls.
-	    ]
-	].
-	methodCategoryListApp notNil ifTrue:[
-	    (self selectedClassesValue) do:[:cls |
-		"/ kludge - must also rename in addedProtocols
-		methodCategoryListApp renameAdditionalProtocol:currentMethodCategory to:newCategory forClass:cls.
-	    ].
-
-	    methodCategoryListApp updateList.
-	].
-
-	self immediateUpdate value:true.
-	self selectProtocol:newCategory.
-	self immediateUpdate value:false.
+            "/ kludge - must also rename in addedProtocols
+            methodCategoryListApp notNil ifTrue:[
+                methodCategoryListApp renameAdditionalProtocol:protocol to:newCategory forClass:cls.
+            ]
+        ].
+        methodCategoryListApp notNil ifTrue:[
+            (self selectedClassesValue) do:[:cls |
+                "/ kludge - must also rename in addedProtocols
+                methodCategoryListApp renameAdditionalProtocol:currentMethodCategory to:newCategory forClass:cls.
+            ].
+
+            methodCategoryListApp updateList.
+        ].
+
+        self immediateUpdate value:true.
+        self selectProtocol:newCategory.
+        self immediateUpdate value:false.
     ]
 
     "Modified: / 28-02-2012 / 17:00:47 / cg"
@@ -41441,6 +41822,7 @@
     "Modified: / 28-02-2012 / 16:34:54 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-searching'!
 
 askForClassToSearch:doWhatByDefault single:singleClass msgTail:msgTail resources:resourcesOrNil thenDo:aBlock
@@ -41451,9 +41833,9 @@
      otherwise, a match pattern is allowed and a multi-class browser is opened."
 
     |box boxLabel title okText okText2 okText3 className canFind
-     button2 button3 doWhat doWhat2 doWhat3 classNameHolder updateList
-     allClasses
-     allNames allFullNames initialShortNames initialFullNames
+     button2 button3 doWhat doWhat2 doWhat3 classNameHolder updateList 
+     allClasses 
+     allNames allFullNames initialShortNames initialFullNames 
      resources check showingWhatLabel showFullNameHolder genShortNameListEntry|
 
     resources := resourcesOrNil ? self class classResources.
@@ -41463,48 +41845,48 @@
     canFind := navigationState notNil and:[ navigationState isFullBrowser ].
 
     doWhat isNil ifTrue:[
-	title := ''.
-	boxLabel := (resources string:'Select a class').
-	okText := 'OK'.
-	okText2 := nil. doWhat2 := nil.
-	okText3 := nil. doWhat3 := nil.
-    ] ifFalse:[
-	title := (singleClass ifTrue:[ 'Class to browse' ] ifFalse:[ 'Class(es) to browse' ]).
-	boxLabel := (resources string:'Browse or Search').
-
-	(doWhat isNil and:[canFind not]) ifTrue:[
-	    doWhat := #newBuffer.
-	].
-
-	doWhat == #newBrowser ifTrue:[
-	    okText := 'Open'.
-	    okText2 := 'Add Buffer'. doWhat2 := #newBuffer.
-	    okText3 := 'Find'.       doWhat3 := nil.
-	] ifFalse:[ doWhat == #newBuffer ifTrue:[
-	    okText := 'Add Buffer'.
-	    okText2 := 'Open New'.   doWhat2 := #newBrowser.
-	    okText3 := 'Find'.       doWhat3 := nil.
-	] ifFalse:[
-	    title := (singleClass ifTrue:[ 'Class to find' ] ifFalse:[ 'Class(es) to find' ]).
-	    okText := 'Find'.
-	    okText2 := 'Open New'.   doWhat2 := #newBrowser.
-	    okText3 := 'Add Buffer'. doWhat3 := #newBuffer.
-	]].
-    ].
-
-    genShortNameListEntry :=
-	[:cls |
-	    |ns|
-	    cls isNil ifTrue:[
-		nil
-	    ] ifFalse:[
-		ns := cls topNameSpace name.
-		ns = 'Smalltalk'
-		    ifTrue:[ ns := '' ]
-		    ifFalse:[ns := ' (in ',ns,')'].
-		cls nameWithoutNameSpacePrefix,ns
-	    ].
-	].
+        title := ''.
+        boxLabel := (resources string:'Select a class').
+        okText := 'OK'.
+        okText2 := nil. doWhat2 := nil.
+        okText3 := nil. doWhat3 := nil.
+    ] ifFalse:[
+        title := (singleClass ifTrue:[ 'Class to browse' ] ifFalse:[ 'Class(es) to browse' ]).
+        boxLabel := (resources string:'Browse or Search').
+
+        (doWhat isNil and:[canFind not]) ifTrue:[
+            doWhat := #newBuffer.
+        ].
+
+        doWhat == #newBrowser ifTrue:[
+            okText := 'Open'.
+            okText2 := 'Add Buffer'. doWhat2 := #newBuffer.
+            okText3 := 'Find'.       doWhat3 := nil.
+        ] ifFalse:[ doWhat == #newBuffer ifTrue:[
+            okText := 'Add Buffer'.
+            okText2 := 'Open New'.   doWhat2 := #newBrowser.
+            okText3 := 'Find'.       doWhat3 := nil.
+        ] ifFalse:[
+            title := (singleClass ifTrue:[ 'Class to find' ] ifFalse:[ 'Class(es) to find' ]).
+            okText := 'Find'.
+            okText2 := 'Open New'.   doWhat2 := #newBrowser.
+            okText3 := 'Add Buffer'. doWhat3 := #newBuffer.
+        ]].
+    ].
+
+    genShortNameListEntry := 
+        [:cls | 
+            |ns|
+            cls isNil ifTrue:[
+                nil
+            ] ifFalse:[
+                ns := cls topNameSpace name.
+                ns = 'Smalltalk' 
+                    ifTrue:[ ns := '' ]
+                    ifFalse:[ns := ' (in ',ns,')'].
+                cls nameWithoutNameSpacePrefix,ns
+            ].
+        ].
 
     initialFullNames := self class visitedClassNamesHistory.
     initialShortNames := initialFullNames collect:[:nm | genShortNameListEntry value:(Smalltalk at:nm)] thenSelect:[:nm | nm notNil].
@@ -41512,114 +41894,114 @@
     title := (resources string:title) , msgTail , '.\' , (resources string:'(TAB to complete; matchPattern allowed):').
 
     box := self
-		enterBoxForClassWithCodeSelectionTitle:title withCRs
-		withList:(showFullNameHolder value ifTrue:[initialFullNames] ifFalse:[initialShortNames])
-		okText:okText.
+                enterBoxForClassWithCodeSelectionTitle:title withCRs
+                withList:(showFullNameHolder value ifTrue:[initialFullNames] ifFalse:[initialShortNames])
+                okText:okText.
 
     box label:boxLabel.
 
     doWhat notNil ifTrue:[
-	button2 := Button label:(resources string:okText2).
-	navigationState isFullBrowser "singleClass" ifTrue:[
-	    button3 := Button label:(resources string:okText3)
-	].
-	(DialogBox defaultOKButtonAtLeft) ifFalse:[
-	    box addButton:button2 before:(box okButton).
-	    button3 notNil ifTrue:[box addButton:button3 before:button2].
-	] ifTrue:[
-	    box addButton:button2 after:(box okButton).
-	    button3 notNil ifTrue:[box addButton:button3 after:button2].
-	].
-
-	button2 action:[
-	   doWhat := doWhat2.
-	   box doAccept.
-	   box okPressed.
-	].
-	button3 notNil ifTrue:[
-	    button3 action:[
-	       doWhat := doWhat3.
-	       box doAccept.
-	       box okPressed.
-	    ].
-	].
+        button2 := Button label:(resources string:okText2).
+        navigationState isFullBrowser "singleClass" ifTrue:[
+            button3 := Button label:(resources string:okText3)
+        ].
+        (DialogBox defaultOKButtonAtLeft) ifFalse:[
+            box addButton:button2 before:(box okButton).
+            button3 notNil ifTrue:[box addButton:button3 before:button2].
+        ] ifTrue:[
+            box addButton:button2 after:(box okButton).
+            button3 notNil ifTrue:[box addButton:button3 after:button2].
+        ].
+
+        button2 action:[
+           doWhat := doWhat2.
+           box doAccept.
+           box okPressed.
+        ].
+        button3 notNil ifTrue:[
+            button3 action:[
+               doWhat := doWhat3.
+               box doAccept.
+               box okPressed.
+            ].
+        ].
     ].
 
     allClasses := Smalltalk allClasses copyAsOrderedCollection.
 
     allNames := (allClasses
-		    collect:[:cls |
-			|ns|
-			ns := cls topNameSpace name.
-			ns = 'Smalltalk'
-			    ifTrue:[ ns := '' ]
-			    ifFalse:[ns := ' (in ',ns,')'].
-			cls isNameSpace ifTrue:[
-			    cls nameWithoutNameSpacePrefix,ns,' (Namespace)'
-			] ifFalse:[
-			    cls nameWithoutNameSpacePrefix,ns
-			]
-		    ]) sortWith:allClasses; yourself.
+                    collect:[:cls | 
+                        |ns|
+                        ns := cls topNameSpace name.
+                        ns = 'Smalltalk' 
+                            ifTrue:[ ns := '' ]
+                            ifFalse:[ns := ' (in ',ns,')'].
+                        cls isNameSpace ifTrue:[
+                            cls nameWithoutNameSpacePrefix,ns,' (Namespace)'
+                        ] ifFalse:[
+                            cls nameWithoutNameSpacePrefix,ns
+                        ]
+                    ]) sortWith:allClasses; yourself.
     allFullNames := (allClasses collect:[:cls | cls name]) sortWith:allClasses; yourself.
 
     updateList := [
-	    |nameToSearch list namesStarting namesIncluding lcName nameList|
-
-	    (nameToSearch := classNameHolder value withoutSeparators) isEmpty ifTrue:[
-		showingWhatLabel label:(resources string:'Recently visited:').
-		list := (showFullNameHolder value ifTrue:[initialFullNames] ifFalse:[initialShortNames]).
-	    ] ifFalse:[
-		showingWhatLabel label:(resources string:'Matching classes:').
-		nameList := showFullNameHolder value
-				ifTrue:[ allFullNames ]
-				ifFalse:[ allNames ].
-
-		lcName := nameToSearch asLowercase.
-		(lcName includesString:'::') ifTrue:[
-		    list := OrderedCollection new.
-		    allClasses doWithIndex:[:cls :idx |
-			|isIncluded|
-
-			(nameToSearch includesMatchCharacters) ifTrue:[
-			    isIncluded := (lcName match:cls name asLowercase)
-			] ifFalse:[
-			    isIncluded := (cls name includesString:lcName caseSensitive:false)
-			].
-			isIncluded ifTrue:[
-			    list add:(nameList at:idx)
-			].
-		    ].
-		] ifFalse:[
-		    (nameToSearch includesMatchCharacters) ifTrue:[
-			list := nameList select:[:nm | lcName match:nm asLowercase]
-		    ] ifFalse:[
-			namesIncluding := nameList
-					    select:[:nm |
-						"/ nm asLowercase startsWith:lcName
-						nm asLowercase includesString:lcName caseSensitive:false
-					    ].
-			namesStarting := namesIncluding select:[:nm | nm asLowercase startsWith:lcName].
-			list := namesStarting , {nil} , (namesIncluding \ namesStarting).
-		    ]
-		]
-	    ].
-	    box listView
-		list:list;
-		scrollToLine:((list findFirst:[:line | (line ? '') startsWith:lcName]) max:1)
-	].
+            |nameToSearch list namesStarting namesIncluding lcName nameList|
+
+            (nameToSearch := classNameHolder value withoutSeparators) isEmpty ifTrue:[
+                showingWhatLabel label:(resources string:'Recently visited:'). 
+                list := (showFullNameHolder value ifTrue:[initialFullNames] ifFalse:[initialShortNames]).
+            ] ifFalse:[
+                showingWhatLabel label:(resources string:'Matching classes:'). 
+                nameList := showFullNameHolder value
+                                ifTrue:[ allFullNames ]
+                                ifFalse:[ allNames ].
+
+                lcName := nameToSearch asLowercase.
+                (lcName includesString:'::') ifTrue:[
+                    list := OrderedCollection new.
+                    allClasses doWithIndex:[:cls :idx |
+                        |isIncluded|
+
+                        (nameToSearch includesMatchCharacters) ifTrue:[
+                            isIncluded := (lcName match:cls name asLowercase) 
+                        ] ifFalse:[
+                            isIncluded := (cls name includesString:lcName caseSensitive:false) 
+                        ].
+                        isIncluded ifTrue:[
+                            list add:(nameList at:idx)
+                        ].
+                    ].
+                ] ifFalse:[
+                    (nameToSearch includesMatchCharacters) ifTrue:[
+                        list := nameList select:[:nm | lcName match:nm asLowercase]
+                    ] ifFalse:[
+                        namesIncluding := nameList 
+                                            select:[:nm | 
+                                                "/ nm asLowercase startsWith:lcName 
+                                                nm asLowercase includesString:lcName caseSensitive:false
+                                            ].
+                        namesStarting := namesIncluding select:[:nm | nm asLowercase startsWith:lcName].
+                        list := namesStarting , {nil} , (namesIncluding \ namesStarting).
+                    ]
+                ]
+            ].
+            box listView 
+                list:list;
+                scrollToLine:((list findFirst:[:line | (line ? '') startsWith:lcName]) max:1)
+        ].
 
     classNameHolder := '' asValue.
-    box enterField
-	model:classNameHolder;
-	immediateAccept:true.
+    box enterField 
+        model:classNameHolder;
+        immediateAccept:true.
     classNameHolder onChangeEvaluate:updateList.
 
     box entryCompletionBlock:(DoWhatIMeanSupport classNameEntryCompletionBlock).
     box action:[:aString | className := aString].
 
-    box panelView
-	addSubView:(showingWhatLabel := (Label label:(resources string:'Recently visited:')) adjust:#left) before:nil;
-	addSubView:(check := CheckBox label:(resources string:'Show Full Name (do not strip off Namespace)') model:showFullNameHolder) before:nil.
+    box panelView 
+        addSubView:(showingWhatLabel := (Label label:(resources string:'Recently visited:')) adjust:#left) before:nil;
+        addSubView:(check := CheckBox label:(resources string:'Show Full Name (do not strip off Namespace)') model:showFullNameHolder) before:nil.
     showFullNameHolder onChangeEvaluate:updateList.
     box enterField origin:(0 @ check corner y).
     box listView origin:(0 @ check corner y).
@@ -41632,23 +42014,23 @@
     LastClassSearchBoxShowedFullName := showFullNameHolder value.
 
     (className endsWith:$) ) ifTrue:[
-	(className indexOfSubCollection:'(in ') == 0 ifTrue:[
-	    "/ a namespace
-	    className := (className copyTo:(className indexOfSubCollection:'(Name')-1) withoutSeparators
-	] ifFalse:[
-	    className := ((className copyFrom:(className indexOfSubCollection:'(in ')+4)
-			    copyWithoutLast:1)
-			 , '::' , className asCollectionOfWords first
-	].
+        (className indexOfSubCollection:'(in ') == 0 ifTrue:[
+            "/ a namespace
+            className := (className copyTo:(className indexOfSubCollection:'(Name')-1) withoutSeparators
+        ] ifFalse:[
+            className := ((className copyFrom:(className indexOfSubCollection:'(in ')+4)
+                            copyWithoutLast:1)
+                         , '::' , className asCollectionOfWords first 
+        ].
     ].
 
     doWhat isNil ifTrue:[
-	aBlock notNil ifTrue:[aBlock value:className optionalArgument:singleClass and:doWhat].
-	^ className
+        aBlock notNil ifTrue:[aBlock value:className optionalArgument:singleClass and:doWhat].
+        ^ className
     ].
 
     self withSearchCursorDo:[
-	aBlock value:className value:singleClass value:doWhat.
+        aBlock value:className value:singleClass value:doWhat.
     ].
     ^ className
 
@@ -42091,6 +42473,7 @@
     "Modified: / 02-06-2011 / 11:35:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-selector'!
 
 askForClassToMoveOrCopy:doWhat
@@ -42913,7 +43296,10 @@
 				ifTrue:[ Smalltalk allClasses ]
 				ifFalse:[ aClass withAllSubclasses ].
 	"/ ask if so many methods should be rewritten; give chance to cancel
+	"/ JV: but not if refactorings are confimed anyway in performRefactoring:...
+	UserPreferences current confirmRefactorings ifFalse:[
 	(self findSendersOf:oldSelector in:affectedClasses andConfirmRefactoring:refactoring) ifFalse:[ ^ self ].
+	].
     ].
 
     renameSelectedMethodsOnly ifTrue:[
@@ -42957,6 +43343,7 @@
     ].
 
     "Modified: / 28-02-2012 / 16:28:12 / cg"
+    "Modified: / 10-05-2012 / 13:06:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 selectVariableForMoveMethod
@@ -43060,197 +43447,197 @@
     mselector := method selector.
     className := mclass name.
     [
-	|set|
-
-	set := ChangeSet forExistingMethods:(Array with:method).
-	set := set select:[:c | c isMethodChange].
-	lastChange := set first.
+        |set|
+
+        set := ChangeSet forExistingMethods:(Array with:method).
+        set := set select:[:c | c isMethodChange].
+        lastChange := set first.
     ] value.
 
     thisIsAnExtensionMethod := (method package ~= mclass package).
     thisIsAnExtensionMethod ifTrue:[
-	packageId := method package asPackageId.
-	mgr := packageId projectDefinitionClass sourceCodeManager.
-    ] ifFalse:[
-	packageId := mclass package asPackageId.
-	"/ mgr := packageId projectDefinitionClass sourceCodeManager.
-	mgr := SourceCodeManagerUtilities default sourceCodeManagerFor:mclass.
-	self assert:(mgr = packageId projectDefinitionClass sourceCodeManager).
+        packageId := method package asPackageId.
+        mgr := packageId projectDefinitionClass sourceCodeManager.
+    ] ifFalse:[
+        packageId := mclass package asPackageId.
+        "/ mgr := packageId projectDefinitionClass sourceCodeManager.
+        mgr := SourceCodeManagerUtilities default sourceCodeManagerFor:mclass.
+        self assert:(mgr = packageId projectDefinitionClass sourceCodeManager).
     ].
     directory := packageId directory.
     module := packageId module.
 
     self withWaitCursorDo:[
-	|revisionLog start stop answer t tS list msg first|
-
-	thisIsAnExtensionMethod ifTrue:[
-	    revisionLog := mgr
-		revisionLogOf:nil
-		fromRevision:nil
-		toRevision:nil
-		numberOfRevisions:nil
-		fileName:'extensions.st'
-		directory:directory
-		module:module.
-	] ifFalse:[
-	    revisionLog := mgr revisionLogOf:mclass.
-	].
-	revisions := revisionLog at:#revisions.
-
-	start := 1.
-	stop := revisions size.
-	stop > 20 ifTrue:[
-	    thisIsAnExtensionMethod ifTrue:[
-		t := 500.   "/ fake time
-	    ] ifFalse:[
-		"/ measure the time it takes to checkout a version...
-		t := Time millisecondsToRun:[
-		    |revSourceStream|
-
-		    revSourceStream := mgr getSourceStreamFor:mclass revision:((revisions at:10) at:#revision).
-		    ChangeSet fromStream:revSourceStream.
-		    revSourceStream close.
-		].
-	    ].
-
-	    list := revisions collect:[:entry |
-					|rev author dateString date msg|
-
-					rev := entry at:#revision.
-					author := entry at:#author.
-					dateString := entry at:#date.
-					date := Timestamp readGeneralizedFrom:dateString.
-					dateString := date printStringFormat:'%(year)-%(mon)-%(day) %h:%m:%s'.
-					entry at:#date put:dateString.
-					msg := (entry at:#logMessage) asStringCollection first asString.
-					rev,' ',author,' ',dateString,' ',msg
-				      ].
-	    msg := 'There are %1 revisions to extract from the repository'.
-	    t := (t * revisions size / 1000) rounded.
-	    t < 10 ifTrue:[
-		msg := msg,'\(this will take a few seconds).'.
-		tS := t.
-	    ] ifFalse:[
-		t := t * revisions size // 1000 // 10 * 10.
-		tS := (TimeDuration fromSeconds:t) printStringForApproximation.
-		msg := msg,'\(this will take roughly %2).'
-	    ].
-	    msg := msg,'\\Do you want to see all or only some of the revisions ?'.
-
-	    answer := Dialog
-		choose:(resources stringWithCRs:msg
-				    with:revisions size
-				    with:tS)
-		fromList:list values:revisions initialSelection:nil
-		buttons:nil
-		values:nil
-		default:nil
-		lines:20
-		cancel:[^ self]
-		multiple:false
-		title:(resources string:'Confirmation')
-		postBuildBlock:[:dialog |
-			    |b|
-
-			    b := Button label:(resources string:'Browse Newer than Selected').
-			    b action:[ stop := (dialog componentAt:#ListView) selection. dialog okPressed].
-			    b := dialog addButton:b before:dialog okButton.
-
-			    dialog okButton label:(resources string:'Browse All').
-			    dialog okButton action:[ stop := revisions size. dialog okPressed].
-			].
-
-	    stop isNil ifTrue:[^ self ].
-	].
+        |revisionLog start stop answer t tS list msg first|
+
+        thisIsAnExtensionMethod ifTrue:[
+            revisionLog := mgr 
+                revisionLogOf:nil
+                fromRevision:nil 
+                toRevision:nil
+                numberOfRevisions:nil
+                fileName:'extensions.st'
+                directory:directory 
+                module:module.
+        ] ifFalse:[
+            revisionLog := mgr revisionLogOf:mclass.
+        ].
+        revisions := revisionLog at:#revisions.
+
+        start := 1.
+        stop := revisions size.
+        stop > 20 ifTrue:[
+            thisIsAnExtensionMethod ifTrue:[
+                t := 500.   "/ fake time
+            ] ifFalse:[
+                "/ measure the time it takes to checkout a version...
+                t := Time millisecondsToRun:[
+                    |revSourceStream|
+
+                    revSourceStream := mgr getSourceStreamFor:mclass revision:((revisions at:10) at:#revision).
+                    ChangeSet fromStream:revSourceStream.
+                    revSourceStream close.
+                ].
+            ].
+
+            list := revisions collect:[:entry |
+                                        |rev author dateString date msg|
+
+                                        rev := entry at:#revision.
+                                        author := entry at:#author.
+                                        dateString := entry at:#date.
+                                        date := Timestamp readGeneralizedFrom:dateString.
+                                        dateString := date printStringFormat:'%(year)-%(mon)-%(day) %h:%m:%s'.
+                                        entry at:#date put:dateString.
+                                        msg := (entry at:#logMessage) asStringCollection first asString.
+                                        rev,' ',author,' ',dateString,' ',msg
+                                      ].
+            msg := 'There are %1 revisions to extract from the repository'.
+            t := (t * revisions size / 1000) rounded.
+            t < 10 ifTrue:[
+                msg := msg,'\(this will take a few seconds).'.
+                tS := t.
+            ] ifFalse:[
+                t := t * revisions size // 1000 // 10 * 10.
+                tS := (TimeDuration fromSeconds:t) printStringForApproximation.
+                msg := msg,'\(this will take roughly %2).'
+            ].
+            msg := msg,'\\Do you want to see all or only some of the revisions ?'.
+
+            answer := Dialog
+                choose:(resources stringWithCRs:msg
+                                    with:revisions size
+                                    with:tS)
+                fromList:list values:revisions initialSelection:nil
+                buttons:nil
+                values:nil
+                default:nil
+                lines:20
+                cancel:[^ self]
+                multiple:false
+                title:(resources string:'Confirmation')
+                postBuildBlock:[:dialog |
+                            |b|
+
+                            b := Button label:(resources string:'Browse Newer than Selected').
+                            b action:[ stop := (dialog componentAt:#ListView) selection. dialog okPressed].
+                            b := dialog addButton:b before:dialog okButton.
+
+                            dialog okButton label:(resources string:'Browse All').
+                            dialog okButton action:[ stop := revisions size. dialog okPressed].
+                        ].
+
+            stop isNil ifTrue:[^ self ].
+        ].
 
 t := Time millisecondsToRun:[
 
-	previousMethods := ChangeSet new.
-	lastSource := currentSource := method source.
-	lastRevision := lastDate := nil.
-	first := true.
-
-	revisions from:start to:stop do:[:eachLogEntry |
-	    |revision date revSourceStream|
-
-	    revision := eachLogEntry at:#revision.
-	    date := eachLogEntry at:#date.
-
-	    [
-		|chg nChg classChangeSet changeSource changeName|
-
-		self activityNotification:('Fetching revision ',revision,'...').
-		thisIsAnExtensionMethod ifTrue:[
-		    revSourceStream := mgr
-					    streamForClass:nil
-					    fileName:'extensions.st'
-					    revision:revision
-					    directory:directory
-					    module:module
-					    cache:true.
-		] ifFalse:[
-		    revSourceStream := mgr getSourceStreamFor:mclass revision:revision.
-		].
-		revSourceStream isNil ifTrue:[
-		    Dialog information:'oops - failed to get source for revision: ',revision,'. Skipping.'
-		] ifFalse:[
-		    classChangeSet := ChangeSet fromStream:revSourceStream.
-
-		    chg := classChangeSet
-				detect:[:chg | chg isMethodChange
-					       and:[chg selector = mselector
-					       and:[chg className = className]]]
-				ifNone:nil.
-
-		    chg isNil ifTrue:[
-			"the method was created in the next version (previous one processed)"
-		    ] ifFalse:[
-			changeSource := chg source.
-		    ].
-		    ((changeSource isNil and:[lastSource isNil])
-		    or:[ changeSource asString = lastSource asString ]) ifTrue:[
-		    ] ifFalse:[
-			lastChange isNil ifTrue:[
-			    "/ mhm - was not in the previous version
-			] ifFalse:[
-			    nChg := lastChange asNamedMethodChange
-			].
-			lastRevision isNil ifTrue:[
-			    (stop = revisions size) ifTrue:[
-				changeName := 'current (not in the repository)'.
-			    ] ifFalse:[
-				"/ not showing all - dont really know
-				changeName := 'current'.
-			    ].
-			] ifFalse:[
-			    changeName := lastRevision,' [',lastDate,']'.
-			    first ifTrue:[
-				changeName := changeName,' (= current)'.
-			    ]
-			].
-			nChg notNil ifTrue:[
-			    nChg changeName:changeName.
-			    previousMethods add:nChg.
-			].
-			lastSource := changeSource.
-			lastChange := chg.
-
-			first := false.
-		    ].
-		    lastRevision := revision.
-		    lastDate := date.
-		]
-	    ] ensure:[
-		revSourceStream notNil ifTrue:[revSourceStream close].
-	    ].
-	].
+        previousMethods := ChangeSet new.
+        lastSource := currentSource := method source.
+        lastRevision := lastDate := nil.
+        first := true.
+
+        revisions from:start to:stop do:[:eachLogEntry |
+            |revision date revSourceStream|
+
+            revision := eachLogEntry at:#revision.
+            date := eachLogEntry at:#date.
+
+            [
+                |chg nChg classChangeSet changeSource changeName|
+
+                self activityNotification:('Fetching revision ',revision,'...').
+                thisIsAnExtensionMethod ifTrue:[
+                    revSourceStream := mgr 
+                                            streamForClass:nil
+                                            fileName:'extensions.st' 
+                                            revision:revision 
+                                            directory:directory 
+                                            module:module
+                                            cache:true.
+                ] ifFalse:[
+                    revSourceStream := mgr getSourceStreamFor:mclass revision:revision.
+                ].
+                revSourceStream isNil ifTrue:[
+                    Dialog information:'oops - failed to get source for revision: ',revision,'. Skipping.'
+                ] ifFalse:[
+                    classChangeSet := ChangeSet fromStream:revSourceStream.
+
+                    chg := classChangeSet
+                                detect:[:chg | chg isMethodChange
+                                               and:[chg selector = mselector
+                                               and:[chg className = className]]]
+                                ifNone:nil.
+
+                    chg isNil ifTrue:[
+                        "the method was created in the next version (previous one processed)"
+                    ] ifFalse:[
+                        changeSource := chg source.
+                    ].
+                    ((changeSource isNil and:[lastSource isNil]) 
+                    or:[ changeSource asString = lastSource asString ]) ifTrue:[
+                    ] ifFalse:[
+                        lastChange isNil ifTrue:[ 
+                            "/ mhm - was not in the previous version
+                        ] ifFalse:[
+                            nChg := lastChange asNamedMethodChange 
+                        ].
+                        lastRevision isNil ifTrue:[
+                            (stop = revisions size) ifTrue:[
+                                changeName := 'current (not in the repository)'.
+                            ] ifFalse:[
+                                "/ not showing all - dont really know
+                                changeName := 'current'.
+                            ].
+                        ] ifFalse:[
+                            changeName := lastRevision,' [',lastDate,']'.
+                            first ifTrue:[
+                                changeName := changeName,' (= current)'.
+                            ]
+                        ].
+                        nChg notNil ifTrue:[
+                            nChg changeName:changeName.
+                            previousMethods add:nChg.
+                        ].
+                        lastSource := changeSource.
+                        lastChange := chg.
+
+                        first := false.
+                    ].
+                    lastRevision := revision.
+                    lastDate := date.
+                ]
+            ] ensure:[
+                revSourceStream notNil ifTrue:[revSourceStream close].
+            ].
+        ].
 ].
 "/ Transcript showCR:('it took %1 seconds' bindWith:(t /1000)printString).
 
-	self activityNotification:nil.
-	browser := (UserPreferences current changeSetBrowserClass) openOn:previousMethods.
-	browser window label:('Revisions of ' , mclass name , ' ' , mselector).
-	browser readOnly:true.
+        self activityNotification:nil.
+        browser := (UserPreferences current changeSetBrowserClass) openOn:previousMethods.
+        browser window label:('Revisions of ' , mclass name , ' ' , mselector).
+        browser readOnly:true.
     ].
 
     "Modified: / 01-07-2011 / 16:34:29 / cg"
@@ -45509,61 +45896,61 @@
 
 spawnMethodBrowserForSearch:searchBlock sortBy:sortByWhat in:openHow label:lbl
     "browse selected method(s);
-	openHow is: #newBrowser - open a new browser showing the method(s)
-	openHow is: #newBuffer  - add a new buffer showing the method(s)
-
-	and sortByWhat is:
-	    #selector
-	or  #class
+        openHow is: #newBrowser - open a new browser showing the method(s)
+        openHow is: #newBuffer  - add a new buffer showing the method(s)
+
+        and sortByWhat is:
+            #selector
+        or  #class
     "
 
     |spec theMethodList|
 
     self withWaitCursorDo:[
-	theMethodList := searchBlock value.
+        theMethodList := searchBlock value.
     ].
     theMethodList isEmptyOrNil ifTrue:[
-	self information:(lbl , ' - none found').
-	^ self.
+        self information:(lbl , ' - none found').
+        ^ self.
     ].
 
     spec := #methodListBrowserSpec.
 
     ^ self
-	newBrowserOrBufferDependingOn:openHow
-	label:lbl
-	forSpec:spec
-	setupWith:[:brwsr |
-	    |generator|
-
-	    generator := Iterator on:[:whatToDo |
-					    brwsr window withWaitCursorDo:[
-						theMethodList isNil ifTrue:[
-						    theMethodList := searchBlock value.
-						].
-						theMethodList notNil ifTrue:[
-						    theMethodList do:[:aMethod |
-							whatToDo
-							    value:aMethod mclass
-							    value:aMethod category
-							    value:aMethod selector
-							    value:aMethod.
-						    ].
-						].
-						"enforce display of class in methodList"
-						whatToDo
-						    value:nil
-						    value:nil
-						    value:nil
-						    value:nil.
-					    ].
-					    theMethodList := nil.
-				      ].
-
-	    sortByWhat notNil ifTrue:[brwsr sortBy value:sortByWhat].
-	    "/ sortByWhat notNil ifTrue:[brwsr sortBy:sortByWhat].
-	    brwsr selectorListGenerator value:generator.
-	    "/ auto-select the first methods, if there is only one
+        newBrowserOrBufferDependingOn:openHow
+        label:lbl
+        forSpec:spec
+        setupWith:[:brwsr |
+            |generator|
+
+            generator := Iterator on:[:whatToDo |
+                                            brwsr window withWaitCursorDo:[
+                                                theMethodList isNil ifTrue:[
+                                                    theMethodList := searchBlock value.
+                                                ].
+                                                theMethodList notNil ifTrue:[
+                                                    theMethodList do:[:aMethod |
+                                                        whatToDo
+                                                            value:aMethod mclass
+                                                            value:aMethod category
+                                                            value:aMethod selector
+                                                            value:aMethod.
+                                                    ].
+                                                ].
+                                                "enforce display of class in methodList"
+                                                whatToDo
+                                                    value:nil
+                                                    value:nil
+                                                    value:nil
+                                                    value:nil.
+                                            ].
+                                            theMethodList := nil.
+                                      ].
+
+            sortByWhat notNil ifTrue:[brwsr sortBy value:sortByWhat].
+            "/ sortByWhat notNil ifTrue:[brwsr sortBy:sortByWhat].
+            brwsr selectorListGenerator value:generator.
+            "/ auto-select the first methods, if there is only one
 
 "/            theMethodList isNil ifTrue:[
 "/                "/ newBuffer will evaluate the generator later;
@@ -45573,11 +45960,11 @@
 "/                ]
 "/            ].
 
-	    theMethodList size == 1 ifTrue:[
-		brwsr selectMethods:theMethodList.
-		brwsr methodsSelectionChanged.
-	    ].
-	]
+            theMethodList size == 1 ifTrue:[
+                brwsr selectMethods:theMethodList.
+                brwsr methodsSelectionChanged.
+            ].
+        ]
 
     "Modified: / 1.3.2000 / 21:03:34 / cg"
 !
@@ -46009,6 +46396,7 @@
     "Modified: / 28-02-2012 / 16:36:22 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-subversion'!
 
 commonMenuSubversionOpenSettings
@@ -46018,6 +46406,7 @@
     "Modified: / 26-03-2010 / 20:01:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-subversion-class'!
 
 classMenuSubversionShowRevisionLog
@@ -46038,6 +46427,7 @@
     "Modified: / 28-02-2012 / 16:48:38 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-variables'!
 
 browseVarRefsOrModsWithTitle:browserTitle boxTitle:boxTitle variables:varType access:accessType all:browseAll
@@ -47408,6 +47798,7 @@
     aBlock value:selectedVariable value:isClassVar
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu-actions-other'!
 
 goBack
@@ -47434,6 +47825,7 @@
     "Modified: / 22-02-2008 / 17:18:56 / janfrog"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menus-dynamic'!
 
 boockmarksMenu
@@ -48531,7 +48923,19 @@
 
 selectorMenuNewSlice
 
-    |m allLanguages|
+    |m selectedClasses currentLanguage allLanguages|
+
+    (selectedClasses := self selectedClasses value) notEmptyOrNil ifTrue:[
+	selectedClasses size == 1 ifTrue:[
+	    "/Single class selected
+	    currentLanguage := selectedClasses anElement programmingLanguage.
+	] ifFalse:[
+	    "/Multiple class selected, be strict here
+	    currentLanguage := nil."/unknown
+	].
+    ] ifFalse:[
+	currentLanguage := nil."/unknown
+    ].
 
     allLanguages := OrderedCollection new.
     ProgrammingLanguage allDo:[:eachLanguage |
@@ -48547,15 +48951,18 @@
 		value:[self selectorMenuNewMethod: SmalltalkLanguage instance]).
 
     allLanguages do:[:eachLanguage |
-	    m addItem:(MenuItem
+	eachLanguage compilerClass notNil ifTrue:[
+	    m addItem:((MenuItem
 			label:(eachLanguage name) , ' Method'
 			value:[self selectorMenuNewMethod: eachLanguage])
-
+			enabled: (eachLanguage supportsExtensionMethods or:[eachLanguage = currentLanguage]))
+	]
     ].
     ^ m
 
     "Created: / 30-12-2009 / 19:43:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 17-02-2012 / 22:15:06 / cg"
+    "Modified: / 10-05-2012 / 20:32:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 sentMessagesMenu
@@ -48643,6 +49050,7 @@
     "Modified: / 09-09-2012 / 13:24:04 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menus-dynamic-SCM'!
 
 categoryMenuSCMFor: sourceCodeManagerClassName
@@ -49078,6 +49486,7 @@
     "Modified: / 19-10-2011 / 16:48:31 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menus-dynamic-popup'!
 
 categoryPopUpMenu
@@ -49123,6 +49532,7 @@
     "Created: / 12-10-2011 / 20:28:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menus-dynamic-subversion'!
 
 commonSubversionBranchMenu
@@ -49155,6 +49565,7 @@
     "Modified (format): / 01-12-2011 / 21:06:52 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'navigation'!
 
 askForClassNameMatching:matchStringArg
@@ -49746,101 +50157,113 @@
     |className class implementors answer classesMatchingCaseless|
 
     aMatchString isEmptyOrNil ifTrue:[
-	^ self.
+        ^ self.
     ].
 
     aMatchString knownAsSymbol ifTrue:[
-	class := Smalltalk classNamed:aMatchString.
-	class notNil ifTrue:[
-	    self switchToClass:class.
-	    ^ self.
-	].
-	classesMatchingCaseless := Smalltalk keys select:[:nm | nm sameAs:aMatchString].
+        class := Smalltalk classNamed:aMatchString.
+        class notNil ifTrue:[
+            self switchToClass:class.
+            ^ self.
+        ].
+        classesMatchingCaseless := Smalltalk keys select:[:nm | nm sameAs:aMatchString].
 "/        matchStringLowercase := aMatchString asLowercase.
 "/        classesWithPrefixCaseless := Smalltalk keys select:[:nm | nm asLowercase startsWith:aMatchString].
 
 "/        impl := Smalltalk allImplementorsOf:aMatchString asSymbol.
 "/        impl notEmptyOrNil ifTrue:[
 "/        ].
-	(aMatchString first isLetter not
-	 or:[ aMatchString first isLowercase]) ifTrue:[
-	    implementors := SystemBrowser findImplementorsMatching:aMatchString in:(Smalltalk allClasses) ignoreCase:true.
-	    implementors size > 0 ifTrue:[
-		(classesMatchingCaseless isEmpty and:[implementors size == 1]) ifTrue:[
-		    answer := Dialog
-			confirm:(resources
-					stringWithCRs:'No class named "%1".\But "%2" implements it. Go there ?'
-					with:aMatchString allBold
-					with:implementors first mclass name).
-		    answer ifTrue:[
-			self switchToClass:implementors first mclass selector:implementors first selector.
-		    ].
-		    ^ self.
-		].
-		implementors := implementors asOrderedCollection sort:[:a :b | a mclass name < b mclass name].
-		classesMatchingCaseless isEmpty ifTrue:[
-		    answer := Dialog
-			choose:(resources
-					stringWithCRs:'No class named "%1.\But there are %2 implementors of it.\\Goto one of them ?'
-					with:aMatchString allBold
-					with:implementors size)
-			fromList:(implementors collect:[:m | m mclass name])
-			values:implementors
-			buttons:#('No, Search for a Class' 'Show all Implementors') values:#(searchClass browseAllImplementors)
-			lines:10 cancel:nil
-			postBuildBlock:[:box | box minExtent:300@250].
-		] ifFalse:[
-		    answer := Dialog
-			choose:(resources
-					stringWithCRs:'No class named "%1".\But there are %2 implementors of it and %3 '
-						      , (classesMatchingCaseless size == 1 ifTrue:['class'] ifFalse:['classes'])
-						      ,' with a similar name.\\Goto one of them ?'
-					with:aMatchString allBold
-					with:implementors size
-					with:classesMatchingCaseless size)
-			fromList:({'Implementors:' colorizeAllWith:Color grey}
-				  ,(implementors collect:[:m | m mclass name])
-				  ,{'Classes:' colorizeAllWith:Color grey}
-				  ,classesMatchingCaseless)
-			values:(#(nil),implementors,#(nil),classesMatchingCaseless)
-			buttons:#('No, Search for a Class' 'Show all Implementors') values:#(searchClass browseAllImplementors)
-			lines:10 cancel:nil
-			postBuildBlock:[:box | box minExtent:300@250].
-		].
-
-		answer isNil ifTrue:[^ self].
-		answer == #browseAllImplementors ifTrue:[
-		    self
-			spawnMethodBrowserForSearch:[
-				SystemBrowser
-				    findImplementorsOf:aMatchString
-				    in:Smalltalk allClasses
-				    ignoreCase:false.
-			    ]
-			sortBy:#class
-			in:#newBuffer
-			label:(resources string:'Implementors of %1' string with:aMatchString).
-		    ^ self
-		].
-		answer ~~ #searchClass ifTrue:[
-		    answer isSymbol ifTrue:[
-			self switchToClass:(Smalltalk classNamed:answer).
-		    ] ifFalse:[
-			self switchToClass:(answer mclass) selector:(answer selector).
-		    ].
-		    ^ self.
-		].
-	    ].
-	].
+        (aMatchString first isLetter not
+         or:[ aMatchString first isLowercase]) ifTrue:[
+            implementors := SystemBrowser findImplementorsMatching:aMatchString in:(Smalltalk allClasses) ignoreCase:true.
+            implementors size > 0 ifTrue:[
+                (classesMatchingCaseless isEmpty and:[implementors size == 1]) ifTrue:[
+                    answer := Dialog
+                        confirm:(resources
+                                        stringWithCRs:'No class named "%1".\But "%2" implements it. Go there ?'
+                                        with:aMatchString allBold
+                                        with:implementors first mclass name).
+                    answer ifTrue:[
+                        self switchToClass:implementors first mclass selector:implementors first selector.
+                    ].
+                    ^ self.
+                ].
+                implementors := implementors asOrderedCollection sort:[:a :b | a mclass name < b mclass name].
+                classesMatchingCaseless isEmpty ifTrue:[
+                    answer := Dialog
+                        choose:(resources
+                                        stringWithCRs:'No class named "%1.\But there are %2 implementors of it.\\Goto one of them ?'
+                                        with:aMatchString allBold
+                                        with:implementors size)
+                        fromList:(implementors collect:[:m | m mclass name])
+                        values:implementors
+                        buttons:#('No, Search for a Class' 'Show all Implementors') values:#(searchClass browseAllImplementors)
+                        lines:10 cancel:nil
+                        postBuildBlock:[:box | box minExtent:300@250].
+                ] ifFalse:[
+                    answer := Dialog
+                        choose:(resources
+                                        stringWithCRs:'No class named "%1".\But there are %2 implementors of it and %3 '
+                                                      , (classesMatchingCaseless size == 1 ifTrue:['class'] ifFalse:['classes'])
+                                                      ,' with a similar name.\\Goto one of them ?'
+                                        with:aMatchString allBold
+                                        with:implementors size
+                                        with:classesMatchingCaseless size)
+                        fromList:({'Implementors:' colorizeAllWith:Color grey}
+                                  ,(implementors collect:[:m | m mclass name])
+                                  ,{'Classes:' colorizeAllWith:Color grey}
+                                  ,classesMatchingCaseless)
+                        values:(#(nil),implementors,#(nil),classesMatchingCaseless)
+                        buttons:#('No, Search for a Class' 'Show all Implementors') values:#(searchClass browseAllImplementors)
+                        lines:10 cancel:nil
+                        postBuildBlock:[:box | box minExtent:300@250].
+                ].
+
+                answer isNil ifTrue:[^ self].
+                answer == #browseAllImplementors ifTrue:[
+                    self
+                        spawnMethodBrowserForSearch:[
+                                SystemBrowser
+                                    findImplementorsOf:aMatchString
+                                    in:Smalltalk allClasses
+                                    ignoreCase:false.
+                            ]
+                        sortBy:#class
+                        in:#newBuffer
+                        label:(resources string:'Implementors of %1' string with:aMatchString).
+                    ^ self
+                ].
+                answer ~~ #searchClass ifTrue:[
+                    answer isSymbol ifTrue:[
+                        self switchToClass:(Smalltalk classNamed:answer).
+                    ] ifFalse:[
+                        self switchToClass:(answer mclass) selector:(answer selector).
+                    ].
+                    ^ self.
+                ].
+            ].
+        ].
+    ].
+
+    "Look for Java class..."
+    (JAVA notNil and:[aMatchString includes: $.]) ifTrue:[
+        | javaClass |
+
+        javaClass := Java at: aMatchString.
+        javaClass notNil ifTrue:[
+            self switchToClass: javaClass.
+            ^self
+        ].
     ].
 
     className := self askForClassNameMatching:aMatchString.
     className notNil ifTrue:[
-	self switchToClassNamed:className.
+        self switchToClassNamed:className.
     ]
 
     "Modified: / 04-07-2006 / 18:48:25 / fm"
     "Modified (comment): / 07-03-2012 / 12:05:07 / cg"
+    "Modified: / 20-04-2012 / 19:44:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 switchToClassNamed:aString
@@ -49960,6 +50383,7 @@
     "Modified: / 5.2.2000 / 23:07:10 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'private-buffers'!
 
 removeBuffer:nr
@@ -50011,6 +50435,7 @@
     self removeBuffer:(selectedBuffer value)
 ! !
 
+
 !NewSystemBrowser methodsFor:'private-checks'!
 
 anySpecialEditorModified
@@ -50148,6 +50573,7 @@
     ^ true
 ! !
 
+
 !NewSystemBrowser methodsFor:'private-code update'!
 
 autoSearch:aString
@@ -50164,25 +50590,25 @@
     |searchAction codeView|
 
     codePatterns notEmptyOrNil ifTrue:[
-	codeView := self codeView.
-
-	searchAction :=
-	    [:direction :startLine :startCol :foundBlock :notFoundBlock|
-		self
-		    searchForCodePatterns:codePatterns
-		    direction:direction
-		    startLine:(codeView cursorLine ? startLine) startCol:(codeView cursorCol ? startCol)
-		    ifFound:[:charPos1 :charPos2 |
-			    codeView
-				cursorToCharacterPosition:charPos1;
-				selectFromCharacterPosition:charPos1 to:charPos2
-			]
-		    ifNotFound:notFoundBlock
-	    ].
-
-	navigationState autoSearchAction:searchAction.
-	codeView clearSearchAction. "/ searchAction
-	codeView setSearchPattern:nil.
+        codeView := self codeView.
+
+        searchAction :=
+            [:direction :startLine :startCol :foundBlock :notFoundBlock|
+                self
+                    searchForCodePatterns:codePatterns 
+                    direction:direction
+                    startLine:(codeView cursorLine ? startLine) startCol:(codeView cursorCol ? startCol)
+                    ifFound:[:charPos1 :charPos2 |
+                            codeView
+                                cursorToCharacterPosition:charPos1;
+                                selectFromCharacterPosition:charPos1 to:charPos2
+                        ]
+                    ifNotFound:notFoundBlock
+            ].
+
+        navigationState autoSearchAction:searchAction.
+        codeView clearSearchAction. "/ searchAction
+        codeView setSearchPattern:nil.
     ]
 
     "Modified: / 11-05-2010 / 14:13:34 / cg"
@@ -50253,6 +50679,13 @@
 	aClass fileOutDefinitionOn:s
     ] ifFalse:[
 	aClass theNonMetaclass isJavaClass ifTrue:[
+	    | src |
+	    src := aClass theNonMetaclass source.
+	    src notNil ifTrue:[ ^ src ].
+	    s nextPutLine: '// *** WARNING ***'.
+	    s nextPutLine: '// Following code has been decompiled from loaded class'.
+	    s nextPutLine: '// *** WARNING ***'.
+	    s cr.
 	    aClass fileOutDefinitionOn:s
 	] ifFalse:[
 	    aClass isMeta ifTrue:[
@@ -50275,6 +50708,7 @@
     ^ s contents withTabsExpanded.
 
     "Modified: / 10-11-2006 / 17:13:54 / cg"
+    "Modified: / 30-03-2012 / 20:08:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 commentOrDocumentationStringFromClass:aClass
@@ -50282,6 +50716,11 @@
 
     |m s isComment infoStream info|
 
+    "JV@2012-02-18: We're showing full sourcecode including
+     possible javadoc comments, so there is no need to display
+     documentation string at the end"
+    aClass isJavaClass ifTrue:[ ^ nil ].
+
     "/ (aClass language isSmalltalk) ifFalse:[^ nil].
 
     m := aClass theMetaclass compiledMethodAt:#documentation.
@@ -50344,33 +50783,35 @@
 	    ].
     info := info emphasizeAllWith:UserPreferences current commentEmphasisAndColor.
     ^ info
+
+    "Modified (format): / 18-02-2012 / 20:59:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 searchForCodePattern:codePattern direction:direction startLine:startLine startCol:startCol
-			    ifFound:foundBlock ifNotFound:notFoundBlock
-    ^ self
-	searchForCodePatterns:(Array with:codePattern)
-	direction:direction startLine:startLine startCol:startCol
-	ifFound:foundBlock ifNotFound:notFoundBlock
-!
-
-searchForCodePatterns:codePatterns direction:direction
-		startLine:startLine startCol:startCol
-		ifFound:foundBlock ifNotFound:notFoundBlock
+                            ifFound:foundBlock ifNotFound:notFoundBlock
+    ^ self 
+        searchForCodePatterns:(Array with:codePattern) 
+        direction:direction startLine:startLine startCol:startCol
+        ifFound:foundBlock ifNotFound:notFoundBlock
+!
+
+searchForCodePatterns:codePatterns direction:direction 
+                startLine:startLine startCol:startCol
+                ifFound:foundBlock ifNotFound:notFoundBlock
     |searcher|
 
     self parseTreeSearcherAvailable ifFalse:[ ^ self ].
 
     searcher := ParseTreeSearcher new.
     searcher
-	matchesAnyOf: codePatterns
-	do:[:aNode :answer | answer add:aNode. answer ].
-
-    ^ self
-	searchUsingSearcher:searcher
-	direction:direction
-	startLine:startLine startCol:startCol
-	ifFound:foundBlock ifNotFound:notFoundBlock.
+        matchesAnyOf: codePatterns
+        do:[:aNode :answer | answer add:aNode. answer ].
+
+    ^ self
+        searchUsingSearcher:searcher
+        direction:direction
+        startLine:startLine startCol:startCol
+        ifFound:foundBlock ifNotFound:notFoundBlock.
 !
 
 searchForSelector:aSelectorOrCollectionOfSelectors direction:direction
@@ -50557,11 +50998,15 @@
 
     definition := self classDefinitionStringFor:aClass.
 
-    self doSyntaxColoring value ~~ false ifTrue:[
-	highlighter := aClass syntaxHighlighterClass.
-	highlighter notNil ifTrue:[
-	    definition := highlighter formatClassDefinition:definition in:nil.
-	]
+    "JV@2012-07-05: Some class definitions could be quite big, such as Java classes.
+     Don't format the code here, do it in background instead..."
+    definition size < 2500 ifTrue:[
+	self doSyntaxColoring value ~~ false ifTrue:[
+	    highlighter := aClass syntaxHighlighterClass.
+	    highlighter notNil ifTrue:[
+		definition := highlighter formatClassDefinition:definition in:nil.
+	    ]
+	].
     ].
 
     self showCode:definition.
@@ -50576,8 +51021,9 @@
 	 add documentation as a comment, if there is any
 	"
 	info := self commentOrDocumentationStringFromClass:aClass.
+	text := definition.
 	info notNil ifTrue:[
-	    text := definition,(Character cr),info.
+	    text := text,(Character cr),info.
 	].
 	self codeHolder setValue:text.
 	self codeView notNil ifTrue:[
@@ -50587,6 +51033,7 @@
     self updatePackageInfoForClass:aClass.
 
     "Modified: / 27-07-2012 / 22:26:12 / cg"
+    "Modified: / 05-07-2012 / 21:41:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 showClassDocumentation
@@ -50815,16 +51262,8 @@
 !
 
 showMethodsCode:mthd scrollToTop:doScrollToTop
-    |code codeView doAutoFormat doSyntaxColoring|
-
-    "/Do no coloring here if CodeView2 is used,
-    "/since CodeView2 itself cares about the coloring!!
-    "/Not working correctly -> do the coloring until fixed in CodeView2
-    "(UserPreferences current useCodeView2In: #Browser)"false ifTrue:[
-	doSyntaxColoring := false
-    ] ifFalse:[
-	doSyntaxColoring := self doSyntaxColoring value == true.
-    ].
+    |code codeView doAutoFormat doSyntaxColoring doUpdateCode prevMthd |
+
     doAutoFormat := self doAutoFormat value and:[RBFormatter notNil].
     codeView := self codeView.
     self assert:codeView notNil.
@@ -50832,7 +51271,22 @@
     code := self sourceOfMethod:mthd.
     code isText ifTrue:[
 	doSyntaxColoring := false.
-    ].
+    ] ifFalse:[
+	"/Do no coloring here if CodeView2 is used,
+	"/since CodeView2 itself cares about the coloring!!
+	"/Not working correctly -> do the coloring until fixed in CodeView2
+	"JV: Enable is, otherwise I won't notice that it does not work
+	 correctly!!"
+	(UserPreferences current useCodeView2In: #Browser) ifTrue:[
+	    doSyntaxColoring := code size < 2000
+	] ifFalse:[
+	    doSyntaxColoring := self doSyntaxColoring value == true.
+	].
+    ].
+
+
+
+
 
     doAutoFormat ifTrue:[
 	Error catch:[
@@ -50840,29 +51294,44 @@
 	].
     ].
 
-    doSyntaxColoring ifTrue:[
-	"/ immediate coloring, if code is not too large;
-	"/ otherwise, do it in the background.
-	code size < 2000 " 10000 " ifTrue:[
-	    Error handle:[:ex |
-		Transcript showCR:'error in syntaxHighlighter: ',ex description.
-	    ] do:[
-		code := self syntaxHighlightedCodeFor:code method:mthd.
-	    ].
-	] ifFalse:[
-	    self enqueueDelayedStartSyntaxHighlightProcess.
-	].
-
-	[
-	    codeView modifiedChannel removeDependent:self.
-	    codeView modified:false.
+    "Hack for Java methods: 'As whole class source coce is shown,
+     there is no need to set codeview's content if previous method
+     belonged to the same class. Code is already shown, we need only
+     to scrool to it..."
+    "hmm...hmm...how implement it in a better, more generic way?"
+    doUpdateCode := true.
+    (mthd isJavaMethod and:[mthd isSynthetic not]) ifTrue:[
+	prevMthd := navigationState lastMethodShownInCodeView.
+	(prevMthd notNil and:[prevMthd isJavaMethod]) ifTrue:[
+	    doUpdateCode := prevMthd isSynthetic or:[mthd javaClass ~~ prevMthd javaClass]
+	].
+    ].
+    doUpdateCode ifTrue:[
+	doSyntaxColoring ifTrue:[
+	    "/ immediate coloring, if code is not too large;
+	    "/ otherwise, do it in the background.
+	    code size < 2000 " 10000 " ifTrue:[
+		Error handle:[:ex |
+		    Transcript showCR:'error in syntaxHighlighter: ',ex description.
+		] do:[
+		    code := self syntaxHighlightedCodeFor:code method:mthd.
+		].
+	    ] ifFalse:[
+		self enqueueDelayedStartSyntaxHighlightProcess.
+	    ].
+
+	    [
+		codeView modifiedChannel removeDependent:self.
+		codeView modified:false.
+		self showCode:code scrollToTop:doScrollToTop.
+	    ] ensure:[
+		codeView modifiedChannel addDependent:self.
+	    ]
+	] ifFalse:[
 	    self showCode:code scrollToTop:doScrollToTop.
-	] ensure:[
-	    codeView modifiedChannel addDependent:self.
-	]
-    ] ifFalse:[
-	self showCode:code scrollToTop:doScrollToTop.
-    ].
+	].
+    ].
+    navigationState lastMethodShownInCodeView: mthd.
 
     "/ scroll, for file-based classes (java, ruby, etc.)
     mthd sourceLineNumber ~~ 1 ifTrue:[
@@ -50875,8 +51344,8 @@
     self updatePackageInfoForMethod:mthd.
 
     "Created: / 01-03-2000 / 11:38:57 / cg"
-    "Modified (format): / 29-07-2011 / 11:45:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 27-07-2012 / 22:18:18 / cg"
+    "Modified: / 13-04-2012 / 18:21:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 showNothing
@@ -51153,6 +51622,7 @@
     "Modified: / 01-12-2011 / 14:26:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !NewSystemBrowser methodsFor:'private-dialogs'!
 
 askForDirectoryToFileOut:title default:defaultDirOrNil
@@ -52222,6 +52692,7 @@
 	    cancel: [nil]
 ! !
 
+
 !NewSystemBrowser methodsFor:'private-helpers'!
 
 anySelectedClass
@@ -52426,10 +52897,21 @@
 	    ^ cls
 	]
     ].
+
+    "JV@2012-07-30: Search for Java class as well"
+    (JAVA notNil and:[nm includes: $/]) ifTrue:[
+	"/Try primordial class loader...
+	cls := JavaVM classNamed: aClassName definedBy: nil.
+	cls notNil ifTrue:[ ^ cls ].
+	"/Try system class loader...
+	cls := JavaVM classNamed: aClassName definedBy: JavaVM systemClassLoader.
+	cls notNil ifTrue:[ ^ cls ].
+    ].
     ^ nil
 
-    "Created: / 13.2.2000 / 21:15:29 / cg"
-    "Modified: / 24.2.2000 / 13:49:44 / cg"
+    "Created: / 13-02-2000 / 21:15:29 / cg"
+    "Modified: / 24-02-2000 / 13:49:44 / cg"
+    "Modified: / 30-07-2012 / 16:45:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 findClassNamedInNameSpace:aClassName
@@ -53332,6 +53814,7 @@
       and:[ (view isSameOrComponentOf:appView) ]
 ! !
 
+
 !NewSystemBrowser methodsFor:'private-helpers-subApps'!
 
 categoryListApp
@@ -53380,6 +53863,7 @@
     ^ navigationState projectListApplication
 ! !
 
+
 !NewSystemBrowser methodsFor:'private-history'!
 
 lastSearchPatterns
@@ -53412,6 +53896,7 @@
     "Modified: / 14-02-2012 / 14:00:36 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'private-presentation'!
 
 asyncShowMethodInfo
@@ -53660,31 +54145,31 @@
 
     interval := self selectedInterval.
     interval isEmpty ifTrue:[
-	crsrPos := codeView characterPositionOfCursor.
-	codeView characterUnderCursor isSeparator ifTrue:[
-	    crsrPos := (crsrPos - 1) max:1
-	].
-	interval := crsrPos to:crsrPos.
+        crsrPos := codeView characterPositionOfCursor.
+        codeView characterUnderCursor isSeparator ifTrue:[
+            crsrPos := (crsrPos - 1) max:1
+        ].
+        interval := crsrPos to:crsrPos.
     ].
 
     navigationState codeAspect == #classDefinition ifFalse:[
-	node := self findNodeForInterval:interval.
+        node := self findNodeForInterval:interval.
     ].
     node notNil ifTrue: [
-	Error ignoreIn:[
-	    explanation := Explainer explainNode:node in:code forClass:cls short:short interval:interval
-	]
+        Error ignoreIn:[ 
+            explanation := Explainer explainNode:node in:code forClass:cls short:short interval:interval
+        ]
     ].
     explanation isNil ifTrue:[
-	codeView hasSelection ifTrue:[
-	    selection := codeView selection.
-	] ifFalse:[
-	    "/ selection := codeView characterBeforeCursor.
-	].
-	selection notNil ifTrue:[
-	    selection := selection asString string withoutSeparators.
-	    explanation := Explainer explain:selection in:code forClass:cls short:short
-	].
+        codeView hasSelection ifTrue:[
+            selection := codeView selection.
+        ] ifFalse:[
+            "/ selection := codeView characterBeforeCursor.
+        ].
+        selection notNil ifTrue:[
+            selection := selection asString string withoutSeparators.
+            explanation := Explainer explain:selection in:code forClass:cls short:short
+        ].
     ].
     ^ explanation
 
@@ -54055,6 +54540,7 @@
     ]
 ! !
 
+
 !NewSystemBrowser methodsFor:'private-searching'!
 
 searchCompletionBlock
@@ -54125,9 +54611,25 @@
     "Created: / 04-12-2011 / 22:11:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+searchCompletionEntryForClass: aClass showPrefix: showPrefix
+
+    ^ClassCompletionEntry new klass: aClass; showPrefix: showPrefix.
+
+    "Created: / 06-04-2012 / 12:55:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 searchCompletionNew: patternString
 
-    | env pattern matches |
+    "/sorry, no method search yet"
+    ^ self searchCompletionNewForClass: patternString
+
+    "Modified: / 04-08-2011 / 19:05:28 / cg"
+    "Created: / 04-12-2011 / 22:22:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+searchCompletionNewForClass: patternString
+
+    | env pattern matcher matches relax withPrefix |
 
     patternString isEmptyOrNil ifTrue:[^#('' #())].
 
@@ -54135,24 +54637,42 @@
     env = NavigatorModel nameListEntryForALL ifTrue:[env := #Smalltalk].
     env := Smalltalk at: env.
 
+    withPrefix := patternString includes: $:.
     pattern := StringPattern readFrom: patternString onError: [^#('' #())].
-    matches := OrderedCollection new.
-
-    env keysDo:[:nm|
-	| cls nmWihoutPrefix |
-
-	cls := env at: nm.
-	(cls notNil and:[cls isBehavior]) ifTrue:[
-	    (pattern match: (nmWihoutPrefix := cls nameWithoutPrefix)) ifTrue:[
-		matches add: nmWihoutPrefix
-	    ].
-	].
-    ].
-    ^ { matches first . matches }
-
-    "Modified: / 04-08-2011 / 19:05:28 / cg"
-    "Created: / 04-12-2011 / 22:22:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
+
+
+    withPrefix ifTrue:[
+	matcher := [:cls|pattern match: cls name]
+    ] ifFalse:[
+	matcher := [:cls|pattern match: cls nameWithoutPrefix]
+    ].
+
+    relax := 1.
+    [ matches isEmptyOrNil and:[relax <= 3] ] whileTrue:[
+	matches := OrderedCollection new.
+	env keysDo:[:nm|
+	    | cls |
+
+	    cls := env at: nm.
+	    (cls notNil and:[cls isBehavior and:[(matches includesIdentical: cls)not]]) ifTrue:[
+		(matcher value: cls) ifTrue:[
+		    matches add: cls
+		].
+	    ].
+	].
+	relax := relax + 1.
+    ].
+
+    matches isEmpty ifTrue:[
+	^ #(nil #())
+    ] ifFalse:[
+	matches := matches collect:[:cls|self searchCompletionEntryForClass: cls showPrefix: withPrefix].
+	^ { matches first . matches }
+    ]
+
+    "Created: / 06-04-2012 / 12:56:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 
 !NewSystemBrowser methodsFor:'private-semantic checks'!
 
@@ -54484,6 +55004,42 @@
     ^ nil.
 ! !
 
+
+!NewSystemBrowser methodsFor:'private-smalllint'!
+
+smalllintRulesAll
+    "Return all lint rules except those specific for portability or
+     dialect-specific rules"
+
+    ^RBCompositeLintRule allRules rejectAllDialectSpecific.
+
+    "Created: / 17-04-2010 / 10:07:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-08-2010 / 14:38:21 / Jan Vrany <enter your email here>"
+    "Modified: / 07-03-2012 / 20:26:29 / cg"
+    "Modified: / 06-09-2012 / 14:56:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+smalllintRulesGood
+    "Return all 'good' lint rules - good means that they are verified and
+     should be used"
+
+    ^RBCompositeLintRule allRules selectAllTaggedAs: #good
+
+    "Created: / 06-09-2012 / 14:54:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+smalllintRulesOrGood
+    "Returns a set of user-selected SmallLint rules or all 'good' rules,
+     if no user selection is done"
+
+   ^LastLintRules notNil
+	ifTrue:[ LastLintRules ]
+	ifFalse:[ self smalllintRulesGood ]
+
+    "Created: / 06-09-2012 / 14:49:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
 !NewSystemBrowser methodsFor:'private-syntax coloring'!
 
 startSyntaxHighlightProcess
@@ -54776,6 +55332,7 @@
     "Modified: / 08-08-2011 / 15:09:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !NewSystemBrowser methodsFor:'setup'!
 
 browserCanvas
@@ -55083,6 +55640,7 @@
     self normalLabel.
 ! !
 
+
 !NewSystemBrowser methodsFor:'special editors'!
 
 specialEditorCanvasForMethod:aMethod
@@ -55329,6 +55887,7 @@
     "Modified: / 28-02-2012 / 17:02:07 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'startup & release'!
 
 closeRequest
@@ -55392,6 +55951,7 @@
     "Modified: / 20-11-2006 / 12:16:37 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'string search tool'!
 
 hideSearchBar
@@ -55470,6 +56030,7 @@
     ].
 ! !
 
+
 !NewSystemBrowser methodsFor:'user actions'!
 
 backToLastClass
@@ -55915,7 +56476,7 @@
 	cnfManagerName := self class resources at: 'Not configured'.
     ].
     srcManager notNil ifTrue:[
-	srcManagerName := cnfManager managerTypeName
+	srcManagerName := srcManager managerTypeName
     ] ifFalse:[
 	srcManagerName := self class resources at: 'Unknown'.
     ].
@@ -56268,6 +56829,7 @@
     "Modified: / 28-02-2012 / 16:51:54 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'user actions-accepting'!
 
 acceptMethod:codeArg inClass:cls language: languageOrNil check:doCheck
@@ -56938,12 +57500,35 @@
     ^ false
 !
 
+doAcceptGroovyClassDefinition:theCode
+    | newClass |
+
+    newClass := GroovyCompiler compile: theCode string.
+    newClass isNil ifTrue:[ ^ self ].
+
+    newClass isBehavior ifTrue:[
+	self switchToClass:newClass.
+    ].
+    self codeAspect: #classDefinition
+
+    "Created: / 18-02-2012 / 18:54:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 doAcceptJavaClassDefinition:theCode
-    "tell the codeView what to do on accept.
+    "Called upon accepting Java Class definition
      Return false, if NOT accepted (i.e. compilation canceled)"
 
+    "Hack for now - when a Java class is changed and accepted, it is recompiled
+     using GroovyCompiler (which effectively turn it into Groovy class)"
+
+    JavaLanguage instance compilerClass == GroovyCompiler ifTrue:[
+	^self doAcceptGroovyClassDefinition:theCode
+    ].
+
     self warn:'Accept of Java classes is not yet implemented'.
     ^ false
+
+    "Modified: / 05-04-2012 / 11:26:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 doAcceptMethod:theCode language: languageOrNil
@@ -57164,12 +57749,18 @@
 
     currentClass := self theSingleSelectedClass.
 
-    navigationState isFullClassSourceBrowser ifTrue:[
-	action := [:theCode | self doAcceptFullJavaClassDefinition:theCode].
-    ] ifFalse:[
-	action := [:theCode | self doAcceptJavaClassDefinition:theCode].
+    currentClass isGroovyClass ifTrue:[
+	action := [:theCode | self doAcceptGroovyClassDefinition:theCode asString]
+    ] ifFalse:[
+	navigationState isFullClassSourceBrowser ifTrue:[
+	    action := [:theCode | self doAcceptFullJavaClassDefinition:theCode asString].
+	] ifFalse:[
+	    action := [:theCode | self doAcceptJavaClassDefinition:theCode asString].
+	].
     ].
     self setAcceptAction:action.
+
+    "Modified: / 18-02-2012 / 20:53:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 setAcceptActionForJavaClassComment
@@ -57341,6 +57932,7 @@
     self setAcceptAction:[:code | self codeView flash].
 ! !
 
+
 !NewSystemBrowser methodsFor:'user actions-class'!
 
 classLoad
@@ -57488,6 +58080,7 @@
     "Modified: / 12-09-2006 / 13:48:12 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'user actions-comparing'!
 
 doCompareIn:aNavigationState
@@ -57558,6 +58151,7 @@
     "Modified: / 27-07-2012 / 22:25:17 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'user actions-events'!
 
 keyInCategoryListView:key rawKey:rawKey
@@ -57928,6 +58522,7 @@
     "Modified: / 17-08-2011 / 13:29:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !NewSystemBrowser methodsFor:'user actions-helpers'!
 
 hideMessagePane
@@ -58094,6 +58689,7 @@
     "Modified: / 15-05-2012 / 10:46:06 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'user actions-profiler'!
 
 spawnProfilerStatistics:statistics in: where
@@ -58110,6 +58706,104 @@
     "Modified (format): / 29-11-2011 / 14:49:08 / cg"
 ! !
 
+
+!NewSystemBrowser::ClassCompletionEntry methodsFor:'accessing'!
+
+klass
+    ^ klass
+!
+
+klass:something
+    klass := something.
+!
+
+showPrefix
+    ^ showPrefix
+!
+
+showPrefix:something
+    showPrefix := something.
+! !
+
+
+!NewSystemBrowser::ClassCompletionEntry methodsFor:'converting'!
+
+asString
+    ^klass isJavaClass ifTrue:[
+	klass javaName
+    ] ifFalse:[
+	klass name
+    ].
+
+    "Created: / 04-04-2012 / 13:00:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
+!NewSystemBrowser::ClassCompletionEntry methodsFor:'displaying'!
+
+displayOn:aGC x:x y:y opaque:opaque
+
+    | name namespace lw cnw fg |
+
+    showPrefix ifTrue:[
+	name := klass name.
+	namespace := nil
+    ] ifFalse:[
+	name := klass nameWithoutPrefix.
+	klass isJavaClass ifFalse:[
+	    namespace := klass  nameSpace name.
+	] ifTrue:[
+	    namespace := klass javaPackage.
+	]
+    ].
+
+    name displayOn:aGC x:x y:y opaque:opaque.
+
+    (namespace notNil and:[namespace ~~ #Smalltalk]) ifTrue:[
+	namespace := 'in ', namespace.
+	lw :=  x + 16 + (name widthOn: aGC).
+	cnw := aGC widthOfString: namespace.
+
+	(aGC width > (lw + cnw + 5)) ifTrue:[
+	    fg := aGC paint.
+	    aGC paint: (Color gray: 40).
+	    namespace displayOn:aGC x: aGC width - cnw - 5 y:y opaque:opaque.
+	    aGC paint: fg.
+	]
+    ]
+
+    "Created: / 04-04-2012 / 13:03:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+displayString
+
+    | name |
+
+    showPrefix ifTrue:[
+        name := klass name.
+    ] ifFalse:[
+        name := klass nameWithoutPrefix.
+    ].
+    ^name
+
+    "Created: / 20-04-2012 / 18:19:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
+!NewSystemBrowser::ClassCompletionEntry methodsFor:'printing & storing'!
+
+printOn:aStream
+    "append a printed representation if the receiver to the argument, aStream"
+
+
+    aStream nextPut:${.
+    klass printOn:aStream.
+    aStream nextPut:$}.
+
+    "Modified: / 06-04-2012 / 13:30:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
 !NewSystemBrowser class methodsFor:'documentation'!
 
 version
@@ -58120,6 +58814,11 @@
     ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1832 2013-01-26 21:08:14 cg Exp $'
 !
 
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+!
+
 version_SVN
     ^ '§Id: Tools__NewSystemBrowser.st 7817 2011-08-18 09:38:28Z vranyj1 §'
 ! !
--- a/Tools__NewSystemBrowserCodeView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__NewSystemBrowserCodeView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -37,6 +37,7 @@
 "
 ! !
 
+
 !NewSystemBrowserCodeView class methodsFor:'initialization'!
 
 initialize
@@ -58,6 +59,7 @@
     "Modified (comment): / 01-07-2011 / 16:21:38 / cg"
 ! !
 
+
 !NewSystemBrowserCodeView class methodsFor:'menu specs'!
 
 editMenuSpec
@@ -192,6 +194,7 @@
     "Modified: / 18-10-2008 / 18:50:01 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !NewSystemBrowserCodeView methodsFor:'accessing'!
 
 browser
@@ -289,6 +292,7 @@
     "Modified: / 04-08-2011 / 19:05:43 / cg"
 ! !
 
+
 !NewSystemBrowserCodeView methodsFor:'accessing-contents'!
 
 list: anObject
@@ -299,6 +303,7 @@
     "Created: / 25-12-2007 / 10:05:17 / janfrog"
 ! !
 
+
 !NewSystemBrowserCodeView methodsFor:'change & update'!
 
 updateParseTree
@@ -310,6 +315,7 @@
     "Modified: / 25-12-2007 / 21:29:28 / janfrog"
 ! !
 
+
 !NewSystemBrowserCodeView methodsFor:'event handling'!
 
 buttonMotion:button x:x y:y 
@@ -403,6 +409,7 @@
     "Modified: / 19-02-2008 / 09:16:11 / janfrog"
 ! !
 
+
 !NewSystemBrowserCodeView methodsFor:'menu'!
 
 browseClassesMenu: classes 
@@ -546,6 +553,7 @@
     "Modified: / 09-09-2012 / 13:24:19 / cg"
 ! !
 
+
 !NewSystemBrowserCodeView methodsFor:'menu - actions'!
 
 accept
@@ -660,6 +668,7 @@
     "Modified: / 19-02-2008 / 09:59:11 / janfrog"
 ! !
 
+
 !NewSystemBrowserCodeView methodsFor:'menu - double dispatch'!
 
 blueButtonMenuForMessageNode:messageNode 
@@ -741,6 +750,7 @@
     "Modified: / 18-02-2008 / 21:05:56 / janfrog"
 ! !
 
+
 !NewSystemBrowserCodeView methodsFor:'private'!
 
 implementorsOf: selector
@@ -764,6 +774,7 @@
     "Created: / 26-12-2007 / 11:37:22 / janfrog"
 ! !
 
+
 !NewSystemBrowserCodeView methodsFor:'private - highlighting'!
 
 highlightClear
@@ -902,6 +913,7 @@
     "Modified: / 01-09-2009 / 22:29:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !NewSystemBrowserCodeView methodsFor:'private - highlighting - nodes'!
 
 highlightLiteralNode: node
@@ -929,6 +941,7 @@
     "Modified: / 18-02-2008 / 20:51:51 / janfrog"
 ! !
 
+
 !NewSystemBrowserCodeView methodsFor:'private - parsing'!
 
 parseTree
@@ -1005,6 +1018,7 @@
     "Created: / 25-12-2007 / 21:16:03 / janfrog"
 ! !
 
+
 !NewSystemBrowserCodeView methodsFor:'private - testing'!
 
 isInstanceVariableNode: node
@@ -1026,6 +1040,7 @@
     "Created: / 21-02-2008 / 09:32:33 / janfrog"
 ! !
 
+
 !NewSystemBrowserCodeView class methodsFor:'documentation'!
 
 version_CVS
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__OrganizerCanvas.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,5047 @@
+"
+ COPYRIGHT (c) 2000 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 }"
+
+Tools::NavigatorModel subclass:#OrganizerCanvas
+	instanceVariableNames:'projectListSlaveMode namespaceListSlaveMode categoryListSlaveMode
+		classInheritanceListSlaveMode classListSlaveMode
+		classHierarchyListSlaveMode organizerMode metaToggle
+		notMetaToggle meta classList classCategoryDoubleClickChannel
+		classDoubleClickChannel classGeneratorHolder
+		classGeneratorHolderFromClassCategory
+		classGeneratorHolderFromClassHierarchy
+		classGeneratorHolderFromProject classGeneratorHolderFromNamespace
+		classCategoryListMenuHolder categoryListShown
+		classCategoryListUpdateTrigger classListUpdateTrigger
+		classListMenuHolder classHierarchyListMenuHolder
+		projectListMenuHolder variablesMenuHolder filterClassVars
+		variableFilter packageFilter nameSpaceFilter hidePrivateClasses
+		hideUnloadedClasses showClassPackages immediateUpdate
+		metaToggleLabelHolder selectedCategories selectedClasses
+		selectedNamespaces selectedProjects selectionChangeCondition
+		nameSpaceFilterSelection markApplicationsHolder
+		sortVariablesByName showAllClassesInNameSpaceView
+		showMethodInheritance showMethodComplexity showMethodTypeIcon
+		methodVisibilityHolder showCoverageInformation
+		sortByNameAndInheritance'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+!OrganizerCanvas class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2000 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.
+"
+!
+
+documentation
+"
+    I implement the top part containing the list views in the new system browser
+"
+! !
+
+!OrganizerCanvas class methodsFor:'constants'!
+
+organizerModeCategory
+    ^ #category
+!
+
+organizerModeClassHierarchy
+    ^ #classHierarchy
+!
+
+organizerModeClassInheritance
+    ^ #classInheritance
+!
+
+organizerModeHierarchy
+    ^ #hierarchy
+!
+
+organizerModeNamespace
+    ^ #namespace
+!
+
+organizerModePackageDiagram
+    ^ #packageDiagram
+!
+
+organizerModeProject
+    ^ #project
+! !
+
+!OrganizerCanvas class methodsFor:'interface specs'!
+
+embeddedNameSpaceListSpec
+    "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:OrganizerCanvas andSelector:#embeddedNameSpaceListSpec
+     OrganizerCanvas new openInterface:#embeddedNameSpaceListSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+	#name: #embeddedNameSpaceListSpec
+	#window: 
+       #(#WindowSpec
+	  #label: 'Organizer'
+	  #name: 'Organizer'
+	  #min: #(#Point 0 0)
+	  #max: #(#Point 1024 721)
+	  #bounds: #(#Rectangle 218 175 518 475)
+	)
+	#component: 
+       #(#SpecCollection
+	  #collection: #(
+	   #(#SubCanvasSpec
+	      #name: 'NamespaceList2'
+	      #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      #level: 1
+	      #majorKey: #'NamespaceList'
+	      #subAspectHolders: 
+	     #(#Array
+                
+	       #(#SubChannelInfoSpec
+		  #subAspect: #doubleClickChannel
+		  #aspect: #nameSpaceFilterDoubleClickChannel
+		) 
+	       #(#SubChannelInfoSpec
+		  #subAspect: #forceGeneratorTrigger
+		  #aspect: #forceNamespaceGeneratorTrigger
+		)
+                
+	       #(#SubChannelInfoSpec
+		  #subAspect: #hideUnloadedClasses
+		  #aspect: #hideUnloadedClasses
+		) 
+	       #(#SubChannelInfoSpec
+		  #subAspect: #immediateUpdate
+		  #aspect: #immediateUpdate
+		)
+                
+	       #(#SubChannelInfoSpec
+		  #subAspect: #menuHolder
+		  #aspect: #nameSpaceListMenuHolder
+		) 
+	       #(#SubChannelInfoSpec
+		  #subAspect: #organizerMode
+		  #aspect: #organizerMode
+		)
+                
+	       #(#SubChannelInfoSpec
+		  #subAspect: #outGeneratorHolder
+		  #aspect: #classGeneratorHolder
+		) 
+	       #(#SubChannelInfoSpec
+		  #subAspect: #selectedNamespaces
+		  #aspect: #nameSpaceFilterSelection
+		)
+                
+	       #(#SubChannelInfoSpec
+		  #subAspect: #selectionChangeCondition
+		  #aspect: #selectionChangeCondition
+		) 
+	       #(#SubChannelInfoSpec
+		  #subAspect: #slaveMode
+		  #aspect: #popUpNameSpaceListSlaveMode
+		)
+                
+	       #(#SubChannelInfoSpec
+		  #subAspect: #updateTrigger
+		  #aspect: #nameSpaceListUpdateTrigger
+		)
+	      )
+	      #createNewApplication: true
+	      #createNewBuilder: true
+	      #postBuildCallback: #nameSpaceListWidgetWasBuilt:
+	    )
+	   )
+         
+	)
+      )
+!
+
+windowSpec
+    ^ self windowSpecNonHierarchicalWithClassDiagram
+    "/ ^ self windowSpecNonHierarchical
+    "/ ^ self windowSpecHierarchical
+
+    "
+     self openInterface:#windowSpec
+     self openInterface:#windowSpecWithoutMetaToggles
+     self openInterface:#windowSpecNonHierarchicalWithClassDiagram
+    "
+
+    "Modified: / 03-09-2006 / 10:47:15 / cg"
+!
+
+windowSpecHierarchical
+    "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:OrganizerCanvas andSelector:#windowSpec
+     OrganizerCanvas new openInterface:#windowSpec
+     OrganizerCanvas open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'Organizer'
+          #name: 'Organizer'
+          #min: #(#Point 0 0)
+          #max: #(#Point 1024 721)
+          #bounds: #(#Rectangle 16 46 316 346)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'CategoryNameSpaceAndProjectPanel'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #visibilityChannel: #categoryNameSpaceAndProjectPanelShown
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#ViewSpec
+                    #name: 'LeftBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#ViewSpec
+                          #name: 'ClassCategoryAndNamespaceFilterBox'
+                          #layout: #(#LayoutFrame 0 0 0 0 0 1 0 1)
+                          #visibilityChannel: #categoryListShown
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassCategoryList'
+                                #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+"/                                #majorKey: #'ClassCategoryList'
+                                #majorKey: #'HierarchicalClassCategoryList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #aspect: #classCategoryDoubleClickChannel
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #forceGeneratorTrigger
+                                    #aspect: #forceClassCategoryGeneratorTrigger
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classCategoryListMenuHolder
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #classGeneratorHolder
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedCategories
+                                    #aspect: #selectedCategories
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeCondition
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #slaveMode
+                                    #aspect: #categoryListSlaveMode
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #updateTrigger
+                                    #aspect: #classCategoryListUpdateTrigger
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #nameSpaceFilter
+                                    #aspect: #nameSpaceFilterSelection
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#ExtendedComboBoxSpec
+                                #name: 'NameSpaceFilterComboBox'
+                                #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                                #tabable: true
+                                #model: #nameSpaceFilterSelectedNameSpace
+                                #menuWidgetHolder: #nameSpaceListWidgetHolder
+                                #miniScrollerHorizontal: true
+                                #menuSelector: #nameSpaceFilterPopUpMenu
+                              )
+                             )
+                           
+                          )
+                        )
+                       #(#SubCanvasSpec
+                          #name: 'NamespaceList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          #initiallyInvisible: true
+                          #visibilityChannel: #nameSpaceListShown
+                          #majorKey: #'NamespaceList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #doubleClickChannel
+                              #aspect: #nameSpaceDoubleClickChannel
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #forceGeneratorTrigger
+                              #aspect: #forceNamespaceGeneratorTrigger
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #nameSpaceListMenuHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #organizerMode
+                              #aspect: #organizerMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classGeneratorHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedNamespaces
+                              #aspect: #selectedNamespaces
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeCondition
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #slaveMode
+                              #aspect: #nameSpaceListSlaveMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #updateTrigger
+                              #aspect: #nameSpaceListUpdateTrigger
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       #(#SubCanvasSpec
+                          #name: 'ProjectList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          #initiallyInvisible: true
+                          #visibilityChannel: #projectListShown
+"/                          #majorKey: #'HierarchicalProjectList'
+                          #majorKey: #'ProjectList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #doubleClickChannel
+                              #aspect: #projectDoubleClickChannel
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #forceGeneratorTrigger
+                              #aspect: #forceProjectGeneratorTrigger
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #projectListMenuHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #organizerMode
+                              #aspect: #organizerMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classGeneratorHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedProjects
+                              #aspect: #selectedProjects
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeCondition
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #slaveMode
+                              #aspect: #projectListSlaveMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #updateTrigger
+                              #aspect: #projectListUpdateTrigger
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#ViewSpec
+                    #name: 'RightBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#VariableVerticalPanelSpec
+                          #name: 'ClassAndVariablesPanel'
+                          #layout: #(#LayoutFrame 0 0 0 0 0 1 -25 1)
+                          #showHandle: false
+                          #snapMode: #both
+                          #handlePosition: #left
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassList'
+                                #majorKey: #'ClassList'
+                                #minorKey: #windowSpec
+                                #subAspectHolders: 
+                               #(#Array
+
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #hidePrivateClasses
+                        #aspect: #hidePrivateClasses
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #hideUnloadedClasses
+                        #aspect: #hideUnloadedClasses
+                      ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #aspect: #classDoubleClickChannel
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #markApplicationsHolder
+                                    #aspect: #markApplicationsHolder
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassPackages
+                                    #aspect: #showClassPackages
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #classGeneratorHolder
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classListMenuHolder
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #outGeneratorHolder
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolderForMethods
+                                    #aspect: #selectorListGenerator5
+                                  ) 
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #packageFilter
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #nameSpaceFilter
+                                    #aspect: #nameSpaceFilter
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeCondition
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #slaveMode
+                                    #aspect: #classListSlaveMode
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #updateTrigger
+                                    #aspect: #classListUpdateTrigger
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'VariableList'
+                                #majorKey: #'VariableList'
+                                #subAspectHolders: 
+                               #(#Array
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #aspect: #variableDoubleClickChannel
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #classHolder
+                                    #aspect: #selectedClasses
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesMenuHolder
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedVariables
+                                    #aspect: #variableFilter
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassVarsInVariableList
+                                    #aspect: #filterClassVars
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          #handles: #(#Any 0.5 1.0)
+                        )
+                       #(#UISubSpecification
+                          #name: 'MetaToggleSpec2'
+                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                          #minorKey: #metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.5 1.0)
+            )
+           #(#ViewSpec
+              #name: 'ClassHierarchyOrInheritanceBox'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #initiallyInvisible: true
+              #visibilityChannel: #classHierarchyOrInheritanceShown
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#VariableVerticalPanelSpec
+                    #name: 'VariableVerticalPanel2'
+                    #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+                    #showHandle: false
+                    #snapMode: #both
+                    #handlePosition: #left
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#ViewSpec
+                          #name: 'HierarchyOrInheritanceBox'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassHierarchyList'
+                                #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                                #visibilityChannel: #classHierarchyShown
+                                #majorKey: #'HierarchicalClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #aspect: #classDoubleClickChannel
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #forceGeneratorTrigger
+                                    #aspect: #forceClassInheritanceGeneratorTrigger
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassPackages
+                                    #aspect: #showClassPackages
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classInheritanceListMenuHolder
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #outGeneratorHolder
+                                  ) 
+                                #(#SubChannelInfoSpec
+                                  #subAspect: #outGeneratorHolderForMethods
+                                  #aspect: #selectorListGenerator5
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #packageFilter
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #nameSpaceFilter
+                                    #aspect: #nameSpaceFilter
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeCondition
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #slaveMode
+                                    #aspect: #classHierarchyListSlaveMode
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #topClassHolder
+                                    #aspect: #classHierarchyTopClass
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #updateTrigger
+                                    #aspect: #classHierarchyUpdateTrigger
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'ClassInheritanceList'
+                                #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                                #visibilityChannel: #classInheritanceShown
+                                #majorKey: #'InheritanceClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #aspect: #classDoubleClickChannel
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #forceGeneratorTrigger
+                                    #aspect: #forceClassInheritanceGeneratorTrigger
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassPackages
+                                    #aspect: #showClassPackages
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classInheritanceListMenuHolder
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #outGeneratorHolder
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolderForMethods
+                                    #aspect: #selectorListGenerator5
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #packageFilter
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #nameSpaceFilter
+                                    #aspect: #nameSpaceFilter
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeCondition
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #slaveMode
+                                    #aspect: #classInheritanceListSlaveMode
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #topClassHolder
+                                    #aspect: #classHierarchyTopClass
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #updateTrigger
+                                    #aspect: #classHierarchyUpdateTrigger
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                        )
+                       #(#SubCanvasSpec
+                          #name: 'VariableList2'
+                          #majorKey: #'VariableList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #doubleClickChannel
+                              #aspect: #variableDoubleClickChannel
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #classHolder
+                              #aspect: #selectedClasses
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #variablesMenuHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #slaveMode
+                              #aspect: #classHierarchyListSlaveMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedVariables
+                              #aspect: #variableFilter
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #showClassVarsInVariableList
+                              #aspect: #filterClassVars
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                    #handles: #(#Any 0.5 1.0)
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MetaToggles1'
+                    #layout: #(#LayoutFrame 0 0.0 -25 1 0 1.0 0 1)
+                    #hasHorizontalScrollBar: false
+                    #hasVerticalScrollBar: false
+                    #minorKey: #metaSpec
+                  )
+                 )
+               
+              )
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 19:05:28 / cg"
+    "Modified: / 07-08-2011 / 19:14:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+windowSpecNonHierarchical
+    "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:OrganizerCanvas andSelector:#windowSpec
+     OrganizerCanvas new openInterface:#windowSpec
+     OrganizerCanvas open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'Organizer'
+          #name: 'Organizer'
+          #min: #(#Point 0 0)
+          #max: #(#Point 1024 721)
+          #bounds: #(#Rectangle 16 46 316 346)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#VariableHorizontalPanelSpec
+              #name: 'CategoryNameSpaceAndProjectPanel'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #visibilityChannel: #categoryNameSpaceAndProjectPanelShown
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#ViewSpec
+                    #name: 'LeftBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#ViewSpec
+                          #name: 'ClassCategoryAndNamespaceFilterBox'
+                          #layout: #(#LayoutFrame 0 0 0 0 0 1 0 1)
+                          #visibilityChannel: #categoryListShown
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassCategoryList'
+                                #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+                                #majorKey: #'ClassCategoryList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #aspect: #classCategoryDoubleClickChannel
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #forceGeneratorTrigger
+                                    #aspect: #forceClassCategoryGeneratorTrigger
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classCategoryListMenuHolder
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #classGeneratorHolder
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedCategories
+                                    #aspect: #selectedCategories
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeCondition
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #slaveMode
+                                    #aspect: #categoryListSlaveMode
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #updateTrigger
+                                    #aspect: #classCategoryListUpdateTrigger
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #nameSpaceFilter
+                                    #aspect: #nameSpaceFilterSelection
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#ExtendedComboBoxSpec
+                                #name: 'NameSpaceFilterComboBox'
+                                #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                                #tabable: true
+                                #model: #nameSpaceFilterSelectedNameSpace
+                                #menuWidgetHolder: #nameSpaceListWidgetHolder
+                                #miniScrollerHorizontal: true
+                                #menuSelector: #nameSpaceFilterPopUpMenu
+                              )
+                             )
+                           
+                          )
+                        )
+                       #(#SubCanvasSpec
+                          #name: 'NamespaceList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          #initiallyInvisible: true
+                          #visibilityChannel: #nameSpaceListShown
+                          #majorKey: #'NamespaceList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #doubleClickChannel
+                              #aspect: #nameSpaceDoubleClickChannel
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #forceGeneratorTrigger
+                              #aspect: #forceNamespaceGeneratorTrigger
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #nameSpaceListMenuHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #organizerMode
+                              #aspect: #organizerMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classGeneratorHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedNamespaces
+                              #aspect: #selectedNamespaces
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeCondition
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #slaveMode
+                              #aspect: #nameSpaceListSlaveMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #updateTrigger
+                              #aspect: #nameSpaceListUpdateTrigger
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       #(#SubCanvasSpec
+                          #name: 'ProjectList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          #initiallyInvisible: true
+                          #visibilityChannel: #projectListShown
+"/                          #majorKey: #'HierarchicalProjectList'
+                          #majorKey: #'ProjectList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #doubleClickChannel
+                              #aspect: #projectDoubleClickChannel
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #forceGeneratorTrigger
+                              #aspect: #forceProjectGeneratorTrigger
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #projectListMenuHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #organizerMode
+                              #aspect: #organizerMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classGeneratorHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedProjects
+                              #aspect: #selectedProjects
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeCondition
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #slaveMode
+                              #aspect: #projectListSlaveMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #updateTrigger
+                              #aspect: #projectListUpdateTrigger
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#ViewSpec
+                    #name: 'RightBox'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#VariableVerticalPanelSpec
+                          #name: 'ClassAndVariablesPanel'
+                          #layout: #(#LayoutFrame 0 0 0 0 0 1 -25 1)
+                          #showHandle: false
+                          #snapMode: #both
+                          #handlePosition: #left
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassList'
+                                #majorKey: #'ClassList'
+                                #minorKey: #windowSpec
+                                #subAspectHolders: 
+                               #(#Array
+
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #hidePrivateClasses
+                        #aspect: #hidePrivateClasses
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #hideUnloadedClasses
+                        #aspect: #hideUnloadedClasses
+                      ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #aspect: #classDoubleClickChannel
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #markApplicationsHolder
+                                    #aspect: #markApplicationsHolder
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassPackages
+                                    #aspect: #showClassPackages
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #inGeneratorHolder
+                                    #aspect: #classGeneratorHolder
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classListMenuHolder
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #outGeneratorHolder
+                                  )
+                                  #(#SubChannelInfoSpec
+                                  #subAspect: #outGeneratorHolderForMethods
+                                  #aspect: #selectorListGenerator5
+                                  ) 
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #packageFilter
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #nameSpaceFilter
+                                    #aspect: #nameSpaceFilter
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeCondition
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #slaveMode
+                                    #aspect: #classListSlaveMode
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #updateTrigger
+                                    #aspect: #classListUpdateTrigger
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'VariableList'
+                                #majorKey: #'VariableList'
+                                #subAspectHolders: 
+                               #(#Array
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #aspect: #variableDoubleClickChannel
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #classHolder
+                                    #aspect: #selectedClasses
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #variablesMenuHolder
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedVariables
+                                    #aspect: #variableFilter
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassVarsInVariableList
+                                    #aspect: #filterClassVars
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #sortVariablesByName
+                                    #aspect: #sortVariablesByName
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          #handles: #(#Any 0.5 1.0)
+                        )
+                       #(#UISubSpecification
+                          #name: 'MetaToggleSpec2'
+                          #layout: #(#LayoutFrame 0 0 -25 1 0 1 0 1)
+                          #minorKey: #metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.5 1.0)
+            )
+           #(#ViewSpec
+              #name: 'ClassHierarchyOrInheritanceBox'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #initiallyInvisible: true
+              #visibilityChannel: #classHierarchyOrInheritanceShown
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#VariableVerticalPanelSpec
+                    #name: 'VariableVerticalPanel2'
+                    #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+                    #showHandle: false
+                    #snapMode: #both
+                    #handlePosition: #left
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#ViewSpec
+                          #name: 'HierarchyOrInheritanceBox'
+                          #component: 
+                         #(#SpecCollection
+                            #collection: #(
+                             #(#SubCanvasSpec
+                                #name: 'ClassHierarchyList'
+                                #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                                #visibilityChannel: #classHierarchyShown
+                                #majorKey: #'HierarchicalClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #aspect: #classDoubleClickChannel
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #forceGeneratorTrigger
+                                    #aspect: #forceClassInheritanceGeneratorTrigger
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassPackages
+                                    #aspect: #showClassPackages
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classInheritanceListMenuHolder
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #outGeneratorHolder
+                                  ) 
+                                  #(#SubChannelInfoSpec
+                                  #subAspect: #outGeneratorHolderForMethods
+                                  #aspect: #selectorListGenerator5
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #packageFilter
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #nameSpaceFilter
+                                    #aspect: #nameSpaceFilter
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeCondition
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #slaveMode
+                                    #aspect: #classHierarchyListSlaveMode
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #topClassHolder
+                                    #aspect: #classHierarchyTopClass
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #updateTrigger
+                                    #aspect: #classHierarchyUpdateTrigger
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             #(#SubCanvasSpec
+                                #name: 'ClassInheritanceList'
+                                #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                                #visibilityChannel: #classInheritanceShown
+                                #majorKey: #'InheritanceClassList'
+                                #subAspectHolders: 
+                               #(#Array
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #doubleClickChannel
+                                    #aspect: #classDoubleClickChannel
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #forceGeneratorTrigger
+                                    #aspect: #forceClassInheritanceGeneratorTrigger
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #hideUnloadedClasses
+                                    #aspect: #hideUnloadedClasses
+                                  ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #showClassPackages
+                                    #aspect: #showClassPackages
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #immediateUpdate
+                                    #aspect: #immediateUpdate
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #menuHolder
+                                    #aspect: #classInheritanceListMenuHolder
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #meta
+                                    #aspect: #meta
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #organizerMode
+                                    #aspect: #organizerMode
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #outGeneratorHolder
+                                    #aspect: #outGeneratorHolder
+                                  ) 
+                                  #(#SubChannelInfoSpec
+                                  #subAspect: #outGeneratorHolderForMethods
+                                  #aspect: #selectorListGenerator5
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #packageFilter
+                                    #aspect: #packageFilter
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #nameSpaceFilter
+                                    #aspect: #nameSpaceFilter
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectedClasses
+                                    #aspect: #selectedClasses
+                                  )
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #selectionChangeCondition
+                                    #aspect: #selectionChangeCondition
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #slaveMode
+                                    #aspect: #classInheritanceListSlaveMode
+                                  )
+                                  
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #topClassHolder
+                                    #aspect: #classHierarchyTopClass
+                                  ) 
+                                 #(#SubChannelInfoSpec
+                                    #subAspect: #updateTrigger
+                                    #aspect: #classHierarchyUpdateTrigger
+                                  )
+                                )
+                                #createNewApplication: true
+                                #createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                        )
+                       #(#SubCanvasSpec
+                          #name: 'VariableList2'
+                          #majorKey: #'VariableList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #doubleClickChannel
+                              #aspect: #variableDoubleClickChannel
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #classHolder
+                              #aspect: #selectedClasses
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #variablesMenuHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #slaveMode
+                              #aspect: #classHierarchyListSlaveMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedVariables
+                              #aspect: #variableFilter
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #showClassVarsInVariableList
+                              #aspect: #filterClassVars
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                    #handles: #(#Any 0.5 1.0)
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'MetaToggles1'
+                    #layout: #(#LayoutFrame 0 0.0 -25 1 0 1.0 0 1)
+                    #hasHorizontalScrollBar: false
+                    #hasVerticalScrollBar: false
+                    #minorKey: #metaSpec
+                  )
+                 )
+               
+              )
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 19:05:47 / cg"
+    "Modified: / 07-08-2011 / 19:15:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+windowSpecNonHierarchicalWithClassDiagram
+    "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:Tools::OrganizerCanvas andSelector:#windowSpecNonHierarchicalWithClassDiagram
+     Tools::OrganizerCanvas new openInterface:#windowSpecNonHierarchicalWithClassDiagram
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: windowSpecNonHierarchicalWithClassDiagram
+        window: 
+       (WindowSpec
+          label: 'Organizer'
+          name: 'Organizer'
+          min: (Point 0 0)
+          max: (Point 1024 721)
+          bounds: (Rectangle 0 0 300 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (ViewSpec
+              name: 'PackageDiagramClassChooser'
+              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              level: 0
+              initiallyInvisible: true
+              visibilityChannel: packageDiagramShown
+              component: 
+             (SpecCollection
+                collection: (
+                 (ComboListSpec
+                    name: 'ComboList1'
+                    layout: (LayoutFrame 0 0 0 0 0 1 25 0)
+                    model: selectedDiagramProject
+                    comboList: packageList
+                    useIndex: false
+                  )
+                 (SubCanvasSpec
+                    name: 'SubCanvas1'
+                    layout: (LayoutFrame 0 0 25 0 0 1 -25 1)
+                    level: 0
+                    hasHorizontalScrollBar: false
+                    hasVerticalScrollBar: false
+                    minorKey: windowSpecForClassChooser
+                    clientHolder: diagramApplicationModelHolder
+                    createNewBuilder: false
+                  )
+                 (SubCanvasSpec
+                    name: 'MetaToggles2'
+                    layout: (LayoutFrame 0 0.0 -25 1 0 1.0 0 1)
+                    hasHorizontalScrollBar: false
+                    hasVerticalScrollBar: false
+                    minorKey: metaSpec
+                    createNewBuilder: false
+                  )
+                 )
+               
+              )
+            )
+           (ViewSpec
+              name: 'ClassHierarchyOrInheritanceBox'
+              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              initiallyInvisible: true
+              visibilityChannel: classHierarchyOrInheritanceShown
+              component: 
+             (SpecCollection
+                collection: (
+                 (VariableVerticalPanelSpec
+                    name: 'VariableVerticalPanel2'
+                    layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+                    showHandle: false
+                    snapMode: both
+                    handlePosition: left
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (ViewSpec
+                          name: 'HierarchyOrInheritanceBox'
+                          component: 
+                         (SpecCollection
+                            collection: (
+                             (SubCanvasSpec
+                                name: 'ClassHierarchyList'
+                                layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                                visibilityChannel: classHierarchyShown
+                                majorKey: HierarchicalClassList
+                                subAspectHolders: 
+                               (Array
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: doubleClickChannel
+                                    aspect: classDoubleClickChannel
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: forceGeneratorTrigger
+                                    aspect: forceClassInheritanceGeneratorTrigger
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: hideUnloadedClasses
+                                    aspect: hideUnloadedClasses
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: markApplicationsHolder
+                                    aspect: markApplicationsHolder
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: showClassPackages
+                                    aspect: showClassPackages
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: immediateUpdate
+                                    aspect: immediateUpdate
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: menuHolder
+                                    aspect: classInheritanceListMenuHolder
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: meta
+                                    aspect: meta
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: organizerMode
+                                    aspect: organizerMode
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: outGeneratorHolder
+                                    aspect: outGeneratorHolder
+                                  )
+                                 (SubChannelInfoSpec
+                                    subAspect: #outGeneratorHolderForMethods
+                                    aspect: #selectorListGenerator5
+                                  ) 
+
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: packageFilter
+                                    aspect: packageFilter
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: nameSpaceFilter
+                                    aspect: nameSpaceFilter
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: selectedClasses
+                                    aspect: selectedClasses
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: selectionChangeCondition
+                                    aspect: selectionChangeCondition
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: slaveMode
+                                    aspect: classHierarchyListSlaveMode
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: topClassHolder
+                                    aspect: classHierarchyTopClass
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: updateTrigger
+                                    aspect: classHierarchyUpdateTrigger
+                                  )
+                                )
+                                createNewApplication: true
+                                createNewBuilder: true
+                              )
+                             (SubCanvasSpec
+                                name: 'ClassInheritanceList'
+                                layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                                visibilityChannel: classInheritanceShown
+                                majorKey: InheritanceClassList
+                                subAspectHolders: 
+                               (Array
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: doubleClickChannel
+                                    aspect: classDoubleClickChannel
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: forceGeneratorTrigger
+                                    aspect: forceClassInheritanceGeneratorTrigger
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: hideUnloadedClasses
+                                    aspect: hideUnloadedClasses
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: markApplicationsHolder
+                                    aspect: markApplicationsHolder
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: showClassPackages
+                                    aspect: showClassPackages
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: immediateUpdate
+                                    aspect: immediateUpdate
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: menuHolder
+                                    aspect: classInheritanceListMenuHolder
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: meta
+                                    aspect: meta
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: organizerMode
+                                    aspect: organizerMode
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: outGeneratorHolder
+                                    aspect: outGeneratorHolder
+                                  )
+                                  #(#SubChannelInfoSpec
+                                  #subAspect: #outGeneratorHolderForMethods
+                                  #aspect: #selectorListGenerator5
+                                  ) 
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: packageFilter
+                                    aspect: packageFilter
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: nameSpaceFilter
+                                    aspect: nameSpaceFilter
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: selectedClasses
+                                    aspect: selectedClasses
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: selectionChangeCondition
+                                    aspect: selectionChangeCondition
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: slaveMode
+                                    aspect: classInheritanceListSlaveMode
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: topClassHolder
+                                    aspect: classHierarchyTopClass
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: updateTrigger
+                                    aspect: classHierarchyUpdateTrigger
+                                  )
+                                )
+                                createNewApplication: true
+                                createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                        )
+                       (SubCanvasSpec
+                          name: 'VariableList2'
+                          majorKey: VariableList
+                          subAspectHolders: 
+                         (Array
+                            
+                           (SubChannelInfoSpec
+                              subAspect: doubleClickChannel
+                              aspect: variableDoubleClickChannel
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: classHolder
+                              aspect: selectedClasses
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: menuHolder
+                              aspect: variablesMenuHolder
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: slaveMode
+                              aspect: classHierarchyListSlaveMode
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: selectedVariables
+                              aspect: variableFilter
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: showClassVarsInVariableList
+                              aspect: filterClassVars
+                            )
+                          )
+                          createNewApplication: true
+                          createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                    handles: (Any 0.5 1.0)
+                  )
+                 (SubCanvasSpec
+                    name: 'MetaToggles1'
+                    layout: (LayoutFrame 0 0.0 -25 1 0 1.0 0 1)
+                    hasHorizontalScrollBar: false
+                    hasVerticalScrollBar: false
+                    minorKey: metaSpec
+                    createNewBuilder: false
+                  )
+                 )
+               
+              )
+            )
+           (VariableHorizontalPanelSpec
+              name: 'CategoryNameSpaceAndProjectPanel'
+              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              visibilityChannel: categoryNameSpaceAndProjectPanelShown
+              barWidth: 2
+              showHandle: false
+              component: 
+             (SpecCollection
+                collection: (
+                 (ViewSpec
+                    name: 'LeftBox'
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (ViewSpec
+                          name: 'ClassCategoryAndNamespaceFilterBox'
+                          layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+                          visibilityChannel: categoryListShown
+                          component: 
+                         (SpecCollection
+                            collection: (
+                             (SubCanvasSpec
+                                name: 'ClassCategoryList'
+                                layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 -25 1.0)
+                                majorKey: ClassCategoryList
+                                subAspectHolders: 
+                               (Array
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: doubleClickChannel
+                                    aspect: classCategoryDoubleClickChannel
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: forceGeneratorTrigger
+                                    aspect: forceClassCategoryGeneratorTrigger
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: hideUnloadedClasses
+                                    aspect: hideUnloadedClasses
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: immediateUpdate
+                                    aspect: immediateUpdate
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: menuHolder
+                                    aspect: classCategoryListMenuHolder
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: organizerMode
+                                    aspect: organizerMode
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: outGeneratorHolder
+                                    aspect: classGeneratorHolder
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: selectedCategories
+                                    aspect: selectedCategories
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: selectionChangeCondition
+                                    aspect: selectionChangeCondition
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: slaveMode
+                                    aspect: categoryListSlaveMode
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: updateTrigger
+                                    aspect: classCategoryListUpdateTrigger
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: nameSpaceFilter
+                                    aspect: nameSpaceFilterSelection
+                                  )
+                                )
+                                createNewApplication: true
+                                createNewBuilder: true
+                              )
+                             (ExtendedComboBoxSpec
+                                name: 'NameSpaceFilterComboBox'
+                                layout: (LayoutFrame 0 0 -25 1 0 1 0 1)
+                                tabable: true
+                                model: nameSpaceFilterSelectedNameSpace
+                                menuWidgetHolder: nameSpaceListWidgetHolder
+                                miniScrollerHorizontal: true
+                                menuSelector: nameSpaceFilterPopUpMenu
+                              )
+                             )
+                           
+                          )
+                        )
+                       (SubCanvasSpec
+                          name: 'NamespaceList'
+                          layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          initiallyInvisible: true
+                          visibilityChannel: nameSpaceListShown
+                          majorKey: NamespaceList
+                          subAspectHolders: 
+                         (Array
+                            
+                           (SubChannelInfoSpec
+                              subAspect: doubleClickChannel
+                              aspect: nameSpaceDoubleClickChannel
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: forceGeneratorTrigger
+                              aspect: forceNamespaceGeneratorTrigger
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: hideUnloadedClasses
+                              aspect: hideUnloadedClasses
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: immediateUpdate
+                              aspect: immediateUpdate
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: menuHolder
+                              aspect: nameSpaceListMenuHolder
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: organizerMode
+                              aspect: organizerMode
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: outGeneratorHolder
+                              aspect: classGeneratorHolder
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: selectedNamespaces
+                              aspect: selectedNamespaces
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: selectionChangeCondition
+                              aspect: selectionChangeCondition
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: slaveMode
+                              aspect: nameSpaceListSlaveMode
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: updateTrigger
+                              aspect: nameSpaceListUpdateTrigger
+                            )
+                          )
+                          createNewApplication: true
+                          createNewBuilder: true
+                        )
+                       (SubCanvasSpec
+                          name: 'ProjectList'
+                          layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          initiallyInvisible: true
+                          visibilityChannel: projectListShown
+                          majorKey: ProjectList
+                          subAspectHolders: 
+                         (Array
+                            
+                           (SubChannelInfoSpec
+                              subAspect: doubleClickChannel
+                              aspect: projectDoubleClickChannel
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: forceGeneratorTrigger
+                              aspect: forceProjectGeneratorTrigger
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: hideUnloadedClasses
+                              aspect: hideUnloadedClasses
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: immediateUpdate
+                              aspect: immediateUpdate
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: menuHolder
+                              aspect: projectListMenuHolder
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: organizerMode
+                              aspect: organizerMode
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: outGeneratorHolder
+                              aspect: classGeneratorHolder
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: selectedProjects
+                              aspect: selectedProjects
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: selectionChangeCondition
+                              aspect: selectionChangeCondition
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: slaveMode
+                              aspect: projectListSlaveMode
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: updateTrigger
+                              aspect: projectListUpdateTrigger
+                            )
+                          )
+                          createNewApplication: true
+                          createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                  )
+                 (ViewSpec
+                    name: 'RightBox'
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (VariableVerticalPanelSpec
+                          name: 'ClassAndVariablesPanel'
+                          layout: (LayoutFrame 0 0 0 0 0 1 -25 1)
+                          showHandle: false
+                          snapMode: both
+                          handlePosition: left
+                          component: 
+                         (SpecCollection
+                            collection: (
+                             (SubCanvasSpec
+                                name: 'ClassList'
+                                majorKey: ClassList
+                                minorKey: windowSpec
+                                subAspectHolders: 
+                               (Array
+                                  
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #hidePrivateClasses
+                        #aspect: #hidePrivateClasses
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #hideUnloadedClasses
+                        #aspect: #hideUnloadedClasses
+                      ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: doubleClickChannel
+                                    aspect: classDoubleClickChannel
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: markApplicationsHolder
+                                    aspect: markApplicationsHolder
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: immediateUpdate
+                                    aspect: immediateUpdate
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: showClassPackages
+                                    aspect: showClassPackages
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: inGeneratorHolder
+                                    aspect: classGeneratorHolder
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: menuHolder
+                                    aspect: classListMenuHolder
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: meta
+                                    aspect: meta
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: organizerMode
+                                    aspect: organizerMode
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: outGeneratorHolder
+                                    aspect: outGeneratorHolder
+                                  ) 
+                                  #(#SubChannelInfoSpec
+                                  #subAspect: #outGeneratorHolderForMethods
+                                  #aspect: #selectorListGenerator5
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: packageFilter
+                                    aspect: packageFilter
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: nameSpaceFilter
+                                    aspect: nameSpaceFilter
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: selectedClasses
+                                    aspect: selectedClasses
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: selectionChangeCondition
+                                    aspect: selectionChangeCondition
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: slaveMode
+                                    aspect: classListSlaveMode
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: updateTrigger
+                                    aspect: classListUpdateTrigger
+                                  )
+                                )
+                                createNewApplication: true
+                                createNewBuilder: true
+                              )
+                             (SubCanvasSpec
+                                name: 'VariableList'
+                                majorKey: VariableList
+                                subAspectHolders: 
+                               (Array
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: doubleClickChannel
+                                    aspect: variableDoubleClickChannel
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: classHolder
+                                    aspect: selectedClasses
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: menuHolder
+                                    aspect: variablesMenuHolder
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: selectedVariables
+                                    aspect: variableFilter
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: showClassVarsInVariableList
+                                    aspect: filterClassVars
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: sortVariablesByName
+                                    aspect: sortVariablesByName
+                                  )
+                                )
+                                createNewApplication: true
+                                createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          handles: (Any 0.5 1.0)
+                        )
+                       (UISubSpecification
+                          name: 'MetaToggleSpec2'
+                          layout: (LayoutFrame 0 0 -25 1 0 1 0 1)
+                          minorKey: metaSpec
+                        )
+                       )
+                     
+                    )
+                  )
+                 )
+               
+              )
+              handles: (Any 0.5 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 04-07-2011 / 19:06:13 / cg"
+    "Modified: / 07-08-2011 / 19:16:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+windowSpecWithoutMetaToggles
+    "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:OrganizerCanvas andSelector:#windowSpecWithoutMetaToggles
+     OrganizerCanvas new openInterface:#windowSpecWithoutMetaToggles
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpecWithoutMetaToggles
+        #window: 
+       #(#WindowSpec
+          #label: 'Organizer'
+          #name: 'Organizer'
+          #min: #(#Point 0 0)
+          #max: #(#Point 1024 721)
+          #bounds: #(#Rectangle 13 23 313 323)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#SubCanvasSpec
+              #name: 'ClassHierarchyList'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #visibilityChannel: #classHierarchyShown
+              #majorKey: #'HierarchicalClassList'
+              #minorKey: #windowSpec
+              #subAspectHolders: 
+             #(#Array
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #doubleClickChannel
+                  #aspect: #classDoubleClickChannel
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #forceGeneratorTrigger
+                  #aspect: #forceClassInheritanceGeneratorTrigger
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #hideUnloadedClasses
+                  #aspect: #hideUnloadedClasses
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #showClassPackages
+                  #aspect: #showClassPackages
+                ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodInheritance
+                        #aspect: #showMethodInheritance
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodComplexity
+                        #aspect: #showMethodComplexity
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showMethodTypeIcon
+                        #aspect: #showMethodTypeIcon
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #methodVisibilityHolder
+                        #aspect: #methodVisibilityHolder
+                      )
+               #(#SubChannelInfoSpec
+                  #subAspect: #immediateUpdate
+                  #aspect: #immediateUpdate
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #menuHolder
+                  #aspect: #classInheritanceListMenuHolder
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #meta
+                  #aspect: #meta
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #organizerMode
+                  #aspect: #organizerMode
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #outGeneratorHolder
+                  #aspect: #outGeneratorHolder
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #packageFilter
+                  #aspect: #packageFilter
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #nameSpaceFilter
+                  #aspect: #nameSpaceFilter
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectedClasses
+                  #aspect: #selectedClasses
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectionChangeCondition
+                  #aspect: #selectionChangeCondition
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #slaveMode
+                  #aspect: #classInheritanceListSlaveMode
+                )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #topClassHolder
+                  #aspect: #classHierarchyTopClass
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #updateTrigger
+                  #aspect: #classHierarchyUpdateTrigger
+                )
+              )
+              #createNewApplication: true
+              #createNewBuilder: true
+            )
+           #(#SubCanvasSpec
+              #name: 'ClassInheritanceList'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #visibilityChannel: #classInheritanceShown
+              #majorKey: #'InheritanceClassList'
+              #minorKey: #windowSpec
+              #subAspectHolders: 
+             #(#Array
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #doubleClickChannel
+                  #aspect: #classDoubleClickChannel
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #forceGeneratorTrigger
+                  #aspect: #forceClassInheritanceGeneratorTrigger
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #hideUnloadedClasses
+                  #aspect: #hideUnloadedClasses
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #immediateUpdate
+                  #aspect: #immediateUpdate
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #menuHolder
+                  #aspect: #classInheritanceListMenuHolder
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #meta
+                  #aspect: #meta
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #organizerMode
+                  #aspect: #organizerMode
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #outGeneratorHolder
+                  #aspect: #outGeneratorHolder
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #packageFilter
+                  #aspect: #packageFilter
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #nameSpaceFilter
+                  #aspect: #nameSpaceFilter
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectedClasses
+                  #aspect: #selectedClasses
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #selectionChangeCondition
+                  #aspect: #selectionChangeCondition
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #slaveMode
+                  #aspect: #classInheritanceListSlaveMode
+                )
+                
+               #(#SubChannelInfoSpec
+                  #subAspect: #topClassHolder
+                  #aspect: #classHierarchyTopClass
+                ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #updateTrigger
+                  #aspect: #classHierarchyUpdateTrigger
+                )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+              )
+              #createNewApplication: true
+              #createNewBuilder: true
+            )
+           #(#VariableHorizontalPanelSpec
+              #name: 'VariableHorizontalPanel1'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #visibilityChannel: #classHierarchyNotShown
+              #barWidth: 2
+              #showHandle: false
+              #component: 
+             #(#SpecCollection
+                #collection: #(
+                 #(#ViewSpec
+                    #name: 'Box1'
+                    #component: 
+                   #(#SpecCollection
+                      #collection: #(
+                       #(#SubCanvasSpec
+                          #name: 'ClassCategoryList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          #visibilityChannel: #categoryListShown
+                          #majorKey: #'ClassCategoryList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #doubleClickChannel
+                              #aspect: #classCategoryDoubleClickChannel
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #forceGeneratorTrigger
+                              #aspect: #forceClassCategoryGeneratorTrigger
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #classCategoryListMenuHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #organizerMode
+                              #aspect: #organizerMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classGeneratorHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedCategories
+                              #aspect: #selectedCategories
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeCondition
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #updateTrigger
+                              #aspect: #classCategoryListUpdateTrigger
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       #(#SubCanvasSpec
+                          #name: 'NamespaceList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          #visibilityChannel: #nameSpaceListShown
+                          #majorKey: #'NamespaceList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #doubleClickChannel
+                              #aspect: #nameSpaceDoubleClickChannel
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #forceGeneratorTrigger
+                              #aspect: #forceNamespaceGeneratorTrigger
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #nameSpaceListMenuHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #organizerMode
+                              #aspect: #organizerMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classGeneratorHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedNamespaces
+                              #aspect: #selectedNamespaces
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeCondition
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #updateTrigger
+                              #aspect: #nameSpaceListUpdateTrigger
+                            )
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       #(#SubCanvasSpec
+                          #name: 'ProjectList'
+                          #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+                          #visibilityChannel: #projectListShown
+                          #majorKey: #'ProjectList'
+                          #subAspectHolders: 
+                         #(#Array
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #doubleClickChannel
+                              #aspect: #projectDoubleClickChannel
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #forceGeneratorTrigger
+                              #aspect: #forceProjectGeneratorTrigger
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #hideUnloadedClasses
+                              #aspect: #hideUnloadedClasses
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #immediateUpdate
+                              #aspect: #immediateUpdate
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #menuHolder
+                              #aspect: #projectListMenuHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #organizerMode
+                              #aspect: #organizerMode
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #outGeneratorHolder
+                              #aspect: #classGeneratorHolder
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectedProjects
+                              #aspect: #selectedProjects
+                            )
+                            
+                           #(#SubChannelInfoSpec
+                              #subAspect: #selectionChangeCondition
+                              #aspect: #selectionChangeCondition
+                            ) 
+                           #(#SubChannelInfoSpec
+                              #subAspect: #updateTrigger
+                              #aspect: #projectListUpdateTrigger
+                            )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                          )
+                          #createNewApplication: true
+                          #createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                  )
+                 #(#SubCanvasSpec
+                    #name: 'ClassList'
+                    #majorKey: #'ClassList'
+                    #minorKey: #windowSpec
+                    #subAspectHolders: 
+                   #(#Array
+                      
+
+                     #(#SubChannelInfoSpec
+                        #subAspect: #showCoverageInformation
+                        #aspect: #showCoverageInformation
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #doubleClickChannel
+                        #aspect: #classDoubleClickChannel
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #hidePrivateClasses
+                        #aspect: #hidePrivateClasses
+                      )
+                     #(#SubChannelInfoSpec
+                        #subAspect: #hideUnloadedClasses
+                        #aspect: #hideUnloadedClasses
+                      ) 
+               #(#SubChannelInfoSpec
+                  #subAspect: #sortByNameAndInheritance
+                  #aspect: #sortByNameAndInheritance
+                )
+               #(#SubChannelInfoSpec
+                  #subAspect: #markApplicationsHolder
+                  #aspect: #markApplicationsHolder
+                ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #immediateUpdate
+                        #aspect: #immediateUpdate
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #inGeneratorHolder
+                        #aspect: #classGeneratorHolder
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #menuHolder
+                        #aspect: #classListMenuHolder
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #meta
+                        #aspect: #meta
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #organizerMode
+                        #aspect: #organizerMode
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #outGeneratorHolder
+                        #aspect: #outGeneratorHolder
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectedClasses
+                        #aspect: #selectedClasses
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #selectionChangeCondition
+                        #aspect: #selectionChangeCondition
+                      ) 
+                     #(#SubChannelInfoSpec
+                        #subAspect: #slaveMode
+                        #aspect: #classListSlaveMode
+                      )
+                      
+                     #(#SubChannelInfoSpec
+                        #subAspect: #updateTrigger
+                        #aspect: #classListUpdateTrigger
+                      )
+                    )
+                    #createNewApplication: true
+                    #createNewBuilder: true
+                  )
+                 )
+               
+              )
+              #handles: #(#Any 0.5 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 20-07-2011 / 14:26:44 / cg"
+! !
+
+!OrganizerCanvas class methodsFor:'plugIn spec'!
+
+aspectSelectors
+    "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."
+
+    "Return a description of exported aspects;
+     these can be connected to aspects of an embedding application
+     (if this app is embedded in a subCanvas)."
+
+    ^ #(
+        #(classCategoryDoubleClickChannel action)
+        #classCategoryListMenuHolder
+        #(classDoubleClickChannel action)
+        #classHierarchyListMenuHolder
+        #classHierarchyTopClass
+        #classListMenuHolder
+        #filterClassVars
+        #hidePrivateClasses
+        #hideUnloadedClasses
+        #sortByNameAndInheritance
+        #immediateUpdate
+        #markApplicationsHolder
+        #meta
+        #metaToggleLabelHolder
+        #(nameSpaceDoubleClickChannel action)
+        #nameSpaceFilter
+        #nameSpaceListMenuHolder
+        #organizerMode
+        #outGeneratorHolder
+        #packageFilter
+        #(projectDoubleClickChannel action)
+        #projectListMenuHolder
+        #selectedCategories
+        #selectedClasses
+        #selectedNamespaces
+        #selectedProjects
+        #selectedProtocols
+        #selectionChangeCondition
+        #showClassPackages
+        #sortVariablesBy
+        #(variableDoubleClickChannel action)
+        #variableFilter
+        #variablesMenuHolder
+        #showCoverageInformation
+      ).
+
+    "Modified: / 20-07-2011 / 14:28:47 / cg"
+! !
+
+!OrganizerCanvas methodsFor:'aspects'!
+
+classCategoryDoubleClickChannel
+    classCategoryDoubleClickChannel isNil ifTrue:[
+        classCategoryDoubleClickChannel := TriggerValue new.
+    ].
+    ^ classCategoryDoubleClickChannel.
+!
+
+classCategoryListMenuHolder
+    classCategoryListMenuHolder isNil ifTrue:[
+        classCategoryListMenuHolder := ValueHolder new.
+    ].
+    ^ classCategoryListMenuHolder.
+
+    "Created: / 18.2.2000 / 11:52:55 / cg"
+!
+
+classDoubleClickChannel
+    classDoubleClickChannel isNil ifTrue:[
+        classDoubleClickChannel := TriggerValue new.
+    ].
+    ^ classDoubleClickChannel.
+!
+
+classGeneratorHolder
+    classGeneratorHolder isNil ifTrue:[
+        classGeneratorHolder := ValueHolder new.
+    ].
+    ^ classGeneratorHolder.
+
+    "Created: / 18.2.2000 / 00:56:50 / cg"
+!
+
+classGeneratorHolderFromClassCategory
+    classGeneratorHolderFromClassCategory isNil ifTrue:[
+        classGeneratorHolderFromClassCategory := ValueHolder new.
+    ].
+    ^ classGeneratorHolderFromClassCategory.
+
+    "Created: / 18.2.2000 / 02:21:55 / cg"
+!
+
+classGeneratorHolderFromClassHierarchy
+    classGeneratorHolderFromClassHierarchy isNil ifTrue:[
+        classGeneratorHolderFromClassHierarchy := ValueHolder new.
+    ].
+    ^ classGeneratorHolderFromClassHierarchy.
+
+    "Created: / 18.2.2000 / 02:21:55 / cg"
+!
+
+classGeneratorHolderFromNamespace
+    classGeneratorHolderFromNamespace isNil ifTrue:[
+        classGeneratorHolderFromNamespace := ValueHolder new.
+    ].
+    ^ classGeneratorHolderFromNamespace.
+
+    "Created: / 18.2.2000 / 02:21:55 / cg"
+!
+
+classGeneratorHolderFromProject
+    classGeneratorHolderFromProject isNil ifTrue:[
+        classGeneratorHolderFromProject := ValueHolder new.
+    ].
+    ^ classGeneratorHolderFromProject.
+
+    "Created: / 18.2.2000 / 02:21:55 / cg"
+!
+
+classHierarchyListMenuHolder
+    classHierarchyListMenuHolder isNil ifTrue:[
+        classHierarchyListMenuHolder := ValueHolder new.
+    ].
+    ^ classHierarchyListMenuHolder.
+
+    "Created: / 18.2.2000 / 11:52:55 / cg"
+!
+
+classHierarchyTopClass
+    ^ builder valueAspectFor:#classHierarchyTopClass initialValue:Object
+!
+
+classInheritanceListMenuHolder
+    ^ self classHierarchyListMenuHolder
+!
+
+classList
+    classList isNil ifTrue:[
+        classList := ValueHolder new.
+    ].
+    ^ classList.
+
+    "Created: / 18.2.2000 / 00:23:43 / cg"
+!
+
+classListMenuHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    classListMenuHolder isNil ifTrue:[
+	classListMenuHolder := ValueHolder new.
+"/        classListMenuHolder addDependent:self.
+    ].
+    ^ classListMenuHolder.
+
+    "Created: / 18.2.2000 / 11:57:22 / cg"
+!
+
+defaultOrganizerMode
+    ^ OrganizerCanvas organizerModePackageDiagram.
+    ^ OrganizerCanvas organizerModeCategory
+!
+
+diagramPackageSelection
+    |holder|
+
+    (holder := builder bindingAt:#diagramPackageSelection) isNil ifTrue:[
+        holder := nil asValue.
+        builder aspectAt:#diagramPackageSelection put:holder.
+        holder onChangeSend:#diagramPackageSelectionChanged to:self.
+    ].
+    ^ holder.
+!
+
+filterClassVars
+    filterClassVars isNil ifTrue:[
+        filterClassVars := ValueHolder new.
+"/        filterClassVars addDependent:self.
+    ].
+    ^ filterClassVars.
+
+    "Created: / 24-02-2000 / 23:29:52 / cg"
+!
+
+hidePrivateClasses
+    hidePrivateClasses isNil ifTrue:[
+        hidePrivateClasses := false asValue.
+"/        hidePrivateClasses addDependent:self.
+    ].
+    ^ hidePrivateClasses.
+
+    "Created: / 24-02-2000 / 16:18:45 / cg"
+!
+
+hideUnloadedClasses
+    hideUnloadedClasses isNil ifTrue:[
+        hideUnloadedClasses := false asValue.
+"/        hideUnloadedClasses addDependent:self.
+    ].
+    ^ hideUnloadedClasses.
+
+    "Created: / 18-02-2000 / 17:54:57 / cg"
+!
+
+immediateUpdate
+    immediateUpdate isNil ifTrue:[
+        immediateUpdate := false asValue.
+"/        immediateUpdate addDependent:self.
+    ].
+    ^ immediateUpdate.
+
+    "Created: / 18-02-2000 / 00:23:43 / cg"
+!
+
+initialOrganizerMode
+    ^ nil  "/ dummy
+!
+
+markApplicationsHolder
+    markApplicationsHolder isNil ifTrue:[
+	markApplicationsHolder := false asValue.
+    ].
+    ^ markApplicationsHolder.
+!
+
+meta
+    meta isNil ifTrue:[
+        meta := false asValue.
+"/        meta addDependent:self.
+    ].
+    ^ meta.
+
+    "Created: / 18-02-2000 / 00:23:43 / cg"
+    "Modified (comment): / 04-07-2011 / 18:52:49 / cg"
+!
+
+metaToggle
+    metaToggle isNil ifTrue:[
+	metaToggle := PluggableAdaptor on:(self meta).
+	metaToggle
+	    getBlock:[:m | m value == true]
+	    putBlock:[:m :newValue | m value:(newValue ? false)]
+	    updateBlock:[:m :aspect :param | true].
+    ].
+    ^ metaToggle
+!
+
+metaToggleLabelHolder
+    "this is changed from 'Instance/Class' to 'Instance/Static' for Java"
+
+    metaToggleLabelHolder isNil ifTrue:[
+        metaToggleLabelHolder := (resources string:'Class') asValue.
+"/        metaToggleLabelHolder addDependent:self.
+    ].
+    ^ metaToggleLabelHolder.
+
+    "Created: / 18-02-2000 / 11:52:55 / cg"
+!
+
+methodVisibilityHolder
+    masterApplication notNil ifTrue:[
+        ^ masterApplication methodVisibilityHolder
+    ].
+
+    methodVisibilityHolder isNil ifTrue:[
+        methodVisibilityHolder := false asValue.
+    ].
+    ^ methodVisibilityHolder.
+
+    "Created: / 05-11-2007 / 16:57:58 / cg"
+!
+
+nameSpaceDoubleClickChannel
+    |holder|
+
+    (holder := builder bindingAt:#nameSpaceDoubleClickChannel) isNil ifTrue:[
+        holder := TriggerValue new.
+        builder aspectAt:#nameSpaceDoubleClickChannel put:holder.
+"/        holder addDependent:self.
+    ].
+    ^ holder.
+
+    "Modified (comment): / 04-07-2011 / 18:53:36 / cg"
+!
+
+nameSpaceFilter
+    nameSpaceFilter isNil ifTrue:[
+        nameSpaceFilter := ValueHolder new.
+        nameSpaceFilter onChangeEvaluate:[
+            nameSpaceFilter value ~= nameSpaceFilterSelection value ifTrue:[
+                self halt:'should not happen'
+            ].
+"/            self nameSpaceFilter value: nameSpaceFilterSelection value.
+        ]
+    ].
+    ^ nameSpaceFilter.
+
+    "Created: / 24.2.2000 / 23:29:52 / cg"
+!
+
+nameSpaceFilterDoubleClickChannel
+    |holder|
+
+    (holder := builder bindingAt:#nameSpaceFilterDoubleClickChannel) isNil ifTrue:[
+        holder := TriggerValue new.
+        builder aspectAt:#nameSpaceFilterDoubleClickChannel put:holder.
+        holder onChangeEvaluate:[
+                    (builder componentAt:#NameSpaceFilterComboBox) closeMenu.
+"/                    self nameSpaceDoubleClickChannel value:true.
+               ]
+    ].
+    ^ holder.
+
+    "Modified (comment): / 04-07-2011 / 18:53:39 / cg"
+!
+
+nameSpaceFilterPopUpMenu
+    ^ self nameSpaceListMenuHolder.
+!
+
+nameSpaceFilterSelectedNameSpace
+    |holder|
+
+    (holder := builder bindingAt:#nameSpaceFilterSelectedNameSpace) isNil ifTrue:[
+	holder := self class nameListEntryForALL "'* all *'" asValue.
+	builder aspectAt:#nameSpaceFilterSelectedNameSpace put:holder.
+	holder onChangeEvaluate:[ self updateNameSpaceLabel. ].
+    ].
+    ^ holder.
+
+    "Created: / 18.2.2000 / 11:52:55 / cg"
+!
+
+nameSpaceFilterSelection
+    "automatically generated by UIPainter ..."
+
+    nameSpaceFilterSelection isNil ifTrue:[
+	nameSpaceFilterSelection := (OrderedCollection with:self class nameListEntryForALL) asValue.
+	nameSpaceFilterSelection addDependent:self.
+    ].
+    ^ nameSpaceFilterSelection.
+!
+
+nameSpaceListMenuHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    |holder|
+
+    (holder := builder bindingAt:#nameSpaceListMenuHolder) isNil ifTrue:[
+	holder := ValueHolder new.
+	builder aspectAt:#nameSpaceListMenuHolder put:holder.
+"/        holder addDependent:self.
+    ].
+    ^ holder.
+
+    "Created: / 18.2.2000 / 11:52:55 / cg"
+!
+
+nameSpaceListWidget
+    |view|
+
+    view := SubCanvas new.
+    view client:self spec:#embeddedNameSpaceListSpec builder:nil. "/ (self builder).
+    (view builder findComponentAt:#List) autoHideHorizontalScrollBar:true.
+    ^ view.
+!
+
+nameSpaceListWidgetHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    |holder|
+
+    (holder := builder bindingAt:#nameSpaceListWidgetHolder) isNil ifTrue:[
+	holder := ValueHolder new.
+	builder aspectAt:#nameSpaceListWidgetHolder put:holder.
+	holder value:(self nameSpaceListWidget).
+    ].
+    ^ holder.
+!
+
+notMetaToggle
+    notMetaToggle isNil ifTrue:[
+	notMetaToggle := PluggableAdaptor on:(self meta).
+	notMetaToggle
+	    getBlock:[:m | m value == false]
+	    putBlock:[:m :newValue | m value:(newValue ? false) not]
+	    updateBlock:[:m :aspect :param | true].
+    ].
+    ^ notMetaToggle
+!
+
+organizerMode
+    organizerMode isNil ifTrue:[
+        organizerMode := self defaultOrganizerMode asValue.
+        organizerMode addDependent:self.
+    ].
+    ^ organizerMode
+
+    "Created: / 18.2.2000 / 00:30:44 / cg"
+    "Modified: / 18.2.2000 / 02:56:21 / cg"
+!
+
+outGeneratorHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    |holder|
+
+    (holder := builder bindingAt:#outGeneratorHolder) isNil ifTrue:[
+	holder := ValueHolder new.
+	builder aspectAt:#outGeneratorHolder put:holder.
+"/        holder addDependent:self.
+    ].
+    ^ holder.
+
+    "Created: / 18.2.2000 / 00:23:43 / cg"
+!
+
+packageFilter
+    "automatically generated by UIPainter ..."
+
+    packageFilter isNil ifTrue:[
+        packageFilter := ValueHolder new.
+        "/ packageFilter addDependent:self.
+    ].
+    ^ packageFilter.
+
+    "Created: / 24.2.2000 / 23:29:52 / cg"
+!
+
+packageList
+    |holder|
+
+    (holder := builder bindingAt:#packageList) isNil ifTrue:[
+        holder := ValueHolder with:(ProjectList new listOfProjects).
+        builder aspectAt:#packageList put:holder.
+    ].
+    ^ holder.
+!
+
+popUpNameSpaceListSlaveMode
+    ^ false
+!
+
+projectDoubleClickChannel
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    |holder|
+
+    (holder := builder bindingAt:#projectDoubleClickChannel) isNil ifTrue:[
+	holder := TriggerValue new.
+	builder aspectAt:#projectDoubleClickChannel put:holder.
+"/        holder addDependent:self.
+    ].
+    ^ holder.
+!
+
+projectListMenuHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    projectListMenuHolder isNil ifTrue:[
+	projectListMenuHolder := ValueHolder new.
+"/        projectListMenuHolder addDependent:self.
+    ].
+    ^ projectListMenuHolder.
+
+    "Created: / 18.2.2000 / 11:52:55 / cg"
+!
+
+selectedCategories
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    selectedCategories isNil ifTrue:[
+	selectedCategories := ValueHolder new.
+"/        selectedCategories addDependent:self.
+    ].
+    ^ selectedCategories.
+
+    "Created: / 18.2.2000 / 12:27:58 / cg"
+!
+
+selectedClasses
+    "bad name- it's a holder, baby"
+
+    selectedClasses isNil ifTrue:[
+        selectedClasses := ValueHolder new.
+        selectedClasses addDependent:self.
+    ].
+    ^ selectedClasses.
+
+    "Created: / 18.2.2000 / 00:23:43 / cg"
+!
+
+selectedDiagramProject
+    |holder|
+
+    (holder := builder bindingAt:#selectedDiagramProject) isNil ifTrue:[
+        holder := nil asValue.
+        builder aspectAt:#selectedDiagramProject put:holder.
+        holder addDependent:self.
+    ].
+    ^ holder.
+!
+
+selectedNamespaces
+    selectedNamespaces isNil ifTrue:[
+        selectedNamespaces := (OrderedCollection with:self class nameListEntryForALL) asValue.
+    ].
+    ^ selectedNamespaces.
+
+    "Created: / 18.2.2000 / 12:27:58 / cg"
+!
+
+selectedProjects
+    selectedProjects isNil ifTrue:[
+        selectedProjects := ValueHolder new.
+        selectedProjects addDependent:self.
+    ].
+    ^ selectedProjects.
+
+    "Created: / 18.2.2000 / 12:16:01 / cg"
+!
+
+selectionChangeCondition
+
+    selectionChangeCondition isNil ifTrue:[
+        selectionChangeCondition := ValueHolder new.
+"/        selectionChangeCondition addDependent:self.
+    ].
+    ^ selectionChangeCondition.
+
+    "Created: / 18.2.2000 / 00:23:43 / cg"
+!
+
+showAllClassesInNameSpaceOrganisation
+    masterApplication notNil ifTrue:[
+        ^ masterApplication showAllClassesInNameSpaceOrganisation
+    ].
+
+    showAllClassesInNameSpaceView isNil ifTrue:[
+        showAllClassesInNameSpaceView := false asValue.
+    ].
+    ^ showAllClassesInNameSpaceView.
+
+    "Created: / 05-03-2007 / 16:52:02 / cg"
+    "Modified: / 06-03-2007 / 12:30:17 / cg"
+!
+
+showClassPackages
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    showClassPackages isNil ifTrue:[
+	showClassPackages := false asValue.
+"/        showClassPackages addDependent:self.
+    ].
+    ^ showClassPackages.
+
+    "Created: / 18.2.2000 / 17:54:57 / cg"
+!
+
+showCoverageInformation
+    masterApplication notNil ifTrue:[
+        ^ masterApplication showCoverageInformation
+    ].
+
+    showCoverageInformation isNil ifTrue:[
+        showCoverageInformation := false asValue.
+    ].
+    ^ showCoverageInformation.
+
+    "Created: / 27-04-2010 / 16:32:56 / cg"
+!
+
+showMethodComplexity
+    masterApplication notNil ifTrue:[
+        ^ masterApplication showMethodComplexity
+    ].
+
+    showMethodComplexity isNil ifTrue:[
+        showMethodComplexity := false asValue.
+    ].
+    ^ showMethodComplexity.
+
+    "Created: / 05-11-2007 / 16:56:36 / cg"
+!
+
+showMethodInheritance
+    masterApplication notNil ifTrue:[
+        ^ masterApplication showMethodInheritance
+    ].
+
+    showMethodInheritance isNil ifTrue:[
+        showMethodInheritance := false asValue.
+    ].
+    ^ showMethodInheritance.
+
+    "Created: / 05-11-2007 / 16:55:35 / cg"
+!
+
+showMethodTypeIcon
+    masterApplication notNil ifTrue:[
+        ^ masterApplication showMethodTypeIcon
+    ].
+
+    showMethodTypeIcon isNil ifTrue:[
+        showMethodTypeIcon := false asValue.
+    ].
+    ^ showMethodTypeIcon.
+
+    "Created: / 05-11-2007 / 16:57:12 / cg"
+!
+
+sortByNameAndInheritance
+    sortByNameAndInheritance isNil ifTrue:[
+        sortByNameAndInheritance := false asValue.
+"/        sortByNameAndInheritance addDependent:self.
+    ].
+    ^ sortByNameAndInheritance.
+
+    "Created: / 04-07-2011 / 18:41:22 / cg"
+!
+
+sortVariablesByName
+    sortVariablesByName isNil ifTrue:[
+        sortVariablesByName := false asValue.
+    ].
+    ^ sortVariablesByName.
+!
+
+updateNameSpaceLabel
+    |box|
+
+    box := self componentAt:#NameSpaceFilterComboBox.
+    box notNil ifTrue:[
+        "/ new code: ExtComboBox uses always an EditField
+        box editor contents:nameSpaceFilterSelection value first.        
+
+        "/ old code: readOnly ExtComboBox used a Label
+        "/ box menuField label:nameSpaceFilterSelection value first
+    ]
+!
+
+variableDoubleClickChannel
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    |holder|
+
+    (holder := builder bindingAt:#variableDoubleClickChannel) isNil ifTrue:[
+	holder := TriggerValue new.
+	builder aspectAt:#variableDoubleClickChannel put:holder.
+"/        holder addDependent:self.
+    ].
+    ^ holder.
+!
+
+variableFilter
+    variableFilter isNil ifTrue:[
+        variableFilter := ValueHolder new.
+    ].
+    ^ variableFilter.
+
+    "Created: / 24.2.2000 / 23:29:52 / cg"
+!
+
+variablesMenuHolder
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    variablesMenuHolder isNil ifTrue:[
+	variablesMenuHolder := ValueHolder new.
+"/        variablesMenuHolder addDependent:self.
+    ].
+    ^ variablesMenuHolder.
+
+    "Created: / 24.2.2000 / 23:29:52 / cg"
+! !
+
+!OrganizerCanvas methodsFor:'aspects-exported'!
+
+classCategoryDoubleClickChannel:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ classCategoryDoubleClickChannel removeDependent:self.
+
+    classCategoryDoubleClickChannel := something.
+
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.8.2000 / 20:04:48 / cg"
+!
+
+classCategoryListMenuHolder:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ classCategoryListMenuHolder removeDependent:self.
+
+    classCategoryListMenuHolder := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 11:53:31 / cg"
+!
+
+classCategoryListUpdateTrigger:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ classCategoryListUpdateTrigger removeDependent:self.
+
+    classCategoryListUpdateTrigger := something.
+
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 02:08:01 / cg"
+!
+
+classDoubleClickChannel:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ classDoubleClickChannel removeDependent:self.
+
+    classDoubleClickChannel := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+!
+
+classHierarchyListMenuHolder:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ classHierarchyListMenuHolder removeDependent:self.
+
+    classHierarchyListMenuHolder := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 11:53:31 / cg"
+!
+
+classHierarchyShown:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ |holder|
+
+    "/ (holder := builder bindingAt:#classHierarchyShown) notNil ifTrue:[
+    "/     holder removeDependent:self.
+    "/ ].
+    builder aspectAt:#classHierarchyShown put:something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 00:24:28 / cg"
+!
+
+classHierarchyTopClass:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ |holder|
+
+    "/ (holder := builder bindingAt:#classHierarchyTopClass) notNil ifTrue:[
+    "/     holder removeDependent:self.
+    "/ ].
+    builder aspectAt:#classHierarchyTopClass put:something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+!
+
+classHierarchyUpdateTrigger:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ |holder|
+
+    "/ (holder := builder bindingAt:#classHierarchyUpdateTrigger) notNil ifTrue:[
+    "/     holder removeDependent:self.
+    "/ ].
+    builder aspectAt:#classHierarchyUpdateTrigger put:something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 02:08:01 / cg"
+!
+
+classList:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ classList notNil ifTrue:[
+    "/     classList removeDependent:self.
+    "/ ].
+    classList := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 00:24:28 / cg"
+!
+
+classListMenuHolder:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ classListMenuHolder removeDependent:self.
+
+    classListMenuHolder := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 11:57:22 / cg"
+!
+
+classListUpdateTrigger:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ classListUpdateTrigger removeDependent:self.
+
+    classListUpdateTrigger := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 02:08:01 / cg"
+!
+
+filterClassVars:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ filterClassVars removeDependent:self.
+
+    filterClassVars := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 24.2.2000 / 23:46:16 / cg"
+!
+
+hidePrivateClasses:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ hidePrivateClasses removeDependent:self.
+
+    hidePrivateClasses := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 24.2.2000 / 16:18:32 / cg"
+!
+
+hideUnloadedClasses:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ hideUnloadedClasses removeDependent:self.
+
+    hideUnloadedClasses := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 17:54:57 / cg"
+!
+
+immediateUpdate:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ immediateUpdate removeDependent:self.
+
+    immediateUpdate := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 00:24:29 / cg"
+!
+
+markApplicationsHolder:something
+    markApplicationsHolder := something.
+!
+
+meta:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ meta notNil ifTrue:[
+    "/     meta removeDependent:self.
+    "/ ].
+"/ (something == true or:[something == false]) ifTrue:[self halt].
+    meta := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    metaToggle notNil ifTrue:[
+	metaToggle model:something
+    ].
+    notMetaToggle notNil ifTrue:[
+	notMetaToggle model:something
+    ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 00:24:29 / cg"
+!
+
+metaToggleLabelHolder:something
+    |v|
+
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ metaToggleLabelHolder removeDependent:self.
+
+    metaToggleLabelHolder := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    (v := builder componentAt:#ClassToggle) notNil ifTrue:[
+	v labelChannel:metaToggleLabelHolder.
+    ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 11:53:31 / cg"
+!
+
+methodVisibilityHolder:aValueHolder
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    methodVisibilityHolder := aValueHolder.
+
+    "Created: / 05-11-2007 / 16:57:34 / cg"
+!
+
+nameSpaceFilter:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ packageFilter notNil ifTrue:[
+    "/     packageFilter removeDependent:self.
+    "/ ].
+    nameSpaceFilter := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    self nameSpaceFilterSelection value:something value.
+    ^ self.
+
+    "Created: / 24.2.2000 / 23:46:16 / cg"
+!
+
+nameSpaceListMenuHolder:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ |holder|
+
+    "/ (holder := builder bindingAt:#namespaceListMenuHolder) notNil ifTrue:[
+    "/     holder removeDependent:self.
+    "/ ].
+    builder aspectAt:#nameSpaceListMenuHolder put:something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 11:53:31 / cg"
+!
+
+nameSpaceListUpdateTrigger:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ |holder|
+
+    "/ (holder := builder bindingAt:#namespaceListUpdateTrigger) notNil ifTrue:[
+    "/     holder removeDependent:self.
+    "/ ].
+    builder aspectAt:#nameSpaceListUpdateTrigger put:something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 02:08:01 / cg"
+!
+
+organizerMode:aValueHolder
+    organizerMode notNil ifTrue:[
+	organizerMode removeDependent:self.
+    ].
+    organizerMode := aValueHolder.
+    organizerMode notNil ifTrue:[
+	organizerMode addDependent:self.
+    ].
+
+    "Created: / 18.2.2000 / 10:21:41 / cg"
+!
+
+outGeneratorHolder:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ |holder|
+
+    "/ (holder := builder bindingAt:#outGeneratorHolder) notNil ifTrue:[
+    "/     holder removeDependent:self.
+    "/ ].
+    builder aspectAt:#outGeneratorHolder put:something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 00:24:29 / cg"
+!
+
+packageFilter:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ packageFilter notNil ifTrue:[
+    "/     packageFilter removeDependent:self.
+    "/ ].
+    packageFilter := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 24.2.2000 / 23:46:16 / cg"
+!
+
+projectDoubleClickChannel:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ |holder|
+
+    "/ (holder := builder bindingAt:#projectDoubleClickChannel) notNil ifTrue:[
+    "/     holder removeDependent:self.
+    "/ ].
+    builder aspectAt:#projectDoubleClickChannel put:something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+!
+
+projectListMenuHolder:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    projectListMenuHolder := something.
+
+    "Created: / 18.2.2000 / 11:53:31 / cg"
+!
+
+projectListUpdateTrigger:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ |holder|
+
+    "/ (holder := builder bindingAt:#projectListUpdateTrigger) notNil ifTrue:[
+    "/     holder removeDependent:self.
+    "/ ].
+    builder aspectAt:#projectListUpdateTrigger put:something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 02:08:01 / cg"
+!
+
+selectedCategories:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    selectedCategories := something.
+    ^ self.
+
+    "Created: / 18.2.2000 / 14:04:36 / cg"
+!
+
+selectedClasses:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    selectedClasses removeDependent:self.
+
+    selectedClasses := something.
+    something notNil ifTrue:[
+	something addDependent:self.
+    ].
+    ^ self.
+
+    "Created: / 18.2.2000 / 00:24:29 / cg"
+!
+
+selectedNamespaces:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    selectedNamespaces := something.
+    selectedNamespaces onChangeEvaluate:[
+        nameSpaceFilterSelection notNil ifTrue:[
+            nameSpaceFilterSelection value:selectedNamespaces value.     
+        ]
+    ].
+
+    "Modified: / 05-11-2007 / 17:16:56 / cg"
+!
+
+selectedProjects:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    selectedProjects := something.
+!
+
+selectionChangeCondition:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    selectionChangeCondition := something.
+!
+
+showClassPackages:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    showClassPackages := something.
+!
+
+showCoverageInformation:something
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    showCoverageInformation := something.
+
+    "Created: / 06-07-2011 / 19:48:20 / cg"
+!
+
+showMethodComplexity:aValueHolder
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    showMethodComplexity := aValueHolder.
+
+    "Created: / 05-11-2007 / 16:56:18 / cg"
+!
+
+showMethodInheritance:aValueHolder
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    showMethodInheritance := aValueHolder.
+
+    "Created: / 05-11-2007 / 16:55:12 / cg"
+!
+
+showMethodTypeIcon:aValueHolder
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    showMethodTypeIcon := aValueHolder.
+
+    "Created: / 05-11-2007 / 16:57:02 / cg"
+!
+
+sortByNameAndInheritance:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ sortByNameAndInheritance removeDependent:self.
+
+    sortByNameAndInheritance := something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+
+    "Created: / 04-07-2011 / 18:42:01 / cg"
+!
+
+sortVariablesByName:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    sortVariablesByName := something.
+!
+
+variableDoubleClickChannel:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    "/ |holder|
+
+    "/ (holder := builder bindingAt:#variableDoubleClickChannel) notNil ifTrue:[
+    "/     holder removeDependent:self.
+    "/ ].
+    builder aspectAt:#variableDoubleClickChannel put:something.
+    "/ something notNil ifTrue:[
+    "/     something addDependent:self.
+    "/ ].
+    ^ self.
+!
+
+variableFilter:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    variableFilter := something.
+!
+
+variablesMenuHolder:something
+    "automatically generated by UIPainter ..."
+
+    "This method is used when I am embedded as subApplication,"
+    "and the mainApp wants to connect its aspects to mine."
+
+    variablesMenuHolder := something.
+! !
+
+!OrganizerCanvas methodsFor:'aspects-private'!
+
+categoryListSlaveMode
+    categoryListSlaveMode isNil ifTrue:[
+	categoryListSlaveMode := false asValue.
+    ].
+    ^ categoryListSlaveMode
+
+    "Created: / 18.2.2000 / 00:30:44 / cg"
+    "Modified: / 18.2.2000 / 02:56:21 / cg"
+!
+
+classHierarchyListSlaveMode
+    classHierarchyListSlaveMode isNil ifTrue:[
+	classHierarchyListSlaveMode := true asValue.
+    ].
+    ^ classHierarchyListSlaveMode
+
+    "Created: / 18.2.2000 / 00:30:44 / cg"
+    "Modified: / 18.2.2000 / 02:56:21 / cg"
+!
+
+classInheritanceListSlaveMode
+    classInheritanceListSlaveMode isNil ifTrue:[
+	classInheritanceListSlaveMode := true asValue.
+    ].
+    ^ classInheritanceListSlaveMode
+
+    "Modified: / 18.2.2000 / 02:56:21 / cg"
+    "Created: / 26.2.2000 / 00:09:18 / cg"
+!
+
+classListSlaveMode
+    classListSlaveMode isNil ifTrue:[
+	classListSlaveMode := false asValue.
+    ].
+    ^ classListSlaveMode
+
+    "Created: / 18.2.2000 / 00:30:44 / cg"
+    "Modified: / 18.2.2000 / 02:56:21 / cg"
+!
+
+nameSpaceListSlaveMode
+    namespaceListSlaveMode isNil ifTrue:[
+	namespaceListSlaveMode := true asValue.
+    ].
+    ^ namespaceListSlaveMode
+
+    "Created: / 18.2.2000 / 00:30:44 / cg"
+    "Modified: / 18.2.2000 / 02:56:21 / cg"
+!
+
+projectListSlaveMode
+    projectListSlaveMode isNil ifTrue:[
+	projectListSlaveMode := true asValue.
+    ].
+    ^ projectListSlaveMode
+
+    "Created: / 18.2.2000 / 00:30:44 / cg"
+    "Modified: / 18.2.2000 / 02:56:21 / cg"
+! !
+
+!OrganizerCanvas methodsFor:'aspects-trigger'!
+
+classCategoryListUpdateTrigger
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    classCategoryListUpdateTrigger isNil ifTrue:[
+	classCategoryListUpdateTrigger := TriggerValue new.
+"/        classCategoryListUpdateTrigger addDependent:self.
+    ].
+    ^ classCategoryListUpdateTrigger.
+
+    "Created: / 18.2.2000 / 02:05:14 / cg"
+    "Modified: / 18.2.2000 / 02:14:04 / cg"
+!
+
+classHierarchyUpdateTrigger
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    |holder|
+
+    (holder := builder bindingAt:#classHierarchyUpdateTrigger) isNil ifTrue:[
+	holder := TriggerValue new.
+	builder aspectAt:#classHierarchyUpdateTrigger put:holder.
+"/        holder addDependent:self.
+    ].
+    ^ holder.
+
+    "Created: / 18.2.2000 / 02:05:14 / cg"
+    "Modified: / 18.2.2000 / 02:13:57 / cg"
+!
+
+classListUpdateTrigger
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    classListUpdateTrigger isNil ifTrue:[
+	classListUpdateTrigger := TriggerValue new.
+"/        classListUpdateTrigger addDependent:self.
+    ].
+    ^ classListUpdateTrigger.
+
+    "Created: / 18.2.2000 / 02:05:14 / cg"
+    "Modified: / 18.2.2000 / 02:14:08 / cg"
+!
+
+forceClassCategoryGeneratorTrigger
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    |holder|
+
+    (holder := builder bindingAt:#forceClassCategoryGeneratorTrigger) isNil ifTrue:[
+	holder := TriggerValue new.
+	builder aspectAt:#forceClassCategoryGeneratorTrigger put:holder.
+"/        holder addDependent:self.
+    ].
+    ^ holder.
+
+    "Created: / 18.2.2000 / 02:49:43 / cg"
+    "Modified: / 18.2.2000 / 02:52:30 / cg"
+!
+
+forceClassHierarchyGeneratorTrigger
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    |holder|
+
+    (holder := builder bindingAt:#forceClassHierarchyGeneratorTrigger) isNil ifTrue:[
+	holder := TriggerValue new.
+	builder aspectAt:#forceClassHierarchyGeneratorTrigger put:holder.
+"/        holder addDependent:self.
+    ].
+    ^ holder.
+
+    "Created: / 18.2.2000 / 02:49:43 / cg"
+    "Modified: / 18.2.2000 / 02:52:32 / cg"
+!
+
+forceNamespaceGeneratorTrigger
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    |holder|
+
+    (holder := builder bindingAt:#forceNamespaceGeneratorTrigger) isNil ifTrue:[
+	holder := TriggerValue new.
+	builder aspectAt:#forceNamespaceGeneratorTrigger put:holder.
+"/        holder addDependent:self.
+    ].
+    ^ holder.
+
+    "Created: / 18.2.2000 / 02:49:43 / cg"
+    "Modified: / 18.2.2000 / 02:52:35 / cg"
+!
+
+forceProjectGeneratorTrigger
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    |holder|
+
+    (holder := builder bindingAt:#forceProjectGeneratorTrigger) isNil ifTrue:[
+	holder := TriggerValue new.
+	builder aspectAt:#forceProjectGeneratorTrigger put:holder.
+"/        holder addDependent:self.
+    ].
+    ^ holder.
+
+    "Created: / 18.2.2000 / 02:49:43 / cg"
+    "Modified: / 18.2.2000 / 02:52:38 / cg"
+!
+
+nameSpaceListUpdateTrigger
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    |holder|
+
+    (holder := builder bindingAt:#nameSpaceListUpdateTrigger) isNil ifTrue:[
+	holder := TriggerValue new.
+	builder aspectAt:#nameSpaceListUpdateTrigger put:holder.
+"/        holder addDependent:self.
+    ].
+    ^ holder.
+
+    "Created: / 18.2.2000 / 02:05:14 / cg"
+    "Modified: / 18.2.2000 / 02:14:12 / cg"
+!
+
+projectListUpdateTrigger
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+
+    |holder|
+
+    (holder := builder bindingAt:#projectListUpdateTrigger) isNil ifTrue:[
+	holder := TriggerValue new.
+	builder aspectAt:#projectListUpdateTrigger put:holder.
+"/        holder addDependent:self.
+    ].
+    ^ holder.
+
+    "Created: / 18.2.2000 / 02:05:14 / cg"
+    "Modified: / 18.2.2000 / 02:14:15 / cg"
+! !
+
+!OrganizerCanvas methodsFor:'aspects-visibility'!
+
+categoryListShown
+    categoryListShown isNil ifTrue:[
+        categoryListShown := BlockValue 
+                        with:[:v | v == OrganizerCanvas organizerModeCategory]
+                        argument:(self organizerMode).
+    ].
+    ^ categoryListShown
+
+    "Modified: / 08-03-2007 / 23:01:48 / cg"
+!
+
+categoryNameSpaceAndProjectPanelShown
+    |holder|
+
+    (holder := builder bindingAt:#categoryNameSpaceAndProjectPanelShown) isNil ifTrue:[
+        holder := BlockValue 
+                        with:[:v1 :v2 :v3 | (v1 or:[v2 or:[v3]]) not]
+                        argument:(self classHierarchyShown)
+                        argument:(self classInheritanceShown)
+                        argument:(self packageDiagramShown).
+        builder aspectAt:#categoryNameSpaceAndProjectPanelShown put: holder
+    ].
+    ^ holder
+
+    "Modified: / 08-03-2007 / 23:01:57 / cg"
+!
+
+classHierarchyNotShown
+    |holder|
+
+    (holder := builder bindingAt:#classHierarchyNotShown) isNil ifTrue:[
+        holder := BlockValue 
+                        with:[:v | |org|
+                                   org := v.
+                                   org ~~ OrganizerCanvas organizerModeHierarchy
+                                   and:[org ~~ OrganizerCanvas organizerModeClassHierarchy
+                                   and:[org ~~ OrganizerCanvas organizerModeClassInheritance]]]
+                        argument:(self organizerMode).
+        builder aspectAt:#classHierarchyNotShown put: holder
+    ].
+    ^ holder
+
+    "Created: / 18-02-2000 / 00:36:38 / cg"
+    "Modified: / 08-03-2007 / 23:01:51 / cg"
+!
+
+classHierarchyOrInheritanceNotShown
+    <resource: #obsolete>
+
+    |holder|
+
+    (holder := builder bindingAt:#classHierarchyOrInheritanceNotShown) isNil ifTrue:[
+        holder := BlockValue 
+                        with:[:v1 :v2 | (v1 or:[v2]) not]
+                        argument:(self classHierarchyShown)
+                        argument:(self classInheritanceShown).
+        builder aspectAt:#classHierarchyOrInheritanceNotShown put: holder
+    ].
+    ^ holder
+
+    "Modified: / 08-03-2007 / 23:01:57 / cg"
+!
+
+classHierarchyOrInheritanceShown
+    |holder|
+
+    (holder := builder bindingAt:#classHierarchyOrInheritanceShown) isNil ifTrue:[
+        holder := BlockValue 
+                        with:[:v1 :v2 | v1 or:[v2] ]
+                        argument:(self classHierarchyShown)
+                        argument:(self classInheritanceShown).
+        builder aspectAt:#classHierarchyOrInheritanceShown put: holder
+    ].
+    ^ holder
+
+    "Modified: / 08-03-2007 / 23:02:03 / cg"
+!
+
+classHierarchyShown
+    |holder|
+
+    (holder := builder bindingAt:#classHierarchyShown) isNil ifTrue:[
+        holder := BlockValue 
+                        with:[:v | |org|
+                                   org := v.
+                                   org == OrganizerCanvas organizerModeHierarchy
+                                   or:[org == OrganizerCanvas organizerModeClassHierarchy]]
+                        argument:(self organizerMode).
+        builder aspectAt:#classHierarchyShown put: holder
+    ].
+    ^ holder
+
+    "Modified: / 08-03-2007 / 23:02:07 / cg"
+!
+
+classInheritanceShown
+    |holder|
+
+    (holder := builder bindingAt:#classInheritanceShown) isNil ifTrue:[
+        holder := BlockValue 
+                        with:[:v | v == OrganizerCanvas organizerModeClassInheritance]
+                        argument:(self organizerMode).
+        builder aspectAt:#classInheritanceShown put: holder
+    ].
+    ^ holder
+
+    "Created: / 24-02-2000 / 13:23:01 / cg"
+    "Modified: / 08-03-2007 / 23:02:09 / cg"
+!
+
+classListShown
+    |holder|
+
+    (holder := builder bindingAt:#classListShown) isNil ifTrue:[
+        holder := BlockValue 
+                        with:[:v | v ~~ OrganizerCanvas organizerModeHierarchy]
+                        argument:(self organizerMode).
+        builder aspectAt:#classListShown put: holder
+    ].
+    ^ holder
+
+    "Modified: / 08-03-2007 / 23:02:12 / cg"
+!
+
+nameSpaceListShown
+    |holder|
+
+    (holder := builder bindingAt:#nameSpaceListShown) isNil ifTrue:[
+        holder := BlockValue 
+                        with:[:v | v == OrganizerCanvas organizerModeNamespace]
+                        argument:(self organizerMode).
+        builder aspectAt:#nameSpaceListShown put: holder
+    ].
+    ^ holder
+
+    "Created: / 18-02-2000 / 00:32:09 / cg"
+    "Modified: / 08-03-2007 / 23:02:15 / cg"
+!
+
+packageDiagramShown
+    |holder|
+
+    (holder := builder bindingAt:#packageDiagramShown) isNil ifTrue:[
+        holder := BlockValue 
+                        with:[:v | |org|
+                                   org := v.
+                                   org == OrganizerCanvas organizerModePackageDiagram]
+                        argument:(self organizerMode).
+        builder aspectAt:#packageDiagramShown put: holder
+    ].
+    ^ holder
+
+    "Modified: / 08-03-2007 / 23:02:07 / cg"
+!
+
+projectListShown
+    |holder|
+
+    (holder := builder bindingAt:#projectListShown) isNil ifTrue:[
+        holder := BlockValue 
+                        with:[:v | v == OrganizerCanvas organizerModeProject]
+                        argument:(self organizerMode).
+        builder aspectAt:#projectListShown put: holder
+    ].
+    ^ holder
+
+    "Created: / 18-02-2000 / 00:32:09 / cg"
+    "Modified: / 08-03-2007 / 23:02:18 / cg"
+! !
+
+!OrganizerCanvas methodsFor:'change & update'!
+
+diagramClassSelectionChanged
+    |graphApp classes|
+
+    graphApp := self diagramApplicationModelHolder value.
+
+    classes := graphApp selectedClassesHolder value.
+    self classGeneratorHolder value:classes.
+    self classList value:classes.
+    self selectedClasses value:classes.
+
+"/    self outGeneratorHolder value:classes.
+!
+
+diagramPackageSelectionChanged
+    |package|
+
+    self packageDiagramShown value ifTrue:[
+        package := self diagramPackageSelection value.
+        self withWaitCursorDo:[
+            self diagramApplicationModelHolder value
+                packages:(Array with:package);
+                generateDiagram
+        ]
+    ].
+!
+
+packageFilterChanged
+!
+
+selectedProjectsChanged
+    self updatePackageDiagramView
+!
+
+update:something with:aParameter from:changedObject
+    |orgMode trigger classes selectedClassesHolder selectionValue|
+
+    orgMode := organizerMode value.
+    selectedClassesHolder := self selectedClasses.
+    classes := selectedClassesHolder value copy ? #().
+
+    changedObject == packageFilter ifTrue:[
+        self breakPoint:#cg
+    ].
+
+    changedObject == organizerMode ifTrue:[
+        self classHierarchyListSlaveMode value:true.
+        self classInheritanceListSlaveMode value:true.
+        self classListSlaveMode value:true.
+        self categoryListSlaveMode value:true.
+        self nameSpaceListSlaveMode value:true.
+        self projectListSlaveMode value:true.
+
+        self variableFilter value:nil.
+        self packageFilter value:nil.
+        self nameSpaceFilter value:nil.
+
+        "/ must update the packageFilter
+        orgMode == OrganizerCanvas organizerModeProject ifTrue:[
+            self selectedProjects value:(classes collect:[:each | each package]) asSet.
+            packageFilter setValue:(self selectedProjects value)
+        ] ifFalse:[
+            packageFilter value:nil
+        ].
+
+        self updateOrganizationFromChangedClass.
+
+        orgMode == OrganizerCanvas organizerModeCategory ifTrue:[
+            trigger := self forceClassCategoryGeneratorTrigger.
+        ] ifFalse:[ orgMode == OrganizerCanvas organizerModeHierarchy ifTrue:[
+            trigger := self forceClassHierarchyGeneratorTrigger.
+        ] ifFalse:[ orgMode == OrganizerCanvas organizerModeNamespace ifTrue:[
+            trigger := self forceNamespaceGeneratorTrigger
+        ] ifFalse:[ orgMode == OrganizerCanvas organizerModeProject ifTrue:[
+            trigger := self forceProjectGeneratorTrigger.
+        ] ifFalse:[ ((orgMode == OrganizerCanvas organizerModeClassHierarchy) 
+                  or:[orgMode == OrganizerCanvas organizerModeClassInheritance]) ifTrue:[
+"/            trigger := self forceClassHierarchyGeneratorTrigger.
+        ]]]]].
+
+        trigger notNil ifTrue:[
+            trigger value:true
+        ].
+        "/ selectedClassesHolder value:classes.
+
+        (orgMode == OrganizerCanvas organizerModeClassHierarchy or:[orgMode == OrganizerCanvas organizerModeHierarchy]) ifTrue:[
+            classHierarchyListSlaveMode value:false.
+        ].
+        (orgMode == OrganizerCanvas organizerModeClassInheritance) ifTrue:[
+            classInheritanceListSlaveMode value:false.
+        ].
+        (orgMode == OrganizerCanvas organizerModeClassInheritance 
+        or:[orgMode == OrganizerCanvas organizerModeClassHierarchy 
+        or:[orgMode == OrganizerCanvas organizerModeHierarchy]])
+        ifFalse:[
+            classListSlaveMode value:false.
+        ].
+        (orgMode == OrganizerCanvas organizerModeCategory) ifTrue:[
+            categoryListSlaveMode value:false.
+        ].
+        (orgMode == OrganizerCanvas organizerModeNamespace) ifTrue:[
+            namespaceListSlaveMode value:false.
+        ].
+        (orgMode == OrganizerCanvas organizerModeProject) ifTrue:[
+            projectListSlaveMode value:false.
+        ].
+        (orgMode == OrganizerCanvas organizerModePackageDiagram) ifTrue:[
+            "/
+            self selectedProjects value isEmptyOrNil ifTrue:[
+                self updateProjectSelectionFromClasses.
+            ].
+        ].
+
+        ^ self
+    ].
+
+    changedObject == selectedClasses ifTrue:[
+        selectedClasses value size ~~ 0 ifTrue:[
+            (orgMode ~~ OrganizerCanvas organizerModeClassHierarchy
+            and:[ orgMode ~~ OrganizerCanvas organizerModeProject
+            and:[ orgMode ~~ OrganizerCanvas organizerModePackageDiagram ]]) ifTrue:[
+                self updateOrganizationFromChangedClass.
+            ].
+        ]
+    ].
+"/    changedObject == selectedNamespaces ifTrue:[
+"/ self halt.
+"/    ].
+    changedObject == nameSpaceFilterSelection ifTrue:[
+        selectionValue := nameSpaceFilterSelection value.
+        selectionValue size > 1 ifTrue:[
+            nameSpaceFilterSelection value:(OrderedCollection with:selectionValue first).
+            selectionValue := nameSpaceFilterSelection value.
+        ].
+        self selectedNamespaces value:selectionValue.
+        selectionValue size > 0 ifTrue:[
+            self nameSpaceFilterSelectedNameSpace setValue:selectionValue first.
+            self updateNameSpaceLabel.
+        ].
+        self nameSpaceFilter value: selectionValue.
+    ].
+    changedObject == self selectedProjects ifTrue:[
+        self breakPoint:#cg.
+        self selectedProjectsChanged.
+    ].
+    changedObject == self selectedDiagramProject ifTrue:[
+        self breakPoint:#cg.
+        self selectedProjects value:(Array with:self selectedDiagramProject value).
+        self selectedProjectsChanged.
+        ^ self
+    ].
+
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 27-04-2010 / 16:58:31 / cg"
+!
+
+updateCategorySelectionFromClasses
+    |allEntry changedEntry oldSelectedCategories categories|
+
+    allEntry := self class nameListEntryForALL.
+    changedEntry := self class nameListEntryForChanged.
+
+    categories := Set new.
+    oldSelectedCategories := self selectedCategories value.
+
+    "/ category-selection feedBack;
+    "/ if '* all *' was in its selection, keep it (to avoid updating the classList)
+    oldSelectedCategories size > 0 ifTrue:[
+        (oldSelectedCategories includes:allEntry) ifTrue:[
+            categories add:allEntry
+        ].
+        oldSelectedCategories do:[:entry | 
+            (NavigatorModel isPseudoCategory:entry) ifTrue:[
+                (oldSelectedCategories size == 1) ifTrue:[
+                    "/ don't switch to category
+                    ^ self
+                ].
+                categories add:entry
+            ].
+        ].
+    ].
+
+    (self selectedClasses value ? #()) do:[:eachSelectedClass |
+        |cat cls|
+
+        cls := eachSelectedClass theNonMetaclass.
+        cls isPrivate ifTrue:[
+            cls := cls topOwningClass.
+        ].
+        cat := cls category.   
+        categories add:cat.
+    ].
+
+    (categories conform:[:each | (self selectedCategories value ? #()) includes:each]) ifFalse:[
+        self selectedCategories value:categories.
+    ].
+
+    "Modified: / 18.2.2000 / 13:17:36 / cg"
+!
+
+updateNamespaceSelectionFromClasses
+    "invoked when switching to the namespace-organization;
+     update selected namespaces from the set of selected classes"
+
+    |allEntry classes selectedNamespaces oldSelectedNamespaces|
+
+    allEntry := self class nameListEntryForALL.
+
+    classes := self selectedClasses value.
+    classes isEmptyOrNil ifTrue:[
+        |categories includesAll|
+
+        categories := self selectedCategories value.
+        categories notEmptyOrNil ifTrue:[
+            includesAll := categories includes:BrowserList nameListEntryForALL.
+            classes :=  Smalltalk allClassesForWhich:[:aClass |
+                (includesAll or:[categories includes:aClass category]).
+            ].
+        ].
+    ].
+    classes notEmptyOrNil ifTrue:[
+        selectedNamespaces := self selectedNamespaces value.
+        oldSelectedNamespaces := (selectedNamespaces ? #()) asSet.
+        selectedNamespaces := Set new.
+
+        "/ namespace-selection feedBack;
+        "/ if '* all *' was in its selection, keep it (to avoid updating the classList)
+"/        (oldSelectedNamespaces includes:allEntry) ifTrue:[
+"/            selectedNamespaces add:allEntry.
+"/        ].
+        selectedNamespaces addAll:(classes collect:[:eachClass | eachClass theNonMetaclass topNameSpace name.]).
+
+        classes := classes copy.
+        "/ selectedNamespaces ~= oldSelectedNamespaces ifTrue:[
+            self selectedNamespaces value:selectedNamespaces.
+        "/ ].
+
+"/        (classes ~= self selectedClasses) value ifTrue:[self halt:'oops'].
+    ].
+
+    "Modified: / 10-08-2006 / 16:04:55 / cg"
+!
+
+updateOrganizationFromChangedClass
+    |orgMode selectedClassesHolder selectedClasses classHierarchyTopClassHolder commonSuperClass|
+
+    orgMode := organizerMode value.
+    selectedClassesHolder := self selectedClasses.
+    selectedClasses := selectedClassesHolder value.
+    classHierarchyTopClassHolder := self classHierarchyTopClass.
+
+    orgMode == OrganizerCanvas organizerModeCategory ifTrue:[
+        self updateCategorySelectionFromClasses.
+        ^ self.
+    ].
+    orgMode == OrganizerCanvas organizerModeNamespace ifTrue:[
+        self updateNamespaceSelectionFromClasses.
+        ^ self.
+    ].
+    orgMode == OrganizerCanvas organizerModeProject ifTrue:[
+        self updateProjectSelectionFromClasses.
+        ^ self.
+    ].
+    orgMode == OrganizerCanvas organizerModeHierarchy ifTrue:[
+        classHierarchyTopClassHolder value:nil.
+        ^ self.
+    ].
+    (orgMode == OrganizerCanvas organizerModeClassHierarchy) ifTrue:[
+"/        (selectedClasses size == 1) ifTrue:[
+"/            self classHierarchyTopClass value:selectedClasses first
+"/        ].
+        "/ classHierarchyTopClassHolder value isNil ifTrue:[
+        selectedClasses size > 0 ifTrue:[
+            commonSuperClass := selectedClasses 
+                                    inject:selectedClasses first 
+                                    into:[:commonSuperClass :thisClass | commonSuperClass commonSuperclass:thisClass ].
+            classHierarchyTopClassHolder value:commonSuperClass "selectedClasses first".
+        ].
+        "/ ].
+        ^ self.
+    ].
+    (orgMode == OrganizerCanvas organizerModeClassInheritance) ifTrue:[
+        classHierarchyTopClassHolder value:
+            ((selectedClasses size == 1) ifTrue:[selectedClasses first] ifFalse:nil).
+        ^ self.
+    ].
+    orgMode == OrganizerCanvas organizerModePackageDiagram ifTrue:[
+        self updatePackageDiagramView.
+    ].
+!
+
+updatePackageDiagramView
+    |diagramApp packages selectedClasses|
+
+    self packageDiagramShown computeValue ifTrue:[
+        diagramApp := self diagramApplicationModelHolder value.
+        selectedClasses := self selectedClasses value ? #().
+
+        packages := self selectedProjects value ? #().
+        packages isEmpty ifTrue:[
+            selectedClasses notEmptyOrNil ifTrue:[
+                packages := (selectedClasses collect:[:cls | cls package]) asSet asOrderedCollection.
+            ].
+        ].
+
+        self selectedDiagramProject value:(packages firstIfEmpty:nil) withoutNotifying:self.
+        diagramApp notNil ifTrue:[
+            self withWaitCursorDo:[
+                diagramApp
+                    packages:packages;
+                    generateDiagram;
+                    selectClasses:selectedClasses.
+            ]
+        ]
+    ].
+
+    "Modified: / 28-04-2010 / 08:16:55 / cg"
+!
+
+updateProjectSelectionFromClasses
+    "invoked when switching to the projects-organization;
+     update selected projects from the set of selected classes"
+
+    |allEntry classes selectedProjects oldSelectedProjects categories|
+
+    allEntry := self class nameListEntryForALL.
+
+    selectedProjects := self selectedProjects value.
+    oldSelectedProjects := (selectedProjects ? #()) asSet.
+
+    variableFilter value:nil.
+    packageFilter value:nil.
+    nameSpaceFilter value:nil.
+
+    selectedProjects := Set new.
+    "/ project-selection feedBack;
+    "/ if '* all *' was in its selection, keep it (to avoid updating the classList)
+    (oldSelectedProjects size > 0 
+    and:[oldSelectedProjects includes:allEntry]) 
+    ifTrue:[
+        selectedProjects add:allEntry.
+    ].
+
+    classes := self selectedClasses value.
+    classes isEmptyOrNil ifTrue:[
+        classes := OrderedCollection new.
+        categories := self selectedCategories value.
+        categories notEmptyOrNil ifTrue:[
+            categories do:[:eachCategory |
+                classes addAll:(Smalltalk allClassesInCategory:eachCategory)
+            ].
+        ].
+    ].
+    classes notEmptyOrNil ifTrue:[
+        classes do:[:eachClass |
+            selectedProjects add:(eachClass package).
+            eachClass instAndClassSelectorsAndMethodsDo:[:sel :mthd |
+                selectedProjects add:(mthd package).
+            ]
+        ].
+    ].
+
+    selectedProjects ~= oldSelectedProjects ifTrue:[
+        self selectedProjects value:selectedProjects.
+    ].
+
+    "Created: / 26-02-2000 / 01:09:13 / cg"
+    "Modified: / 22-02-2007 / 13:52:21 / cg"
+! !
+
+!OrganizerCanvas methodsFor:'forwarder operations'!
+
+copyMethods:methods toClass:cls
+    self masterApplication copyMethods:methods toClass:cls.
+!
+
+moveClasses:classes toCategory:cat
+    self masterApplication moveClasses:classes toCategory:cat
+!
+
+moveClasses:classes toProject:cat
+    self masterApplication moveClasses:classes toProject:cat
+!
+
+moveMethods:methods toClass:cls
+    self masterApplication moveMethods:methods toClass:cls.
+!
+
+moveMethods:methods toProject:package
+    self masterApplication moveMethods:methods toProject:package.
+! !
+
+!OrganizerCanvas methodsFor:'help specs'!
+
+flyByHelpTextFor:aComponent
+    (aComponent isSameOrComponentOf:(builder componentAt:#NameSpaceFilterComboBox)) ifTrue:[
+        ^ resources string:'Namespace filter'
+    ].
+    ^ super flyByHelpTextFor:aComponent
+! !
+
+!OrganizerCanvas methodsFor:'initialize-release'!
+
+release
+    super release.
+
+    nameSpaceFilterSelection removeDependent:self.
+    organizerMode removeDependent:self.
+    selectedClasses removeDependent:self.
+! !
+
+!OrganizerCanvas methodsFor:'private'!
+
+nameSpaceListWidgetWasBuilt:widget
+    |list|
+
+    "/ sigh - cannot do this in the nameSpaceListWidget method,
+    "/ because the GUI is build late (when the menu is popped up the first time)
+    widget application immediateUpdate:true.
+    list := widget builder componentAt:#List.
+    list autoHideHorizontalScrollBar:true.
+! !
+
+!OrganizerCanvas methodsFor:'subapplications'!
+
+diagramApplicationModelHolder
+    |holder graphApp|
+
+    (holder := builder bindingAt:#diagramApplicationModelHolder) isNil ifTrue:[
+        OOM::MetricVisualizer notNil ifTrue:[
+            graphApp := OOM::MetricVisualizer new.
+            graphApp masterApplication:self.
+            graphApp selectedClassesHolder onChangeSend:#diagramClassSelectionChanged to:self.
+            graphApp showShortClassInfo:true.
+            graphApp ignoreAutoloadedClasses:true.
+            graphApp askForAutoload:false.
+
+            holder := ValueHolder new.
+            holder value:graphApp.
+            builder aspectAt:#diagramApplicationModelHolder put: holder.
+
+            self packageFilter onChangeSend:#packageFilterChanged to:self.
+        ].
+    ].
+    ^ holder
+! !
+
+!OrganizerCanvas class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_OrganizerCanvas.st,v 1.50 2012/11/03 11:43:46 cg Exp $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_OrganizerCanvas.st,v 1.50 2012/11/03 11:43:46 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__OrganizerCanvas.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+! !
--- a/Tools__Profiler.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__Profiler.st	Wed Jan 30 11:15:09 2013 +0000
@@ -89,6 +89,7 @@
 "
 ! !
 
+
 !Profiler class methodsFor:'instance creation'!
 
 readStatisticsFrom: stream
@@ -98,6 +99,7 @@
     "Created: / 24-11-2007 / 09:24:12 / janfrog"
 ! !
 
+
 !Profiler class methodsFor:'messageTally compatible interface'!
 
 spyDetailedOn: aBlock
@@ -126,6 +128,7 @@
     ^ profiler retVal
 ! !
 
+
 !Profiler class methodsFor:'profiling'!
 
 profile: aBlock
@@ -175,6 +178,7 @@
     "Created: / 24-11-2007 / 08:25:37 / janfrog"
 ! !
 
+
 !Profiler methodsFor:'I/O'!
 
 storeStatisticsOn: stream
@@ -184,6 +188,7 @@
     "Created: / 24-11-2007 / 09:23:11 / janfrog"
 ! !
 
+
 !Profiler methodsFor:'accessing'!
 
 computationTime
@@ -214,6 +219,7 @@
     "Created: / 24-11-2007 / 09:01:12 / janfrog"
 ! !
 
+
 !Profiler methodsFor:'profiling'!
 
 profileOn: aBlock interval: interval
@@ -225,6 +231,7 @@
     "Created: / 24-11-2007 / 08:21:28 / janfrog"
 ! !
 
+
 !Profiler class methodsFor:'documentation'!
 
 version
@@ -238,3 +245,4 @@
 version_SVN
     ^ '§Id: Tools__Profiler.st 7486 2009-10-26 22:06:24Z vranyj1 §'
 ! !
+
--- a/Tools__ProfilerInfoBuilder.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ProfilerInfoBuilder.st	Wed Jan 30 11:15:09 2013 +0000
@@ -140,7 +140,7 @@
 !ProfilerInfoBuilder::MethodList class methodsFor:'documentation'!
 
 version
-    ^'$Id: Tools__ProfilerInfoBuilder.st,v 1.2 2011-07-03 17:46:45 cg Exp $'
+    ^'$Id: Tools__ProfilerInfoBuilder.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
 
 !ProfilerInfoBuilder::MethodList methodsFor:'accessing'!
@@ -189,9 +189,9 @@
 !ProfilerInfoBuilder class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ProfilerInfoBuilder.st,v 1.2 2011-07-03 17:46:45 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__ProfilerInfoBuilder.st,v 1.2 2011/07/03 17:46:45 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: Tools__ProfilerInfoBuilder.st 7486 2009-10-26 22:06:24Z vranyj1 §'
-! !
+    ^ '$Id: Tools__ProfilerInfoBuilder.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
\ No newline at end of file
--- a/Tools__ProfilerInfoItem.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ProfilerInfoItem.st	Wed Jan 30 11:15:09 2013 +0000
@@ -64,6 +64,7 @@
 "
 ! !
 
+
 !ProfilerInfoItem methodsFor:'accessing'!
 
 isBlock
@@ -172,6 +173,7 @@
     "Created: / 01-12-2007 / 20:47:09 / janfrog"
 ! !
 
+
 !ProfilerInfoItem methodsFor:'accessing - private'!
 
 setChildren: collection
@@ -182,6 +184,7 @@
     "Created: / 01-12-2007 / 20:43:36 / janfrog"
 ! !
 
+
 !ProfilerInfoItem methodsFor:'comparing'!
 
 = anotherMethodInfo
@@ -200,6 +203,7 @@
     "Created: / 01-12-2007 / 21:17:01 / janfrog"
 ! !
 
+
 !ProfilerInfoItem class methodsFor:'documentation'!
 
 version_CVS
@@ -209,3 +213,4 @@
 version_SVN
     ^ '§Id: Tools__ProfilerInfoItem.st 7486 2009-10-26 22:06:24Z vranyj1 §'
 ! !
+
--- a/Tools__ProjectCheckerBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ProjectCheckerBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -54,6 +54,7 @@
 "
 ! !
 
+
 !ProjectCheckerBrowser class methodsFor:'interface specs'!
 
 windowSpec
@@ -176,6 +177,7 @@
       )
 ! !
 
+
 !ProjectCheckerBrowser methodsFor:'accessing'!
 
 problemList: problems
@@ -199,6 +201,7 @@
     "Created: / 13-02-2012 / 17:03:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ProjectCheckerBrowser methodsFor:'actions'!
 
 doCheckAgain
@@ -242,6 +245,7 @@
     "Created: / 26-07-2012 / 10:06:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ProjectCheckerBrowser methodsFor:'aspects'!
 
 infoPanel
@@ -270,22 +274,16 @@
 problemListHolder
     <resource: #uiAspect>
 
-    "automatically generated by UIPainter ..."
 
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-    "*** (and replace this comment by something more useful ;-)"
 
     problemListHolder isNil ifTrue:[
-        problemListHolder := ValueHolder new.
-"/ if your app needs to be notified of changes, uncomment one of the lines below:
-"/       problemListHolder addDependent:self.
-"/       problemListHolder onChangeSend:#problemListHolderChanged to:self.
+"/        problemListHolder := ValueHolder new.
+        problemListHolder := AspectAdaptor forAspect: #value.
+        problemListHolder subjectSendsUpdates: true.
     ].
     ^ problemListHolder.
 
-    "Modified: / 13-02-2012 / 18:47:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 13-09-2012 / 17:26:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 problemSelectionHolder
@@ -336,6 +334,7 @@
     ].
 ! !
 
+
 !ProjectCheckerBrowser methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
@@ -352,11 +351,12 @@
 
 updateFromProjectCheckerHolder
 
-    self problemListHolder value: self projectChecker problems.
+    self problemListHolder subject: self projectChecker problems.
 
-    "Modified: / 25-07-2012 / 18:01:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 13-09-2012 / 17:34:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ProjectCheckerBrowser methodsFor:'hooks'!
 
 setupHTMLView:aView
@@ -367,6 +367,7 @@
     "Created: / 23-02-2012 / 14:04:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !ProjectCheckerBrowser class methodsFor:'documentation'!
 
 version
@@ -380,3 +381,4 @@
 version_SVN
     ^ '§Id: Tools__ProjectCheckerBrowser.st 8024 2012-07-26 10:10:37Z vranyj1 §'
 ! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__ProjectList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,977 @@
+"
+ COPYRIGHT (c) 2000 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 }"
+
+Tools::BrowserList subclass:#ProjectList
+	instanceVariableNames:'projectList projectNameList selectionIndexHolder worker
+		workerQueue includedPseudoEntryForChanged'
+	classVariableNames:'AdditionalEmptyProjects HideModules'
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+!ProjectList class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2000 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.
+"
+!
+
+documentation
+"
+    I implement the project list in the new system browser
+"
+! !
+
+!ProjectList class methodsFor:'interface specs'!
+
+singleProjectWindowSpec
+    "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:ClassCategoryList andSelector:#singleCategoryWindowSpec
+     ClassCategoryList new openInterface:#singleCategoryWindowSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+	#name: #singleProjectWindowSpec
+	#window: 
+       #(#WindowSpec
+	  #label: 'ProjectList'
+	  #name: 'ProjectList'
+	  #min: #(#Point 0 0)
+	  #max: #(#Point 1024 721)
+	  #bounds: #(#Rectangle 218 175 518 475)
+	)
+	#component: 
+       #(#SpecCollection
+	  #collection: #(
+	   #(#LabelSpec
+	      #label: 'ProjectName'
+	      #name: 'ProjectLabel'
+	      #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+	      #translateLabel: true
+	      #labelChannel: #projectLabelHolder
+	      #menu: #menuHolder
+	    )
+	   )
+
+	)
+      )
+!
+
+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:ProjectList andSelector:#windowSpec
+     ProjectList new openInterface:#windowSpec
+     ProjectList open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'ProjectList'
+          #name: 'ProjectList'
+          #min: #(#Point 0 0)
+          #bounds: #(#Rectangle 13 23 313 323)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #(
+           #(#SequenceViewSpec
+              #name: 'List'
+              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              #tabable: true
+              #model: #selectionIndexHolder
+              #menu: #menuHolder
+              #hasHorizontalScrollBar: true
+              #hasVerticalScrollBar: true
+              #miniScrollerHorizontal: true
+              #isMultiSelect: true
+              #valueChangeSelector: #selectionChangedByClick
+              #useIndex: true
+              #sequenceList: #projectNameList
+              #doubleClickChannel: #doubleClickChannel
+              #properties: 
+             #(#PropertyListDictionary
+                #dragArgument: nil
+                #dropArgument: nil
+                #canDropSelector: #canDropContext:
+                #dropSelector: #doDropContext:
+              )
+            )
+           )
+
+        )
+      )
+
+    "Created: / 17.2.2000 / 23:45:47 / cg"
+    "Modified: / 17.2.2000 / 23:47:53 / cg"
+! !
+
+!ProjectList class methodsFor:'queries-plugin'!
+
+aspectSelectors
+    ^ #( 
+	#(#doubleClickChannel #action )
+	immediateUpdate 
+	selectedProjects 
+	menuHolder 
+	outGeneratorHolder 
+	inGeneratorHolder 
+	selectionChangeCondition
+	updateTrigger
+	forceGeneratorTrigger
+	hideUnloadedClasses
+	organizerMode
+	slaveMode
+       )
+
+    "Created: / 17.2.2000 / 23:46:18 / cg"
+    "Modified: / 25.2.2000 / 22:32:10 / cg"
+! !
+
+!ProjectList methodsFor:'accessing'!
+
+includedPseudoEntryForChanged:something
+    includedPseudoEntryForChanged := something.
+! !
+
+!ProjectList methodsFor:'aspects'!
+
+itemList
+    ^ self projectList value
+!
+
+projectLabelHolder
+    ^ self pseudoListLabelHolder
+!
+
+projectList
+    projectList isNil ifTrue:[
+	projectList := ValueHolder new.
+	projectList addDependent:self.
+    ].
+    ^ projectList
+
+    "Created: / 17.2.2000 / 23:39:32 / cg"
+!
+
+projectNameList
+    projectNameList isNil ifTrue:[
+        projectNameList := ValueHolder new.
+        "/ projectNameList addDependent:self.
+    ].
+    ^ projectNameList
+
+    "Created: / 17.2.2000 / 23:39:32 / cg"
+!
+
+selectedProjects
+    ^ self selectionHolder
+
+    "Created: / 17.2.2000 / 23:39:57 / cg"
+!
+
+selectedProjects:aValueHolder
+    ^ self selectionHolder:aValueHolder
+!
+
+selectionIndexHolder
+    selectionIndexHolder isNil ifTrue:[
+        selectionIndexHolder := 0 asValue.
+        selectionIndexHolder addDependent:self.
+    ].
+    ^ selectionIndexHolder
+
+    "Created: / 17.2.2000 / 23:39:32 / cg"
+! !
+
+!ProjectList methodsFor:'change & update'!
+
+delayedUpdate:something with:aParameter from:changedObject
+    |cls sel pkg mthd newSel allIdx|
+
+    self inSlaveModeOrInvisible 
+    "/ (self slaveMode value == true) 
+    ifTrue:[
+        (changedObject == Smalltalk
+        or:[ something == #projectOrganization ]) ifTrue:[ 
+            listValid := false
+        ].
+        ^ self
+    ].
+
+    changedObject == self selectionIndexHolder ifTrue:[
+        listValid ifFalse:[
+             self updateList.
+        ].
+        newSel := changedObject value collect:[:idx | projectList value at:idx].
+        newSel ~= self selectedProjects value ifTrue:[
+            self selectedProjects value:newSel.
+        ].
+        ^ self.
+    ].
+    changedObject == self selectionHolder ifTrue:[
+        listValid ifFalse:[
+             self updateList.
+        ].
+        allIdx := projectList value indexOf:(self class nameListEntryForALL).
+        newSel := changedObject value 
+                        collect:[:val | |i|
+                                        i := projectList value indexOf:val.
+                                        i == 0 ifTrue:[allIdx] ifFalse:[i]]
+                        thenSelect:[:idx | idx ~~ 0].
+        newSel ~= self selectionIndexHolder value ifTrue:[
+            self selectionIndexHolder value:newSel
+        ].
+    ].
+
+    changedObject == slaveMode ifTrue:[
+        listValid ~~ true ifTrue:[
+            self enqueueDelayedUpdateList
+        ].
+        "/ self invalidateList.
+        ^  self
+    ].
+
+    changedObject == self projectList ifTrue:[
+        ^  self
+    ].
+
+    changedObject == Smalltalk ifTrue:[
+        something == #projectOrganization ifTrue:[
+            self invalidateList.
+            self enqueueDelayedUpdateOutputGenerator.
+            ^ self.
+        ].
+        something == #methodInClass ifTrue:[
+            listValid == true ifTrue:[
+                cls := aParameter at:1.
+                sel := aParameter at:2.
+                mthd := cls compiledMethodAt:sel.
+                mthd notNil ifTrue:[
+                    pkg := mthd package.
+                    (projectList value includes:pkg) ifFalse:[
+                        self invalidateList.
+                    ]
+                ].
+            ].
+            ^ self
+        ].
+
+        (something == #classDefinition
+        or:[something == #newClass]) ifTrue:[
+            listValid == true ifTrue:[
+                cls := aParameter.
+                pkg := cls package.
+                (projectList value includes:pkg) ifFalse:[
+                    self invalidateList.
+                ] ifTrue:[
+                    self enqueueDelayedUpdateOutputGenerator
+                ].
+            ] ifFalse:[
+                self invalidateList
+            ].
+            ^ self
+        ].
+        (something == #classRemove) ifTrue:[
+            listValid == true ifTrue:[
+                cls := aParameter.
+                pkg := cls package.
+            ].
+        ].
+        ^ self
+    ].
+
+"/    something == #projectOrganization ifTrue:[
+"/        aParameter isSymbol ifTrue:[
+"/                    "/ a single method has changed
+"/"/                    sel := aParameter.
+"/"/                    mthd := changedObject compiledMethodAt:sel.
+"/            self enqueueDelayedUpdateOutputGenerator.
+"/        ].
+"/        ^ self
+"/    ].
+
+    changedObject == ChangeSet ifTrue:[
+        self invalidateList.
+        ^ self
+    ].
+
+    (organizerMode notNil
+    and:[organizerMode value ~~ #project]) ifTrue:[
+        self invalidateList.
+        ^ self
+    ].
+    super delayedUpdate:something with:aParameter from:changedObject
+
+    "Created: / 17-02-2000 / 23:41:02 / cg"
+    "Modified: / 17-10-2006 / 18:43:40 / cg"
+!
+
+selectionChangedByClick
+    "we are not interested in that - get another notification
+     via the changed valueHolder"
+
+    "Created: / 17.2.2000 / 23:41:17 / cg"
+!
+
+update:something with:aParameter from:changedObject
+
+    (self builder isNil or:[self window topView realized not]) ifTrue:[
+        self makeIndependent
+    ].
+
+    changedObject == Smalltalk ifTrue:[
+        something == #methodDictionary ifTrue:[
+            ^ self 
+        ].
+        something == #methodTrap ifTrue:[
+            ^ self
+        ].
+        something == #methodCoverageInfo ifTrue:[
+            ^ self
+        ].
+        something == #methodInClass ifTrue:[
+            ^ self
+        ].
+        something == #classVariables ifTrue:[
+            ^ self
+        ].
+        something == #classComment ifTrue:[
+            ^ self.
+        ].
+        something == #methodInClassRemoved ifTrue:[
+            ^ self.
+        ].
+    ].
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 20-07-2011 / 18:54:39 / cg"
+! !
+
+!ProjectList methodsFor:'drag & drop'!
+
+canDropContext:aDropContext
+    |objects package|
+
+    objects := aDropContext dropObjects collect:[:obj | obj theObject].
+
+    (self objectsAreClassFiles:objects) ifTrue:[^ true].
+
+    (objects conform:[:aMethodOrClass | (aMethodOrClass isMethod or:[aMethodOrClass isClass]) ]) ifFalse:[^ false].
+
+    package := self packageAtTargetPointOf:aDropContext.
+    package isNil ifTrue:[^ false].
+
+    (objects contains:[:aMethodOrClass | aMethodOrClass package ~= package]) ifFalse:[^ false].
+    ^ true
+
+    "Modified: / 17-10-2006 / 18:30:32 / cg"
+!
+
+doDropContext:aDropContext
+    |package objects methods classes|
+
+    objects := aDropContext dropObjects collect:[:aDropObject | aDropObject theObject].
+    (objects conform:[:something | (something isMethod or:[something isClass])]) ifTrue:[
+        methods := objects select:[:something | something isMethod].
+        classes := objects select:[:something | something isClass].
+
+        package := self packageAtTargetPointOf:aDropContext.
+        package notNil ifTrue:[
+            methods notEmpty ifTrue:[
+                self masterApplication moveMethods:methods toProject:package.
+            ].
+            classes notEmpty ifTrue:[
+                self masterApplication moveClasses:classes toProject:package.
+            ]
+        ].
+        ^ self
+    ].
+
+    (objects conform:[:something | something isFilename]) ifTrue:[
+        |p|
+
+        p := (self selectedProjects value ? #()) firstIfEmpty:PackageId noProjectID.
+
+        Class packageQuerySignal answer:p
+        do:[
+            self dropClassFiles:objects.
+        ].
+        ^ self
+    ].
+
+    "Modified: / 17-10-2006 / 18:34:43 / cg"
+!
+
+packageAtTargetPointOf:aDropContext
+    |p packageListView lineNr item package dropInfo now 
+     overItem timeOverItem|
+
+    p := aDropContext targetPoint.
+
+    packageListView := aDropContext targetWidget.
+
+    dropInfo := aDropContext dropInfo.
+
+    lineNr := packageListView yVisibleToLineNr:p y.
+    lineNr isNil ifTrue:[^ nil].
+
+    item := projectList value at:lineNr.
+    item isNil ifTrue:[^ nil].
+    item isString ifTrue:[^ item asSymbol].
+
+    item canExpand ifTrue:[
+        now := Timestamp now.
+        overItem := dropInfo at:#overItem ifAbsentPut:item.
+        timeOverItem := dropInfo at:#timeOverItem ifAbsentPut:[now].
+
+        overItem ~~ item ifTrue:[
+            dropInfo at:#timeOverItem put:now.
+            dropInfo at:#overItem put:item.
+            aDropContext passiveAction:[ self packageAtTargetPointOf:aDropContext ].
+        ] ifFalse:[
+            (now millisecondDeltaFrom:timeOverItem) >= (UserPreferences current timeToAutoExpandItemsWhenDraggingOver) ifTrue:[
+                aDropContext saveDraw:[ item expand. packageListView repairDamage ].
+                dropInfo removeKey:#timeOverItem.
+                dropInfo removeKey:#overItem.
+            ] ifFalse:[
+                aDropContext passiveAction:[ self packageAtTargetPointOf:aDropContext ].
+            ]
+        ].
+    ].
+
+    package := item package.
+    package = self class nameListEntryForALL ifTrue:[^ nil].
+    ^ package.
+
+    "Modified: / 18-11-2006 / 16:13:47 / cg"
+! !
+
+!ProjectList methodsFor:'generators'!
+
+makeGenerator
+    "return a generator which enumerates the classes from the selected project(s)."
+
+    |selectedPackages thePackage hideUnloadedClasses showChangedClasses|
+
+    selectedPackages := self selectedProjects value.
+    selectedPackages size == 0 ifTrue:[
+        ^ #()
+    ].
+    selectedPackages := selectedPackages collect:[:p | p string withoutSeparators].
+
+    showChangedClasses := selectedPackages includes:(self class nameListEntryForChanged).
+    hideUnloadedClasses := self hideUnloadedClasses value.
+
+    (selectedPackages includes:(self class nameListEntryForALL)) ifTrue:[
+        hideUnloadedClasses ifTrue:[
+            ^ Iterator on:[:whatToDo |
+                               Smalltalk allClassesDo:[:cls |
+                                   cls isLoaded ifTrue:[
+                                       cls isRealNameSpace ifFalse:[
+                                           whatToDo value:cls
+                                       ]
+                                   ]
+                               ]
+                          ]
+        ].
+        ^ Iterator on:[:whatToDo |
+                           Smalltalk allClassesDo:[:cls |
+                               cls isRealNameSpace ifFalse:[
+                                   whatToDo value:cls
+                               ]
+                           ]
+                      ]
+    ].
+
+    selectedPackages size == 1 ifTrue:[
+        "/ faster common case
+        thePackage := selectedPackages first.
+
+        ^ Iterator on:[:whatToDo | 
+                           |changedClasses|
+
+                           showChangedClasses ifTrue:[ changedClasses := ChangeSet current changedClasses ].
+
+                           Smalltalk allClassesDo:[:cls |
+                               |doInclude|
+
+                               (hideUnloadedClasses not or:[cls isLoaded])
+                               ifTrue:[
+                                   cls isRealNameSpace ifFalse:[
+                                       doInclude := (thePackage = cls package).
+                                       doInclude ifFalse:[
+                                            cls isJavaClass ifFalse:[
+                                               doInclude := (cls methodDictionary contains:[:mthd | thePackage = mthd package])
+                                                            or:[ cls class methodDictionary contains:[:mthd | thePackage = mthd package]].
+                                            ].
+                                            doInclude ifFalse:[
+                                                (showChangedClasses and:[ (changedClasses includes:cls theNonMetaclass)
+                                                                        or:[(changedClasses includes:cls theMetaclass)] ]) ifTrue:[
+                                                    doInclude := true
+                                                ].
+                                            ].
+                                       ].
+                                       doInclude ifTrue:[
+                                           whatToDo value:cls
+                                       ]
+                                   ]
+                               ]
+                           ]
+                      ]
+    ].
+
+    ^ Iterator on:[:whatToDo | 
+                       |changedClasses|
+
+                       showChangedClasses ifTrue:[ changedClasses := ChangeSet current changedClasses ].
+
+                       Smalltalk allClassesDo:[:cls |
+                           |doInclude|
+
+                           (hideUnloadedClasses not or:[cls isLoaded])
+                           ifTrue:[
+                               cls isRealNameSpace ifFalse:[
+                                   doInclude := (selectedPackages includes:cls package).
+                                   doInclude ifFalse:[
+                                        cls isJavaClass ifFalse:[
+                                           doInclude := (cls methodDictionary contains:[:mthd | selectedPackages includes:mthd package])
+                                                        or:[ cls class methodDictionary contains:[:mthd | selectedPackages includes:mthd package]].
+                                           doInclude ifFalse:[
+                                               (showChangedClasses and:[ (changedClasses includes:cls theNonMetaclass)
+                                                                       or:[(changedClasses includes:cls theMetaclass)] ]) ifTrue:[
+                                                   doInclude := true
+                                               ].
+                                           ].
+
+                                        ]
+                                   ].
+                                   doInclude ifTrue:[
+                                       whatToDo value:cls
+                                   ]
+                               ]
+                           ]
+                       ]
+                  ]
+
+    "Created: / 17-02-2000 / 23:49:37 / cg"
+    "Modified: / 10-11-2006 / 17:15:15 / cg"
+! !
+
+!ProjectList methodsFor:'initialize-release'!
+
+commonPostBuild
+    super commonPostBuild.
+    listValid ifFalse:[
+        self enqueueDelayedUpdateList.
+    ]. 
+!
+
+commonPostOpen
+    super commonPostOpen.
+    listValid ifFalse:[
+        self enqueueDelayedUpdateList.
+    ]. 
+!
+
+initialize
+
+    super initialize.
+    workerQueue := SharedQueue new.
+    includedPseudoEntryForChanged := true.
+
+    "Created: / 14-12-2010 / 15:41:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+release
+    super release.
+
+    projectList removeDependent:self.
+! !
+
+!ProjectList methodsFor:'private'!
+
+allShownProjects
+    |hideUnloaded allProjects projectBag generator addWithAllParentPackages hideModules|
+
+    hideModules := HideModules ? true.
+    hideModules := HideModules ? false.
+
+    allProjects := IdentitySet new.
+    projectBag := Bag new.
+
+    inGeneratorHolder isNil ifTrue:[
+        hideUnloaded := self hideUnloadedClasses value.
+
+        addWithAllParentPackages := 
+            [:package |
+                |p parent module|
+
+                (allProjects includes:package) ifFalse:[
+                    allProjects add:package.
+                    (package ~= PackageId noProjectID 
+                    and:[package ~= #private]) ifTrue:[
+                        p := package asPackageId.
+                        [(parent := p parentPackage) notNil] whileTrue:[
+                            allProjects add:parent asSymbol.
+                            p := parent.
+                        ].
+                        hideModules ifFalse:[
+                            (module := p module) notNil ifTrue:[
+                                allProjects add:module asSymbol.
+                            ].
+                        ].
+                    ].
+                ].
+            ].
+
+        Smalltalk allClassesDo:[:eachClass |
+            |cls pkg p classPackage|
+
+            eachClass isRealNameSpace ifFalse:[
+
+                (hideUnloaded not or:[eachClass isLoaded]) ifTrue:[
+                    cls := eachClass theNonMetaclass.
+                    cls isPrivate ifTrue:[
+                        cls := cls topOwningClass
+                    ].
+
+                    classPackage := cls package ? (PackageId noProjectID).
+                    classPackage size > 0 ifTrue:[
+                        classPackage := classPackage asSymbol.
+                        addWithAllParentPackages value:classPackage.
+                        projectBag add:classPackage.
+                    ] ifFalse:[
+                        "/ for now, nameSpaces are not in any package;
+                        "/ this might change. Then, 0-sized packages are
+                        "/ illegal, and the following should be enabled.
+                        "/ self halt
+                    ].
+
+                    cls isJavaClass ifFalse:[
+                        cls instAndClassSelectorsAndMethodsDo:[:sel :mthd |
+                            |mpkg|
+
+                            mpkg := mthd package asSymbol.
+                            mpkg ~~ classPackage ifTrue:[   
+                                (allProjects includes:mpkg) ifFalse:[
+                                    addWithAllParentPackages value:mpkg.
+                                ]
+                            ].
+                        ].
+                    ].
+                ].
+            ].
+        ].
+        allProjects := allProjects asOrderedCollection.
+
+        "/ those are simulated - in ST/X, empty projects do not
+        "/ really exist; however, during browsing, it makes sense.
+        AdditionalEmptyProjects size > 0 ifTrue:[
+            "/ remove those that are present ...
+            AdditionalEmptyProjects := AdditionalEmptyProjects select:[:pkg | (allProjects includes:pkg) not].
+            allProjects addAll:AdditionalEmptyProjects.
+        ].
+    ] ifFalse:[
+        generator := inGeneratorHolder value.
+        generator isNil ifTrue:[^ #() ].
+        generator do:[:prj | allProjects add:prj].
+    ].
+    ^ allProjects asOrderedCollection.
+
+    "Modified: / 16-01-2007 / 15:56:16 / cg"
+!
+
+defaultSlaveModeValue
+    |mode|
+
+    mode := self topApplication perform:#initialOrganizerMode ifNotUnderstood:nil.
+    mode == OrganizerCanvas organizerModeProject ifTrue:[^ false].
+    mode isNil ifTrue:[^ false].
+    ^ true
+!
+
+initialOrganizerMode
+    ^ OrganizerCanvas organizerModeProject
+!
+
+listOfProjects
+    |allProjects numClassesInChangeSet|
+
+    allProjects := self allShownProjects copyAsOrderedCollection.
+    allProjects sort.
+
+    allProjects size == 1 ifTrue:[
+        "/ self projectLabelHolder value:(allProjects first , ' [Project]').
+        self projectLabelHolder value:(LabelAndIcon icon:(self class packageIcon) string:allProjects first).
+    ].
+
+    includedPseudoEntryForChanged ifTrue:[
+        numClassesInChangeSet := ChangeSet current changedClasses size.
+        numClassesInChangeSet > 0 ifTrue:[
+            "/ don't include count - makeGenerator compares against the un-expanded nameListEntry (sigh - need two lists)
+            allProjects addFirst:((self class nameListEntryForChanged "bindWith:numClassesInChangeSet") allItalic).
+        ].
+    ].
+
+    allProjects size > 1 ifTrue:[
+        allProjects addFirst:(self class nameListEntryForALL allItalic).
+    ].
+
+    ^ allProjects
+
+    "Created: / 17-02-2000 / 23:43:05 / cg"
+    "Modified: / 17-08-2006 / 15:08:42 / cg"
+!
+
+makeDependent
+    Smalltalk addDependent:self.
+    ChangeSet addDependent:self.
+!
+
+makeIndependent
+    Smalltalk removeDependent:self.
+    ChangeSet removeDependent:self.
+!
+
+markEntry: rawEntry at: index forBeingManagedBySVN: package
+    ^ rawEntry.
+
+    (ConfigurableFeatures includesFeature: #SubversionSupportEnabled) ifFalse:[^rawEntry].
+    package = PackageId noProjectID ifTrue:[^rawEntry].
+
+"/    workerQueue 
+"/        nextPut:[
+"/            | repo newEntry branch mark|
+"/            "/ use Smalltalk-at to trick the dependency/prerequisite generator
+"/            repo := (Smalltalk at:#SVN::RepositoryManager) current 
+"/                        repositoryForPackage: package onlyFromCache: false.
+"/            repo ifNotNil:[
+"/                mark := ' [SVN]'.
+"/                branch := repo workingCopy branchOrNil.
+"/                branch ifNotNil:[mark := ' [SVN: ', branch path,']'].
+"/                newEntry := rawEntry , (mark asText colorizeAllWith: Color gray).
+"/                self projectNameList value at: index put: newEntry.
+"/                self projectNameList changed.
+"/            ]].
+    ^rawEntry
+
+    "Created: / 14-12-2010 / 15:59:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 15-01-2012 / 13:17:30 / cg"
+    "Modified: / 19-01-2012 / 10:46:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+nameListFor:aProjectList
+    "
+     self basicNew
+         nameListFor:#(
+            'exept:expecco'
+            'exept:expecco/application'
+            'exept:procware'
+            'exept:workflow'
+        )
+
+     self basicNew
+         nameListFor:#(
+            'exept'
+            'exept:expecco'
+            'exept:expecco/application'
+            'exept:procware'
+            'exept:workflow'
+        )
+    "
+
+    |stack projectsWithExtensions projectsWithChangedCode packagesInChangeSet projectNameList|
+
+    stack := OrderedCollection new.
+
+    projectsWithExtensions := Set new.
+    projectsWithChangedCode := Set new.
+
+    packagesInChangeSet := ChangeSet current changedPackages.
+
+    projectNameList := OrderedCollection new.
+    aProjectList do:[:this |
+        |thisC entry rawEntry prefix indent|
+
+        this = self class nameListEntryForALL ifTrue:[
+            entry := this
+        ] ifFalse:[
+            thisC := this asCollectionOfSubstringsSeparatedByAny:':/'.
+            thisC isEmpty ifTrue:[
+                thisC := Array with:(PackageId noProjectID).
+            ].
+
+            [
+                |stackTop|
+
+                stack notEmpty
+                and:[
+                    stackTop := stack last.
+                    (thisC startsWith:stackTop) ifFalse:[
+                        stack removeLast.
+                        true
+                    ] ifTrue:[
+                        false
+                    ]]
+            ] whileTrue.
+            prefix := stack notEmpty ifTrue:[ stack last ] ifFalse:[ #() ].
+            indent := stack size * 4.
+            stack addLast:thisC.
+            prefix isEmpty ifTrue:[
+                rawEntry := thisC first.
+                thisC size > 1 ifTrue:[
+                    rawEntry := rawEntry , ':' , ((thisC copyFrom:2) asStringWith:$/).
+                ]
+            ] ifFalse:[
+                rawEntry := (thisC copyFrom:prefix size+1) asStringWith:$/.
+            ].
+
+            (packagesInChangeSet includes:this) ifTrue:[
+                rawEntry := rawEntry , self class markForBeingInChangeList.
+                rawEntry := self colorizeForChangedCode:rawEntry.
+            ].
+        
+            entry := (String new:indent) , rawEntry.
+            ((ConfigurableFeatures includesFeature: #SubversionSupportEnabled) and:[this first ~= $*]) ifTrue:[
+                entry := self markEntry: entry at: projectNameList size + 1 forBeingManagedBySVN: this.
+            ].
+        ].
+        projectNameList add:entry.
+    ].
+    self startWorker.        
+    ^ projectNameList.
+
+    "Created: / 17-02-2000 / 23:43:05 / cg"
+    "Modified: / 07-09-2011 / 10:45:05 / cg"
+    "Modified: / 19-01-2012 / 10:46:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+startWorker
+
+    worker ifNil:
+        [worker := 
+            [[workerQueue notEmpty ] whileTrue:
+                [| job |
+                job := workerQueue next.
+                job value].
+            worker := nil.
+            ] newProcess.
+        worker resume].
+
+    "Created: / 14-12-2010 / 15:49:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-12-2010 / 17:35:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateList
+    |newList oldList newNameList oldNameList oldSelection newSelection selectedProjectsHolder|
+
+    selectedProjectsHolder := self selectedProjects.
+    oldSelection := selectedProjectsHolder value.
+    newList := self listOfProjects.
+    oldList := projectList value.
+    newNameList := self nameListFor:newList.
+    oldNameList := self projectNameList value.
+    (newList ~= oldList
+    or:[ newNameList ~= oldNameList]) ifTrue:[
+"/        oldSelection size > 0 ifTrue:[
+"/            selectedProjectsHolder removeDependent:self.
+"/            selectedProjectsHolder value:#().
+"/            selectedProjectsHolder addDependent:self.
+"/        ].
+
+        self projectList value:newList.
+        listValid := true.
+        self projectNameList value:newNameList.
+
+        oldSelection size > 0 ifTrue:[
+            newSelection := oldSelection select:[:prj | newList includes:prj].
+            selectedProjectsHolder value:newSelection.
+        ]
+    ].
+    listValid := true.
+
+    "Modified: / 25.2.2000 / 23:10:01 / cg"
+! !
+
+!ProjectList methodsFor:'special'!
+
+addAdditionalProject:aProject
+    "/ those are simulated - in ST/X, empty projects do not
+    "/ really exist; however, during browsing, it makes sense.
+    AdditionalEmptyProjects isNil ifTrue:[
+        AdditionalEmptyProjects := Set new.
+    ].
+    AdditionalEmptyProjects add:aProject.
+
+    Smalltalk changed:#projectOrganization   "/ not really ... to force update
+
+    "Created: / 17.2.2000 / 23:44:27 / cg"
+!
+
+removeAdditionalProjects:aListOfProjects
+    "/ those are simulated - in ST/X, empty categories do not
+    "/ really exist; however, during browsing, it makes sense.
+    AdditionalEmptyProjects notNil ifTrue:[
+	aListOfProjects do:[:eachProject |
+	    AdditionalEmptyProjects remove:eachProject ifAbsent:nil.
+	].
+    ].
+    Smalltalk changed:#projectOrganization   "/ not really ... to force update
+
+    "Created: / 17.2.2000 / 23:45:24 / cg"
+! !
+
+!ProjectList class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_ProjectList.st,v 1.56 2012/12/13 18:39:32 cg Exp $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_ProjectList.st,v 1.56 2012/12/13 18:39:32 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id:: Tools__ProjectList.st 8083 2013-01-14 11:48:37Z vranyj1                                                                $'
+! !
--- a/Tools__ProjectLoader.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ProjectLoader.st	Wed Jan 30 11:15:09 2013 +0000
@@ -68,17 +68,17 @@
 
 initialize
 
-    | item |
-    item := (MenuItem label:'Load project')
-                nameKey:'LoadProject';
-                value:[(Smalltalk at: self fullName asSymbol) open].
-
-    NewLauncher
-        addMenuItem: item
-        from: nil
-        in: 'menu'
-        position: #after
-        space: true.
+"/    | item |
+"/    item := (MenuItem label:'Load project')
+"/                nameKey:'LoadProject';
+"/                value:[(Smalltalk at: self fullName asSymbol) open].
+"/
+"/    NewLauncher
+"/        addMenuItem: item
+"/        from: nil
+"/        in: 'menu'
+"/        position: #after
+"/        space: true.
 
     "
         self initialize 
@@ -86,6 +86,7 @@
 
     "Created: / 22-11-2008 / 09:58:03 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 26-11-2008 / 10:00:39 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 05-05-2012 / 19:07:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ProjectLoader class methodsFor:'accessing'!
@@ -418,11 +419,11 @@
 !ProjectLoader class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ProjectLoader.st,v 1.2 2011-07-03 19:41:59 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__ProjectLoader.st,v 1.2 2011/07/03 19:41:59 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: Tools__ProjectLoader.st 7486 2009-10-26 22:06:24Z vranyj1 §'
+    ^ '$Id: Tools__ProjectLoader.st 7989 2012-05-05 21:28:49Z vranyj1 $'
 ! !
 
 ProjectLoader initialize!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__SearchDialog.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,1397 @@
+"
+ COPYRIGHT (c) 2000 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 }"
+
+DialogBox subclass:#SearchDialog
+	instanceVariableNames:'openHow classes methods selectedClasses selectedCategories
+		selectedMethods selectedPackages currentClass currentNamespace
+		currentClassCategory currentPackage browser whereRadioGroup
+		currentPanel searchAreas caseHolder matchHolder isMethodHolder
+		codeField selectorHolder defaultOpenHow withTextEntry allowFind
+		allowBuffer allowBrowser searchWhat searchClassProtocolHolder
+		searchInstanceProtocolHolder selectorOrCode selectionList
+		listHolder matchProcess inputField showMetaFilter
+		metaclassesOnlyHolder classesOnlyHolder'
+	classVariableNames:'LastCodeSearched LastCodeSearchWasMethod LastGlobalSearched
+		LastStringSearched LastSearchWasMatch LastSearchWasCaseSensitive
+		LastStringSearchArea LastCodeSearchArea AREA_LISTOFMETHODS
+		LastResourceSearched'
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+!SearchDialog class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2000 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.
+"
+! !
+
+!SearchDialog class methodsFor:'initialization'!
+
+initialize
+    AREA_LISTOFMETHODS := #listOfMethods
+
+    "Created: / 19-11-2010 / 12:00:18 / cg"
+! !
+
+!SearchDialog class methodsFor:'constants'!
+
+constantForListOfMethodsArea
+    ^ AREA_LISTOFMETHODS
+
+    "Created: / 19-11-2010 / 12:11:50 / cg"
+! !
+
+!SearchDialog class methodsFor:'queries'!
+
+lastCodeSearchArea
+    ^ LastCodeSearchArea
+!
+
+lastStringSearchArea
+    ^ LastStringSearchArea
+! !
+
+!SearchDialog methodsFor:'accessing'!
+
+showMetaFilter:something
+    showMetaFilter := something.
+! !
+
+!SearchDialog methodsFor:'accessing-entered values'!
+
+classesOnly
+    ^ (classesOnlyHolder ? false) value
+
+    "Created: / 20-08-2012 / 13:25:26 / cg"
+!
+
+classesToSearch
+    ^ classes.
+!
+
+codeToSearch
+    ^ selectorOrCode.
+!
+
+matchMethods
+    ^ isMethodHolder value ? false.
+!
+
+metaclassesOnly
+    ^ (metaclassesOnlyHolder ? false) value
+
+    "Created: / 20-08-2012 / 13:17:12 / cg"
+!
+
+methodsToSearch
+    ^ methods.
+!
+
+openHow
+    ^ openHow.
+!
+
+searchIgnoringCase
+    ^ self searchIsCaseSensitive not
+!
+
+searchIsCaseSensitive
+    ^ (caseHolder value ? false)
+!
+
+searchWithMatch
+    ^ matchHolder value ? false.
+!
+
+selectorToSearch
+    ^ selectorOrCode.
+! !
+
+!SearchDialog methodsFor:'obsolete'!
+
+addCheckBoxForClassMethodSearch
+    |b|
+
+    b := CheckBox label:(resources string:'Class Protocol').
+    b model:(self searchClassProtocolHolder).
+    currentPanel add:b.
+    ^ b.
+!
+
+addCheckBoxForInstanceMethodSearch
+    |b|
+
+    b := CheckBox label:(resources string:'Instance Protocol').
+    b model:(self searchInstanceProtocolHolder).
+    currentPanel add:b.
+    ^ b.
+! !
+
+!SearchDialog methodsFor:'private'!
+
+searchClassProtocolHolder
+    searchClassProtocolHolder isNil ifTrue:[
+        searchClassProtocolHolder := true asValue
+    ].
+    ^ searchClassProtocolHolder
+!
+
+searchInstanceProtocolHolder
+    searchInstanceProtocolHolder isNil ifTrue:[
+        searchInstanceProtocolHolder := true asValue
+    ].
+    ^ searchInstanceProtocolHolder
+!
+
+showHelpOnCodePatterns
+    HTMLDocumentView openFullOnHelpFile:'Browser/RBSearchPatterns.html'
+!
+
+updateListOfMatchingSelectorsFor:s
+    |p|
+
+    (p := matchProcess) notNil ifTrue:[
+        p terminate.
+    ].
+    listHolder isNil ifTrue:[^ self].
+
+    matchProcess := 
+        [
+            |what matching|
+
+            [
+                searchWhat == #globalName ifFalse:[ 
+                    what := DoWhatIMeanSupport selectorCompletion:s inEnvironment:Smalltalk match:(matchHolder value) ignoreCase:(caseHolder value not)
+                ] ifTrue:[ 
+                    what := DoWhatIMeanSupport globalNameCompletion:s inEnvironment:Smalltalk match:(matchHolder value).
+                ].
+                "/ best := what first.
+                matching := what second.
+                self sensor pushAction:[ listHolder contents:matching ].
+            ] ensure:[
+                matchProcess := nil.
+            ].
+        ] fork.
+
+    "Modified: / 26-10-2010 / 20:33:05 / cg"
+! !
+
+!SearchDialog methodsFor:'public'!
+
+addTextEntryWithCaseIgnore:withCaseIgnore withMatch:withMatch 
+    matchHolder := caseHolder := nil.
+
+    searchWhat == #code ifTrue:[
+        self addTextEntryFieldForCode.
+        ^ self.
+    ].
+
+    self addInputFieldForSelectorOrNameOrString.
+    withCaseIgnore ifTrue:[
+        self 
+            addCheckBox:(resources string:'Case Sensitive')
+            on:(caseHolder := (LastSearchWasCaseSensitive ? false) asValue).
+    ].
+    withMatch ifTrue:[
+        self 
+            addCheckBox:(resources string:'Match')
+            on:(matchHolder := (LastSearchWasMatch ? true) asValue).
+"/                (isSelector and:[ sel notNil. ]) ifTrue:[ 
+"/                    sel includesMatchCharacters ifTrue:[ 
+"/                        matchHolder value:false.
+"/                    ].
+"/                ].
+    ]
+
+    "Modified (format): / 06-07-2011 / 11:56:31 / cg"
+!
+
+askThenDo:aBlock 
+    |where code sel matchHolderValue caseHolderValue|
+
+    self beScreenDialog.                "raise it above all windows"
+    self open.
+    self accepted ifFalse:[ 
+        ^ self.
+    ].
+
+    openHow isNil ifTrue:[ 
+        openHow := defaultOpenHow.
+    ].
+    where := whereRadioGroup value.
+    withTextEntry ifTrue:[ 
+        searchWhat == #code ifTrue:[
+            code := codeField contentsAsString.
+            LastCodeSearched := code.
+            LastCodeSearchArea := where.
+        ] ifFalse:[
+            (selectionList notNil and:[selectionList hasSelection]) ifTrue:[
+                sel := selectionList selectionValue.
+            ] ifFalse:[
+                sel := selectorHolder value withoutSeparators.
+            ].
+            sel isEmptyOrNil ifTrue:[ 
+                browser warn:((searchWhat == #selector) 
+                            ifTrue:[ 'No selector entered for search'. ]
+                            ifFalse:[ 'Nothing entered for search'. ]).
+                ^ self.
+            ].
+            sel := sel string.
+
+            (browser ? SystemBrowser) rememberSearchPattern:sel.
+            searchWhat == #globalName ifTrue:[ 
+                LastGlobalSearched := sel.
+            ] ifFalse:[
+                searchWhat == #string ifTrue:[
+                    LastStringSearched := sel.
+                    LastStringSearchArea := where.
+                ] ifFalse:[
+                    (sel startsWith:'#''') ifTrue:[
+                        sel := sel copyFrom:3.
+                        (sel endsWith:$') ifTrue:[
+                            sel := sel copyWithoutLast:1.
+                        ].
+                    ].
+                ]
+            ]
+        ].
+    ].
+    where isNil ifTrue:[ 
+        (browser ? Dialog) warn:'No class(es) for search'.
+        ^ self.
+    ].
+    self getClassesAndMethodsFor:where.
+
+    (#(#classesWithPrivateClasses #classHierarchiesWithPrivateClasses #ownersWithPrivateClasses #ownersHierarchiesWithPrivateClasses) 
+        includes:where) 
+            ifTrue:[ 
+                |toSearch|
+
+                toSearch := IdentitySet withAll:classes.
+                classes := IdentitySet withAll:toSearch.
+                [ toSearch notEmpty ] whileTrue:[
+                    |cls|
+
+                    cls := toSearch removeFirst.
+                    classes addAll:cls allPrivateClasses.
+                ].
+            ].
+
+    classes size == 0 ifTrue:[
+        classes := nil.
+        methods size == 0 ifTrue:[ 
+            (browser ? Dialog) warn:'No class(es) given for search.'.
+            ^ self.
+        ].
+    ] ifFalse:[
+        classes := classes asOrderedCollection.
+        methods size ~~ 0 ifTrue:[ 
+            (browser ? Dialog) warn:'oops'.
+            methods := nil.
+        ].
+    ].
+
+    matchHolderValue := matchHolder value.
+    matchHolderValue notNil ifTrue:[
+        LastSearchWasMatch := matchHolderValue
+    ].
+    caseHolderValue := caseHolder value.
+    caseHolderValue notNil ifTrue:[
+        LastSearchWasCaseSensitive := caseHolderValue
+    ].
+
+    selectorOrCode := sel ? code.
+
+    aBlock numArgs == 7 ifTrue:[
+        "/ old style
+        aBlock
+            value:classes
+            value:(sel ? code)
+            value:(self searchIgnoringCase)
+            value:openHow
+            value:(matchHolderValue ? false)
+            value:methods
+            value:(isMethodHolder value ? false).
+    ] ifFalse:[
+        aBlock value.
+    ]
+
+    "Modified: / 26-09-2012 / 11:50:45 / cg"
+!
+
+setupToAskForMethodSearchTitle:title forBrowser:brwsrArg searchWhat:searchWhatArg 
+  searchArea:whereDefault withCaseIgnore:withCaseIgnore withMatch:withMatch 
+  withMethodList:withMethodList allowFind:allowFindArg allowBuffer:allowBufferArg 
+  allowBrowser:allowBrowserArg withTextEntry:withTextEntryArg 
+
+    |where ns methodNameSpaces methodPackages hPanel leftVerticalPanel rightVerticalPanel|
+
+    allowFind := allowFindArg.
+    allowBuffer := allowBufferArg.
+    allowBrowser := allowBrowserArg.
+    searchWhat := searchWhatArg.
+
+    withTextEntry := withTextEntryArg.
+
+    (browser := brwsrArg) isNil ifTrue:[
+        resources := NewSystemBrowser classResources.
+    ] ifFalse:[
+        resources := browser resources.
+        selectedClasses := browser selectedClasses value.
+        selectedCategories := browser selectedCategoriesValue.
+        selectedCategories := selectedCategories reject:[:cat | NavigatorModel isPseudoCategory:cat].
+        selectedMethods := browser selectedMethods value.
+        currentClass := browser theSingleSelectedClass.
+        currentClassCategory := browser theSingleSelectedCategory.
+        currentPackage := browser theSingleSelectedProject.
+        currentClass isNil ifTrue:[
+            browser hasMethodSelected ifTrue:[
+                currentClass := selectedMethods first mclass.
+                "/ selectedClasses := (selectedMethods collect:[:each | each mclass ]) asIdentitySet.
+                "/ selectedClasses := selectedClasses select:[:each | each notNil ].
+            ].
+        ].
+    ].
+
+    (self addTextLabel:(resources stringWithCRs:title)) adjust:#left.
+
+    currentClass notNil ifTrue:[
+        currentClass := currentClass theNonMetaclass.
+    ].
+    withTextEntry ifTrue:[
+        self addTextEntryWithCaseIgnore:withCaseIgnore withMatch:withMatch.
+    ].
+
+    searchAreas := OrderedCollection new.
+
+    self addHorizontalLine.
+    "/ self addVerticalSpace.
+
+    (showMetaFilter ? false) ifTrue:[
+        currentPanel := self.
+        self addCheckBoxForMetaClassesOnly.
+    ].
+
+
+    hPanel := HorizontalPanelView "SimpleView" new.
+    hPanel verticalLayout:#top.
+    hPanel horizontalLayout:#left.
+
+    leftVerticalPanel := currentPanel := VerticalPanelView new.
+    leftVerticalPanel verticalLayout:#topSpace.
+    leftVerticalPanel horizontalLayout:#fitSpace.
+
+    (self addTextLabel:(resources string:'Search in:')) adjust:#left.
+
+    whereRadioGroup := RadioButtonGroup new.
+
+    (selectedCategories size > 0 or:[ selectedClasses size > 0 ]) ifTrue:[
+        self addCheckBoxForEverywhere.
+        "/        classMethodListView notNil ifTrue:[
+        "/            b := CheckBox label:(resources string:'Shown Methods').
+        "/            panel add:b. whereChannel add:b value:#currentMethodList.
+        "/            areas add:#currentMethodList.
+        "/            self makeTabable:b.
+        "/        ].
+        browser isMethodListBrowser ifTrue:[
+            methods := browser selectedMethods value ? #().
+            methodNameSpaces := methods
+                        select:[:eachMethod | eachMethod mclass notNil]
+                        thenCollect:[:eachMethod | eachMethod mclass topNameSpace ].
+            methodPackages := methods 
+                        collect:[:eachMethod | eachMethod package ].
+        ].
+        methodNameSpaces size == 1 ifTrue:[
+            currentNamespace := methodNameSpaces first.
+        ] ifFalse:[
+            currentNamespace := browser currentNamespace.
+            selectedClasses size == 0 ifTrue:[
+                |classesInAllSelectedCategories nameSpacesOfAllClassesInAllSelectedCategories|
+                classesInAllSelectedCategories := Smalltalk allClasses select:[:cls | selectedCategories includes:cls category].
+                nameSpacesOfAllClassesInAllSelectedCategories := classesInAllSelectedCategories collect:[:eachClass | eachClass topNameSpace].
+                nameSpacesOfAllClassesInAllSelectedCategories size == 1 ifTrue:[
+                    currentNamespace := nameSpacesOfAllClassesInAllSelectedCategories first.
+                ].
+            ].
+        ].
+
+        (currentNamespace notNil 
+            and:[ currentNamespace ~= (browser nameListEntryForALL) ]) 
+                ifTrue:[ self addCheckBoxForCurrentNamespace ]
+                ifFalse:[
+                    (currentClass notNil 
+                        and:[ (ns := currentClass nameSpace) notNil and:[ ns ~~ Smalltalk ] ]) 
+                            ifTrue:[ self addCheckBoxForClassesNamespace:ns ].
+                ].
+
+        methodPackages size == 1 ifTrue:[
+            currentPackage := methodPackages first.
+        ] ifFalse:[
+            currentPackage := browser currentProject.
+"/            selectedClasses size == 0 ifTrue:[
+"/                |classesInAllSelectedCategories packagesOfAllClassesInAllSelectedCategories|
+"/                classesInAllSelectedCategories := Smalltalk allClasses select:[:cls | selectedCategories includes:cls category].
+"/                packagesOfAllClassesInAllSelectedCategories := classesInAllSelectedCategories collect:[:eachClass | eachClass package].
+"/                packagesOfAllClassesInAllSelectedCategories size == 1 ifTrue:[
+"/                    currentPackage := packagesOfAllClassesInAllSelectedCategories first.
+"/                ].
+"/            ].
+        ].
+
+        (currentPackage notNil 
+            and:[ currentPackage ~= (browser nameListEntryForALL) ]) 
+                ifTrue:[ self addCheckBoxForCurrentPackage ]
+                ifFalse:[
+                    (currentClass notNil) ifTrue:[ 
+                        self addCheckBoxForClassesPackage:(currentClass package) 
+                    ].
+                ].
+
+        selectedCategories size > 0 ifTrue:[
+            self addCheckBoxForSelectedClassCategory.
+        ].
+        (selectedClasses size > 0 or:[ selectedMethods size > 0 ]) ifTrue:[
+            self addCheckBoxForSelectedClass.
+            self addCheckBoxForSelectedClassAndSuperclasses.
+            self addCheckBoxForSelectedClassAndSubclasses.
+            self addCheckBoxForSelectedClassAndPrivateClasses.
+            self addCheckBoxForSelectedClassAndSubclassesAndPrivateClasses.
+            self addCheckBoxForOwnerAndItsPrivateClasses.
+            self addCheckBoxForOwnerAndItsSubclassesAndItsPrivateClasses.
+        ].
+    ] ifFalse:[
+        (browser notNil and:[browser currentNamespace ~~ Smalltalk]) ifTrue:[
+            self addCheckBoxForEverywhere.
+            currentNamespace := browser currentNamespace.
+            currentNamespace ~= (browser nameListEntryForALL) ifTrue:[
+                self addCheckBoxForCurrentNamespace.
+            ] ifFalse:[
+                (currentClass notNil 
+                and:[ (ns := currentClass nameSpace) notNil 
+                and:[ ns ~~ Smalltalk ] ]) 
+                ifTrue:[ 
+                    self addCheckBoxForClassesNamespace:ns 
+                ].
+            ].
+        ].
+    ].
+    searchAreas size == 0 ifTrue:[
+        self addCheckBoxForEverywhere.
+    ].
+    self addCheckBoxForChangedClassesList.
+
+    withMethodList ifTrue:[
+        browser isMethodListBrowser ifTrue:[
+            searchAreas size == 0 ifTrue:[
+                self addCheckBoxForEverywhere.
+            ].
+            self addCheckBoxForMethodList.
+            self addCheckBoxForSelectedMethods.
+            self addCheckBoxForSelectedMethodClasses.
+            self addCheckBoxForSelectedMethodPackages.
+        ] ifFalse:[
+            searchAreas size == 0 ifTrue:[
+                self addCheckBoxForEverywhere.
+            ].
+            self addCheckBoxForChangedMethodList.
+        ].
+    ].
+
+    searchAreas size == 0 ifTrue:[
+        whereRadioGroup := #everywhere asValue.
+        self addDummyCheckBoxForEverywhere.
+    ] ifFalse:[
+        whereDefault notNil ifTrue:[
+            (searchAreas includes:whereDefault) ifTrue:[
+                where := whereDefault asSymbol.
+            ] ifFalse:[
+                where := searchAreas first.
+            ].
+        ] ifFalse:[
+            where := #everywhere.
+        ].
+        whereRadioGroup value:where.
+    ].
+
+    hPanel add:leftVerticalPanel.
+
+false ifTrue:[
+    "/ noone liked the right panel...
+    rightVerticalPanel := currentPanel := VerticalPanelView new.
+    rightVerticalPanel verticalLayout:#topSpace.
+    rightVerticalPanel horizontalLayout:#fitSpace.
+
+    self addCheckBoxForClassMethodSearch.
+    self addCheckBoxForInstanceMethodSearch.
+"/    rightVerticalPanel origin:0.75@0.0 corner:1.0@1.0.
+    hPanel 
+        preferredExtent:(leftVerticalPanel preferredWidth + rightVerticalPanel preferredWidth)
+                        @
+                        (leftVerticalPanel preferredHeight max:rightVerticalPanel preferredHeight).
+    hPanel add:rightVerticalPanel.
+] ifFalse:[
+
+"/    rightVerticalPanel origin:0.75@0.0 corner:1.0@1.0.
+    hPanel 
+        preferredExtent:(leftVerticalPanel preferredWidth) @ (leftVerticalPanel preferredHeight).
+].
+
+    self addComponent:hPanel indent:0.
+
+    "/ panel has its own idea of indenting
+    "/ self addVerticalSpace.
+    searchWhat == #selector ifTrue:[
+        "/ not yet implemented
+        "/ self addHorizontalLine.
+        "/ self addCheckBoxesForClassAndMetaSearch.
+
+        selectionList := self addFilteredListOfMatchingSelectors.
+        self stickAtBottomWithVariableHeight:selectionList.
+        matchHolder notNil ifTrue:[
+            matchHolder onChangeEvaluate:[ self updateListOfMatchingSelectorsFor:inputField contents ]
+        ].
+        inputField notNil ifTrue:[ self updateListOfMatchingSelectorsFor:inputField contents ].
+    ] ifFalse:[
+        self addHorizontalLine.
+    ].
+    self addButtons.
+
+    self label:(resources string:'Search').
+
+    "Modified: / 20-08-2012 / 13:25:03 / cg"
+! !
+
+!SearchDialog methodsFor:'setup'!
+
+addCheckBox:b forSearchArea:area 
+    currentPanel add:b.
+    whereRadioGroup add:b value:area.
+    searchAreas add:area.
+    self makeTabable:b.
+!
+
+addCheckBoxForChangedClassesList
+    |b|
+
+    b := CheckBox label:(resources string:'Changed Classes').
+    self addCheckBox:b forSearchArea:#listOfChangedClasses.
+    ChangeSet current changedClasses isEmpty ifTrue:[
+        b disable
+    ].
+    ^ b.
+!
+
+addCheckBoxForChangedMethodList
+    |b|
+
+    b := CheckBox label:(resources string:'Changed Methods').
+    self addCheckBox:b forSearchArea:#listOfChangedMethods.
+    ChangeSet current changeSelectors isEmpty ifTrue:[
+        b disable
+    ].
+    ^ b.
+!
+
+addCheckBoxForClassesNamespace:ns 
+    |b|
+
+    b := CheckBox 
+                label:(resources string:'Classes'' nameSpace ("%1")' with:ns name).
+    self addCheckBox:b forSearchArea:#currentClassesNameSpace.
+    ^ b.
+!
+
+addCheckBoxForClassesPackage:pkg 
+    |b|
+
+    b := CheckBox 
+                label:(resources string:'Classes'' package ("%1")' with:pkg).
+    self addCheckBox:b forSearchArea:#currentClassesPackage.
+    ^ b.
+
+    "Created: / 21-09-2006 / 17:39:55 / cg"
+!
+
+addCheckBoxForCurrentNamespace
+    |b|
+
+    b := CheckBox 
+            label:(resources string:'Current nameSpace ("%1")' with:currentNamespace name).
+    self addCheckBox:b forSearchArea:#currentNameSpace.
+    ^ b.
+
+    "Modified: / 10-10-2006 / 15:28:47 / cg"
+!
+
+addCheckBoxForCurrentPackage
+    |b|
+
+    b := CheckBox 
+            label:(resources string:'Current package ("%1")' with:currentPackage).
+    self addCheckBox:b forSearchArea:#currentPackage.
+    ^ b.
+
+    "Modified: / 10-10-2006 / 15:28:51 / cg"
+!
+
+addCheckBoxForCurrentPackage:pkg 
+    |b|
+
+    b := CheckBox 
+            label:(resources string:'Classes'' package ("%1")' with:pkg).
+    self addCheckBox:b forSearchArea:#currentClassesPackage.
+    ^ b.
+
+    "Modified: / 10-10-2006 / 15:29:06 / cg"
+!
+
+addCheckBoxForEverywhere
+    |b|
+
+    b := CheckBox label:(resources string:'Everywhere').
+    self addCheckBox:b forSearchArea:#everywhere.
+    ^ b.
+!
+
+addCheckBoxForMetaClassesOnly
+    |p b|
+
+    p := View new.
+    
+    b := CheckBox label:(resources string:'Metaclasses Only') in:p.
+    b model:(metaclassesOnlyHolder := false asValue).
+    metaclassesOnlyHolder onChangeEvaluate:[metaclassesOnlyHolder value ifTrue:[classesOnlyHolder value:false]].
+    self makeTabable:b.
+
+    b := CheckBox label:(resources string:'Classes Only') in:p.
+    b left:0.5.
+    b model:(classesOnlyHolder := false asValue).
+    classesOnlyHolder onChangeEvaluate:[classesOnlyHolder value ifTrue:[metaclassesOnlyHolder value:false]].
+    self makeTabable:b.
+
+    currentPanel add:p.
+    ^ nil.
+
+    "Created: / 20-08-2012 / 11:32:15 / cg"
+!
+
+addCheckBoxForMethodList
+    |b|
+
+    b := CheckBox label:(resources string:'Methodlist').
+    self addCheckBox:b forSearchArea:AREA_LISTOFMETHODS.
+    ^ b.
+
+    "Modified: / 19-11-2010 / 12:00:52 / cg"
+!
+
+addCheckBoxForOwnerAndItsPrivateClasses
+    |b lbl arg|
+
+    (currentClass notNil and:[ currentClass isPrivate. ]) ifTrue:[ 
+        lbl := 'Owner (%1) & all its private classes'.
+        arg := currentClass owningClass name.
+    ] ifFalse:[ 
+        lbl := 'Owners & all their private classes'.
+    ].
+    b := CheckBox label:(resources string:lbl with:arg).
+    self addCheckBox:b forSearchArea:#ownersWithPrivateClasses.
+    (selectedClasses contains:[ :cls | cls isPrivate. ]) ifFalse:[ 
+        b disable.
+    ].
+    ^ b.
+!
+
+addCheckBoxForOwnerAndItsSubclassesAndItsPrivateClasses
+    |b lbl arg|
+
+    (currentClass notNil and:[ currentClass isPrivate. ]) ifTrue:[ 
+        lbl := 'Owner (%1) & its subclasses & all its private classes'.
+        arg := currentClass owningClass name.
+    ] ifFalse:[ 
+        lbl := 'Owners & their subclasses & all their private classes'.
+    ].
+    b := CheckBox label:(resources string:lbl with:arg).
+    self addCheckBox:b forSearchArea:#ownersHierarchiesWithPrivateClasses.
+    (selectedClasses contains:[ :cls | cls isPrivate. ]) ifFalse:[ 
+        b disable.
+    ].
+    ^ b.
+!
+
+addCheckBoxForSelectedClass
+    |b lbl arg|
+
+    (browser isMethodListBrowser 
+    or:[ currentClass isNil
+    or:[ selectedClasses size > 1] ]) ifTrue:[ 
+        selectedClasses size == 1 ifTrue:[ 
+            lbl := 'Selected class ("%1")'.
+            arg := selectedClasses first theNonMetaclass name.
+        ] ifFalse:[ 
+            lbl := 'Selected classes (%1)'.
+            arg := selectedClasses size.
+        ].
+    ] ifFalse:[ 
+        lbl := 'Class ("%1")'.
+        arg := currentClass name.
+    ].
+    b := CheckBox label:(resources string:lbl with:arg).
+    self addCheckBox:b forSearchArea:#classes.
+    ^ b.
+!
+
+addCheckBoxForSelectedClassAndPrivateClasses
+    |b lbl|
+
+    (browser isMethodListBrowser 
+    or:[ currentClass isNil 
+    or:[ selectedClasses size > 1] ]) ifTrue:[ 
+        lbl := 'Selected classes & all private classes'.
+    ] ifFalse:[ 
+        lbl := 'Class & private classes'.
+    ].
+    b := CheckBox label:(resources string:lbl).
+    self addCheckBox:b forSearchArea:#classesWithPrivateClasses.
+    (selectedClasses 
+        contains:[ :cls | cls theNonMetaclass privateClasses size > 0. ]) 
+            ifFalse:[ b disable. ].
+    ^ b.
+!
+
+addCheckBoxForSelectedClassAndSubclasses
+    |b lbl|
+
+    (browser isMethodListBrowser 
+    or:[ currentClass isNil
+    or:[ selectedClasses size > 1] ]) ifTrue:[ 
+        lbl := 'Selected classes & all subclasses'.
+    ] ifFalse:[ 
+        lbl := 'Class & subclasses'.
+    ].
+    b := CheckBox label:(resources string:lbl).
+    self addCheckBox:b forSearchArea:#classHierarchies.
+    (selectedClasses 
+        contains:[ :cls | cls theNonMetaclass subclasses size > 0. ]) 
+            ifFalse:[ b disable. ].
+    ^ b.
+!
+
+addCheckBoxForSelectedClassAndSubclassesAndPrivateClasses
+    |b lbl|
+
+    (browser isMethodListBrowser 
+    or:[ currentClass isNil
+    or:[ selectedClasses size > 1] ]) ifTrue:[ 
+        lbl := 'Selected classes & all subclasses & all private classes'.
+    ] ifFalse:[ 
+        lbl := 'Class & subclasses & all private classes'.
+    ].
+    b := CheckBox label:(resources string:lbl).
+    self addCheckBox:b forSearchArea:#classHierarchiesWithPrivateClasses.
+    (selectedClasses 
+        contains:[ :cls | cls theNonMetaclass privateClasses size > 0. ]) 
+            ifFalse:[ b disable. ].
+    ^ b.
+!
+
+addCheckBoxForSelectedClassAndSuperclasses
+    |b lbl|
+
+    (browser isMethodListBrowser 
+    or:[ currentClass isNil
+    or:[ selectedClasses size > 1] ]) ifTrue:[ 
+        lbl := 'Selected classes & all superclasses'.
+    ] ifFalse:[ 
+        lbl := 'Class & superclasses'.
+    ].
+    b := CheckBox label:(resources string:lbl).
+    self addCheckBox:b forSearchArea:#classesAndSuperclasses.
+    (selectedClasses 
+        contains:[ :cls | cls theNonMetaclass superclass notNil. ]) 
+            ifFalse:[ b disable. ].
+    ^ b.
+!
+
+addCheckBoxForSelectedClassCategory
+    |b lbl arg|
+
+    currentClassCategory notNil ifTrue:[ 
+        lbl := 'Class category ("%1")'.
+        arg := currentClassCategory.
+    ] ifFalse:[ 
+        lbl := 'Selected class categories (%1)'.
+        arg := selectedCategories size.
+    ].
+    b := CheckBox label:(resources string:lbl with:arg).
+    self addCheckBox:b forSearchArea:#classCategories.
+    ^ b.
+!
+
+addCheckBoxForSelectedMethodClasses
+    |b classes numClasses|
+
+    classes := ((browser selectedMethods value ? #()) 
+                    select:[:m | m mclass notNil]
+                    thenCollect:[:m | m mclass theNonMetaclass]) asSet.
+    numClasses := classes size.
+    numClasses == 0 ifTrue:[^ self]. "/ comment this to show, but disabled
+
+    numClasses == 1 ifTrue:[
+        b := CheckBox label:(resources string:'Selected method''s class ("%1")'
+                            with:classes first name).
+    ] ifFalse:[
+        b := CheckBox label:(resources string:'Selected methods'' classes (%1)'
+                            with:numClasses).
+        numClasses == 0 ifTrue:[
+            b disable
+        ].
+    ].
+    self addCheckBox:b forSearchArea:#listOfSelectedMethodClasses.
+    ^ b.
+
+    "Modified (comment): / 20-07-2012 / 11:40:44 / cg"
+!
+
+addCheckBoxForSelectedMethodPackages
+    |b packages numPackages|
+
+    packages := ((browser selectedMethods value ? #()) 
+                    collect:[:m | m package]) asSet.
+    numPackages := packages size.
+    numPackages size == 0 ifTrue:[^ self]. "/ comment this to show, but disabled
+
+    numPackages == 1 ifTrue:[
+        b := CheckBox label:(resources string:'Selected method''s package ("%1")'
+                            with:packages first).
+    ] ifFalse:[
+        b := CheckBox label:(resources string:'Selected methods'' packages (%1)'
+                            with:numPackages).
+        numPackages == 0 ifTrue:[
+            b disable
+        ].
+    ].
+    self addCheckBox:b forSearchArea:#listOfSelectedMethodPackages.
+    ^ b.
+
+    "Created: / 29-02-2012 / 19:42:26 / cg"
+!
+
+addCheckBoxForSelectedMethods
+    |b numSelected|
+
+    numSelected := browser selectedMethods value size.
+    numSelected == 0 ifTrue:[^ self]. "/ comment this to show, but disabled
+
+    b := CheckBox label:(resources string:'Selected methods (%1)' with:numSelected).
+    self addCheckBox:b forSearchArea:#listOfSelectedMethods.
+    numSelected == 0 ifTrue:[b disable].
+    ^ b.
+
+    "Modified (comment): / 20-07-2012 / 11:40:33 / cg"
+!
+
+addCheckBoxForSelectedPackage
+    |b lbl arg|
+
+    currentClassCategory notNil ifTrue:[ 
+        lbl := 'Class category ("%1")'.
+        arg := currentClassCategory.
+    ] ifFalse:[ 
+        lbl := 'Selected classes categories (%1)'.
+        arg := selectedCategories size.
+    ].
+    b := CheckBox label:(resources string:lbl with:arg).
+    self addCheckBox:b forSearchArea:#classCategories.
+    ^ b.
+!
+
+addCheckBoxesForClassAndMetaSearch
+    |y b1 b2|
+
+    y := self yPosition.
+    b1 := self addCheckBox:(resources string:'Instance Protocol') on:(self searchInstanceProtocolHolder).
+    "/ b1 width:0.5.
+
+    "/ self yPosition:y.
+    b2 := self addCheckBox:(resources string:'Class Protocol') on:(self searchClassProtocolHolder).
+    "/ b2 left:0.5; width:0.5.
+
+    "Created: / 06-12-2011 / 11:24:11 / cg"
+!
+
+addDummyCheckBoxForEverywhere
+    |b|
+
+    b := CheckBox label:(resources string:'Everywhere').
+    b turnOn.
+    b disable.
+
+    currentPanel add:b.
+!
+
+addFilteredListOfMatchingSelectors
+    |l|
+
+    listHolder := List new.
+
+    l := HVScrollableView for:SelectionInListView.
+    l listHolder:listHolder.
+    self addComponent:l.
+    l doubleClickAction:[
+            selectorHolder value:(l selectionValue).
+            matchHolder value:false.
+            caseHolder value:false.
+            self doAccept.
+            self okPressed.
+    ].
+    ^ l.
+!
+
+addInputFieldForSelectorOrNameOrString
+    |sel lastSearchPatterns|
+
+    browser notNil ifTrue:[
+        searchWhat == #selector ifTrue:[ 
+            sel := browser selectorToSearchFor.
+        ] ifFalse:[ 
+            searchWhat == #globalName ifTrue:[ 
+                sel := browser globalNameToSearchFor ? LastGlobalSearched.
+            ] ifFalse:[ 
+                searchWhat == #string ifTrue:[
+                    sel := browser stringToSearchFor ? LastStringSearched.
+                ] ifFalse:[
+                    searchWhat == #resource ifTrue:[
+                        sel := browser stringToSearchFor ? LastResourceSearched.
+                    ] ifFalse:[
+                        sel := browser selectorToSearchFor.
+                    ]
+                ]
+            ].
+        ].
+    ].
+    lastSearchPatterns := (browser ? SystemBrowser) lastSearchPatterns.
+
+    sel isEmptyOrNil ifTrue:[ 
+        "/ use last searchString
+        lastSearchPatterns size > 0 ifTrue:[ 
+            sel := lastSearchPatterns first.
+        ].
+    ].
+    selectorHolder := (sel ? '') withoutSeparators asValue.
+
+    inputField := self addComboBoxOn:selectorHolder tabable:true.
+    inputField list:lastSearchPatterns.
+    inputField selectAllInitially.
+    inputField immediateAccept:true.
+    inputField takeFocus.
+    inputField 
+        entryCompletionBlock:[ :contents | 
+            |s what|
+
+            s := contents withoutSpaces.
+            self topView 
+                withWaitCursorDo:[
+                    |best matching|
+
+                    searchWhat == #resource ifTrue:[
+                        what := DoWhatIMeanSupport resourceCompletion:s inEnvironment:Smalltalk match:true ignoreCase:false.
+                    ] ifFalse:[
+                        searchWhat == #globalName ifFalse:[ 
+                            what := DoWhatIMeanSupport selectorCompletion:s inEnvironment:Smalltalk.
+                        ] ifTrue:[ 
+                            what := DoWhatIMeanSupport globalNameCompletion:s inEnvironment:Smalltalk match:true.
+                        ].
+                    ].
+                    best := what first.
+                    matching := what second.
+                    inputField contents:best.
+                    "/ listHolder contents:matching.
+                    matching size ~~ 1 ifTrue:[ 
+                        (browser ? self) window beep.
+                    ].
+                ].
+        ].
+
+    selectorHolder onChangeEvaluate:[ self updateListOfMatchingSelectorsFor:inputField contents ].
+
+    "Modified: / 14-02-2012 / 14:13:52 / cg"
+!
+
+addTextEntryFieldForCode
+    |initial box panel patternInfoBox infoLabel helpButton errMessageField checkCodeAction
+     metaBox b|
+
+    box := View new.
+    box extent:(600 @ 200).
+
+    panel := VariableHorizontalPanel in:box.
+    panel origin:0.0@0.0 corner:(1.0@1.0).
+
+    codeField := CodeView in:panel.        
+    codeField canTab:true.
+"/    codeField origin:0.0@0.0 corner:(0.75@1.0).
+
+    patternInfoBox := View in:panel.
+
+    infoLabel := Label in:patternInfoBox.
+    infoLabel geometryLayout:(LayoutFrame bottomInset:30).
+
+    infoLabel font:(codeField font asSize:(codeField font size - 2)).
+    infoLabel adjust:#left.
+    infoLabel label:(self helpTextForMetaPatterns).
+
+    panel relativeCorners:#(0.6 1.0).
+    panel showHandle:true.
+
+    helpButton := Button label:(resources string:'Pattern Help') in:patternInfoBox.
+    helpButton layout:((AlignmentOrigin fractionalFromPoint:0.5@1.0) 
+                            leftOffset:2
+                            topOffset:helpButton preferredHeight negated;
+                            leftAlignmentFraction:0.5 topAlignmentFraction:0).
+    helpButton topInset:0.75@1.0.
+    helpButton action:[self showHelpOnCodePatterns].
+
+
+    self addComponent:box tabable:true.
+
+    metaBox := HorizontalPanelView new.
+    metaBox horizontalLayout:#leftMax.
+    b := Button label:'+Lit' action:[ codeField pasteOrReplace:'`#n' ] in:metaBox.
+    b helpKey:#matchAnyLiteral.
+    b := Button label:'+Var' action:[ codeField pasteOrReplace:'`v' ] in:metaBox.
+    b helpKey:#matchAnyVariable.
+    b := Button label:'+Expr' action:[ codeField pasteOrReplace:'`@e' ] in:metaBox.
+    b helpKey:#matchAnyExpression.
+    b := Button label:'+Msg' action:[ codeField pasteOrReplace:'`@m:' ] in:metaBox.
+    b helpKey:#matchAnyMessage.
+    b := Button label:'+Node' action:[ codeField pasteOrReplace:'`{:node | node isLiteral and:[node value isSymbol] }' ] in:metaBox.
+    b helpKey:#matchAnyNode.
+    b := Button label:'+Stats' action:[ codeField pasteOrReplace:'`.@stats' ] in:metaBox.
+    b helpKey:#matchAnyStats.                                      
+    self addComponent:metaBox.
+
+    errMessageField := (self addTextLabel:'') adjust:#left.
+    errMessageField level:-1.    
+    self addCheckBox:(resources string:'Method') on:self isMethodHolder.
+
+    checkCodeAction := [ self checkCodeIn:codeField notifying:errMessageField. ].
+
+    codeField modifiedChannel onChangeEvaluate:checkCodeAction.
+    self isMethodHolder onChangeEvaluate:checkCodeAction.
+
+    initial := browser selectionInCodeView.
+    initial isEmptyOrNil ifTrue:[
+        initial := LastCodeSearched ? ''
+    ].
+    codeField contents:initial.
+    checkCodeAction value.
+
+    "Modified: / 23-07-2011 / 10:35:14 / cg"
+!
+
+checkCodeIn:codeField notifying:errMessageField
+    |codeString tree errAction|
+
+    codeString := codeField contents asString string.
+    errAction := [:str :pos |
+                    |line col badLine|
+
+                    line := codeField lineOfCharacterPosition:pos.
+                    col := (codeField colOfCharacterPosition:pos) max:1.
+
+                    badLine := (codeField listAt:line) ? ''.
+                    col <= badLine size size ifTrue:[
+                        codeField 
+                            listAt:line 
+                            put:(badLine asText 
+                                    emphasisAt:col 
+                                    put:(UserPreferences current unknownIdentifierEmphasis)).
+                        "/ codeField selectFromCharacterPosition:pos to:pos.
+                    ].
+                    errMessageField label:('line: ',line printString,' ',str).
+                    errMessageField backgroundColor:Color red.    
+                    codeField requestFocus.
+                    nil.
+                 ].
+
+    isMethodHolder value ifTrue:[
+        tree := RBParser parseRewriteMethod:codeString onError: errAction.
+    ] ifFalse:[
+        tree := RBParser parseRewriteExpression:codeString onError: errAction.
+    ].
+    tree notNil ifTrue:[ 
+        errMessageField backgroundColor:View defaultViewBackgroundColor.    
+        errMessageField label:nil 
+    ].
+    codeField modifiedChannel setValue:false.
+!
+
+getClassesAndMethodsFor:where 
+    where == #everywhere ifTrue:[ 
+        classes := Smalltalk allClasses.
+        methods := nil.
+        ^ self.
+    ].
+    where == #currentNameSpace ifTrue:[ 
+        classes := currentNamespace allClassesWithAllPrivateClasses.
+        methods := nil.
+        ^ self.
+    ].
+    where == #currentClassesNameSpace ifTrue:[ 
+        currentClass isPrivate ifTrue:[ 
+            classes := currentClass topOwningClass nameSpace 
+                        allClassesWithAllPrivateClasses.
+        ] ifFalse:[ 
+            classes := currentClass nameSpace allClassesWithAllPrivateClasses.
+        ].
+        methods := nil.
+        ^ self.
+    ].
+    where == #currentPackage ifTrue:[ 
+        classes := Smalltalk allClassesInPackage:currentPackage. 
+        methods := nil.
+        ^ self.
+    ].
+    where == #currentClassesPackage ifTrue:[ 
+        classes := Smalltalk allClassesInPackage:currentClass package. 
+        methods := nil.
+        ^ self.
+    ].
+    where == #classCategories ifTrue:[ 
+        classes := Smalltalk allClasses 
+                    select:[ :cls | selectedCategories includes:cls category. ].
+        classes := classes collect:[ :each | each theNonMetaclass. ].
+        methods := nil.
+        ^ self.
+    ].
+    (where == #classes or:[ where == #classesWithPrivateClasses. ]) ifTrue:[ 
+        classes := selectedClasses collect:[ :each | each theNonMetaclass. ].
+        methods := nil.
+        ^ self.
+    ].
+    (where == #classHierarchies or:[ where == #classHierarchiesWithPrivateClasses. ]) 
+    ifTrue:[ 
+        classes := IdentitySet new.
+        selectedClasses do:[ :cls | 
+            classes addAll:cls theNonMetaclass withAllSubclasses.
+        ].
+        methods := nil.
+        ^ self.
+    ].
+    where == #ownersWithPrivateClasses ifTrue:[ 
+        classes := IdentitySet new.
+        selectedClasses do:[ :cls | 
+            |c|
+
+            c := cls theNonMetaclass.
+            classes add:(c owningClass ? c).
+        ].
+        methods := nil.
+        ^ self.
+    ].
+    where == #ownersHierarchiesWithPrivateClasses ifTrue:[ 
+        classes := IdentitySet new.
+        selectedClasses do:[ :cls | 
+            |c|
+
+            c := cls theNonMetaclass.
+            classes addAll:(c owningClass ? c) withAllSubclasses.
+        ].
+        methods := nil.
+        ^ self.
+    ].
+    (where == #classesAndSuperclasses) ifTrue:[ 
+        classes := IdentitySet new.
+        selectedClasses do:[ :cls | 
+            classes addAll:cls theNonMetaclass withAllSuperclasses.
+        ].
+        methods := nil.
+        ^ self.
+    ].
+    (where == AREA_LISTOFMETHODS) ifTrue:[ 
+        classes := nil.
+        methods := browser methodListApp methodList value.
+        ^ self.
+    ].
+    (where == #listOfSelectedMethods) ifTrue:[ 
+        classes := nil.
+        methods := browser selectedMethods value ? #().
+        ^ self.
+    ].
+    (where == #listOfSelectedMethodClasses) ifTrue:[ 
+        classes := ((browser selectedMethods value ? #()) collect:[:m | m mclass theNonMetaclass]) asSet asOrderedCollection.
+        methods := nil.
+        ^ self.
+    ].
+    (where == #listOfSelectedMethodPackages) ifTrue:[ 
+        classes := (((browser selectedMethods value ? #()) collect:[:m | m package]) asSet
+                        collectAll:[:p | Smalltalk allClassesInPackage:p ]) asOrderedCollection.
+        methods := nil.
+        ^ self.
+    ].
+    (where == #listOfChangedClasses) ifTrue:[ 
+        classes := ChangeSet current changedClasses.
+        methods := nil.
+        ^ self.
+    ].
+    (where == #listOfChangedMethods) ifTrue:[ 
+        classes := nil.
+        methods := Set new.
+        ChangeSet current do:[:chg |
+            |mthd|
+
+            chg notNil ifTrue:[
+                chg isMethodChange ifTrue:[
+                    mthd := chg changeMethod.
+                    mthd notNil ifTrue:[
+                        methods add:mthd
+                    ]
+                ]
+            ]
+        ].
+        methods := methods asOrderedCollection.
+        ^ self.
+    ].
+
+    self halt:'inumplemented search'.
+
+    "Modified: / 05-10-2011 / 15:48:20 / az"
+    "Modified: / 29-02-2012 / 19:47:42 / cg"
+!
+
+helpTextForMetaPatterns
+    ^ 'MetaPatterns:
+    ' , '`' allBold , ' = meta 
+    ' , '@' allBold , ' = list/any
+    ' , '.' allBold , ' = statement
+    ' , '`' allBold , ' = recurse
+
+    ' , '`#n' allBold , ' any lit
+    ' , '`v' allBold , '  any var (`V => global)
+    ' , '`@e' allBold , ' any expr
+    ' , '`@m:' allBold , ' any message (`m => unary)
+    ' , '`{:n|...}' allBold , ' node pattern
+    ' , '`''a.*''' allBold , ' regex on string const
+'.
+
+    "Modified: / 08-08-2011 / 20:33:03 / cg"
+!
+
+isMethodHolder
+    isMethodHolder isNil ifTrue:[isMethodHolder := (LastCodeSearchWasMethod ? false) asValue].
+    ^ isMethodHolder
+! !
+
+!SearchDialog methodsFor:'setup-buttons'!
+
+addBrowseButton
+    |b|
+
+    b := Button label:(resources string:'Browse').
+    (DialogBox defaultOKButtonAtLeft) ifTrue:[ 
+	self addButton:b before:nil.
+    ] ifFalse:[ 
+	self addButton:b after:nil.
+    ].
+    b 
+	action:[ 
+	    openHow := #newBrowser.
+	    self doAccept.
+	    self okPressed.
+	].
+    ^ b.
+!
+
+addBufferButton
+    |b|
+
+    b := Button label:(resources string:'Add Buffer').
+    (DialogBox defaultOKButtonAtLeft) ifTrue:[ 
+	self addButton:b before:nil.
+    ] ifFalse:[ 
+	self addButton:b after:nil.
+    ].
+    b 
+	action:[ 
+	    openHow := #newBuffer.
+	    self doAccept.
+	    self okPressed.
+	].
+    ^ b.
+!
+
+addButtons
+    "add find/newBrowser/newBuffer buttons"
+
+    |prevButton|
+
+    allowFind ifTrue:[
+        defaultOpenHow := #showHere.
+        prevButton := self addFindButton.
+    ].
+    allowBrowser ifTrue:[
+        defaultOpenHow := #newBrowser.
+        prevButton := self addBrowseButton.
+    ].
+    allowBuffer ifTrue:[
+        defaultOpenHow := #newBuffer.
+        prevButton := self addBufferButton.
+    ].
+    prevButton notNil ifTrue:[
+        prevButton isReturnButton:true.
+    ].
+    self addAbortButton.
+!
+
+addFindButton
+    |b|
+
+    b := Button label:(resources string:'Find').
+    (DialogBox defaultOKButtonAtLeft) ifTrue:[ 
+	self addButton:b before:nil.
+    ] ifFalse:[ 
+	self addButton:b after:nil.
+    ].
+    b 
+	action:[ 
+	    openHow := #showHere.
+	    self doAccept.
+	    self okPressed.
+	].
+    ^ b.
+! !
+
+!SearchDialog class methodsFor:'documentation'!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_SearchDialog.st,v 1.73 2012/12/02 10:10:34 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__SearchDialog.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+! !
+
+SearchDialog initialize!
--- a/Tools__SendersBrowslet.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__SendersBrowslet.st	Wed Jan 30 11:15:09 2013 +0000
@@ -85,9 +85,9 @@
 !SendersBrowslet class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__SendersBrowslet.st,v 1.2 2011-07-03 13:40:50 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__SendersBrowslet.st,v 1.2 2011/07/03 13:40:50 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: Tools__SendersBrowslet.st 7637 2010-10-04 21:44:44Z vranyj1 §'
-! !
+    ^ '$Id: Tools__SendersBrowslet.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+! !
\ No newline at end of file
--- a/Tools__SmalltalkDiffTool.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__SmalltalkDiffTool.st	Wed Jan 30 11:15:09 2013 +0000
@@ -816,7 +816,7 @@
 !SmalltalkDiffTool::DiffItem class methodsFor:'documentation'!
 
 version
-    ^'$Id: Tools__SmalltalkDiffTool.st,v 1.8 2011-09-12 09:52:32 cg Exp $'
+    ^'$Id: Tools__SmalltalkDiffTool.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
 
 !SmalltalkDiffTool::DiffItem class methodsFor:'instance creation'!
@@ -997,9 +997,9 @@
 !SmalltalkDiffTool class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__SmalltalkDiffTool.st,v 1.8 2011-09-12 09:52:32 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__SmalltalkDiffTool.st,v 1.8 2011/09/12 09:52:32 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id§'
+    ^ '$Id: Tools__SmalltalkDiffTool.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/Tools__SmalltalkMergeTool.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__SmalltalkMergeTool.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,3 +1,14 @@
+"
+ 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 }"
@@ -18,6 +29,20 @@
 
 !SmalltalkMergeTool 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.
+"
+!
+
 documentation
 "
     documentation to be added.
@@ -571,7 +596,7 @@
 !SmalltalkMergeTool::DiffItem class methodsFor:'documentation'!
 
 version
-    ^'$Id: Tools__SmalltalkMergeTool.st,v 1.2 2011-07-03 20:56:26 cg Exp $'
+    ^'$Id: Tools__SmalltalkMergeTool.st 7925 2012-03-16 17:08:17Z vranyj1 $'
 ! !
 
 !SmalltalkMergeTool::DiffItem class methodsFor:'image specs'!
@@ -875,11 +900,11 @@
 !SmalltalkMergeTool class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__SmalltalkMergeTool.st,v 1.2 2011-07-03 20:56:26 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__SmalltalkMergeTool.st,v 1.2 2011/07/03 20:56:26 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: Tools__SmalltalkMergeTool.st 7486 2009-10-26 22:06:24Z vranyj1 §'
+    ^ '$Id: Tools__SmalltalkMergeTool.st 7925 2012-03-16 17:08:17Z vranyj1 $'
 ! !
 
 SmalltalkMergeTool initialize!
--- a/Tools__SourceCodeManagerConfigurationTestTool.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__SourceCodeManagerConfigurationTestTool.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,3 +1,14 @@
+"
+ 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 }"
@@ -9,6 +20,21 @@
 	category:'System-SourceCodeManagement'
 !
 
+!SourceCodeManagerConfigurationTestTool 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.
+"
+! !
 
 !SourceCodeManagerConfigurationTestTool class methodsFor:'interface specs'!
 
@@ -156,9 +182,13 @@
 !SourceCodeManagerConfigurationTestTool class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__SourceCodeManagerConfigurationTestTool.st,v 1.2 2011-10-12 21:10:19 vrany Exp $'
+    ^ '$Id: Tools__SourceCodeManagerConfigurationTestTool.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__SourceCodeManagerConfigurationTestTool.st,v 1.2 2011-10-12 21:10:19 vrany Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__SourceCodeManagerConfigurationTestTool.st,v 1.2 2011/10/12 21:10:19 vrany Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__SourceCodeManagerConfigurationTestTool.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__SpecialCodeView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,85 @@
+"
+ COPYRIGHT (c) 2000 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 }"
+
+ApplicationModel subclass:#SpecialCodeView
+	instanceVariableNames:'displayMode'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Browsers-New'
+!
+
+!SpecialCodeView class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2000 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.
+"
+! !
+
+!SpecialCodeView 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:SpecialCodeView andSelector:#windowSpec
+     SpecialCodeView new openInterface:#windowSpec
+     SpecialCodeView open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(#FullSpec
+        #name: #windowSpec
+        #window: 
+       #(#WindowSpec
+          #label: 'SpecialCodeView'
+          #name: 'SpecialCodeView'
+          #min: #(#Point 10 10)
+          #bounds: #(#Rectangle 12 22 312 322)
+        )
+        #component: 
+       #(#SpecCollection
+          #collection: #()
+        )
+      )
+! !
+
+!SpecialCodeView class methodsFor:'documentation'!
+
+version
+    ^ '$Id: Tools__SpecialCodeView.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools_SpecialCodeView.st,v 1.3 2010/05/07 12:27:43 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__SpecialCodeView.st 8083 2013-01-14 11:48:37Z vranyj1 $'
+! !
--- a/Tools__StoreProjectBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1300 +0,0 @@
-"{ Package: 'stx:libtool' }"
-
-"{ NameSpace: Tools }"
-
-ApplicationModel subclass:#StoreProjectBrowser
-	instanceVariableNames:'dbInfo connection commentTextHolder packagesList
-		selectedVersionHolder versionsList selectedPackageHolder
-		packagesFilterHolder infoLabelHolder selectedBundleOrPackage
-		selectedVersion'
-	classVariableNames:''
-	poolDictionaries:''
-	category:'System-SourceCodeManagement'
-!
-
-Object subclass:#Pundle
-	instanceVariableNames:'name'
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:StoreProjectBrowser
-!
-
-StoreProjectBrowser::Pundle subclass:#Package
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:StoreProjectBrowser
-!
-
-StoreProjectBrowser::Pundle subclass:#Bundle
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:StoreProjectBrowser
-!
-
-Object subclass:#PundleVersion
-	instanceVariableNames:'id pundle version user timestamp comment timestampInt commentId
-		isBundle blessingLevel'
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:StoreProjectBrowser
-!
-
-Object subclass:#StoreProjectChangeSetReader
-	instanceVariableNames:'browser dbConnection bundleOrPackage version changeSet'
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:StoreProjectBrowser
-!
-
-!StoreProjectBrowser class methodsFor:'documentation'!
-
-documentation
-"
-    An experimental first attempt to access a Store database.
-    As I dont have (and dont want) access to a VW implementation for reference,
-    the layout and contents of the tables has been guessed.
-    The goal is to be able to read public domain code from a store DB.
-"
-!
-
-examples
-"
-  Starting the application:
-                                                                [exBegin]
-    Tools::StoreProjectBrowser open
-
-                                                                [exEnd]
-
-  more examples to be added:
-                                                                [exBegin]
-    ... add code fragment for 
-    ... executable example here ...
-                                                                [exEnd]
-"
-! !
-
-!StoreProjectBrowser class methodsFor:'image specs'!
-
-bundleImage
-    "This resource specification was automatically generated
-     by the ImageEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the ImageEditor may not be able to read the specification."
-
-    "
-     self bundleImage inspect
-     ImageEditor openOnClass:self andSelector:#bundleImage
-     Icon flushCachedIcons
-    "
-
-    <resource: #image>
-
-    ^Icon
-        constantNamed:'Tools::StoreProjectBrowser class bundleImage'
-        ifAbsentPut:[(Depth8Image new) width: 17; height: 16; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BP$IBP$IBP$IBP$IBP@@@@@INS$9A!!\$BQ$YFRDI@@@@@@$9KSX?MP4IFP@*K0$@@@@@BS$C
-E@PIEP$YJ#0VBP@@@@@IA!!PDBQ$IBSL<LP8I@@@@@@$WI@4IFQ$3N \XI $@@@@@BS SGP$@J!!DGL!!@^BP@@@@@IAQ,%BRDIBTMDN3\I@@@@@@%AH2,ABQHI
-JS,(K $@@@@@BT@4OP(Z@ $*LB@''BP@@@@@IJ00\KC8KBRH_C4HI@@@@@@$IBP$IBP$IBP$IBP$@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@@@b') ; colorMapFromArray:#[229 232 255 221 221 160 202 203 179 252 253 186 222 223 196 240 241 213 247 248 218 219 223 255 255 255 255 0 0 0 216 216 156 200 201 178 209 210 185 219 220 194 192 194 214 178 181 214 209 214 255 224 226 255 212 211 153 240 241 177 249 249 184 217 217 192 194 196 214 245 246 217 214 219 255 241 243 255 212 212 153 235 236 173 206 207 183 216 217 192 186 189 214 181 184 214 194 200 255 227 229 255 199 204 255 231 231 169 245 245 181 214 214 190 189 192 214 178 182 214 199 205 255 231 233 255 227 230 255 226 225 164 204 205 181 255 255 189 180 184 214 196 198 214 198 205 255 219 222 255 215 218 255 240 241 255 225 226 164 245 245 180 253 252 187 183 187 214 243 244 215 249 249 219 223 226 255 204 209 255 223 227 255 221 220 160 202 202 179 250 249 184 235 237 208 238 239 211 176 180 214 215 219 255 210 214 255]; mask:((Depth1Image new) width: 17; height: 16; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@A?@@A?O?9?O?9?O?9?O?9?O?9?O?9?O?9?O?9?O?9?O?9?O?9?O?9?@@A?@@A?') ; yourself); yourself]
-!
-
-packageImage
-    "This resource specification was automatically generated
-     by the ImageEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the ImageEditor may not be able to read the specification."
-
-    "
-     self packageImage inspect
-     ImageEditor openOnClass:self andSelector:#packageImage
-     Icon flushCachedIcons
-    "
-
-    <resource: #image>
-
-    ^Icon
-        constantNamed:'Tools::StoreProjectBrowser class packageImage'
-        ifAbsentPut:[(Depth8Image new) width: 17; height: 16; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BL#H2L#H2L#@@@@@@@@@@@#ECPRHB0CDQ #@@@@@@@@H20,KB0,KB0XH"L@@@@@@BLT
-A@,''KCLJG0T)H0@@@@@#K!!PTEB TEAP[AR<#@@@@@BLYE18%GQ@IJ2$ECBL@@@@@H24ALPD]@PDHMPTZH0@@@@@#I"P$IA4OIAXSARL@@@@@@BL2@B(0GP\N
-A2D#@@@@@@@@H0H\M!!T]CPX6H0@@@@@@@@@@H2L#H2L#H2L@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@@@b') ; colorMapFromArray:#[185 185 131 197 197 141 211 212 153 238 239 175 253 253 187 109 109 109 180 180 127 184 185 132 197 198 141 202 203 146 234 234 172 250 249 185 155 155 108 179 180 128 184 185 131 191 191 137 203 202 146 235 235 171 250 250 185 154 155 109 255 255 255 179 179 128 191 190 136 203 202 145 232 232 170 249 249 184 149 149 105 173 172 122 180 179 128 136 136 136 202 202 146 231 231 169 247 247 182 149 150 104 172 172 122 0 0 0 191 191 136 202 202 145 230 231 169 246 246 181 194 194 194 167 167 118 185 185 132 203 203 145 165 165 165 241 241 177 255 255 189 160 160 113 185 184 131 197 197 142 221 221 160 238 238 175 253 253 188 161 161 113 180 180 128]; mask:((Depth1Image new) width: 17; height: 16; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@A?@@A?@?1?A?9?C?9?G?9?O?9?O?9?O?9?O?1?O?!!?O?A?G>A?@@A?@@A?@@A?') ; yourself); yourself]
-! !
-
-!StoreProjectBrowser 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:Tools::StoreProjectBrowser andSelector:#windowSpec
-     Tools::StoreProjectBrowser new openInterface:#windowSpec
-     Tools::StoreProjectBrowser open
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(FullSpec
-        name: windowSpec
-        window: 
-       (WindowSpec
-          label: 'Tools::StoreProjectBrowser'
-          name: 'Tools::StoreProjectBrowser'
-          min: (Point 10 10)
-          max: (Point 1024 768)
-          bounds: (Rectangle 0 0 527 369)
-          menu: mainMenu
-        )
-        component: 
-       (SpecCollection
-          collection: (
-           (VariableHorizontalPanelSpec
-              name: 'VariableHorizontalPanel1'
-              layout: (LayoutFrame 0 0 0 0 0 1 -30 1)
-              snapMode: both
-              handlePosition: right
-              component: 
-             (SpecCollection
-                collection: (
-                 (ViewSpec
-                    name: 'Box1'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Bundles and Packages:'
-                          name: 'Label1'
-                          layout: (LayoutFrame 0 0 0 0 0 1 30 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (InputFieldSpec
-                          name: 'PackageFilterEntryField'
-                          layout: (LayoutFrame 2 0 30 0 -2 1 58 0)
-                          model: packagesFilterHolder
-                          immediateAccept: true
-                          acceptOnReturn: true
-                          acceptOnTab: true
-                          acceptOnLostFocus: true
-                          acceptOnPointerLeave: false
-                        )
-                       (SequenceViewSpec
-                          name: 'PackageList'
-                          layout: (LayoutFrame 0 0 60 0 0 1 0 1)
-                          model: selectedPackageHolder
-                          menu: packageListMenu
-                          hasHorizontalScrollBar: true
-                          hasVerticalScrollBar: true
-                          valueChangeSelector: packageSelectionChanged
-                          useIndex: true
-                          sequenceList: packagesList
-                        )
-                       )
-                     
-                    )
-                  )
-                 (ViewSpec
-                    name: 'Box3'
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (LabelSpec
-                          label: 'Versions:'
-                          name: 'Label2'
-                          layout: (LayoutFrame 0 0 0 0 0 1 30 0)
-                          translateLabel: true
-                          adjust: left
-                        )
-                       (VariableVerticalPanelSpec
-                          name: 'VariableVerticalPanel1'
-                          layout: (LayoutFrame 0 0 30 0 0 1 0 1)
-                          component: 
-                         (SpecCollection
-                            collection: (
-                             (SequenceViewSpec
-                                name: 'VersionsList'
-                                model: selectedVersionHolder
-                                menu: versionsListMenu
-                                hasHorizontalScrollBar: true
-                                hasVerticalScrollBar: true
-                                valueChangeSelector: versionSelectionChanged
-                                useIndex: true
-                                sequenceList: versionsList
-                              )
-                             (ViewSpec
-                                name: 'Box2'
-                                component: 
-                               (SpecCollection
-                                  collection: (
-                                   (LabelSpec
-                                      label: 'Comment:'
-                                      name: 'Label3'
-                                      layout: (LayoutFrame 0 0 0 0 0 1 30 0)
-                                      translateLabel: true
-                                      adjust: left
-                                    )
-                                   (TextEditorSpec
-                                      name: 'CommentTextEditor'
-                                      layout: (LayoutFrame 0 0 30 0 0 1 -1 1)
-                                      model: commentTextHolder
-                                      hasHorizontalScrollBar: true
-                                      hasVerticalScrollBar: true
-                                    )
-                                   )
-                                 
-                                )
-                              )
-                             )
-                           
-                          )
-                          handles: (Any 0.5 1.0)
-                        )
-                       )
-                     
-                    )
-                  )
-                 )
-               
-              )
-              handles: (Any 0.5 1.0)
-            )
-           (LabelSpec
-              name: 'InfoLabel'
-              layout: (LayoutFrame 2 0 -28 1 -1 1 -1 1)
-              level: -1
-              translateLabel: true
-              labelChannel: infoLabelHolder
-              adjust: left
-            )
-           )
-         
-        )
-      )
-! !
-
-!StoreProjectBrowser class methodsFor:'internationalization'!
-
-resourcePackName
-    ^ 'StoreProjectBrowser'
-! !
-
-!StoreProjectBrowser class methodsFor:'menu specs'!
-
-mainMenu
-    "This resource specification was automatically generated
-     by the MenuEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the MenuEditor may not be able to read the specification."
-
-    "
-     MenuEditor new openOnClass:Tools::StoreProjectBrowser andSelector:#mainMenu
-     (Menu new fromLiteralArrayEncoding:(Tools::StoreProjectBrowser mainMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(Menu
-        (
-         (MenuItem
-            label: 'File'
-            translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Fileout As...'
-                  itemValue: menuFileoutAs
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Update'
-                  itemValue: menuUpdate
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Exit'
-                  itemValue: closeRequest
-                  translateLabel: true
-                )
-               )
-              nil
-              nil
-            )
-          )
-         (MenuItem
-            label: 'Connection'
-            translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Connect'
-                  itemValue: menuConnect
-                  translateLabel: true
-                  isVisible: notConnectedHolder
-                )
-               (MenuItem
-                  label: 'Disconnect'
-                  itemValue: menuDisconnect
-                  translateLabel: true
-                  isVisible: isConnectedHolder
-                )
-               )
-              nil
-              nil
-            )
-          )
-         (MenuItem
-            label: 'Help'
-            translateLabel: true
-            startGroup: right
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Documentation'
-                  itemValue: openDocumentation
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'About this Application...'
-                  itemValue: openAboutThisApplication
-                  translateLabel: true
-                )
-               )
-              nil
-              nil
-            )
-          )
-         )
-        nil
-        nil
-      )
-!
-
-packageListMenu
-    "This resource specification was automatically generated
-     by the MenuEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the MenuEditor may not be able to read the specification."
-
-    "
-     MenuEditor new openOnClass:Tools::StoreProjectBrowser andSelector:#packageListMenu
-     (Menu new fromLiteralArrayEncoding:(Tools::StoreProjectBrowser packageListMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(Menu
-        (
-         (MenuItem
-            label: 'Update'
-            itemValue: menuUpdatePackageList
-            translateLabel: true
-          )
-         )
-        nil
-        nil
-      )
-!
-
-versionsListMenu
-    "This resource specification was automatically generated
-     by the MenuEditor of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the MenuEditor may not be able to read the specification."
-
-    "
-     MenuEditor new openOnClass:Tools::StoreProjectBrowser andSelector:#versionsListMenu
-     (Menu new fromLiteralArrayEncoding:(Tools::StoreProjectBrowser versionsListMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(Menu
-        (
-         (MenuItem
-            label: 'Load'
-            itemValue: versionsListMenuLoad
-            translateLabel: true
-          )
-         (MenuItem
-            label: 'Browse'
-            itemValue: versionsListMenuBrowse
-            translateLabel: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Update'
-            itemValue: versionsListMenuUpdate
-            translateLabel: true
-          )
-         )
-        nil
-        nil
-      )
-! !
-
-!StoreProjectBrowser class methodsFor:'startup'!
-
-openOn:aDBInfo
-    |newApp|
-
-    newApp := self new.
-    newApp allButOpen.
-    newApp dbInfo:aDBInfo.
-    newApp open.
-    ^ newApp
-! !
-
-!StoreProjectBrowser methodsFor:'actions'!
-
-packageSelectionChanged
-    |newest|
-
-    self withReadCursorDo:[
-        selectedBundleOrPackage := packagesList value at:(selectedPackageHolder value).
-        self updateVersionsListFor:selectedBundleOrPackage.
-
-        versionsList value notEmptyOrNil ifTrue:[
-            newest := versionsList value first.
-            self updateCommentFor:newest
-        ]
-    ].
-!
-
-versionSelectionChanged
-    |selIndex|
-
-    selIndex := selectedVersionHolder value.
-    selIndex isNil ifTrue:[
-        self commentTextHolder value:nil.
-        selectedVersion := nil.
-    ] ifFalse:[
-        selectedVersion := versionsList value at:selIndex.
-        self withReadCursorDo:[
-            self updateBlessingCommentFor:selectedVersion
-        ].
-    ]
-! !
-
-!StoreProjectBrowser methodsFor:'aspects'!
-
-commentTextHolder
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-    "*** (and replace this comment by something more useful ;-)"
-
-    commentTextHolder isNil ifTrue:[
-        commentTextHolder := '' asValue.
-"/ if your app needs to be notified of changes, uncomment one of the lines below:
-"/       commentTextHolder addDependent:self.
-"/       commentTextHolder onChangeSend:#commentTextHolderChanged to:self.
-    ].
-    ^ commentTextHolder.
-!
-
-infoLabelHolder
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-    "*** (and replace this comment by something more useful ;-)"
-
-    infoLabelHolder isNil ifTrue:[
-        infoLabelHolder := ValueHolder new.
-"/ if your app needs to be notified of changes, uncomment one of the lines below:
-"/       infoLabelHolder addDependent:self.
-"/       infoLabelHolder onChangeSend:#infoLabelHolderChanged to:self.
-    ].
-    ^ infoLabelHolder.
-!
-
-isConnected
-    ^ connection notNil and:[ connection isConnected ].
-!
-
-isConnectedHolder
-    ^ [ self isConnected ]
-!
-
-notConnectedHolder
-    ^ [ self isConnected not ]
-!
-
-packagesFilterHolder
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-    "*** (and replace this comment by something more useful ;-)"
-
-    packagesFilterHolder isNil ifTrue:[
-        packagesFilterHolder := ValueHolder new.
-"/ if your app needs to be notified of changes, uncomment one of the lines below:
-"/       packagesFilterHolder addDependent:self.
-"/       packagesFilterHolder onChangeSend:#packagesFilterHolderChanged to:self.
-    ].
-    ^ packagesFilterHolder.
-!
-
-packagesList
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-    "*** (and replace this comment by something more useful ;-)"
-
-    packagesList isNil ifTrue:[
-        packagesList := ValueHolder new.
-"/ if your app needs to be notified of changes, uncomment one of the lines below:
-"/       packagesList addDependent:self.
-"/       packagesList onChangeSend:#packagesListChanged to:self.
-    ].
-    ^ packagesList.
-!
-
-selectedPackageHolder
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-    "*** (and replace this comment by something more useful ;-)"
-
-    selectedPackageHolder isNil ifTrue:[
-        selectedPackageHolder := ValueHolder new.
-"/ if your app needs to be notified of changes, uncomment one of the lines below:
-"/       selectedPackageHolder addDependent:self.
-"/       selectedPackageHolder onChangeSend:#selectedPackageHolderChanged to:self.
-    ].
-    ^ selectedPackageHolder.
-!
-
-selectedVersionHolder
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-    "*** (and replace this comment by something more useful ;-)"
-
-    selectedVersionHolder isNil ifTrue:[
-        selectedVersionHolder := ValueHolder new.
-"/ if your app needs to be notified of changes, uncomment one of the lines below:
-"/       selectedVersionHolder addDependent:self.
-"/       selectedVersionHolder onChangeSend:#selectedVersionHolderChanged to:self.
-    ].
-    ^ selectedVersionHolder.
-!
-
-versionsList
-    "automatically generated by UIPainter ..."
-
-    "*** the code below creates a default model when invoked."
-    "*** (which may not be the one you wanted)"
-    "*** Please change as required and accept it in the browser."
-    "*** (and replace this comment by something more useful ;-)"
-
-    versionsList isNil ifTrue:[
-        versionsList := ValueHolder new.
-"/ if your app needs to be notified of changes, uncomment one of the lines below:
-"/       versionsList addDependent:self.
-"/       versionsList onChangeSend:#versionsListChanged to:self.
-    ].
-    ^ versionsList.
-! !
-
-!StoreProjectBrowser methodsFor:'db access'!
-
-getBlob:id
-    ^ self getBlob:id withPrefix:nil
-!
-
-getBlob:id withPrefix:prefixOrNil
-    |item cursor row blobType blobData rawData|
-
-    item := Set new.
-    cursor := connection 
-                execute:('SELECT blobtype,blobdata FROM tw_blob where primarykey = %1;' bindWith:id)
-                release:false.
-
-    cursor next notNil ifTrue:[
-        row := cursor rowAsArray.
-        blobType := (row at:1).
-        rawData := (row at:2).
-        blobData := Base64Coder decode:rawData.
-    ].
-    cursor release.
-
-    blobType < 0 ifTrue:[
-        "/ this data is a prefix...
-self halt.
-        ^ self getBlob:(blobType negated) withPrefix:blobData
-    ].
-
-    blobType == 1 ifTrue:[
-        "binary"
-        ^ blobData
-    ].
-    blobType == 2 ifTrue:[
-        "string"
-        ^ blobData asString
-    ].
-    blobType == 3 ifTrue:[
-        "2-byte string"
-self halt.
-        ^ nil
-    ].
-self halt.
-    ^ nil
-!
-
-getBundles
-    |items cursor row|
-
-    items := Set new.
-    cursor := connection 
-                execute:'SELECT DISTINCT name FROM tw_bundle;'
-                release:false.
-
-    [cursor next notNil] whileTrue:[
-        row := cursor rowAsArray.
-        Transcript showCR:row.
-        items add:(Bundle new name:(row at:1)).
-    ].
-    cursor release.
-    ^ items asOrderedCollection sort:[:a :b| a name < b name]
-!
-
-getConnection
-    |session|
-
-    dbInfo isNil ifTrue:[
-        self askForDatabaseInfo
-    ].
-
-    session := SQL::ODBCSession new.
-    SQL::ODBCError handle:[:ex |
-        ^ nil.
-    ] do:[
-        session 
-            connectWithUsername:(dbInfo userName) 
-            password:(dbInfo password) 
-            dbname:(dbInfo dbName).
-    ].
-
-    (session isConnected) ifFalse:[
-        ^ nil.
-    ].
-    ^ session.
-!
-
-getPackages
-    |items cursor row|
-
-    items := Set new.
-    cursor := connection 
-                execute:'SELECT DISTINCT name FROM tw_package;'
-                release:false.
-
-    [cursor next notNil] whileTrue:[
-        row := cursor rowAsArray.
-        Transcript showCR:row.
-        items add:(Package new name:(row at:1)).
-    ].
-    cursor release.
-    ^ items asOrderedCollection sort:[:a :b| a name < b name]
-!
-
-getVersionsForBundle:aBundle
-    ^ self getVersionsForBundleOrPackage:aBundle isBundle:true
-!
-
-getVersionsForBundleOrPackage:aBundle isBundle:isBundle
-    |items cursor row table|
-
-    connection isNil ifTrue:[^ #() ].
-
-    table := isBundle ifTrue:'tw_bundle' ifFalse:'tw_package'.
-
-    items := Set new.
-    cursor := connection 
-                execute:'SELECT name,version,username,timestamp,commentid,primarykey,blessinglevel 
-                         FROM ',table,
-                         "/ ' WHERE name = ''',aBundle name,''' ',
-                         ';'
-                release:false.
-
-    [cursor next notNil] whileTrue:[
-        |v name version username timestamp commentid primarykey blessinglevel|
-
-        row := cursor rowAsArray.
-Transcript showCR:row.
-        name := row at:1.
-        version := row at:2.
-        username := row at:3.
-        timestamp := row at:4.
-        commentid := row at:5.
-        primarykey := row at:6.
-        blessinglevel := row at:7.
-        name = aBundle name ifTrue:[
-            v := PundleVersion new.
-            v pundle:aBundle version:version user:username.
-            v timestampInt:timestamp commentId:commentid.
-            v blessingLevel:blessinglevel.
-            v id:primarykey.
-            v isBundle:isBundle.
-            items add:v.
-        ]
-    ].
-    cursor release.
-    ^ items asOrderedCollection sort:[:a :b| a isVersionAfter: b]
-!
-
-getVersionsForPackage:aPackage
-    ^ self getVersionsForBundleOrPackage:aPackage isBundle:false
-!
-
-updateBlessingCommentFor:aPundleVersion
-    |versionId commentId user comment cursor row recType|
-
-    versionId := aPundleVersion id.
-    recType := aPundleVersion isBundle ifTrue:'B' ifFalse:'P'.
-
-    cursor := connection 
-                execute:'SELECT username,commentid FROM tw_blessing 
-WHERE pkgid = ',versionId printString,' AND rectype = ''',recType,''';'
-                release:false.
-    cursor isNil ifTrue:[
-        commentId :=0
-    ] ifFalse:[
-        row := cursor next rowAsArray.
-        cursor release.
-
-        user := row at:1.    
-        commentId := row at:2.    
-    ].
-
-    commentId == 0 ifTrue:[
-        comment := 'No comment' allItalic  
-    ] ifFalse:[
-        comment := self getBlob:commentId.
-        comment := comment asCollectionOfSubCollectionsSeparatedBy:Character return.
-        comment := comment asStringCollection asString.
-    ].
-    self commentTextHolder value:comment.
-!
-
-updateCommentFor:aPundleVersion
-    |comment id|
-
-    id := aPundleVersion commentId.
-    id == 0 ifTrue:[
-        comment := 'No comment' allItalic  
-    ] ifFalse:[
-        comment := self getBlob:(aPundleVersion commentId).
-    ].
-    self commentTextHolder value:comment.
-!
-
-updatePackagesList
-    |bundles packages|
-
-    connection isNil ifTrue:[^ self ].
-
-    self withReadCursorDo:[
-        bundles := self getBundles.
-        packages := self getPackages.
-    ].
-    packagesList value:(bundles , packages).
-!
-
-updateVersionsListFor:aBundleOrPackage
-    |items|
-
-    aBundleOrPackage isBundle ifTrue:[
-        items := self getVersionsForBundle:aBundleOrPackage
-    ] ifFalse:[
-        items := self getVersionsForPackage:aBundleOrPackage
-    ].
-    self selectedVersionHolder value:nil.
-    versionsList value:items.
-! !
-
-!StoreProjectBrowser methodsFor:'help'!
-
-aboutThisApplicationText
-    ^ super aboutThisApplicationText , 
-      '\\Written by Claus Gittinger, eXept Software AG.' withCRs
-! !
-
-!StoreProjectBrowser methodsFor:'initialization & release'!
-
-dbInfo:aDBInfo
-    |session|
-
-    dbInfo := aDBInfo.
-    session := self getConnection.
-    (session notNil) ifFalse:[
-        ^ self.
-    ].
-    connection := session.
-    self updateInfo.
-    ^ self
-!
-
-postOpenWith:aBuilder
-    super postOpenWith:aBuilder.
-    self updatePackagesList.
-!
-
-release
-    connection notNil ifTrue:[
-        connection disconnect.
-        connection := nil.
-    ]
-!
-
-updateInfo
-    self isConnected ifTrue:[
-        self window label:('Store Browser: ',dbInfo dbName).
-        self infoLabelHolder value:('Connected to ',dbInfo dbName).
-    ] ifFalse:[
-        self window label:'Store Browser'.
-        self infoLabelHolder value:nil.
-    ]
-! !
-
-!StoreProjectBrowser methodsFor:'menu actions'!
-
-askForDatabaseInfo
-    |defaultInfo|
-
-    defaultInfo := StoreSourceCodeManager defaultDBInfo.
-    defaultInfo dbName isNil ifTrue:[
-        defaultInfo := StoreSourceCodeManager repositoryInfoPerModule firstIfEmpty:nil.
-    ].
-    dbInfo := defaultInfo
-!
-
-menuConnect
-    |session|
-
-    connection isNil ifTrue:[
-        session := self getConnection.
-        (session notNil) ifFalse:[
-            ^ self.
-        ].
-        connection := session.
-        self updateInfo.
-        self updatePackagesList.
-    ]
-!
-
-menuDisconnect
-    connection notNil ifTrue:[
-        connection disconnect.
-        connection := nil.
-        self updateInfo.
-    ]
-!
-
-menuFileoutAs
-    "automatically generated by UIPainter ..."
-
-    "*** the code below performs no action"
-    "*** (except for some feedback on the Transcript)"
-    "*** Please change as required and accept in the browser."
-
-    "action to be added ..."
-
-    Transcript showCR:self class name, ': menu action for menuFileoutAs ...'.
-!
-
-menuOpen
-    "This method was generated by the Browser.
-     It will be invoked when the menu-item 'open' is selected."
-
-    "/ change below and add any actions as required here ...
-    self warn:'no action for ''open'' available.'.
-!
-
-menuUpdate
-    self updatePackagesList
-!
-
-openDocumentation
-    "This method was generated by the Browser.
-     It will be invoked when the menu-item 'help-documentation' is selected."
-
-    "/ change below as required ...
-
-    "/ to open an HTML viewer on some document (under 'doc/online/<language>/' ):
-    HTMLDocumentView openFullOnDocumentationFile:'TOP.html'.
-
-    "/ add application-specific help files under the 'doc/online/<language>/help/appName'
-    "/ directory, and open a viewer with:
-    "/ HTMLDocumentView openFullOnDocumentationFile:'help/<MyApplication>/TOP.html'.
-!
-
-versionsListMenuBrowse
-    |reader changeSet environment|
-
-    reader := StoreProjectChangeSetReader new.
-    reader 
-        browser:self dbConnection:connection 
-        bundleOrPackage:selectedBundleOrPackage version:selectedVersion.
-    changeSet :=reader changeSet.
-    ChangeSetBrowser openOn:changeSet.
-self halt.
-
-    environment := StoreProjectEnvironment for:selectedVersion connection:connection.
-        SystemBrowser
-            openOn:environment 
-            label:(resources string:'%1' with:selectedBundleOrPackage name , ' ' , selectedVersion version)
-!
-
-versionsListMenuLoad
-self halt.
-!
-
-versionsListMenuUpdate
-self halt.
-! !
-
-!StoreProjectBrowser::Pundle methodsFor:'accessing'!
-
-name
-    ^ name
-!
-
-name:something
-    name := something.
-! !
-
-!StoreProjectBrowser::Pundle methodsFor:'printing'!
-
-displayString
-    ^ name
-! !
-
-!StoreProjectBrowser::Pundle methodsFor:'testing'!
-
-isBundle
-    ^ false
-!
-
-isPackage
-    ^ false
-! !
-
-!StoreProjectBrowser::Package methodsFor:'testing'!
-
-isPackage
-    ^ true
-! !
-
-!StoreProjectBrowser::Bundle methodsFor:'printing'!
-
-displayString
-    ^ name ,' (Bundle)'
-! !
-
-!StoreProjectBrowser::Bundle methodsFor:'testing'!
-
-isBundle
-    ^ true
-! !
-
-!StoreProjectBrowser::PundleVersion methodsFor:'accessing'!
-
-blessingLevel
-    ^ blessingLevel
-!
-
-blessingLevel:something
-    blessingLevel := something.
-!
-
-commentId
-    ^ commentId
-!
-
-id
-    ^ id
-!
-
-id:something
-    id := something.
-!
-
-isBundle
-    ^ isBundle
-!
-
-isBundle:aBoolean
-    isBundle := aBoolean
-!
-
-isPackage
-    ^ isBundle not
-!
-
-pundle
-    ^ pundle
-!
-
-pundle:pundleArg version:versionArg user:userArg 
-    pundle := pundleArg.
-    version := versionArg.
-    user := userArg.
-!
-
-timestamp
-    |deltaSeconds|
-
-    timestamp isNil ifTrue:[
-        "/ to compute the timestamp, we have to do this:
-        "/   the timestampInt are seconds since 1993 + 10d + 19min + 47sec"
-        "/   can anyone explain this ????
-        deltaSeconds := 23*365 * 24*60*60.                  "/ 23 years
-        deltaSeconds := deltaSeconds + (233*24*60*60).      "/ 10 days
-        deltaSeconds := deltaSeconds + (19*60).             "/ 19 minutes
-        deltaSeconds := deltaSeconds + (47).                "/ 47 seconds
-
-        timestamp := Timestamp secondsSince1970:(timestampInt + deltaSeconds).
-    ].
-    ^ timestamp
-!
-
-timestampInt:timestampIntArg commentId:commentIdArg 
-    timestampInt := timestampIntArg.
-    commentId := commentIdArg.
-!
-
-user
-    ^ user
-!
-
-version
-    ^ version
-! !
-
-!StoreProjectBrowser::PundleVersion methodsFor:'comparing'!
-
-isVersionAfter:anotherVersion
-    |myMajor othersMajor myMinor othersMinor|
-
-    myMajor := self majorVersion.
-    othersMajor := anotherVersion majorVersion.
-
-    myMajor > othersMajor ifTrue:[^ true].
-    myMajor < othersMajor ifTrue:[^ false].
-
-    myMinor := self minorVersion.
-    othersMinor := anotherVersion minorVersion.
-
-    myMinor > othersMinor ifTrue:[^ true].
-    myMinor < othersMinor ifTrue:[^ false].
-
-    ^ version > anotherVersion version
-!
-
-majorVersion
-    ^ Integer readFrom:(version upTo:$:)
-!
-
-minorVersion
-    ^ Integer readFrom:((version restAfter:$.) upTo:$.)
-! !
-
-!StoreProjectBrowser::PundleVersion methodsFor:'printing'!
-
-displayString
-    ^ version , ' (',user,') ' , self timestamp printString
-! !
-
-!StoreProjectBrowser::StoreProjectChangeSetReader methodsFor:'accessing'!
-
-browser:browserArg dbConnection:dbConnectionArg bundleOrPackage:bundleOrPackageArg version:versionArg 
-    browser := browserArg.
-    dbConnection := dbConnectionArg.
-    bundleOrPackage := bundleOrPackageArg.
-    version := versionArg.
-! !
-
-!StoreProjectBrowser::StoreProjectChangeSetReader methodsFor:'reading'!
-
-allClassesDo:aBlock
-    |packageId cursor row entries classes|
-
-    packageId := bundleOrPackage id.
-
-    entries := OrderedCollection new.
-    cursor := dbConnection
-        execute:('SELECT classref,metaclassref,definitionorder FROM tw_pkgclasses WHERE packageref = %1'
-                bindWith:packageId)
-        release:false.
-
-    [cursor next notNil] whileTrue:[
-        row := cursor rowAsObject.
-        entries add:row.
-    ].
-    cursor release.
-
-    classes := entries collect:[:entry |
-                |records classRecord metaclassRecord|
-
-                "/ entry classref 
-                "/ entry metaclassref 
-                "/ entry definitionorder 
-                cursor := dbConnection
-                    execute:('SELECT name,definitionid,commentid,environmentstring,superclass
-                              FROM tw_classrecord WHERE primarykey = %1'
-                            bindWith:entry classref)
-                    release:false.
-                records := OrderedCollection new.
-                [cursor next notNil] whileTrue:[
-                    row := cursor rowAsObject.
-                    records add:row.
-                ].
-                cursor release.
-                self assert:(records size == 1).
-                classRecord := records first.
-
-                cursor := dbConnection
-                    execute:('SELECT name,definitionid,commentid,environmentstring,superclass
-                              FROM tw_classrecord WHERE primarykey = %1'
-                            bindWith:entry metaclassref)
-                    release:false.
-                records := OrderedCollection new.
-                [cursor next notNil] whileTrue:[
-                    row := cursor rowAsObject.
-                    records add:row.
-                ].
-                cursor release.
-                self assert:(records size == 1).
-                metaclassRecord := records first.
-
-                { classRecord. metaclassRecord. entry definitionorder }
-           ].
-!
-
-changeSet
-    "build a changeSet from the bundle or package
-     Return the changeSet."
-
-    changeSet := ChangeSet new.
-    self fetchClassDefinitions.
-"/        changesFromStream:aStream 
-"/        for:changeSet 
-"/        reader:(ChangeFileReader new)
-"/        do:[:aChange :lineNumberOrNil :posOrNil |
-"/            changeSet add:aChange.
-"/            (aConditionBlock value:aChange) ifFalse:[^ changeSet].
-"/        ].
-
-    ^ changeSet
-!
-
-fetchClassDefinitions
-    |packageId cursor row entries classes change|
-
-    packageId := version id.
-
-    entries := OrderedCollection new.
-    cursor := dbConnection
-        execute:('SELECT classref,metaclassref,definitionorder FROM tw_pkgclasses WHERE packageref = %1'
-                bindWith:packageId)
-        release:false.
-
-    [cursor next notNil] whileTrue:[
-        row := cursor rowAsObject.
-        entries add:row.
-    ].
-    cursor release.
-
-    classes := entries collect:[:entry |
-                |records classRecord metaclassRecord definitionString|
-
-                "/ entry classref 
-                "/ entry metaclassref 
-                "/ entry definitionorder 
-                cursor := dbConnection
-                    execute:('SELECT name,definitionid,commentid,environmentstring,superclass
-                              FROM tw_classrecord WHERE primarykey = %1'
-                            bindWith:entry classref)
-                    release:false.
-                records := OrderedCollection new.
-                [cursor next notNil] whileTrue:[
-                    row := cursor rowAsObject.
-                    records add:row.
-                ].
-                cursor release.
-                self assert:(records size == 1).
-                classRecord := records first.
-
-                cursor := dbConnection
-                    execute:('SELECT name,definitionid,commentid,environmentstring,superclass
-                              FROM tw_classrecord WHERE primarykey = %1'
-                            bindWith:entry metaclassref)
-                    release:false.
-                records := OrderedCollection new.
-                [cursor next notNil] whileTrue:[
-                    row := cursor rowAsObject.
-                    records add:row.
-                ].
-                cursor release.
-                self assert:(records size == 1).
-                metaclassRecord := records first.
-
-                change := ClassDefinitionChange new.
-                definitionString := browser getBlob:(classRecord definitionid).
-                change source:definitionString.
-                change className:classRecord name.
-                "/ change superClassName:metaclassRecord name.
-                change package:bundleOrPackage name.
-                changeSet add:change.
-
-                { classRecord. metaclassRecord. entry definitionorder }
-           ].
-! !
-
-!StoreProjectBrowser class methodsFor:'documentation'!
-
-version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__StoreProjectBrowser.st,v 1.13 2009-09-21 21:29:29 cg Exp $'
-! !
--- a/Tools__StringSearchTool.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__StringSearchTool.st	Wed Jan 30 11:15:09 2013 +0000
@@ -70,6 +70,7 @@
 "
 ! !
 
+
 !StringSearchTool class methodsFor:'accessing'!
 
 lastMatchCase
@@ -92,6 +93,7 @@
     LastRestart := aBoolean
 ! !
 
+
 !StringSearchTool class methodsFor:'image specs'!
 
 closeSearchBarIcon
@@ -279,6 +281,7 @@
 (Q0_$1XZ#1X["A(]^QPX&34>?;&).&-Z/6]Y06MU1&AR/5UG15-N0EYF1&EO0&EN/&EP.6AN.%5N.5-M.5%P/UYQ.$)I.4)L0UQW/U-\+5YX5XFA') ; mask:((Depth1Image new) width: 22; height: 19; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@C G@G0C@O0C@O8C@_8C@?<C@?<CA?>CC??CC??CC??#G??#O??3O??3_??;????????????????') ; yourself); yourself]
 ! !
 
+
 !StringSearchTool class methodsFor:'interface specs'!
 
 windowSpec
@@ -392,6 +395,7 @@
       )
 ! !
 
+
 !StringSearchTool methodsFor:'accessing'!
 
 closeBlock
@@ -442,6 +446,7 @@
     ^ searchTextView contents
 ! !
 
+
 !StringSearchTool methodsFor:'aspects'!
 
 matchCaseHolder
@@ -507,6 +512,7 @@
     "Created: / 15-06-2007 / 18:07:19 / Administrador"
 ! !
 
+
 !StringSearchTool methodsFor:'change & update'!
 
 matchCaseHolderChanged
@@ -570,6 +576,7 @@
     "Modified: / 16-06-2007 / 09:21:27 / Administrador"
 ! !
 
+
 !StringSearchTool methodsFor:'images'!
 
 restartSearchBarIcon
@@ -582,6 +589,7 @@
     ^ self class warningSearchBarIcon
 ! !
 
+
 !StringSearchTool methodsFor:'initialization & release'!
 
 commonPostOpen
@@ -596,6 +604,7 @@
     "Created: / 15-06-2007 / 18:17:15 / Administrador"
 ! !
 
+
 !StringSearchTool methodsFor:'private'!
 
 searchReachEndOrBeginningIcon
@@ -627,6 +636,7 @@
     "Created: / 16-06-2007 / 06:29:00 / Administrador"
 ! !
 
+
 !StringSearchTool methodsFor:'public'!
 
 escapePressed
@@ -702,6 +712,7 @@
     searchTextView requestFocus.
 ! !
 
+
 !StringSearchTool methodsFor:'searching'!
 
 hideSearchBar
@@ -791,6 +802,7 @@
 "/            ignoreCase: ignoreCase 
 ! !
 
+
 !StringSearchTool class methodsFor:'documentation'!
 
 version
@@ -799,5 +811,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/Tools__StringSearchTool.st,v 1.21 2013-01-17 11:18:42 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: Tools__StringSearchTool.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
 
--- a/Tools__StringSearchToolForTextView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__StringSearchToolForTextView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -501,9 +501,13 @@
 !StringSearchToolForTextView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__StringSearchToolForTextView.st,v 1.16 2010-05-07 12:27:34 cg Exp $'
+    ^ '$Id: Tools__StringSearchToolForTextView.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__StringSearchToolForTextView.st,v 1.16 2010-05-07 12:27:34 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__StringSearchToolForTextView.st,v 1.16 2010/05/07 12:27:34 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__StringSearchToolForTextView.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/Tools__Tag.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__Tag.st	Wed Jan 30 11:15:09 2013 +0000
@@ -20,182 +20,182 @@
 	category:'Interface-Tools-File-Tags'
 !
 
-Tag subclass:#TElement
+Tools::Tag subclass:#TElement
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TClass
+Tools::Tag subclass:#TClass
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TDocumentation
+Tools::Tag subclass:#TDocumentation
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag::TElement subclass:#TAnchorElement
+Tools::Tag::TElement subclass:#TAnchorElement
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TEnum
+Tools::Tag subclass:#TEnum
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TEnumMember
+Tools::Tag subclass:#TEnumMember
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TField
+Tools::Tag subclass:#TField
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag::TElement subclass:#TFormElement
+Tools::Tag::TElement subclass:#TFormElement
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TFunction
+Tools::Tag subclass:#TFunction
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag::TElement subclass:#THeaderElement
+Tools::Tag::TElement subclass:#THeaderElement
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TInterface
+Tools::Tag subclass:#TInterface
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TLabel
+Tools::Tag subclass:#TLabel
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TLispConstant
+Tools::Tag subclass:#TLispConstant
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TLispEval
+Tools::Tag subclass:#TLispEval
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TLispMacro
+Tools::Tag subclass:#TLispMacro
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TMacro
+Tools::Tag subclass:#TMacro
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TMakeRule
+Tools::Tag subclass:#TMakeRule
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TMakeTarget
+Tools::Tag subclass:#TMakeTarget
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TMember
+Tools::Tag subclass:#TMember
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TMethod
+Tools::Tag subclass:#TMethod
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TPackage
+Tools::Tag subclass:#TPackage
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TPrologClause
+Tools::Tag subclass:#TPrologClause
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TStruct
+Tools::Tag subclass:#TStruct
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TTypedef
+Tools::Tag subclass:#TTypedef
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TUnion
+Tools::Tag subclass:#TUnion
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:Tag
 !
 
-Tag subclass:#TVariable
+Tools::Tag subclass:#TVariable
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -227,6 +227,7 @@
 "
 ! !
 
+
 !Tag class methodsFor:'instance creation'!
 
 label:aLabel pattern:aPattern
@@ -261,6 +262,7 @@
     "Modified: / 05-05-2011 / 15:42:45 / cg"
 ! !
 
+
 !Tag class methodsFor:'accessing'!
 
 typeIdentifier
@@ -269,6 +271,7 @@
 
 ! !
 
+
 !Tag methodsFor:'accessing'!
 
 fileName
@@ -321,6 +324,7 @@
     ^ '???'
 ! !
 
+
 !Tag methodsFor:'instance creation'!
 
 label:aLabel pattern:aPattern lineNumber:aLineNumer className:cName
@@ -339,6 +343,7 @@
 
 ! !
 
+
 !Tag methodsFor:'list interface'!
 
 explainString
@@ -389,6 +394,7 @@
     ^ l
 ! !
 
+
 !Tag methodsFor:'queries'!
 
 widthOn:aGC
@@ -399,6 +405,7 @@
     ^ width
 ! !
 
+
 !Tag methodsFor:'tag searching'!
 
 lineNumberIn:someText
@@ -455,6 +462,7 @@
     ^ lnr
 ! !
 
+
 !Tag methodsFor:'testing'!
 
 isClassTag
@@ -623,6 +631,7 @@
 
 ! !
 
+
 !Tag::TElement class methodsFor:'accessing'!
 
 typeIdentifier
@@ -631,6 +640,7 @@
     "Created: / 20-04-2011 / 18:52:31 / cg"
 ! !
 
+
 !Tag::TElement class methodsFor:'documentation'!
 
 documentation
@@ -639,6 +649,7 @@
 "
 ! !
 
+
 !Tag::TElement methodsFor:'accessing'!
 
 typeIdentifierInList
@@ -653,6 +664,7 @@
     "Created: / 20-04-2011 / 18:53:29 / cg"
 ! !
 
+
 !Tag::TElement methodsFor:'testing'!
 
 isElementTag
@@ -663,6 +675,7 @@
     "Created: / 20-04-2011 / 18:53:16 / cg"
 ! !
 
+
 !Tag::TClass class methodsFor:'accessing'!
 
 typeIdentifier
@@ -671,6 +684,7 @@
     "Modified: / 05-05-2011 / 15:40:47 / cg"
 ! !
 
+
 !Tag::TClass class methodsFor:'documentation'!
 
 documentation
@@ -679,6 +693,7 @@
 "
 ! !
 
+
 !Tag::TClass methodsFor:'accessing'!
 
 typeIdentifierInList
@@ -691,6 +706,7 @@
 
 ! !
 
+
 !Tag::TClass methodsFor:'testing'!
 
 isClassTag
@@ -701,6 +717,7 @@
 
 ! !
 
+
 !Tag::TDocumentation class methodsFor:'accessing'!
 
 typeIdentifier
@@ -709,6 +726,7 @@
     "Modified: / 08-05-2011 / 10:06:26 / cg"
 ! !
 
+
 !Tag::TDocumentation class methodsFor:'documentation'!
 
 documentation
@@ -720,6 +738,7 @@
 "
 ! !
 
+
 !Tag::TDocumentation methodsFor:'accessing'!
 
 typeString
@@ -728,6 +747,7 @@
     "Modified: / 08-05-2011 / 10:05:52 / cg"
 ! !
 
+
 !Tag::TDocumentation methodsFor:'testing'!
 
 isDocumentationTag
@@ -738,6 +758,7 @@
     "Created: / 08-05-2011 / 10:06:03 / cg"
 ! !
 
+
 !Tag::TAnchorElement class methodsFor:'accessing'!
 
 typeIdentifier
@@ -746,6 +767,7 @@
     "Created: / 20-04-2011 / 18:52:31 / cg"
 ! !
 
+
 !Tag::TAnchorElement class methodsFor:'documentation'!
 
 documentation
@@ -754,6 +776,7 @@
 "
 ! !
 
+
 !Tag::TAnchorElement methodsFor:'accessing'!
 
 typeIdentifierInList
@@ -768,6 +791,7 @@
     "Created: / 20-04-2011 / 18:53:29 / cg"
 ! !
 
+
 !Tag::TEnum class methodsFor:'accessing'!
 
 typeIdentifier
@@ -776,6 +800,7 @@
     "Modified: / 05-05-2011 / 15:40:54 / cg"
 ! !
 
+
 !Tag::TEnum methodsFor:'accessing'!
 
 typeString
@@ -784,6 +809,7 @@
     "Modified: / 05-05-2011 / 15:37:03 / cg"
 ! !
 
+
 !Tag::TEnum methodsFor:'testing'!
 
 isEnumTag
@@ -792,6 +818,7 @@
     "Created: / 05-05-2011 / 15:37:15 / cg"
 ! !
 
+
 !Tag::TEnumMember class methodsFor:'accessing'!
 
 typeIdentifier
@@ -800,6 +827,7 @@
     "Modified: / 05-05-2011 / 15:40:57 / cg"
 ! !
 
+
 !Tag::TEnumMember methodsFor:'accessing'!
 
 typeString
@@ -808,6 +836,7 @@
     "Modified: / 05-05-2011 / 15:39:05 / cg"
 ! !
 
+
 !Tag::TEnumMember methodsFor:'testing'!
 
 isEnumMemberTag
@@ -816,6 +845,7 @@
     "Created: / 05-05-2011 / 15:38:49 / cg"
 ! !
 
+
 !Tag::TField class methodsFor:'accessing'!
 
 typeIdentifier
@@ -824,6 +854,7 @@
 
 ! !
 
+
 !Tag::TField methodsFor:'accessing'!
 
 typeString
@@ -831,6 +862,7 @@
 
 ! !
 
+
 !Tag::TField methodsFor:'testing'!
 
 isFieldTag
@@ -841,6 +873,7 @@
 
 ! !
 
+
 !Tag::TFormElement class methodsFor:'accessing'!
 
 typeIdentifier
@@ -849,6 +882,7 @@
     "Created: / 20-04-2011 / 18:52:31 / cg"
 ! !
 
+
 !Tag::TFormElement class methodsFor:'documentation'!
 
 documentation
@@ -857,6 +891,7 @@
 "
 ! !
 
+
 !Tag::TFormElement methodsFor:'accessing'!
 
 typeIdentifierInList
@@ -871,6 +906,7 @@
     "Created: / 20-04-2011 / 18:53:29 / cg"
 ! !
 
+
 !Tag::TFunction class methodsFor:'accessing'!
 
 typeIdentifier
@@ -879,6 +915,7 @@
     "Modified: / 05-05-2011 / 15:41:04 / cg"
 ! !
 
+
 !Tag::TFunction methodsFor:'accessing'!
 
 typeIdentifierInList
@@ -893,6 +930,7 @@
 
 ! !
 
+
 !Tag::TFunction methodsFor:'testing'!
 
 isFunctionTag
@@ -903,6 +941,7 @@
 
 ! !
 
+
 !Tag::THeaderElement class methodsFor:'accessing'!
 
 typeIdentifier
@@ -911,6 +950,7 @@
     "Created: / 20-04-2011 / 18:52:31 / cg"
 ! !
 
+
 !Tag::THeaderElement class methodsFor:'documentation'!
 
 documentation
@@ -919,6 +959,7 @@
 "
 ! !
 
+
 !Tag::THeaderElement methodsFor:'accessing'!
 
 typeIdentifierInList
@@ -933,6 +974,7 @@
     "Created: / 20-04-2011 / 18:53:29 / cg"
 ! !
 
+
 !Tag::TInterface class methodsFor:'accessing'!
 
 typeIdentifier
@@ -941,6 +983,7 @@
     "Modified: / 05-05-2011 / 15:41:08 / cg"
 ! !
 
+
 !Tag::TInterface methodsFor:'accessing'!
 
 typeString
@@ -949,6 +992,7 @@
 
 ! !
 
+
 !Tag::TInterface methodsFor:'testing'!
 
 isInterfaceTag
@@ -959,6 +1003,7 @@
 
 ! !
 
+
 !Tag::TLabel class methodsFor:'accessing'!
 
 typeIdentifier
@@ -967,6 +1012,7 @@
 
 ! !
 
+
 !Tag::TLabel methodsFor:'accessing'!
 
 typeString
@@ -975,6 +1021,7 @@
 
 ! !
 
+
 !Tag::TLabel methodsFor:'testing'!
 
 isLabelTag
@@ -985,6 +1032,7 @@
 
 ! !
 
+
 !Tag::TLispConstant class methodsFor:'accessing'!
 
 typeIdentifier
@@ -993,6 +1041,7 @@
 
 ! !
 
+
 !Tag::TLispConstant methodsFor:'accessing'!
 
 typeString
@@ -1001,6 +1050,7 @@
 
 ! !
 
+
 !Tag::TLispConstant methodsFor:'testing'!
 
 isLispConstantTag
@@ -1011,6 +1061,7 @@
 
 ! !
 
+
 !Tag::TLispEval class methodsFor:'accessing'!
 
 typeIdentifier
@@ -1019,6 +1070,7 @@
 
 ! !
 
+
 !Tag::TLispEval methodsFor:'accessing'!
 
 printString
@@ -1031,6 +1083,7 @@
 
 ! !
 
+
 !Tag::TLispEval methodsFor:'testing'!
 
 isLispEvalTag
@@ -1041,6 +1094,7 @@
 
 ! !
 
+
 !Tag::TLispMacro class methodsFor:'accessing'!
 
 typeIdentifier
@@ -1049,6 +1103,7 @@
 
 ! !
 
+
 !Tag::TLispMacro methodsFor:'accessing'!
 
 typeString
@@ -1057,6 +1112,7 @@
 
 ! !
 
+
 !Tag::TLispMacro methodsFor:'testing'!
 
 isLispMacroTag
@@ -1067,6 +1123,7 @@
 
 ! !
 
+
 !Tag::TMacro class methodsFor:'accessing'!
 
 typeIdentifier
@@ -1075,6 +1132,7 @@
 
 ! !
 
+
 !Tag::TMacro methodsFor:'accessing'!
 
 typeString
@@ -1083,6 +1141,7 @@
 
 ! !
 
+
 !Tag::TMacro methodsFor:'testing'!
 
 isMacroTag
@@ -1093,18 +1152,21 @@
 
 ! !
 
+
 !Tag::TMakeRule class methodsFor:'accessing'!
 
 typeIdentifier
     ^ 'R'
 ! !
 
+
 !Tag::TMakeRule methodsFor:'accessing'!
 
 typeString
     ^ 'rule'
 ! !
 
+
 !Tag::TMakeRule methodsFor:'testing'!
 
 isMakeTargetTag
@@ -1115,6 +1177,7 @@
 
 ! !
 
+
 !Tag::TMakeTarget class methodsFor:'accessing'!
 
 typeIdentifier
@@ -1123,6 +1186,7 @@
 
 ! !
 
+
 !Tag::TMakeTarget methodsFor:'accessing'!
 
 typeString
@@ -1131,6 +1195,7 @@
 
 ! !
 
+
 !Tag::TMakeTarget methodsFor:'testing'!
 
 isMakeTargetTag
@@ -1141,6 +1206,7 @@
 
 ! !
 
+
 !Tag::TMember class methodsFor:'accessing'!
 
 typeIdentifier
@@ -1149,6 +1215,7 @@
 
 ! !
 
+
 !Tag::TMember methodsFor:'accessing'!
 
 typeString
@@ -1157,6 +1224,7 @@
 
 ! !
 
+
 !Tag::TMember methodsFor:'testing'!
 
 isMemberTag
@@ -1167,6 +1235,7 @@
 
 ! !
 
+
 !Tag::TMethod class methodsFor:'accessing'!
 
 typeIdentifier
@@ -1175,6 +1244,7 @@
     "Modified: / 05-05-2011 / 15:41:29 / cg"
 ! !
 
+
 !Tag::TMethod methodsFor:'accessing'!
 
 typeIdentifierInList
@@ -1188,6 +1258,7 @@
 
 ! !
 
+
 !Tag::TMethod methodsFor:'testing'!
 
 isMethodTag
@@ -1198,6 +1269,7 @@
 
 ! !
 
+
 !Tag::TPackage class methodsFor:'accessing'!
 
 typeIdentifier
@@ -1206,6 +1278,7 @@
     "Modified: / 05-05-2011 / 15:41:35 / cg"
 ! !
 
+
 !Tag::TPackage methodsFor:'accessing'!
 
 typeString
@@ -1214,6 +1287,7 @@
 
 ! !
 
+
 !Tag::TPackage methodsFor:'testing'!
 
 isPackageTag
@@ -1224,6 +1298,7 @@
 
 ! !
 
+
 !Tag::TPrologClause class methodsFor:'accessing'!
 
 typeIdentifier
@@ -1232,6 +1307,7 @@
 
 ! !
 
+
 !Tag::TPrologClause methodsFor:'accessing'!
 
 typeString
@@ -1240,6 +1316,7 @@
 
 ! !
 
+
 !Tag::TPrologClause methodsFor:'testing'!
 
 isPrologClause
@@ -1250,6 +1327,7 @@
 
 ! !
 
+
 !Tag::TStruct class methodsFor:'accessing'!
 
 typeIdentifier
@@ -1258,6 +1336,7 @@
     "Modified: / 05-05-2011 / 15:41:42 / cg"
 ! !
 
+
 !Tag::TStruct methodsFor:'accessing'!
 
 typeString
@@ -1266,6 +1345,7 @@
 
 ! !
 
+
 !Tag::TStruct methodsFor:'testing'!
 
 isStructOrUnionTag
@@ -1282,6 +1362,7 @@
 
 ! !
 
+
 !Tag::TTypedef class methodsFor:'accessing'!
 
 typeIdentifier
@@ -1290,6 +1371,7 @@
     "Modified: / 05-05-2011 / 15:41:46 / cg"
 ! !
 
+
 !Tag::TTypedef methodsFor:'accessing'!
 
 typeString
@@ -1298,6 +1380,7 @@
 
 ! !
 
+
 !Tag::TTypedef methodsFor:'testing'!
 
 isTypedefTag
@@ -1308,6 +1391,7 @@
 
 ! !
 
+
 !Tag::TUnion class methodsFor:'accessing'!
 
 typeIdentifier
@@ -1316,6 +1400,7 @@
     "Modified: / 05-05-2011 / 15:41:50 / cg"
 ! !
 
+
 !Tag::TUnion methodsFor:'accessing'!
 
 typeString
@@ -1324,6 +1409,7 @@
     "Modified: / 05-05-2011 / 15:07:12 / cg"
 ! !
 
+
 !Tag::TUnion methodsFor:'testing'!
 
 isStructOrUnionTag
@@ -1340,6 +1426,7 @@
     "Created: / 05-05-2011 / 15:07:00 / cg"
 ! !
 
+
 !Tag::TVariable class methodsFor:'accessing'!
 
 typeIdentifier
@@ -1348,6 +1435,7 @@
 
 ! !
 
+
 !Tag::TVariable methodsFor:'accessing'!
 
 typeString
@@ -1356,6 +1444,7 @@
 
 ! !
 
+
 !Tag::TVariable methodsFor:'testing'!
 
 isVariableTag
@@ -1366,6 +1455,7 @@
 
 ! !
 
+
 !Tag class methodsFor:'documentation'!
 
 version_CVS
@@ -1375,3 +1465,4 @@
 version_SVN
     ^ '§Id§'
 ! !
+
--- a/Tools__TagList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__TagList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -62,6 +62,7 @@
 "
 ! !
 
+
 !TagList class methodsFor:'accessing'!
 
 tagsSuffixes
@@ -103,6 +104,7 @@
     "Modified: / 28-09-2012 / 14:48:25 / cg"
 ! !
 
+
 !TagList class methodsFor:'defaults'!
 
 arcLispSuffixes
@@ -272,6 +274,7 @@
     ^ self tagsSuffixes at:#'text/yacc'
 ! !
 
+
 !TagList class methodsFor:'queries'!
 
 isArcLispSuffix:suffix
@@ -398,6 +401,7 @@
     ^ self isSuffix:suffix in:self yaccSuffixes
 ! !
 
+
 !TagList class methodsFor:'queries basic'!
 
 isSuffix:suffix in:patterns
@@ -444,6 +448,7 @@
     ^ nil
 ! !
 
+
 !TagList class methodsFor:'tag generation'!
 
 cachedTagsFromFile:aFilename in:aTempDirectory
@@ -566,6 +571,7 @@
     ^ targets
 ! !
 
+
 !TagList methodsFor:'accessing-filters'!
 
 classesFunctionsAndVariablesOnly
@@ -1394,6 +1400,7 @@
     "Modified: / 05-05-2011 / 15:24:06 / cg"
 ! !
 
+
 !TagList methodsFor:'accessing-presentation'!
 
 groupBy
@@ -1527,6 +1534,7 @@
     ^ tagTypesPresent
 ! !
 
+
 !TagList methodsFor:'private'!
 
 applyFilterToList:aList
@@ -2010,6 +2018,7 @@
     "Modified: / 05-05-2011 / 15:13:14 / cg"
 ! !
 
+
 !TagList methodsFor:'queries'!
 
 bestTagForLine:lineNr 
@@ -2034,6 +2043,7 @@
     ^ bestTag
 ! !
 
+
 !TagList methodsFor:'tag generation'!
 
 fromFile:aFile in:aTempDirectory
@@ -2413,6 +2423,7 @@
     "Modified: / 05-05-2011 / 15:45:55 / cg"
 ! !
 
+
 !TagList methodsFor:'tag generation - simple'!
 
 assemblerTagsInFile:aFilePath
@@ -3599,6 +3610,7 @@
     "Modified: / 28-09-2012 / 14:45:52 / cg"
 ! !
 
+
 !TagList methodsFor:'testing'!
 
 supportsFile:aFile
@@ -3640,6 +3652,7 @@
 "/    ^ false
 ! !
 
+
 !TagList class methodsFor:'documentation'!
 
 version
--- a/Tools__TagsBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__TagsBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -58,6 +58,7 @@
 "
 ! !
 
+
 !TagsBrowser class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -86,6 +87,7 @@
     "Created: / 06-10-2011 / 12:04:51 / cg"
 ! !
 
+
 !TagsBrowser class methodsFor:'interface specs'!
 
 windowSpec
@@ -153,6 +155,7 @@
       )
 ! !
 
+
 !TagsBrowser class methodsFor:'menu specs'!
 
 assemblerMenuSlice
@@ -1186,6 +1189,7 @@
       )
 ! !
 
+
 !TagsBrowser methodsFor:'* As yet uncategorized *'!
 
 assignFocusToTagFilterInputField    
@@ -1195,6 +1199,7 @@
     "Created: / 02-08-2012 / 22:00:45 / cg"
 ! !
 
+
 !TagsBrowser methodsFor:'accessing'!
 
 action:aOneArgBlock
@@ -1257,6 +1262,7 @@
     "Created: / 07-05-2011 / 15:42:44 / cg"
 ! !
 
+
 !TagsBrowser methodsFor:'accessing filters'!
 
 classesFunctionsAndVariablesOnly
@@ -1858,6 +1864,7 @@
     "Modified: / 05-05-2011 / 15:33:18 / cg"
 ! !
 
+
 !TagsBrowser methodsFor:'accessing presentation aspects'!
 
 groupedByType
@@ -1928,6 +1935,7 @@
     tagList sortedByType:aBool
 ! !
 
+
 !TagsBrowser methodsFor:'aspects'!
 
 editedFileHasAssemblerSuffix
@@ -2073,6 +2081,7 @@
     ^ tagView
 ! !
 
+
 !TagsBrowser methodsFor:'change & update'!
 
 delayedEditedFileChanged
@@ -2180,6 +2189,7 @@
     "Modified: / 23-06-2011 / 17:28:26 / cg"
 ! !
 
+
 !TagsBrowser methodsFor:'hooks for ccbrowser'!
 
 buildTarget
@@ -2191,6 +2201,7 @@
     "Created: / 07-05-2011 / 15:38:20 / cg"
 ! !
 
+
 !TagsBrowser methodsFor:'menu actions'!
 
 keepingSelectionDo:aBlock
@@ -2312,6 +2323,7 @@
     "Modified: / 07-12-2011 / 11:13:18 / cg"
 ! !
 
+
 !TagsBrowser methodsFor:'startup & release'!
 
 cloneWith:anApplication
@@ -2358,6 +2370,7 @@
     "Created: / 06-12-2011 / 14:57:26 / cg"
 ! !
 
+
 !TagsBrowser::TagView methodsFor:'accessing'!
 
 application
@@ -2388,6 +2401,7 @@
     tagLineNr := lineNr
 ! !
 
+
 !TagsBrowser::TagView methodsFor:'drawing'!
 
 drawLabelAt:anIndex x:x y:y h:h
@@ -2479,6 +2493,7 @@
     ]
 ! !
 
+
 !TagsBrowser::TagView methodsFor:'generating tags'!
 
 generateTagsFor:aFile onTarget:aTarget finally:aBlock
@@ -2565,6 +2580,7 @@
     "Modified (comment): / 06-10-2011 / 14:01:30 / cg"
 ! !
 
+
 !TagsBrowser::TagView methodsFor:'initialize & release'!
 
 destroy
@@ -2580,6 +2596,7 @@
     highlightMode := #line.
 ! !
 
+
 !TagsBrowser::TagView methodsFor:'protocol'!
 
 heightOfLineAt:aLineNr
@@ -2597,6 +2614,7 @@
   ^ width + TypeInset
 ! !
 
+
 !TagsBrowser class methodsFor:'documentation'!
 
 version
@@ -2610,3 +2628,4 @@
 version_SVN
     ^ '§Id§'
 ! !
+
--- a/Tools__TestRunner2.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__TestRunner2.st	Wed Jan 30 11:15:09 2013 +0000
@@ -27,7 +27,7 @@
 
 "{ NameSpace: Tools }"
 
-AbstractTestRunner subclass:#TestRunner2
+Tools::AbstractTestRunner subclass:#TestRunner2
 	instanceVariableNames:'classCategoryOrPackageTabIndexHolder classCategoryList
 		packageList classList classListOutGeneratorHolder
 		classListInGeneratorHolder modeHolder detailsHolder
@@ -39,7 +39,7 @@
 	category:'SUnit-UI'
 !
 
-ClassList subclass:#ClassList
+Tools::ClassList subclass:#ClassList
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -91,6 +91,7 @@
 "
 ! !
 
+
 !TestRunner2 class methodsFor:'initialization'!
 
 initialize
@@ -158,6 +159,7 @@
     "Modified: / 18-08-2011 / 11:34:24 / cg"
 ! !
 
+
 !TestRunner2 class methodsFor:'help specs'!
 
 helpSpec
@@ -186,6 +188,7 @@
     "Modified: / 09-08-2012 / 09:37:16 / cg"
 ! !
 
+
 !TestRunner2 class methodsFor:'image specs'!
 
 defaultIcon
@@ -195,6 +198,7 @@
     "Created: / 19-08-2009 / 14:32:13 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !TestRunner2 class methodsFor:'interface specs'!
 
 buttonPaneSpec
@@ -774,6 +778,7 @@
     "Created: / 07-02-2010 / 14:48:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TestRunner2 class methodsFor:'list specs'!
 
 classCategoryOrPackageTabList
@@ -836,6 +841,7 @@
       collect:[:aTab| TabItem new fromLiteralArrayEncoding:aTab ]
 ! !
 
+
 !TestRunner2 class methodsFor:'menu specs'!
 
 classListMenu
@@ -1010,6 +1016,7 @@
       )
 ! !
 
+
 !TestRunner2 class methodsFor:'resources'!
 
 startSUnitIcon
@@ -1019,6 +1026,7 @@
     "/ ^ ToolbarIconLibrary sUnit28x28Icon    
 ! !
 
+
 !TestRunner2 class methodsFor:'startup'!
 
 openOnTestCase:aTestCaseClass
@@ -1033,6 +1041,7 @@
     "Created: / 06-07-2011 / 14:10:00 / cg"
 ! !
 
+
 !TestRunner2 methodsFor:'accessing'!
 
 errorColor
@@ -1133,6 +1142,7 @@
     "Created: / 06-06-2008 / 20:08:41 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
 
+
 !TestRunner2 methodsFor:'accessing - lists'!
 
 allTestCategories
@@ -1214,6 +1224,7 @@
     "Modified: / 28-02-2011 / 21:13:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TestRunner2 methodsFor:'accessing - menus'!
 
 packageListMenu
@@ -1230,6 +1241,7 @@
     "Created: / 23-09-2011 / 18:53:46 / cg"
 ! !
 
+
 !TestRunner2 methodsFor:'actions'!
 
 classSelectionChanged
@@ -1420,6 +1432,7 @@
     "Created: / 21-08-2011 / 17:51:42 / cg"
 ! !
 
+
 !TestRunner2 methodsFor:'actions - menu'!
 
 classListMenuBrowse
@@ -1507,6 +1520,7 @@
     "Created: / 23-09-2011 / 18:55:50 / cg"
 ! !
 
+
 !TestRunner2 methodsFor:'aspects'!
 
 classCategoryOrPackageTabIndexHolder
@@ -1699,6 +1713,7 @@
     "Created: / 18-01-2008 / 18:44:29 / janfrog"
 ! !
 
+
 !TestRunner2 methodsFor:'displaying'!
 
 displayColor: aColorValue
@@ -1783,6 +1798,7 @@
     "Modified: / 05-07-2011 / 14:14:42 / cg"
 ! !
 
+
 !TestRunner2 methodsFor:'hooks'!
 
 commonPostOpen
@@ -1798,6 +1814,7 @@
     "Modified: / 30-06-2011 / 20:20:40 / cg"
 ! !
 
+
 !TestRunner2 methodsFor:'private'!
 
 buildSuiteFromClass: testCaseCls 
@@ -1841,12 +1858,14 @@
     "Created: / 18-01-2008 / 18:51:21 / janfrog"
 ! !
 
+
 !TestRunner2::ClassList class methodsFor:'documentation'!
 
 version
     ^'$Header: /cvs/stx/stx/libtool/Tools__TestRunner2.st,v 1.34 2012-11-27 11:08:22 cg Exp $'
 ! !
 
+
 !TestRunner2::ClassList methodsFor:'private'!
 
 nameListEntryFor:aClass withNameSpace:useFullName
@@ -1863,6 +1882,7 @@
     "Modified: / 28-02-2011 / 21:42:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TestRunner2::ResultList class methodsFor:'interface specs'!
 
 windowSpec
@@ -1913,6 +1933,7 @@
       )
 ! !
 
+
 !TestRunner2::ResultList class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -1933,6 +1954,7 @@
 
 ! !
 
+
 !TestRunner2::ResultList methodsFor:'actions'!
 
 debugTest:entryIndex 
@@ -1960,6 +1982,7 @@
     "Created: / 08-02-2010 / 10:08:30 / Jan Vrany <jan,vrany@fit.cvut.cz>"
 ! !
 
+
 !TestRunner2::ResultList methodsFor:'aspects'!
 
 listHolder
@@ -2019,6 +2042,7 @@
     "Created: / 23-09-2011 / 19:02:06 / cg"
 ! !
 
+
 !TestRunner2::ResultList methodsFor:'change & update'!
 
 update:aspect with:param from:sender
@@ -2060,6 +2084,7 @@
     "Modified: / 04-08-2011 / 19:05:57 / cg"
 ! !
 
+
 !TestRunner2::ResultList methodsFor:'private'!
 
 invalidate
@@ -2078,6 +2103,7 @@
     "Created: / 08-02-2010 / 10:28:53 / Jan Vrany <jan,vrany@fit.cvut.cz>"
 ! !
 
+
 !TestRunner2::ResultList methodsFor:'private-list'!
 
 makeClassEntryFor: class result: result tests: tests
@@ -2152,6 +2178,7 @@
     "Created: / 19-03-2010 / 08:41:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TestRunner2::ResultList::ListEntry class methodsFor:'initialization'!
 
 initialize
@@ -2166,6 +2193,7 @@
     "Modified: / 07-02-2010 / 15:06:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TestRunner2::ResultList::ListEntry class methodsFor:'instance creation'!
 
 labeled: aStringOrText
@@ -2175,6 +2203,7 @@
     "Created: / 07-02-2010 / 13:31:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TestRunner2::ResultList::ListEntry methodsFor:'accessing'!
 
 icon
@@ -2240,6 +2269,7 @@
     test := aTestCase.
 ! !
 
+
 !TestRunner2::ResultList::ListEntry methodsFor:'enumeration'!
 
 leafsDo: aBlock
@@ -2258,6 +2288,7 @@
     "Created: / 08-02-2010 / 10:10:36 / Jan Vrany <jan,vrany@fit.cvut.cz>"
 ! !
 
+
 !TestRunner2::ResultList::ListEntry methodsFor:'initialization'!
 
 reset
@@ -2277,6 +2308,7 @@
     "Created: / 07-02-2010 / 11:41:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TestRunner2::ResultList::ListEntry methodsFor:'private'!
 
 computeResult
@@ -2307,6 +2339,7 @@
     "Created: / 08-02-2010 / 10:16:52 / Jan Vrany <jan,vrany@fit.cvut.cz>"
 ! !
 
+
 !TestRunner2::ResultList::ListEntry methodsFor:'testing'!
 
 isError
@@ -2338,6 +2371,7 @@
     "Created: / 08-02-2010 / 10:18:15 / Jan Vrany <jan,vrany@fit.cvut.cz>"
 ! !
 
+
 !TestRunner2 class methodsFor:'documentation'!
 
 version
@@ -2352,4 +2386,6 @@
     ^ '§Id: Tools__TestRunner2.st 7486 2009-10-26 22:06:24Z vranyj1 §'
 ! !
 
+
 TestRunner2 initialize!
+TestRunner2::ResultList::ListEntry initialize!
--- a/Tools__TestRunnerEmbedded.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__TestRunnerEmbedded.st	Wed Jan 30 11:15:09 2013 +0000
@@ -319,6 +319,54 @@
     allTestCases := nil
 !
 
+selectedTestMethods
+
+    | selectedClass |
+    selectedClass := self theSingleTestCase.
+
+    ^ (self selectedMethodsHolder value ? #()) select:
+            [:mthd | | cls |
+            (cls := selectedClass) isNil ifTrue:[cls := mthd mclass].
+            (self isTestCaseLike:selectedClass) 
+                and:[ selectedClass isTestSelector:mthd selector ] ]
+
+    "Created: / 15-03-2010 / 13:21:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-07-2011 / 15:46:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 02-08-2011 / 17:46:38 / cg"
+!
+
+selectedTestMethodsFromProtocols:protocols 
+
+    |methods generator selectedClass|
+
+    methods := Set new.
+    generator := self methodGeneratorHolder value.
+    selectedClass := self theSingleTestCase.
+
+    generator notNil ifTrue:[ 
+        generator do: [:cls :cat :sel :mthd | 
+            (mthd notNil 
+                and:[ (self isTestCaseLike:(selectedClass ? cls)) 
+                and:[ (selectedClass ? cls) isTestSelector:sel ] ]) 
+            ifTrue:[ methods add:mthd ] 
+        ] 
+    ] ifFalse:[
+        allTestCases do: [:cls | 
+            cls methodsDo: [:mthd | 
+                ((protocols includes:mthd category) and:[ cls isTestSelector:mthd selector ]) 
+                ifTrue:[ 
+                    methods add:mthd 
+                ] 
+            ] 
+        ] 
+    ].
+    ^ methods
+
+    "Created: / 15-03-2010 / 19:50:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-07-2011 / 15:53:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 04-06-2012 / 19:05:32 / cg"
+!
+
 selectedTestMethodsFromProtocols:protocols inClass:aTestClass
 
     |methods generator|
@@ -389,7 +437,9 @@
         self runningHolder value:true.
 
         suite tests do:[:test |
-            test debug. 
+            [
+                test debug. 
+            ] on: AbortAllOperationRequest do:[:ex|].
             (test class testSelectorPassed:test selector) ifTrue:[
                 result := TestResult defaultResultClass new.
                 result passed add: test.
@@ -403,8 +453,8 @@
 
     "Created: / 15-03-2010 / 15:43:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 07-07-2011 / 11:33:48 / Jan Vrany <jan.vrant@fit.cvut,cz>"
-    "Modified: / 22-08-2011 / 09:59:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 04-06-2012 / 19:46:38 / cg"
+    "Modified: / 03-12-2012 / 14:02:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 run
@@ -423,6 +473,14 @@
 !
 
 run:suite 
+    ^self run: suite debug: false
+
+    "Created: / 11-03-2010 / 10:22:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 09-06-2012 / 20:23:58 / cg"
+    "Modified: / 03-12-2012 / 13:59:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+run:suite debug: debug 
     |suiteAndResult numTests|
 
     numTests := suite tests size.
@@ -435,6 +493,7 @@
     testProcess := [
                 |result incr run|
 
+                result := debug ifFalse:[TestResult new] ifTrue:[TestResultForRunWithDebug].
                 [
                     self runningHolder value:true.
                     self progressIndicatorShownHolder value:(numTests > 1).
@@ -442,7 +501,8 @@
                     incr := 100 / numTests.
                     run := 0.
                     result := suite 
-                                runBeforeEachDo:[:test :result |
+                                run: result
+                                beforeEachDo:[:test :result |
                                     infoHolder notNil ifTrue:[
                                         infoHolder value:('Running "%1-%2"...' 
                                                         bindWith:test name
@@ -455,7 +515,8 @@
                                     infoHolder notNil ifTrue:[
                                         infoHolder value:('Done.')
                                     ]
-                                ].
+                                ]
+                                debug: debug.
                     suiteAndResult := SuiteAndResult suite:suite result:result.
                 ] ensure:[
                     self progressIndicatorShownHolder value:false.
@@ -467,9 +528,7 @@
     testProcess priority:(Processor userBackgroundPriority).
     testProcess resume.
 
-    "Created: / 11-03-2010 / 10:22:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 06-09-2010 / 21:48:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 09-06-2012 / 20:23:58 / cg"
+    "Created: / 03-12-2012 / 13:59:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 runAll
@@ -500,7 +559,7 @@
         suite := suiteAndResult suiteForRun.
     ].
 
-    suite run: TestResultForRunWithDebug new
+    self run: suite debug: true
 
 
 
@@ -508,8 +567,8 @@
     "/ [suiteAndResult suite tests anyOne debug] fork
 
     "Created: / 05-07-2011 / 18:45:43 / cg"
-    "Modified: / 22-08-2011 / 09:59:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 09-10-2011 / 10:55:46 / cg"
+    "Modified: / 03-12-2012 / 13:59:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 stop
@@ -879,6 +938,21 @@
     "Modified: / 04-06-2012 / 19:02:52 / cg"
 !
 
+updateTestSuiteAndResult
+
+    | suite suiteAndResult |
+    self runningHolder value ifTrue:[^self].
+    allTestCases isEmptyOrNil ifTrue:[^self].
+    suiteAndResult := SuiteAndResult
+                        suite:  (suite := self suiteForRun)
+                        result: (self resultForSuite: suite).
+    self resultHolder value: suiteAndResult.
+
+    "Created: / 15-03-2010 / 19:41:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 15-03-2010 / 20:55:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 04-06-2012 / 19:03:15 / cg"
+!
+
 updateVisibility
 
     self hasTestCaseSelected 
@@ -996,13 +1070,14 @@
 !
 
 suiteForRun
-    | methods protocols suite selectedClass |
+    | methods testMethods protocols suite selectedClass |
 
     selectedClass := self theSingleTestCase.
 
     (methods := selectedMethodsHolder value) notEmptyOrNil ifTrue:[
-        suite := TestSuite named: (self suiteNameFromMethods: methods).
-        (self selectedTestMethodsInClass:selectedClass) do:[:mthd| 
+        testMethods := self selectedTestMethods.
+        suite := TestSuite named: (self suiteNameFromMethods: testMethods).
+        testMethods do:[:mthd| 
             | class selector |
             class := selectedClass ifNil:[mthd mclass].
             suite addTest: (class asTestCase selector: mthd selector)
@@ -1023,8 +1098,8 @@
     ^self suiteForRunAll
 
     "Created: / 15-03-2010 / 13:13:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 22-07-2011 / 15:48:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 04-08-2011 / 19:06:42 / cg"
+    "Modified: / 02-11-2012 / 11:17:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 suiteForRunAll
@@ -1180,13 +1255,13 @@
 !TestRunnerEmbedded class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__TestRunnerEmbedded.st,v 1.32 2012-11-08 00:05:16 cg Exp $'
+    ^ '$Id: Tools__TestRunnerEmbedded.st 8076 2012-12-03 16:22:00Z vranyj1 $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__TestRunnerEmbedded.st,v 1.32 2012-11-08 00:05:16 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__TestRunnerEmbedded.st,v 1.32 2012/11/08 00:05:16 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id§'
+    ^ '$Id: Tools__TestRunnerEmbedded.st 8076 2012-12-03 16:22:00Z vranyj1 $'
 ! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__TextDiff2Tool.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,613 @@
+"
+ 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 }"
+
+TextDiffTool subclass:#TextDiff2Tool
+	instanceVariableNames:'showDiffHolder diffSpecHolder codeView'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Diff'
+!
+
+!TextDiff2Tool 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.
+"
+!
+
+documentation
+"
+    documentation to be added.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+!
+
+examples
+"
+                                                        [exBegin]
+    |text1 text2|
+
+    text1 := 'hello world
+here is some difference
+more text
+this line has been removed
+more text
+more text
+'.
+
+    text2 := 'hello world
+where is the difference ?
+more text
+more text
+more text
+this line has been added
+'.
+
+    TextDiff2Tool openOn:text1 label:'text1'
+                     and:text2 label:'text2'
+                                                        [exEnd]
+"
+! !
+
+!TextDiff2Tool class methodsFor:'interface opening'!
+
+openOn:textA label:labelA and: textB label: labelB
+    | app |
+
+    app := self new.
+    app labelA: labelA; textA: textA.
+    app labelB: labelB; textB: textB.
+    app open
+
+    "Created: / 16-03-2012 / 13:15:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff2Tool class methodsFor:'interface specs'!
+
+diffSpec
+    "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:Tools::TextDiff2Tool andSelector:#diffSpec
+     Tools::TextDiff2Tool new openInterface:#diffSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: diffSpec
+        window: 
+       (WindowSpec
+          label: 'Text Diff Tool (for embedding)'
+          name: 'Text Diff Tool (for embedding)'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 782 506)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (ViewSpec
+              name: '2Labels'
+              layout: (LayoutFrame 0 0 0 0 -16 1 30 0)
+              component: 
+             (SpecCollection
+                collection: (
+                 (UISubSpecification
+                    name: 'VersionA'
+                    layout: (LayoutFrame 0 0 0 0 0 0.5 30 0)
+                    minorKey: versionALabelSpec
+                  )
+                 (UISubSpecification
+                    name: 'VersionB'
+                    layout: (LayoutFrame 5 0.5 0 0 0 1 30 0)
+                    minorKey: versionBLabelSpec
+                  )
+                 )
+               
+              )
+            )
+           (ArbitraryComponentSpec
+              name: 'Diff2TextView'
+              layout: (LayoutFrame 0 0 30 0 0 1 0 1)
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              autoHideScrollBars: false
+              hasBorder: false
+              component: diffView
+              postBuildCallback: postBuildDiffView:
+            )
+           )
+         
+        )
+      )
+!
+
+nothingSpec
+    "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:Tools::TextDiffTool andSelector:#nothingSpec
+     Tools::TextDiffTool new openInterface:#nothingSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: nothingSpec
+        window: 
+       (WindowSpec
+          label: 'NewApplication'
+          name: 'NewApplication'
+          bounds: (Rectangle 0 0 300 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'Nothing selected...'
+              name: 'Label1'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              translateLabel: true
+            )
+           )
+         
+        )
+      )
+!
+
+textAViewSpec
+    "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:Tools::TextDiffTool andSelector:#textViewSpec
+     Tools::TextDiffTool new openInterface:#textViewSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: 'textAViewSpec'
+        window: 
+       (WindowSpec
+          label: 'Text Only'
+          name: 'Text Only'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 782 506)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (ArbitraryComponentSpec
+              name: 'CodeView'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              model: textAHolder
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              autoHideScrollBars: false
+              hasBorder: false
+              component: #'Tools::CodeView2'
+              postBuildCallback: postBuildCodeView:
+            )
+           )
+         
+        )
+      )
+
+    "Created: / 18-04-2012 / 18:43:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+textBViewSpec
+    "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:Tools::TextDiffTool andSelector:#textViewSpec
+     Tools::TextDiffTool new openInterface:#textViewSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: 'textAViewSpec'
+        window: 
+       (WindowSpec
+          label: 'Text Only'
+          name: 'Text Only'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 782 506)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (ArbitraryComponentSpec
+              name: 'CodeView'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              model: textBHolder
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              autoHideScrollBars: false
+              hasBorder: false
+              component: #'Tools::CodeView2'
+              postBuildCallback: postBuildCodeView:
+            )
+           )
+         
+        )
+      )
+
+    "Created: / 18-04-2012 / 18:43:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+versionAOnlySpec
+    "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:Tools::TextDiffTool andSelector:#versionAOnlySpec
+     Tools::TextDiffTool new openInterface:#versionAOnlySpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: versionAOnlySpec
+        window: 
+       (WindowSpec
+          label: 'Version A Only'
+          name: 'Version A Only'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 782 506)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (UISubSpecification
+              name: 'VersionA'
+              layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+              minorKey: versionALabelSpec
+            )
+           (UISubSpecification
+              name: 'Text'
+              layout: (LayoutFrame 0 0 30 0 0 1 0 1)
+              minorKey: textAViewSpec
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 18-04-2012 / 18:43:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+versionBOnlySpec
+    "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:Tools::TextDiffTool andSelector:#versionBOnlySpec
+     Tools::TextDiffTool new openInterface:#versionBOnlySpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: 'versionBOnlySpec'
+        window: 
+       (WindowSpec
+          label: 'Version B Only'
+          name: 'Version B Only'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 782 506)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (UISubSpecification
+              name: 'VersionB'
+              layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+              minorKey: versionBLabelSpec
+            )
+          (UISubSpecification
+              name: 'Text'
+              layout: (LayoutFrame 0 0 30 0 0 1 0 1)
+              minorKey: textBViewSpec
+            )
+           )
+         
+        )
+      )
+
+    "Created: / 19-07-2011 / 10:06:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff2Tool class methodsFor:'plugIn spec'!
+
+aspectSelectors
+    "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."
+
+    "Return a description of exported aspects;
+     these can be connected to aspects of an embedding application
+     (if this app is embedded in a subCanvas)."
+
+    ^ #(
+        #classHolder
+        #codeAspectHolder
+        #labelAHolder
+        #labelBHolde
+        #labelCHolder
+        #labelHolder
+        #languageHolder
+        #showDiffHolder
+        #textAHolder
+        #textBHolder
+        #textCHolder
+      ).
+
+! !
+
+!TextDiff2Tool methodsFor:'accessing'!
+
+title: aString
+
+    ^self label: aString
+
+    "Created: / 30-08-2011 / 09:45:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff2Tool methodsFor:'aspects'!
+
+showDiffHolder
+    "return/create the 'showDiffHolder' value holder (automatically generated)"
+
+    showDiffHolder isNil ifTrue:[
+        showDiffHolder := ValueHolder with: true.
+        showDiffHolder addDependent:self.
+    ].
+    ^ showDiffHolder
+
+    "Modified: / 30-06-2011 / 20:59:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showDiffHolder:something
+    "set the 'showDiffHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    showDiffHolder notNil ifTrue:[
+        oldValue := showDiffHolder value.
+        showDiffHolder removeDependent:self.
+    ].
+    showDiffHolder := something.
+    showDiffHolder notNil ifTrue:[
+        showDiffHolder addDependent:self.
+    ].
+    newValue := showDiffHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:showDiffHolder.
+    ].
+! !
+
+!TextDiff2Tool methodsFor:'change & update'!
+
+codeAspect
+
+    ^self codeAspectHolder value
+
+    "Created: / 19-07-2011 / 19:07:27 / 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."
+
+    (changedObject == showDiffHolder) ifTrue:[
+        self updateViews.            
+        ^self.
+    ].
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 16-03-2012 / 12:36:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateAfterAorBorCChanged
+
+    (textAChanged & textBChanged) ifTrue:[
+        textAChanged := textBChanged := false.
+        self updateViews
+    ].
+
+    "Created: / 16-03-2012 / 12:37:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateViews
+
+    | a b |
+    a := self textAHolder value.
+    b := self textBHolder value.
+
+    self showDiffHolder value ifFalse:[
+        self showTextOnly.
+        ^ self
+    ].
+
+    (a notNil and:[b notNil]) ifTrue:[
+        self showDiff.
+        ^self
+    ].
+    a notNil ifTrue:[
+        self showVersionA.
+        ^self
+    ].
+    b notNil ifTrue:[
+        self showVersionB.
+        ^self
+    ].
+
+   self showNothing.
+
+    "Created: / 19-07-2011 / 11:29:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff2Tool methodsFor:'hooks'!
+
+postBuildCodeView:aScrollableView
+
+    codeView := aScrollableView.
+    codeView notNil ifTrue:[codeView languageHolder: self languageHolder].
+    codeView notNil ifTrue:[codeView classHolder: self classHolder].
+
+    "Created: / 19-07-2011 / 10:17:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+postBuildDiffView:aScrollableView
+
+    super postBuildDiffView:aScrollableView.
+    diffView notNil ifTrue:[
+       (self textAHolder value notNil and:[self textBHolder value notNil]) ifTrue:[
+            diffView scrolledView
+                text1: self textAHolder value
+                text2: self textBHolder value
+        ]
+
+    ].
+
+    "Created: / 16-03-2012 / 13:30:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff2Tool methodsFor:'initialization'!
+
+initializeDiffView
+    "superclass Tools::TextDiffTool says that I am responsible to implement this method"
+
+    ^ Tools::Diff2CodeView2 new
+
+    "Modified: / 16-01-2013 / 11:58:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff2Tool methodsFor:'private'!
+
+showDiff
+    |scrolledView|
+
+    self contentSpecHolder value: #diffSpec.
+    
+    diffView isNil ifTrue:[^self].
+    (scrolledView := diffView scrolledView) isNil ifTrue:[^self].
+    scrolledView
+        text1: self textAHolder value
+        text2: self textBHolder value
+
+    "Created: / 19-07-2011 / 10:22:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-11-2011 / 15:01:12 / cg"
+    "Modified: / 16-03-2012 / 13:21:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showNothing
+
+    self contentSpecHolder value: #nothingSpec
+
+    "Created: / 19-07-2011 / 19:34:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showTextOnly
+
+    self contentSpecHolder value: #textViewSpec
+
+    "Created: / 19-07-2011 / 11:39:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showVersionA
+
+    self contentSpecHolder value: #versionAOnlySpec
+
+    "Created: / 19-07-2011 / 10:22:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showVersionB
+
+    self contentSpecHolder value: #versionBOnlySpec
+
+    "Created: / 19-07-2011 / 10:22:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff2Tool methodsFor:'testing'!
+
+isDiff2
+    ^true
+
+    "Created: / 16-03-2012 / 15:21:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff2Tool class methodsFor:'documentation'!
+
+version
+    ^ '$Id: Tools__TextDiff2Tool.st 8088 2013-01-16 11:59:55Z vranyj1 $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__TextDiffTool.st,v 1.6 2011/11/18 14:05:39 cg Exp §'
+!
+
+version_SVN
+    ^ '$Id: Tools__TextDiff2Tool.st 8088 2013-01-16 11:59:55Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__TextDiff3Tool.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,1186 @@
+"
+ 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 }"
+
+TextDiffTool subclass:#TextDiff3Tool
+	instanceVariableNames:'labelMergedHolder textMergedHolder mergeHolder mergeDataHolder
+		mergeIntervalHolder mergeView mergeService'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Interface-Diff'
+!
+
+CodeViewService subclass:#MergeService
+	instanceVariableNames:'dataHolder data sectionIntervalHolder'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:TextDiff3Tool
+!
+
+!TextDiff3Tool 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.
+"
+!
+
+documentation
+"
+    documentation to be added.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+!
+
+examples
+"
+  Starting the application:
+                                                                [exBegin]
+    Tools::TextDiff3Tool open
+
+                                                                [exEnd]
+
+  more examples to be added:
+                                                                [exBegin]
+    ... add code fragment for 
+    ... executable example here ...
+                                                                [exEnd]
+"
+! !
+
+!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
+    "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:Tools::TextDiff3Tool andSelector:#diff3Spec
+     Tools::TextDiff3Tool new openInterface:#diff3Spec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: diff3Spec
+        window: 
+       (WindowSpec
+          label: 'Text Diff Tool (for embedding)'
+          name: 'Text Diff Tool (for embedding)'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 782 506)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (ViewSpec
+              name: '3Labels'
+              layout: (LayoutFrame 0 0 0 0 -16 1 30 0)
+              component: 
+             (SpecCollection
+                collection: (
+                 (UISubSpecification
+                    name: 'VersionC'
+                    layout: (LayoutFrame 0 0 0 0 0 0.33333 30 0)
+                    minorKey: versionCLabelSpec
+                  )
+                 (UISubSpecification
+                    name: 'VersionA'
+                    layout: (LayoutFrame 5 0.3333 0 0 0 0.67 30 0)
+                    minorKey: versionALabelSpec
+                  )
+                 (UISubSpecification
+                    name: 'VersionB'
+                    layout: (LayoutFrame 5 0.67 0 0 0 1 30 0)
+                    minorKey: versionBLabelSpec
+                  )
+                 )
+               
+              )
+            )
+           (ArbitraryComponentSpec
+              name: 'Diff3TextView'
+              layout: (LayoutFrame 0 0 30 0 0 1 0 1)
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              autoHideScrollBars: false
+              hasBorder: false
+              component: diffView
+              postBuildCallback: postBuildDiffView:
+            )
+           )
+         
+        )
+      )
+!
+
+mergeSpec
+    "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:Tools::TextDiff3Tool andSelector:#mergeSpec
+     Tools::TextDiff3Tool new openInterface:#mergeSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: mergeSpec
+        window: 
+       (WindowSpec
+          label: 'Merge view'
+          name: 'Merge view'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 782 506)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (VariableVerticalPanelSpec
+              name: 'DiffAndMergePanel'
+              layout: (LayoutFrame 0 0 30 0 0 1 0 1)
+              component: 
+             (SpecCollection
+                collection: (
+                 (ViewSpec
+                    name: 'Box1'
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (ViewSpec
+                          name: '3Labels'
+                          layout: (LayoutFrame 0 0 0 0 -16 1 30 0)
+                          component: 
+                         (SpecCollection
+                            collection: (
+                             (UISubSpecification
+                                name: 'VersionC'
+                                layout: (LayoutFrame 0 0 0 0 0 0.33333 30 0)
+                                minorKey: versionCLabelSpec
+                              )
+                             (UISubSpecification
+                                name: 'VersionA'
+                                layout: (LayoutFrame 5 0.3333 0 0 0 0.67 30 0)
+                                minorKey: versionALabelSpec
+                              )
+                             (UISubSpecification
+                                name: 'VersionB'
+                                layout: (LayoutFrame 5 0.67 0 0 0 1 30 0)
+                                minorKey: versionBLabelSpec
+                              )
+                             )
+                           
+                          )
+                        )
+                       (ArbitraryComponentSpec
+                          name: 'Diff3TextView'
+                          layout: (LayoutFrame 0 0 30 0 0 1 0 1)
+                          hasHorizontalScrollBar: false
+                          hasVerticalScrollBar: false
+                          autoHideScrollBars: false
+                          hasBorder: false
+                          component: diffView
+                          postBuildCallback: postBuildDiffView:
+                        )
+                       )
+                     
+                    )
+                  )
+                 (TransparentBoxSpec
+                    name: 'MergeView'
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (UISubSpecification
+                          name: 'MergeLabel'
+                          layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+                          minorKey: versionMergedLabelSpec
+                        )
+                       (TextEditorSpec
+                          name: 'MergeCode'
+                          layout: (LayoutFrame 0 0 30 0 0 1 0 1)
+                          model: textMergedHolder
+                          hasHorizontalScrollBar: true
+                          hasVerticalScrollBar: true
+                          hasKeyboardFocusInitially: false
+                          viewClassName: 'Tools::CodeView2'
+                          postBuildCallback: postBuildMergeView:
+                        )
+                       )
+                     
+                    )
+                  )
+                 )
+               
+              )
+              handles: (Any 0.5 1.0)
+            )
+           (MenuPanelSpec
+              name: 'ToolBar'
+              layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+              menu: toolbarMenuMerge
+              textDefault: true
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 17-01-2013 / 20:32:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff3Tool class methodsFor:'interface specs - labels'!
+
+versionMergedLabelSpec
+    "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:Tools::TextDiff3Tool andSelector:#versionMergedLabelSpec
+     Tools::TextDiff3Tool new openInterface:#versionMergedLabelSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: versionMergedLabelSpec
+        window: 
+       (WindowSpec
+          label: 'Merge'
+          name: 'Merge'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 774 30)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'versionMerged24x24'
+              name: 'VersionMergedIcon'
+              layout: (LayoutFrame 0 0 -12 0.5 27 0 12 0.5)
+              hasCharacterOrientedLabel: false
+              translateLabel: true
+            )
+           (LabelSpec
+              label: 'Merge'
+              name: 'VersionMergeLabel'
+              layout: (LayoutFrame 30 0 5 0 157 0 0 1)
+              translateLabel: true
+              labelChannel: labelMergedHolder
+              resizeForLabel: true
+              adjust: left
+              useDynamicPreferredWidth: true
+              usePreferredWidth: true
+            )
+           )
+         
+        )
+      )
+! !
+
+!TextDiff3Tool class methodsFor:'menu specs'!
+
+toolbarMenuMerge
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+
+    "
+     MenuEditor new openOnClass:Tools::TextDiff3Tool andSelector:#toolbarMenuMerge
+     (Menu new fromLiteralArrayEncoding:(Tools::TextDiff3Tool toolbarMenuMerge)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: canMergeCurrentHolder
+            label: 'Use Base for Current Delta'
+            itemValue: doMergeCurrentUsingBase
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergeUsingBase24x24)
+          )
+         (MenuItem
+            enabled: canMergeCurrentHolder
+            label: 'Use A for Current '
+            itemValue: doMergeCurrentUsingA
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergeUsingA24x24)
+          )
+         (MenuItem
+            enabled: canMergeCurrentHolder
+            label: 'Use B for Current '
+            itemValue: doMergeCurrentUsingB
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergeUsingB24x24)
+          )
+         (MenuItem
+            label: 'Use Base Everywhere'
+            itemValue: doMergeAllUsingBase
+            isButton: true
+            startGroup: right
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergeUsingBaseAll24x24)
+          )
+         (MenuItem
+            label: 'Use A Everywhere'
+            itemValue: doMergeAllUsingA
+            isButton: true
+            startGroup: right
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergeUsingAAll24x24)
+          )
+         (MenuItem
+            label: 'Use Be Everywhere '
+            itemValue: doMergeAllUsingB
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergeUsingBAll24x24)
+          )
+         (MenuItem
+            label: 'Auto Merge'
+            itemValue: doMergeAllAuto
+            isButton: true
+            startGroup: right
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergeMerge24x24)
+          )
+         (MenuItem
+            label: 'External Merge'
+            itemValue: doMergeAllExternal
+            isButton: true
+            startGroup: right
+            labelImage: (ResourceRetriever ToolbarIconLibrary mergeMergeExternal24x24)
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 17-01-2013 / 22:31:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff3Tool class methodsFor:'plugIn spec'!
+
+aspectSelectors
+    "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."
+
+    "Return a description of exported aspects;
+     these can be connected to aspects of an embedding application
+     (if this app is embedded in a subCanvas)."
+
+    ^ #(
+        #codeAspectHolder
+        #labelAHolder
+        #labelBHolde
+        #labelCHolder
+        #labelHolder
+        #languageHolder
+        #mergeDataHolder
+        #mergeHolder
+        #textAHolder
+        #textBHolder
+        #textCHolder
+      ).
+
+! !
+
+!TextDiff3Tool 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>"
+!
+
+mergeData
+
+    ^self mergeDataHolder value
+
+    "Created: / 20-03-2012 / 14:17:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff3Tool methodsFor:'aspects'!
+
+contentSpecHolder
+    "return/create the 'contentSpecHolder' value holder (automatically generated)"
+
+    contentSpecHolder isNil ifTrue:[
+        contentSpecHolder := ValueHolder new.
+        self mergeHolder value 
+            ifTrue:[contentSpecHolder setValue: #mergeSpec]
+            ifFalse:[contentSpecHolder setValue: #diff3Spec].
+        contentSpecHolder addDependent:self.
+    ].
+    ^ contentSpecHolder
+
+    "Created: / 17-01-2013 / 20:20:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+diffView
+    diffView notNil  ifTrue:[
+        self breakPoint: #jv.
+    ].
+    diffView := self initializeDiffView.
+    ^diffView
+
+    "Created: / 17-01-2013 / 20:24:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+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)"
+
+    mergeHolder isNil ifTrue:[
+        mergeHolder := ValueHolder with: false.
+        mergeHolder addDependent:self.
+    ].
+    ^ mergeHolder
+
+    "Modified: / 16-03-2012 / 13:24:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mergeHolder:something
+    "set the 'mergeHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    mergeHolder notNil ifTrue:[
+        oldValue := mergeHolder value.
+        mergeHolder removeDependent:self.
+    ].
+    mergeHolder := something.
+    mergeHolder notNil ifTrue:[
+        mergeHolder addDependent:self.
+    ].
+    newValue := mergeHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:mergeHolder.
+    ].
+!
+
+mergeIntervalHolder
+    "return/create the 'mergeIntervalHolder' value holder (automatically generated)"
+
+    mergeIntervalHolder isNil ifTrue:[
+        mergeIntervalHolder := ValueHolder new.
+        mergeIntervalHolder addDependent:self.
+    ].
+    ^ mergeIntervalHolder
+!
+
+mergeIntervalHolder:something
+    "set the 'mergeIntervalHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    mergeIntervalHolder notNil ifTrue:[
+        oldValue := mergeIntervalHolder value.
+        mergeIntervalHolder removeDependent:self.
+    ].
+    mergeIntervalHolder := something.
+    mergeIntervalHolder notNil ifTrue:[
+        mergeIntervalHolder addDependent:self.
+    ].
+    newValue := mergeIntervalHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:mergeIntervalHolder.
+    ].
+! !
+
+!TextDiff3Tool methodsFor:'aspects - queries'!
+
+canMergeCurrentHolder
+    ^self builder bindings at:#canMergeCurrentHolder ifAbsentPut:[
+        BlockValue
+            with:[:model|model value notNil]
+            argument: self mergeIntervalHolder
+    ]
+
+    "Created: / 30-11-2012 / 13:49:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff3Tool methodsFor:'aspects-versions'!
+
+labelMergedHolder
+    "return/create the 'labelMergedHolder' value holder (automatically generated)"
+
+    labelMergedHolder isNil ifTrue:[
+        labelMergedHolder := ValueHolder with:'Merge'.
+    ].
+    ^ labelMergedHolder
+
+    "Modified: / 17-03-2012 / 12:36:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+labelMergedHolder:something
+    "set the 'labelMergedHolder' value holder (automatically generated)"
+
+    labelMergedHolder := something.
+!
+
+textMergedHolder
+    "return/create the 'textMergedHolder' value holder (automatically generated)"
+
+    textMergedHolder isNil ifTrue:[
+        textMergedHolder := ValueHolder new.
+    ].
+    ^ textMergedHolder
+!
+
+textMergedHolder:something
+    "set the 'textMergedHolder' value holder (automatically generated)"
+
+    textMergedHolder := something.
+! !
+
+!TextDiff3Tool methodsFor:'change & update'!
+
+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 == mergeHolder ifTrue:[
+        self updateViews.
+        self updateMergeData.
+        self updateCodeViewSynchronization.
+         ^ self.
+    ].
+    super update:something with:aParameter from:changedObject
+
+    "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 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:[
+        self contentSpecHolder value: #mergeSpec
+    ] ifFalse:[
+        self contentSpecHolder value: #diff3Spec
+    ].
+
+    diffView notNil ifTrue:[
+        diffView
+            text1: self textCHolder value
+            text2: self textAHolder value
+            text3: self textBHolder value.
+    ]
+
+    "Created: / 16-03-2012 / 13:24:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff3Tool methodsFor:'hooks'!
+
+commonPostBuild
+    self updateViews
+
+    "Created: / 16-03-2012 / 13:25:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+postBuildDiffView:aScrollableView
+
+    super postBuildDiffView:aScrollableView.
+    diffView := aScrollableView scrolledView.
+    diffView notNil ifTrue:[
+       (self textAHolder value notNil and:[self textBHolder value notNil and:[self textCHolder value notNil]]) ifTrue:[
+            diffView scrolledView
+                text1: self textCHolder value
+                text2: self textAHolder value
+                text3: self textBHolder value
+
+        ].
+        self updateCodeViewSynchronization.
+    ].
+
+    "Created: / 16-03-2012 / 13:31:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-01-2013 / 20:31:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+postBuildMergeView:aCodeView2
+
+    mergeView := aCodeView2.
+    self setupCodeView: aCodeView2.
+    mergeView registerService: 
+                ((mergeService := MergeService new)
+                    dataHolder: self mergeDataHolder;
+                    sectionIntervalHolder: self mergeIntervalHolder;
+                    yourself).
+    self updateCodeViewSynchronization.
+
+    "Created: / 19-03-2012 / 11:47:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 30-11-2012 / 13:47:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff3Tool methodsFor:'initialization'!
+
+initializeDiffView
+    "superclass Tools::TextDiffTool says that I am responsible to implement this method"
+
+    ^ Tools::Diff3CodeView2 new
+
+    "Modified: / 16-01-2013 / 09:52:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff3Tool methodsFor:'menu actions'!
+
+doMergeAllAuto
+    self mergeDataHolder value 
+        text1:self textC
+        text2:self textA
+        text3:self textB.
+
+    "Created: / 17-03-2012 / 12:55:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doMergeAllExternal
+    | left wc right merge |
+
+    left := Filename newTemporary.
+    left writingFileDo:[:s|s nextPutAll: self textC ? ''].
+
+    wc := Filename newTemporary.
+    wc writingFileDo:[:s|s nextPutAll: self textA ? ''].
+
+    right := Filename newTemporary.
+    right writingFileDo:[:s|s nextPutAll: self textB ? ''].
+
+    merge := Filename newTemporary.
+
+    [
+        (OperatingSystem executeCommand:
+                ('%1 %2 %3 %4 -o %5'
+                    bindWith: 'kdiff3'
+                        with: left pathName
+                        with: wc pathName
+                        with: right pathName
+                        with: merge pathName)) ifTrue:[
+            merge exists ifTrue:[
+                self mergeData mergeUsing: merge contents asString
+            ].
+        ]
+    ] ensure:[
+        left remove.
+        wc remove.
+        right remove.
+        merge exists ifTrue:[merge remove].
+    ]
+
+    "Modified: / 16-01-2013 / 10:02:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doMergeAllUsingA
+    self mergeData mergeUsingA: self textA
+
+    "Created: / 30-11-2012 / 13:33:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doMergeAllUsingB
+
+    self mergeData mergeUsingB: self textB
+
+    "Created: / 30-11-2012 / 13:33:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doMergeAllUsingBase
+    self mergeData mergeUsingBase: self textC
+
+    "Created: / 30-11-2012 / 13:33:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doMergeCurrentUsingA
+
+    | interval |
+    interval := mergeService sectionInterval.
+    interval notNil ifTrue:[
+        self mergeData mergeUsingA: self textA interval: interval
+    ]
+
+    "Created: / 30-11-2012 / 13:33:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doMergeCurrentUsingB
+
+    | interval |
+    interval := mergeService sectionInterval.
+    interval notNil ifTrue:[
+        self mergeData mergeUsingB: self textB interval: interval
+    ]
+
+    "Created: / 30-11-2012 / 13:33:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doMergeCurrentUsingBase
+
+    | interval |
+    interval := mergeService sectionInterval.
+    interval notNil ifTrue:[
+        self mergeData mergeUsingBase: self textC interval: interval
+    ]
+
+    "Created: / 30-11-2012 / 13:34:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextDiff3Tool methodsFor:'testing'!
+
+isDiff3
+    ^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>"
+!
+
+sectionInterval
+    ^ sectionIntervalHolder value
+
+    "Modified: / 30-11-2012 / 13:45:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+sectionInterval: anObject
+    ^ self sectionIntervalHolder value: anObject
+
+    "Created: / 30-11-2012 / 13:45:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 15-01-2013 / 11:50:11 / 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.
+    ].
+!
+
+sectionIntervalHolder
+    "return/create the 'sectionIntervalHolder' value holder (automatically generated)"
+
+    sectionIntervalHolder isNil ifTrue:[
+        sectionIntervalHolder := ValueHolder new.
+        sectionIntervalHolder addDependent:self.
+    ].
+    ^ sectionIntervalHolder
+!
+
+sectionIntervalHolder:something
+    "set the 'sectionIntervalHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    sectionIntervalHolder notNil ifTrue:[
+        oldValue := sectionIntervalHolder value.
+        sectionIntervalHolder removeDependent:self.
+    ].
+    sectionIntervalHolder := something.
+    sectionIntervalHolder notNil ifTrue:[
+        sectionIntervalHolder addDependent:self.
+    ].
+    newValue := sectionIntervalHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:sectionIntervalHolder.
+    ].
+! !
+
+!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.
+    textView invalidate.
+    gutterView invalidate.
+
+    "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 sectionInterval: nil.
+    self dataChanged
+
+    "Created: / 19-03-2012 / 11:56:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 30-11-2012 / 13:46:18 / 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.
+    ].
+
+    changedObject == sectionIntervalHolder ifTrue:[
+        gutterView invalidate.
+        ^self
+    ].
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 30-11-2012 / 13:45:08 / 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:[
+        self 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.
+        self sectionInterval: (start to: stop).
+    ].
+    gutterView invalidate.
+
+    "Created: / 03-04-2012 / 19:29:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 30-11-2012 / 13:45:33 / 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 color sectionInterval |
+
+    sectionInterval := self sectionInterval.
+    view == gutterView ifFalse:[ ^ self ].
+    info := self infoAtLine: lineNo.
+    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.
+        ].
+    ].
+
+    (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>"
+    "Modified: / 30-11-2012 / 13:46:06 / 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|
+        (data listInfos at:i) resolution: #Merged.
+    ].
+    gutterView invalidate.
+
+    "Created: / 06-07-2011 / 17:14:36 / jv"
+    "Created: / 20-03-2012 / 22:57:00 / 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 8091 2013-01-18 00:03:03Z vranyj1 $'
+! !
--- a/Tools__TextDiffTool.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__TextDiffTool.st	Wed Jan 30 11:15:09 2013 +0000
@@ -14,9 +14,10 @@
 "{ NameSpace: Tools }"
 
 ApplicationModel subclass:#TextDiffTool
-	instanceVariableNames:'titleHolder labelAHolder textAHolder labelBHolder textBHolder
-		classHolder languageHolder codeAspectHolder showDiffHolder
-		diffSpecHolder diffView textAChanged textBChanged codeView'
+	instanceVariableNames:'labelHolder labelAHolder textAHolder labelBHolder textBHolder
+		labelCHolder textCHolder languageHolder codeAspectHolder
+		textAChanged textBChanged textCChanged contentSpecHolder diffView
+		classHolder'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-Diff'
@@ -36,8 +37,33 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+!
+
+documentation
+"
+    documentation to be added.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+!
+
+examples
+"
+    See
+        - TextDiff2Tool examples
+        - TextDiff3Tool examples
+"
 ! !
 
+
 !TextDiffTool class methodsFor:'image specs'!
 
 versionA24x24
@@ -59,242 +85,27 @@
     ^ToolbarIconLibrary versionBase24x24
 
     "Created: / 24-03-2010 / 20:50:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+versionMerged24x24
+
+    ^ToolbarIconLibrary versionMerged24x24
+
+    "Created: / 17-03-2012 / 12:18:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TextDiffTool class methodsFor:'interface specs'!
 
-diffSpec
-    "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:Tools::TextDiffTool andSelector:#diffSpec
-     Tools::TextDiffTool new openInterface:#diffSpec
-    "
-
-    <resource: #canvas>
 
-    ^ 
-     #(FullSpec
-        name: diffSpec
-        window: 
-       (WindowSpec
-          label: 'Text Diff Tool (for embedding)'
-          name: 'Text Diff Tool (for embedding)'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 782 506)
-        )
-        component: 
-       (SpecCollection
-          collection: (
-           (ViewSpec
-              name: '2Labels'
-              layout: (LayoutFrame 0 0 0 0 -16 1 30 0)
-              component: 
-             (SpecCollection
-                collection: (
-                 (UISubSpecification
-                    name: 'VersionA'
-                    layout: (LayoutFrame 0 0 0 0 0 0.5 30 0)
-                    minorKey: versionALabelSpec
-                  )
-                 (UISubSpecification
-                    name: 'VersionB'
-                    layout: (LayoutFrame 5 0.5 0 0 0 1 30 0)
-                    minorKey: versionBLabelSpec
-                  )
-                 )
-               
-              )
-            )
-           (ArbitraryComponentSpec
-              name: 'Diff2TextView'
-              layout: (LayoutFrame 0 0 30 0 0 1 0 1)
-              hasHorizontalScrollBar: false
-              hasVerticalScrollBar: false
-              autoHideScrollBars: false
-              hasBorder: false
-              component: #'Tools::DiffCodeView2'
-              postBuildCallback: postBuildDiffView:
-            )
-           )
-         
-        )
-      )
-!
 
-nothingSpec
-    "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:Tools::TextDiffTool andSelector:#nothingSpec
-     Tools::TextDiffTool new openInterface:#nothingSpec
-    "
-
-    <resource: #canvas>
-
-    ^ 
-     #(FullSpec
-        name: nothingSpec
-        window: 
-       (WindowSpec
-          label: 'NewApplication'
-          name: 'NewApplication'
-          bounds: (Rectangle 0 0 300 300)
-        )
-        component: 
-       (SpecCollection
-          collection: (
-           (LabelSpec
-              label: 'Nothing selected...'
-              name: 'Label1'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              translateLabel: true
-            )
-           )
-         
-        )
-      )
-!
-
-textViewSpec
-    "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:Tools::TextDiffTool andSelector:#textViewSpec
-     Tools::TextDiffTool new openInterface:#textViewSpec
-    "
-
-    <resource: #canvas>
 
-    ^ 
-     #(FullSpec
-        name: 'textViewSpec'
-        window: 
-       (WindowSpec
-          label: 'Text Only'
-          name: 'Text Only'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 782 506)
-        )
-        component: 
-       (SpecCollection
-          collection: (
-           (ArbitraryComponentSpec
-              name: 'CodeView'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              model: textAHolder
-              hasHorizontalScrollBar: false
-              hasVerticalScrollBar: false
-              autoHideScrollBars: false
-              hasBorder: false
-              component: #'Tools::CodeView2'
-              postBuildCallback: postBuildCodeView:
-            )
-           )
-         
-        )
-      )
-!
 
-versionAOnlySpec
-    "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:Tools::TextDiffTool andSelector:#versionAOnlySpec
-     Tools::TextDiffTool new openInterface:#versionAOnlySpec
-    "
-
-    <resource: #canvas>
 
-    ^ 
-     #(FullSpec
-        name: versionAOnlySpec
-        window: 
-       (WindowSpec
-          label: 'Version A Only'
-          name: 'Version A Only'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 782 506)
-        )
-        component: 
-       (SpecCollection
-          collection: (
-           (UISubSpecification
-              name: 'VersionA'
-              layout: (LayoutFrame 0 0 0 0 0 1 30 0)
-              minorKey: versionALabelSpec
-            )
-           (UISubSpecification
-              name: 'Text'
-              layout: (LayoutFrame 0 0 30 0 0 1 0 1)
-              minorKey: textViewSpec
-            )
-           )
-         
-        )
-      )
-!
-
-versionBOnlySpec
-    "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:Tools::TextDiffTool andSelector:#versionBOnlySpec
-     Tools::TextDiffTool new openInterface:#versionBOnlySpec
-    "
 
-    <resource: #canvas>
-
-    ^ 
-     #(FullSpec
-        name: 'versionBOnlySpec'
-        window: 
-       (WindowSpec
-          label: 'Version B Only'
-          name: 'Version B Only'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 782 506)
-        )
-        component: 
-       (SpecCollection
-          collection: (
-           (UISubSpecification
-              name: 'VersionB'
-              layout: (LayoutFrame 0 0 0 0 0 1 30 0)
-              minorKey: versionBLabelSpec
-            )
-          (UISubSpecification
-              name: 'Text'
-              layout: (LayoutFrame 0 0 30 0 0 1 0 1)
-              minorKey: textViewSpec
-            )
-           )
-         
-        )
-      )
-
-    "Created: / 19-07-2011 / 10:06:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
 
 windowSpec
     "This resource specification was automatically generated
@@ -304,9 +115,9 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:Tools::TextDiffTool andSelector:#windowSpec
-     Tools::TextDiffTool new openInterface:#windowSpec
-     Tools::TextDiffTool open
+     UIPainter new openOnClass:Tools::TextDiff2Tool andSelector:#windowSpec
+     Tools::TextDiff2Tool new openInterface:#windowSpec
+     Tools::TextDiff2Tool open
     "
 
     <resource: #canvas>
@@ -325,9 +136,16 @@
         component: 
        (SpecCollection
           collection: (
+           (LabelSpec
+              label: 'Label'
+              name: 'Label1'
+              layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+              translateLabel: true
+              labelChannel: labelHolder
+            )
            (UISubSpecification
               name: 'Contents'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              layout: (LayoutFrame 0 0 30 0 0 1 0 1)
               minorKey: windowSpecForEmbedding
             )
            )
@@ -344,8 +162,8 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:Tools::TextDiffTool andSelector:#windowSpecForEmbedding
-     Tools::TextDiffTool new openInterface:#windowSpecForEmbedding
+     UIPainter new openOnClass:Tools::TextDiff2Tool andSelector:#windowSpecForEmbedding
+     Tools::TextDiff2Tool new openInterface:#windowSpecForEmbedding
     "
 
     <resource: #canvas>
@@ -368,7 +186,7 @@
               layout: (LayoutFrame 0 0 0 0 0 1 0 1)
               hasHorizontalScrollBar: false
               hasVerticalScrollBar: false
-              specHolder: diffSpecHolder
+              specHolder: contentSpecHolder
               createNewBuilder: false
             )
            )
@@ -377,6 +195,7 @@
       )
 ! !
 
+
 !TextDiffTool class methodsFor:'interface specs - labels'!
 
 versionALabelSpec
@@ -483,7 +302,9 @@
     "Modified: / 30-06-2011 / 20:53:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-versionBaseLabelSpec
+
+
+versionCLabelSpec
     "This resource specification was automatically generated
      by the UIPainter of ST/X."
 
@@ -499,11 +320,11 @@
 
     ^ 
      #(FullSpec
-        name: versionBaseLabelSpec
+        name: versionCLabelSpec
         window: 
        (WindowSpec
-          label: 'Version Base'
-          name: 'Version Base'
+          label: 'Version C'
+          name: 'Version C'
           min: (Point 10 10)
           bounds: (Rectangle 0 0 300 30)
         )
@@ -518,11 +339,11 @@
               translateLabel: true
             )
            (LabelSpec
-              label: 'Version Base'
-              name: 'VersionBaseLabel'
+              label: 'Version C'
+              name: 'VersionCLabel'
               layout: (LayoutFrame 30 0 5 0 191 0 0 1)
               translateLabel: true
-              labelChannel: versionBaseLabelAspect
+              labelChannel: labelCHolder
               resizeForLabel: true
               adjust: left
               useDynamicPreferredWidth: true
@@ -533,37 +354,42 @@
         )
       )
 
-    "Modified: / 24-03-2010 / 20:51:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 16-03-2012 / 12:16:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TextDiffTool class methodsFor:'plugIn spec'!
 
 aspectSelectors
-    "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."
 
-    "Return a description of exported aspects;
-     these can be connected to aspects of an embedding application
-     (if this app is embedded in a subCanvas)."
+    ^#( 
+        #labelHolder
 
-    ^ #(
-        #classHolder
-        #codeAspectHolder
         #labelAHolder
         #labelBHolder
-        #languageHolder
-        #showDiffHolder
+        #labelCHolder
+
         #textAHolder
         #textBHolder
-      ).
+        #textCHolder
 
+        #languageHolder
+        #codeAspectHolder
+    )
+
+    "Created: / 16-03-2012 / 12:18:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TextDiffTool methodsFor:'accessing'!
 
+label: aString
+
+    ^self labelHolder value: aString
+
+    "Created: / 16-03-2012 / 13:07:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 labelA: aString
     ^self labelAHolder value: aString
 
@@ -580,6 +406,21 @@
     "Modified (format): / 27-07-2012 / 21:57:15 / cg"
 !
 
+labelC: aString
+
+    ^self labelCHolder value: aString
+
+    "Modified: / 19-07-2011 / 11:41:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "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
 
@@ -587,6 +428,13 @@
     "Modified (format): / 27-07-2012 / 21:57:37 / cg"
 !
 
+textB
+
+    ^self textBHolder value
+
+    "Created: / 19-03-2012 / 12:24:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 textB: aString
     ^self textBHolder value: aString
 
@@ -594,14 +442,29 @@
     "Modified (format): / 27-07-2012 / 21:57:41 / cg"
 !
 
-title: aString
+textC
+
+    ^self textCHolder value
+
+    "Created: / 19-03-2012 / 12:24:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+textC: aString
 
-    ^self titleHolder value: aString
+    ^self textCHolder value: aString
+
+    "Created: / 16-03-2012 / 13:05:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
 
-    "Modified: / 19-07-2011 / 11:41:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+title: aString
+    <resource: #obsolete>
+
+    ^self label: aString
+
     "Created: / 30-08-2011 / 09:45:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TextDiffTool methodsFor:'aspects'!
 
 classHolder
@@ -615,7 +478,7 @@
 
 classHolder: aValueHolder
     classHolder := aValueHolder.
-    codeView notNil ifTrue:[codeView classHolder: aValueHolder].
+    "codeView notNil ifTrue:[codeView classHolder: aValueHolder]."
     diffView notNil ifTrue:[diffView classHolder: aValueHolder].
 
     "Modified: / 19-07-2011 / 12:54:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -649,37 +512,87 @@
     "Modified: / 27-07-2012 / 22:55:42 / cg"
 !
 
-diffSpecHolder
-    "return/create the 'diffSpecHolder' value holder (automatically generated)"
+contentSpecHolder
+    "return/create the 'contentSpecHolder' value holder (automatically generated)"
 
-    diffSpecHolder isNil ifTrue:[
-        diffSpecHolder := ValueHolder with: #diffSpec.
-        diffSpecHolder addDependent:self.
+    contentSpecHolder isNil ifTrue:[
+        contentSpecHolder := ValueHolder new.
+        contentSpecHolder addDependent:self.
     ].
-    ^ diffSpecHolder
-
-    "Modified: / 06-07-2011 / 11:57:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    ^ contentSpecHolder
 !
 
-diffSpecHolder:something
-    "set the 'diffSpecHolder' value holder (automatically generated)"
+contentSpecHolder:something
+    "set the 'contentSpecHolder' value holder (automatically generated)"
 
     |oldValue newValue|
 
-    diffSpecHolder notNil ifTrue:[
-        oldValue := diffSpecHolder value.
-        diffSpecHolder removeDependent:self.
+    contentSpecHolder notNil ifTrue:[
+        oldValue := contentSpecHolder value.
+        contentSpecHolder removeDependent:self.
     ].
-    diffSpecHolder := something.
-    diffSpecHolder notNil ifTrue:[
-        diffSpecHolder addDependent:self.
+    contentSpecHolder := something.
+    contentSpecHolder notNil ifTrue:[
+        contentSpecHolder addDependent:self.
     ].
-    newValue := diffSpecHolder value.
+    newValue := contentSpecHolder value.
     oldValue ~~ newValue ifTrue:[
-        self update:#value with:newValue from:diffSpecHolder.
+        self update:#value with:newValue from:contentSpecHolder.
     ].
 !
 
+
+
+
+
+diffView
+"/    diffView isNil ifTrue:[
+        diffView := self initializeDiffView.
+"/    ].
+    ^diffView
+
+    "Created: / 16-01-2013 / 09:45:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+labelHolder
+    "return/create the 'labelAHolder' value holder (automatically generated)"
+
+    labelHolder isNil ifTrue:[
+        labelHolder := ValueHolder with:'Text diff'.
+        "/titleHolder addDependent:self.
+    ].
+    ^ labelHolder
+
+    "Created: / 16-03-2012 / 13:06:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+languageHolder
+    "return/create the 'languageHolder' value holder (automatically generated)"
+
+    languageHolder isNil ifTrue:[
+        languageHolder := ValueHolder new.
+    ].
+    ^ languageHolder
+!
+
+languageHolder:aValueHolder
+
+    languageHolder := aValueHolder.
+    "codeView notNil ifTrue:[codeView languageHolder: aValueHolder]."
+    diffView notNil ifTrue:[diffView languageHolder: aValueHolder].
+
+    "Modified: / 19-07-2011 / 12:54:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+
+
+
+
+ !
+
+
+!TextDiffTool methodsFor:'aspects-versions'!
+
 labelAHolder
     "return/create the 'labelAHolder' value holder (automatically generated)"
 
@@ -742,53 +655,37 @@
     ].
 !
 
-languageHolder
-    "return/create the 'languageHolder' value holder (automatically generated)"
+labelCHolder
+    "return/create the 'labelBHolder' value holder (automatically generated)"
 
-    languageHolder isNil ifTrue:[
-        languageHolder := ValueHolder new.
+    labelCHolder isNil ifTrue:[
+        labelCHolder := ValueHolder with:'Version Base'.
+        labelCHolder addDependent:self.
     ].
-    ^ languageHolder
+    ^ labelCHolder
+
+    "Created: / 16-03-2012 / 12:14:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-languageHolder:aValueHolder
-
-    languageHolder := aValueHolder.
-    codeView notNil ifTrue:[codeView languageHolder: aValueHolder].
-    diffView notNil ifTrue:[diffView languageHolder: aValueHolder].
-
-    "Modified: / 19-07-2011 / 12:54:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-showDiffHolder
-    "return/create the 'showDiffHolder' value holder (automatically generated)"
-
-    showDiffHolder isNil ifTrue:[
-        showDiffHolder := ValueHolder with: true.
-        showDiffHolder addDependent:self.
-    ].
-    ^ showDiffHolder
-
-    "Modified: / 30-06-2011 / 20:59:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-showDiffHolder:something
-    "set the 'showDiffHolder' value holder (automatically generated)"
+labelCHolder:something
+    "set the 'labelBHolder' value holder (automatically generated)"
 
     |oldValue newValue|
 
-    showDiffHolder notNil ifTrue:[
-        oldValue := showDiffHolder value.
-        showDiffHolder removeDependent:self.
+    labelCHolder notNil ifTrue:[
+        oldValue := labelCHolder value.
+        labelCHolder removeDependent:self.
     ].
-    showDiffHolder := something.
-    showDiffHolder notNil ifTrue:[
-        showDiffHolder addDependent:self.
+    labelCHolder := something.
+    labelCHolder notNil ifTrue:[
+        labelCHolder addDependent:self.
     ].
-    newValue := showDiffHolder value.
+    newValue := labelCHolder value.
     oldValue ~~ newValue ifTrue:[
-        self update:#value with:newValue from:showDiffHolder.
+        self update:#value with:newValue from:labelCHolder.
     ].
+
+    "Created: / 16-03-2012 / 12:15:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 textAHolder
@@ -849,18 +746,40 @@
     ].
 !
 
-titleHolder
-    "return/create the 'labelAHolder' value holder (automatically generated)"
+textCHolder
+    "return/create the 'textBHolder' value holder (automatically generated)"
+
+    textCHolder isNil ifTrue:[
+        textCHolder := ValueHolder new.
+        textCHolder addDependent:self.
+    ].
+    ^ textCHolder
+
+    "Created: / 16-03-2012 / 12:13:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+textCHolder:something
+    "set the 'textBHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
 
-    titleHolder isNil ifTrue:[
-        titleHolder := ValueHolder with:'Text diff'.
-        "/titleHolder addDependent:self.
+    textCHolder notNil ifTrue:[
+        oldValue := textCHolder value.
+        textCHolder removeDependent:self.
+    ].
+    textCHolder := something.
+    textCHolder notNil ifTrue:[
+        textCHolder addDependent:self.
     ].
-    ^ titleHolder
+    newValue := textCHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:textCHolder.
+    ].
 
-    "Created: / 30-08-2011 / 09:45:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 16-03-2012 / 12:14:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TextDiffTool methodsFor:'change & update'!
 
 codeAspect
@@ -880,100 +799,65 @@
 update:something with:aParameter from:changedObject
     "Invoked when an object that I depend upon sends a change notification."
 
+
     changedObject == textAHolder ifTrue:[
         textAChanged := true.
-        self updateAfterAorBChanged.
+        self updateAfterAorBorCChanged.
         ^ self.
     ].
     changedObject == textBHolder ifTrue:[
         textBChanged := true.
-        self updateAfterAorBChanged.
-        ^ self.
-    ].
-    changedObject == codeAspectHolder ifTrue:[
-        (codeView notNil and:[codeView scrolledView notNil ]) ifTrue:[codeView scrolledView codeAspect: codeAspectHolder value].
-        (diffView notNil and:[diffView scrolledView notNil ]) ifTrue:[diffView scrolledView codeAspect: codeAspectHolder value].
-        self updateViews.            
+        self updateAfterAorBorCChanged.
         ^ self.
     ].
-    (changedObject == showDiffHolder) ifTrue:[
-        self updateViews.            
-        ^self.
-    ].
-    super update:something with:aParameter from:changedObject
-
-    "Modified: / 19-07-2011 / 19:44:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 27-07-2012 / 23:44:32 / cg"
-!
-
-updateAfterAorBChanged
-    (textAChanged & textBChanged) ifTrue:[
-        textAChanged := textBChanged := false.
-        self updateViews
+    changedObject == textCHolder ifTrue:[
+        textCChanged := true.
+        self updateAfterAorBorCChanged.
+        ^ self.
     ].
 
-    "Created: / 06-07-2011 / 12:12:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 27-07-2012 / 23:00:28 / cg"
+    ^super update:something with:aParameter from:changedObject
+
+    "Created: / 16-03-2012 / 12:36:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-updateViews
-    | a b |
+
 
-    a := self textAHolder value.
-    b := self textBHolder value.
-
-    self showDiffHolder value ifFalse:[
-        self showTextOnly.
-        ^ self
-    ].
+updateAfterAorBorCChanged
+    "Called whenever one of the texts changes"
 
-    (a notNil and:[b notNil]) ifTrue:[
-        self showDiff.
-        ^self
-    ].
-    a notNil ifTrue:[
-        self showVersionA.
-        ^self
-    ].
-    b notNil ifTrue:[
-        self showVersionB.
-        ^self
-    ].
+    ^ self subclassResponsibility
 
-   self showNothing.
+    "Modified (comment): / 16-03-2012 / 12:39:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
 
-    "Created: / 19-07-2011 / 11:29:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 27-07-2012 / 23:00:32 / cg"
-! !
+ !
+
 
 !TextDiffTool methodsFor:'hooks'!
 
-postBuildCodeView:aScrollableView
-    codeView := aScrollableView.
-    codeView notNil ifTrue:[codeView languageHolder: self languageHolder].
-    codeView notNil ifTrue:[codeView classHolder: self classHolder].
 
-    "Created: / 19-07-2011 / 10:17:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 27-07-2012 / 21:57:23 / cg"
-!
 
 postBuildDiffView:aScrollableView
     diffView := aScrollableView.
-    diffView notNil ifTrue:[
-        diffView languageHolder: self languageHolder.
-        diffView classHolder: self classHolder.
-
-        (self textAHolder value notNil and:[self textBHolder value notNil]) ifTrue:[
-            diffView scrolledView
-                text1: self textAHolder value
-                text2: self textBHolder value
-        ]
-    ].
+    self setupCodeView: aScrollableView.
 
     "Created: / 30-06-2011 / 20:55:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (format): / 27-07-2012 / 21:57:21 / cg"
+!
+
+setupCodeView: codeView2
+    codeView2 notNil ifTrue:[
+        codeView2
+            languageHolder: self languageHolder;
+            classHolder: self classHolder;
+            modeHolder: self codeAspectHolder
+    ].
+
+    "Created: / 26-07-2012 / 19:13:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TextDiffTool methodsFor:'initialization'!
 
 initialize
@@ -982,25 +866,19 @@
 
     "Modified: / 19-07-2011 / 19:43:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (format): / 27-07-2012 / 21:57:08 / cg"
+!
+
+initializeDiffView
+
+    self subclassResponsibility
+
+    "Created: / 16-01-2013 / 09:45:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TextDiffTool methodsFor:'private'!
 
-showDiff
-    |scrolledView|
 
-    self diffSpecHolder value: #diffSpec.
-    
-    diffView isNil ifTrue:[^self].
-    (scrolledView := diffView scrolledView) isNil ifTrue:[^self].
-    scrolledView codeAspect: codeAspectHolder value.
-    scrolledView
-        text1: self textAHolder value
-        text2: self textBHolder value
-
-    "Created: / 19-07-2011 / 10:22:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 27-07-2012 / 23:31:04 / cg"
-!
 
 showNothing
     self diffSpecHolder value: #nothingSpec
@@ -1009,27 +887,34 @@
     "Modified (format): / 27-07-2012 / 21:57:28 / cg"
 !
 
-showTextOnly
-    self diffSpecHolder value: #textViewSpec
+
+
+
+
+ !
+
 
-    "Created: / 19-07-2011 / 11:39:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 27-07-2012 / 21:57:30 / cg"
+!TextDiffTool methodsFor:'testing'!
+
+isDiff2
+    ^false
+
+    "Created: / 16-03-2012 / 15:21:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-showVersionA
-    self diffSpecHolder value: #versionAOnlySpec
+isDiff3
+    ^false
 
-    "Created: / 19-07-2011 / 10:22:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 27-07-2012 / 21:57:33 / cg"
+    "Created: / 16-03-2012 / 15:21:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-showVersionB
-    self diffSpecHolder value: #versionBOnlySpec
+isMerge
+    ^false
 
-    "Created: / 19-07-2011 / 10:22:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 27-07-2012 / 21:57:35 / cg"
+    "Created: / 19-03-2012 / 11:53:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !TextDiffTool class methodsFor:'documentation'!
 
 version
@@ -1043,3 +928,4 @@
 version_SVN
     ^ '§Id§'
 ! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tools__TextMergeInfo.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,462 @@
+"
+ 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 offset'
+	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:'* 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
+    ^ list
+!
+
+listInfos
+    ^ listInfos
+!
+
+text
+    ^String  streamContents:[:s|
+        list withIndexDo:[:ln :i|
+            | info |
+
+            info := listInfos at: i ifAbsent:[nil].
+            (info isNil or:[info offset ~~ -1]) ifTrue:[
+                ln notNil ifTrue:[
+                    s nextPutLine: (list at: i)
+                ].
+            ]
+        ].
+    ].
+
+    "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 diff3 diffs merges resolution lnr i |
+
+    list := StringCollection new.
+    listInfos := OrderedCollection new.
+
+    t1c := (text1 ? #()) asStringCollection.
+    t2c := (text2 ? #()) asStringCollection.
+    t3c := (text3 ? #()) asStringCollection.
+
+
+    diff3 := Diff3 new
+                    file0: t1c; "/Base version
+                    file1: t2c; "/A
+                    file2: t3c. "/B\
+    diffs := diff3 diffIndices.
+    merges := diff3 mergeIndicesDiscardEmpty: false.
+
+    lnr := 1.
+    i := 1.
+    [ i <= merges size ] whileTrue:[
+        | diff merge lines |
+
+        diff := diffs at: i.
+        merge := merges at: i.
+        diff isChunk ifTrue:[
+            lines := merge extractFromDiff: diff3.
+            1 to: diff length do:[:j|
+                list add: (lines at: j).
+                listInfos add: (LineInfo line: lnr resolution: #NoConflict conflict: diff offset: j ).
+                lnr := lnr + 1.
+            ].
+        ].
+        diff isConflict ifTrue:[
+            1 to: diff length do:[:j|
+                merge isConflict ifTrue:[
+                    list add: self conflictLineText.
+                    listInfos add: (LineInfo line: lnr resolution: #Conflict conflict: diff offset: j).
+                ] ifFalse:[
+                    lines := merge extractFromDiff: diff3.
+                    resolution := merge extractResolution.
+                    j <= lines size ifTrue:[
+                        list add: (lines at: j).
+                        listInfos add: (LineInfo line: lnr resolution: resolution conflict: diff offset: j).
+                    ] ifFalse:[
+                        list add: self noSourceLineText.
+                        listInfos add: (LineInfo line: lnr resolution: resolution conflict: diff offset: -1).
+                    ].
+                ].
+                lnr := lnr + 1.
+            ].
+        ].
+        i := i + 1.
+    ].
+    "Sanity check:"
+    i < diffs size ifTrue:[
+        i + 1 to: diffs size do:[:j|
+            self assert: (diffs at:j) length == 0.
+        ]
+    ].
+
+    self changed: #value
+
+    "Created: / 19-03-2012 / 12:10:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextMergeInfo methodsFor:'merging'!
+
+mergeUsing: text
+
+    list := (text ? #()) asStringCollection.
+    listInfos := 
+        (1 to: list size) collect:[:lineNr|
+            (LineInfo line: lineNr resolution: #Merged )
+        ].
+    self changed:#resolution
+
+    "Created: / 30-11-2012 / 14:12:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mergeUsingA: textA
+
+    list := (textA ? #()) asStringCollection.
+    listInfos := 
+        (1 to: list size) collect:[:lineNr|
+            (LineInfo line: lineNr resolution: #MergedUsingA )
+        ].
+    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.
+    listInfos := 
+        (1 to: list size) collect:[:lineNr|
+            (LineInfo line: lineNr resolution: #MergedUsingB )
+        ].
+    self changed:#resulution
+
+    "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.
+    listInfos := 
+        (1 to: list size) collect:[:lineNr|
+            (LineInfo line: lineNr resolution: #MergedUsingBase )
+        ].
+    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'!
+
+isMerged
+
+    ^listInfos allSatisfy:[:info|info isMergedOrNoConflict].
+
+    "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 offset: 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>"
+!
+
+line:lineArg resolution:resolutionArg conflict:conflictArg offset: offsetArg 
+
+    ^self new line:lineArg resolution:resolutionArg conflict:conflictArg offset: offsetArg
+
+    "Modified: / 19-03-2012 / 15:07:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 20-03-2012 / 20:42:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextMergeInfo::LineInfo methodsFor:'accessing'!
+
+color
+
+    | color |
+
+    self isMerged ifTrue:[ 
+        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 
+        ].
+    ].
+
+    ^color
+
+    "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 offset: nil
+
+    "Created: / 19-03-2012 / 15:04:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+line:lineArg resolution:resolutionArg conflict:conflictArg offset: offsetArg
+    line := lineArg.
+    resolution := resolutionArg.
+    conflict := conflictArg.
+    offset := offsetArg
+
+    "Created: / 20-03-2012 / 20:41:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+offset
+    ^ offset
+!
+
+offset:something
+    offset := something.
+!
+
+resolution
+    ^ resolution
+!
+
+resolution:something
+    resolution := something.
+! !
+
+!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
+            or:[self isMergedUsingA
+                or:[self isMergedUsingB
+                    or:[self isMergedUsingBase]]]
+
+    "Created: / 19-03-2012 / 15:06:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isMergedOrNoConflict
+
+    ^resolution == #NoConflict or:[self isMerged]
+
+    "Created: / 06-04-2012 / 10:40:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isMergedUsingA
+
+    ^resolution == #MergedUsingA
+
+    "Created: / 20-03-2012 / 14:21:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isMergedUsingB
+
+    ^resolution == #MergedUsingB
+
+    "Created: / 20-03-2012 / 14:21:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isMergedUsingBase
+
+    ^resolution == #MergedUsingBase
+
+    "Created: / 20-03-2012 / 14:21:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!TextMergeInfo class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: Tools__TextMergeInfo.st 8073 2012-11-30 14:25:59Z vranyj1 $'
+! !
--- a/Tools__ToDoList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ToDoList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -180,7 +180,7 @@
 !ToDoList class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ToDoList.st,v 1.4 2008-08-20 19:41:31 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__ToDoList.st,v 1.4 2008/08/20 19:41:31 cg Exp $'
 ! !
 
 ToDoList initialize!
--- a/Tools__ToDoListBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ToDoListBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -69,6 +69,7 @@
 "
 ! !
 
+
 !ToDoListBrowser class methodsFor:'class initialization'!
 
 current
@@ -95,6 +96,7 @@
     "Created: / 21-10-2006 / 20:39:03 / cg"
 ! !
 
+
 !ToDoListBrowser class methodsFor:'interface specs'!
 
 windowSpec
@@ -146,6 +148,7 @@
     "Modified: / 18-02-2007 / 12:55:32 / cg"
 ! !
 
+
 !ToDoListBrowser class methodsFor:'menu specs'!
 
 itemMenu
@@ -276,6 +279,7 @@
     "Modified: / 23-10-2006 / 23:22:45 / cg"
 ! !
 
+
 !ToDoListBrowser class methodsFor:'tableColumns specs'!
 
 tableColumns
@@ -343,6 +347,7 @@
     "Modified: / 25-10-2006 / 01:05:50 / cg"
 ! !
 
+
 !ToDoListBrowser methodsFor:'accessing'!
 
 aboutThisApplicationText
@@ -399,6 +404,7 @@
     ^ shownCopyOfToDoList at:idx
 ! !
 
+
 !ToDoListBrowser methodsFor:'change & update'!
 
 delayedUpdate:something with:aParameter from:changedObject
@@ -425,6 +431,7 @@
     "Created: / 18-02-2007 / 12:54:58 / cg"
 ! !
 
+
 !ToDoListBrowser methodsFor:'initialization & release'!
 
 closeDownViews
@@ -500,6 +507,7 @@
     "Modified: / 18-02-2007 / 12:57:07 / cg"
 ! !
 
+
 !ToDoListBrowser methodsFor:'menu actions'!
 
 clearList
@@ -520,6 +528,7 @@
     "/ HTMLDocumentView openFullOnDocumentationFile:'help/<MyApplication>/TOP.html'.
 ! !
 
+
 !ToDoListBrowser methodsFor:'menu actions-item'!
 
 browseItem
@@ -561,6 +570,7 @@
     self removeItems:entriesToRemove
 ! !
 
+
 !ToDoListBrowser methodsFor:'user actions'!
 
 itemDoubleClicked:itemIndex
@@ -637,8 +647,10 @@
     "Created: / 25-10-2006 / 00:54:59 / cg"
 ! !
 
+
 !ToDoListBrowser class methodsFor:'documentation'!
 
 version
     ^ '$Header: /cvs/stx/stx/libtool/Tools__ToDoListBrowser.st,v 1.18 2012-11-03 16:16:49 cg Exp $'
 ! !
+
--- a/Tools__ToDoListEntry.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ToDoListEntry.st	Wed Jan 30 11:15:09 2013 +0000
@@ -228,5 +228,9 @@
 !ToDoListEntry class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ToDoListEntry.st,v 1.8 2008-08-20 19:41:35 cg Exp $'
+    ^ '$Id: Tools__ToDoListEntry.st 7854 2012-01-30 17:49:41Z vranyj1 $'
+!
+
+version_SVN
+    ^ '$Id: Tools__ToDoListEntry.st 7854 2012-01-30 17:49:41Z vranyj1 $'
 ! !
--- a/Tools__ToDoNotification.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__ToDoNotification.st	Wed Jan 30 11:15:09 2013 +0000
@@ -39,5 +39,5 @@
 !ToDoNotification class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ToDoNotification.st,v 1.2 2008-08-20 19:41:37 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__ToDoNotification.st,v 1.2 2008/08/20 19:41:37 cg Exp $'
 ! !
--- a/Tools__VariableList.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__VariableList.st	Wed Jan 30 11:15:09 2013 +0000
@@ -13,7 +13,7 @@
 
 "{ NameSpace: Tools }"
 
-BrowserList subclass:#VariableList
+Tools::BrowserList subclass:#VariableList
 	instanceVariableNames:'variableList classHolder showClassVars sortVariablesByName
 		selectedVariableEntries showWarningAboutMissingEntryInXmlSpec'
 	classVariableNames:''
@@ -50,6 +50,7 @@
 "
 ! !
 
+
 !VariableList class methodsFor:'interface specs'!
 
 windowSpec
@@ -101,6 +102,7 @@
       )
 ! !
 
+
 !VariableList class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -132,6 +134,7 @@
       ).
 ! !
 
+
 !VariableList methodsFor:'aspects'!
 
 classHolder
@@ -242,6 +245,7 @@
 
 ! !
 
+
 !VariableList methodsFor:'change & update'!
 
 delayedUpdate:something with:aParameter from:changedObject
@@ -416,6 +420,7 @@
     "Modified: / 20-07-2011 / 18:52:44 / cg"
 ! !
 
+
 !VariableList methodsFor:'generators'!
 
 makeGenerator
@@ -424,6 +429,7 @@
 
 ! !
 
+
 !VariableList methodsFor:'private'!
 
 commonPostBuild
@@ -703,6 +709,7 @@
     "Modified: / 23-03-2012 / 15:55:47 / cg"
 ! !
 
+
 !VariableList::VariableEntry class methodsFor:'instance creation'!
 
 application: app class: aClass name: aString
@@ -719,6 +726,7 @@
     "Created: / 12-04-2011 / 15:39:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !VariableList::VariableEntry methodsFor:'accessing'!
 
 application: anObject
@@ -801,6 +809,7 @@
     "Modified (format): / 16-12-2011 / 00:41:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !VariableList::VariableEntry methodsFor:'displaying'!
 
 displayOn:aGC x:x y:y opaque: opaque
@@ -815,6 +824,7 @@
     "Created: / 12-04-2011 / 15:47:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !VariableList::VariableEntry methodsFor:'queries'!
 
 widthOn:aGC
@@ -825,8 +835,14 @@
     "Created: / 16-12-2011 / 01:04:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !VariableList class methodsFor:'documentation'!
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/Tools__VariableList.st,v 1.19 2012-10-20 19:41:20 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: Tools__VariableList.st 8083 2013-01-14 11:48:37Z vranyj1 $'
 ! !
+
--- a/Tools__VisualProfilerCanvas.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__VisualProfilerCanvas.st	Wed Jan 30 11:15:09 2013 +0000
@@ -27,7 +27,7 @@
 
 "{ NameSpace: Tools }"
 
-NavigatorModel subclass:#VisualProfilerCanvas
+Tools::NavigatorModel subclass:#VisualProfilerCanvas
 	instanceVariableNames:'profilerStatistics selectedMethods packageFilter
 		perspectiveSpecHolder callTreeHolder selectedCallTreeItemHolder
 		methodList'
@@ -73,6 +73,7 @@
 "
 ! !
 
+
 !VisualProfilerCanvas class methodsFor:'interface specs'!
 
 callTreeSpec
@@ -415,6 +416,7 @@
     "Modified: / 24-11-2007 / 09:07:56 / janfrog"
 ! !
 
+
 !VisualProfilerCanvas class methodsFor:'list specs'!
 
 perspectiveNotebookTabList
@@ -478,6 +480,7 @@
     "Modified: / 24-11-2007 / 08:45:36 / janfrog"
 ! !
 
+
 !VisualProfilerCanvas class methodsFor:'menu specs'!
 
 sidebarMenu
@@ -510,6 +513,7 @@
       )
 ! !
 
+
 !VisualProfilerCanvas class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -532,6 +536,7 @@
     "Modified: / 01-12-2007 / 23:57:41 / janfrog"
 ! !
 
+
 !VisualProfilerCanvas class methodsFor:'tableColumns specs'!
 
 methodListColumns
@@ -588,6 +593,7 @@
     "Modified: / 01-12-2007 / 23:56:15 / janfrog"
 ! !
 
+
 !VisualProfilerCanvas methodsFor:'aspects'!
 
 callTreeHolder
@@ -781,6 +787,7 @@
     "Created: / 24-11-2007 / 08:57:58 / janfrog"
 ! !
 
+
 !VisualProfilerCanvas methodsFor:'change & update'!
 
 methodsSelectionChanged
@@ -852,6 +859,7 @@
     "Modified: / 18-11-2011 / 15:02:49 / cg"
 ! !
 
+
 !VisualProfilerCanvas methodsFor:'hooks'!
 
 commonPostBuild
@@ -874,6 +882,7 @@
     "Created: / 09-10-2007 / 21:05:39 / janfrog"
 ! !
 
+
 !VisualProfilerCanvas methodsFor:'user actions'!
 
 switchToMethod: aMethod
@@ -884,6 +893,7 @@
     "Created: / 09-10-2007 / 21:36:35 / janfrog"
 ! !
 
+
 !VisualProfilerCanvas methodsFor:'user actions-profiler'!
 
 profilerTestAction
@@ -905,12 +915,14 @@
     "Modified: / 04-08-2011 / 19:06:07 / cg"
 ! !
 
+
 !VisualProfilerCanvas::CallTreeItem class methodsFor:'documentation'!
 
 version
     ^'$Header: /cvs/stx/stx/libtool/Tools__VisualProfilerCanvas.st,v 1.7 2012-11-04 21:42:49 cg Exp $'
 ! !
 
+
 !VisualProfilerCanvas::CallTreeItem class methodsFor:'instance creation'!
 
 subject: subject parent: parent
@@ -923,6 +935,7 @@
     "Created: / 10-10-2007 / 08:35:55 / janfrog"
 ! !
 
+
 !VisualProfilerCanvas::CallTreeItem methodsFor:'accessing'!
 
 children
@@ -1047,6 +1060,7 @@
     "Created: / 24-11-2007 / 09:43:01 / janfrog"
 ! !
 
+
 !VisualProfilerCanvas::CallTreeItem methodsFor:'change & update'!
 
 updateChildren
@@ -1057,6 +1071,7 @@
     "Created: / 10-10-2007 / 13:02:13 / janfrog"
 ! !
 
+
 !VisualProfilerCanvas::CallTreeItem methodsFor:'comparing'!
 
 shouldBeMergedWith:anotherCallTreeItem 
@@ -1069,6 +1084,7 @@
     "Created: / 24-11-2007 / 09:50:34 / janfrog"
 ! !
 
+
 !VisualProfilerCanvas::CallTreeItem methodsFor:'private'!
 
 mergeChildren: rawChildren
@@ -1088,6 +1104,7 @@
     "Created: / 24-11-2007 / 09:20:07 / janfrog"
 ! !
 
+
 !VisualProfilerCanvas::CallTreeItem methodsFor:'testing'!
 
 isFiltered
@@ -1101,6 +1118,7 @@
     "Created: / 10-10-2007 / 13:09:46 / janfrog"
 ! !
 
+
 !VisualProfilerCanvas class methodsFor:'documentation'!
 
 version
@@ -1114,3 +1132,4 @@
 version_SVN
     ^ '§Id: Tools__VisualProfilerCanvas.st 7486 2009-10-26 22:06:24Z vranyj1 §'
 ! !
+
--- a/Tools__WebBrowserPage.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Tools__WebBrowserPage.st	Wed Jan 30 11:15:09 2013 +0000
@@ -28,8 +28,8 @@
 "{ NameSpace: Tools }"
 
 ApplicationModel subclass:#WebBrowserPage
-	instanceVariableNames:'history webKitView urlHolder titleHolder bookmarkHolder
-		toolBarVisibleHolder bookmarkBarVisibleHolder'
+	instanceVariableNames:'history webKitView urlHolder titleHolder linkHolder
+		bookmarkHolder toolBarVisibleHolder bookmarkBarVisibleHolder'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-Browsers-Web'
@@ -65,6 +65,7 @@
 "
 ! !
 
+
 !WebBrowserPage class methodsFor:'image specs'!
 
 hideToolBarIcon
@@ -76,6 +77,7 @@
     "Created: / 08-06-2011 / 12:09:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !WebBrowserPage class methodsFor:'interface specs'!
 
 contentSpec
@@ -287,6 +289,7 @@
       )
 ! !
 
+
 !WebBrowserPage class methodsFor:'menu specs'!
 
 toolBarMenu
@@ -332,6 +335,7 @@
     "Modified: / 08-11-2011 / 16:42:44 / cg"
 ! !
 
+
 !WebBrowserPage class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -351,6 +355,7 @@
 
 ! !
 
+
 !WebBrowserPage methodsFor:'actions'!
 
 hideBookmarkBar
@@ -379,6 +384,7 @@
     "Created: / 16-06-2011 / 16:10:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !WebBrowserPage methodsFor:'aspects'!
 
 bookmarkBarVisibleHolder
@@ -428,6 +434,35 @@
     "Created: / 08-06-2011 / 12:16:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+linkHolder
+    "return/create the 'linkHolder' value holder (automatically generated)"
+
+    linkHolder isNil ifTrue:[
+        linkHolder := ValueHolder new.
+        linkHolder addDependent:self.
+    ].
+    ^ linkHolder
+!
+
+linkHolder:something
+    "set the 'linkHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    linkHolder notNil ifTrue:[
+        oldValue := linkHolder value.
+        linkHolder removeDependent:self.
+    ].
+    linkHolder := something.
+    linkHolder notNil ifTrue:[
+        linkHolder addDependent:self.
+    ].
+    newValue := linkHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:linkHolder.
+    ].
+!
+
 titleHolder
     "return/create the 'titleHolder' value holder (automatically generated)"
 
@@ -531,16 +566,18 @@
         webKitView := WebKitView new
                         url: self urlHolder;
                         title: self titleHolder;
+                        link: self linkHolder;
             
                         yourself.
     ].
     ^webKitView.
 
     "Created: / 07-06-2011 / 22:50:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 08-06-2011 / 14:26:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 18-11-2011 / 15:04:27 / cg"
+    "Modified: / 30-05-2012 / 18:28:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !WebBrowserPage methodsFor:'aspects-queries'!
 
 canGoBackAspect
@@ -566,6 +603,7 @@
     "Modified: / 08-06-2011 / 12:36:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !WebBrowserPage methodsFor:'change & update'!
 
 update:something with:aParameter from:changedObject
@@ -577,14 +615,17 @@
          self updateBookmark.
          ^ self.
     ].
-    changedObject == titleHolder ifTrue:[
-         self updateBookmark.
-         ^ self.
-    ].
+
     changedObject == toolBarVisibleHolder ifTrue:[
          self updateToollBarAndBookmarkBarVisibility.
          ^ self.
     ].
+
+    changedObject == linkHolder ifTrue:[
+         self updateLink.
+         ^ self.
+    ].
+
     changedObject == bookmarkBarVisibleHolder ifTrue:[
          self updateToollBarAndBookmarkBarVisibility.
          ^ self.
@@ -594,7 +635,7 @@
 
     super update:something with:aParameter from:changedObject
 
-    "Modified: / 10-06-2011 / 23:53:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 30-05-2012 / 18:28:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 updateBookmark
@@ -614,6 +655,16 @@
     "Modified: / 08-06-2011 / 14:55:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+updateLink
+
+    (masterApplication notNil and:[masterApplication respondsTo: #infoLabelHolder]) ifTrue:[
+        masterApplication infoLabelHolder value: (self linkHolder value ? '')
+
+    ]
+
+    "Created: / 30-05-2012 / 18:28:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 updateToollBarAndBookmarkBarVisibility
     |toolBarVisible toolBar bookmarkBarVisible bookmarkBar pageContent topOffset h|
 
@@ -653,6 +704,7 @@
     "Modified: / 18-11-2011 / 15:04:22 / cg"
 ! !
 
+
 !WebBrowserPage methodsFor:'hooks'!
 
 commonPostOpen
@@ -662,6 +714,7 @@
     "Created: / 11-06-2011 / 00:00:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !WebBrowserPage methodsFor:'initialization'!
 
 initialize
@@ -672,6 +725,7 @@
     "Created: / 08-06-2011 / 12:23:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !WebBrowserPage methodsFor:'menu-actions'!
 
 goBack
@@ -699,6 +753,7 @@
     "Created: / 08-06-2011 / 15:01:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !WebBrowserPage methodsFor:'menu-dynamic'!
 
 goBackMenu
@@ -741,6 +796,7 @@
     "Modified (format): / 09-09-2012 / 13:24:59 / cg"
 ! !
 
+
 !WebBrowserPage class methodsFor:'documentation'!
 
 version
@@ -754,3 +810,4 @@
 version_SVN
     ^ '§Id§'
 ! !
+
--- a/TraitsInspectorView.st	Sun Jan 27 02:50:59 2013 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,65 +0,0 @@
-"
- COPYRIGHT (c) 2009 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' }"
-
-SmalltalkInspectorView subclass:#TraitsInspectorView
-	instanceVariableNames:''
-	classVariableNames:''
-	poolDictionaries:''
-	category:'Interface-Inspector'
-!
-
-!TraitsInspectorView class methodsFor:'documentation'!
-
-copyright
-"
- COPYRIGHT (c) 2009 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.
-"
-!
-
-documentation
-"
-    same as a smalltalk inspector, but filters only traits
-
-    [author:]
-        Claus Gittinger
-"
-! !
-
-!TraitsInspectorView methodsFor:'private'!
-
-indexList
-    "redefined to only show class variables"
-
-    keys := OrderedCollection new.
-    inspectedObject keysAndValuesDo:[:k :v |
-                                v isTrait ifTrue:[
-                                    keys add:k
-                                ]
-                           ].
-    keys := keys asSortedCollection:[:a :b | a displayString < b displayString].
-    ^ keys
-! !
-
-!TraitsInspectorView class methodsFor:'documentation'!
-
-version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/TraitsInspectorView.st,v 1.1 2009-10-12 20:00:25 cg Exp $'
-! !
--- a/VersionDiffBrowser.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/VersionDiffBrowser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -69,6 +69,7 @@
 
 ! !
 
+
 !VersionDiffBrowser class methodsFor:'interface specs'!
 
 windowSpec
@@ -282,6 +283,7 @@
       )
 ! !
 
+
 !VersionDiffBrowser class methodsFor:'menu specs'!
 
 mainMenu
@@ -552,6 +554,7 @@
     "Modified: / 31-08-2007 / 14:16:39 / cg"
 ! !
 
+
 !VersionDiffBrowser class methodsFor:'plugIn spec'!
 
 aspectSelectors
@@ -573,6 +576,7 @@
 
 ! !
 
+
 !VersionDiffBrowser class methodsFor:'startup'!
 
 openOnClass:aClass againstVersion:aVersionA
@@ -795,6 +799,7 @@
     "
 ! !
 
+
 !VersionDiffBrowser methodsFor:'accessing'!
 
 canIncludeExtensions:something
@@ -953,6 +958,7 @@
     ^ classChangeSet labelB
 ! !
 
+
 !VersionDiffBrowser methodsFor:'actions'!
 
 acceptInLeftView
@@ -1119,6 +1125,7 @@
     "Modified: / 15-08-2010 / 21:35:00 / cg"
 ! !
 
+
 !VersionDiffBrowser methodsFor:'aspects'!
 
 boxAVisible
@@ -1394,6 +1401,7 @@
     "Modified: / 25-07-2006 / 11:15:07 / cg"
 ! !
 
+
 !VersionDiffBrowser methodsFor:'aspects-exported'!
 
 changedLabelHolder:aValueHolder
@@ -1439,6 +1447,7 @@
     ]
 ! !
 
+
 !VersionDiffBrowser methodsFor:'aspects-menu'!
 
 canAcceptInCodeView
@@ -1459,6 +1468,7 @@
     ^ self methodsChangedSelection value notNil
 ! !
 
+
 !VersionDiffBrowser methodsFor:'change & update'!
 
 update:something with:parameter from:changedObject
@@ -1480,6 +1490,7 @@
     "Modified: / 17-07-2012 / 17:48:58 / cg"
 ! !
 
+
 !VersionDiffBrowser methodsFor:'initialization & release'!
 
 postBuildWith:aBuilder
@@ -1494,6 +1505,7 @@
     super postBuildWith:aBuilder
 ! !
 
+
 !VersionDiffBrowser methodsFor:'menu action'!
 
 browseChange:aChange
@@ -1689,6 +1701,7 @@
     ].
 ! !
 
+
 !VersionDiffBrowser methodsFor:'private'!
 
 addAcceptToTextViewMenus
@@ -2003,6 +2016,7 @@
     "Modified: / 17-07-2012 / 18:34:36 / cg"
 ! !
 
+
 !VersionDiffBrowser methodsFor:'setup'!
 
 setupForClass:aClass againstVersion:aVersionA
@@ -2080,6 +2094,7 @@
     self classChangeSet:changeSet
 ! !
 
+
 !VersionDiffBrowser::ClassChangeSet class methodsFor:'instance creation'!
 
 changeSetForClass:aClass
@@ -2296,6 +2311,7 @@
 	].
 ! !
 
+
 !VersionDiffBrowser::ClassChangeSet methodsFor:'accessing'!
 
 classBeingCompared
@@ -2398,12 +2414,14 @@
     versionB := something.
 ! !
 
+
 !VersionDiffBrowser::ClassChangeSet methodsFor:'misc'!
 
 removeAllVersionMethods
     diffSet removeAllVersionMethods.
 ! !
 
+
 !VersionDiffBrowser::ClassChangeSet methodsFor:'setup'!
 
 setupForClass:aClass againstVersion:aVersionA
@@ -2443,6 +2461,7 @@
     ^ diffSet
 ! !
 
+
 !VersionDiffBrowser class methodsFor:'documentation'!
 
 version
@@ -2451,4 +2470,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.111 2012-10-30 16:04:26 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: VersionDiffBrowser.st 8074 2012-11-30 17:23:39Z vranyj1 $'
 ! !
+
--- a/VersionRevisionItem.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/VersionRevisionItem.st	Wed Jan 30 11:15:09 2013 +0000
@@ -114,5 +114,5 @@
 !VersionRevisionItem class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/VersionRevisionItem.st,v 1.6 2000-02-18 14:08:03 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/VersionRevisionItem.st,v 1.6 2000/02/18 14:08:03 cg Exp $'
 ! !
--- a/ViewWithAcceptAndCancelBar.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/ViewWithAcceptAndCancelBar.st	Wed Jan 30 11:15:09 2013 +0000
@@ -58,6 +58,7 @@
 "
 ! !
 
+
 !ViewWithAcceptAndCancelBar methodsFor:'accessing'!
 
 acceptAction:something
@@ -107,6 +108,7 @@
     ^ slaveView scrolledView
 ! !
 
+
 !ViewWithAcceptAndCancelBar methodsFor:'action'!
 
 accept
@@ -125,6 +127,7 @@
     ]
 ! !
 
+
 !ViewWithAcceptAndCancelBar methodsFor:'change & update'!
 
 hideBar
@@ -174,6 +177,7 @@
     "Modified (format): / 29-11-2011 / 14:05:04 / cg"
 ! !
 
+
 !ViewWithAcceptAndCancelBar methodsFor:'initialization'!
 
 initialize
@@ -210,6 +214,7 @@
     "
 ! !
 
+
 !ViewWithAcceptAndCancelBar::AcceptAndCancelBar methodsFor:'accessing'!
 
 acceptButton
@@ -224,6 +229,7 @@
     ^ compareButton
 ! !
 
+
 !ViewWithAcceptAndCancelBar::AcceptAndCancelBar methodsFor:'help'!
 
 flyByHelpTextAt:srcPoint
@@ -243,6 +249,7 @@
     "Modified: / 26-09-2012 / 14:26:14 / cg"
 ! !
 
+
 !ViewWithAcceptAndCancelBar::AcceptAndCancelBar methodsFor:'initialization'!
 
 initialize
@@ -274,6 +281,7 @@
     "Modified: / 26-09-2012 / 14:44:18 / cg"
 ! !
 
+
 !ViewWithAcceptAndCancelBar::AcceptAndCancelBar::ButtonWithHelpText methodsFor:'accessing'!
 
 flyByHelpText
@@ -284,6 +292,7 @@
     helpText := something.
 ! !
 
+
 !ViewWithAcceptAndCancelBar class methodsFor:'documentation'!
 
 version
@@ -292,4 +301,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/ViewWithAcceptAndCancelBar.st,v 1.11 2012-09-26 12:44:28 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: ViewWithAcceptAndCancelBar.st 8059 2012-09-27 20:08:20Z vranyj1 $'
 ! !
+
--- a/Win32FileDialog.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/Win32FileDialog.st	Wed Jan 30 11:15:09 2013 +0000
@@ -20,7 +20,7 @@
 	category:'Interface-Tools-File'
 !
 
-ByteArray variableByteSubclass:#OpenFilenameStructure
+ByteArray subclass:#OpenFilenameStructure
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -49,6 +49,7 @@
 "
 ! !
 
+
 !Win32FileDialog class methodsFor:'initialization'!
 
 initialize
@@ -64,12 +65,14 @@
     InitialDirectory := Directory pathName: Disk drivePathName.
 ! !
 
+
 !Win32FileDialog class methodsFor:'instance creation'!
 
 new
     ^ self basicNew initialize
 ! !
 
+
 !Win32FileDialog class methodsFor:'accessing'!
 
 getInitialDirectory
@@ -84,6 +87,7 @@
     "Modified: / 26-10-2010 / 18:47:48 / cg"
 ! !
 
+
 !Win32FileDialog class methodsFor:'constants'!
 
 commonDialogConstantAt:aString 
@@ -200,6 +204,7 @@
     "Modified: / 26-10-2010 / 18:47:57 / cg"
 ! !
 
+
 !Win32FileDialog class methodsFor:'examples'!
 
 openFile
@@ -218,6 +223,7 @@
     "
 ! !
 
+
 !Win32FileDialog class methodsFor:'filters'!
 
 filterPatternDescription:filterPattern 
@@ -277,6 +283,7 @@
     "Modified: / 26-10-2010 / 18:48:28 / cg"
 ! !
 
+
 !Win32FileDialog class methodsFor:'opening'!
 
 fileDialogFor:ownerWindow save:isSaveDialog 
@@ -308,6 +315,7 @@
     ^ filePath
 ! !
 
+
 !Win32FileDialog methodsFor:'accessing'!
 
 addAllFilesFilter
@@ -572,6 +580,7 @@
     "Modified: / 26-10-2010 / 18:47:41 / cg"
 ! !
 
+
 !Win32FileDialog methodsFor:'dapas'!
 
 dapasOpenFile
@@ -632,6 +641,7 @@
     "Modified: / 26-10-2010 / 18:47:14 / cg"
 ! !
 
+
 !Win32FileDialog methodsFor:'initialization & release'!
 
 cleanUp
@@ -672,6 +682,7 @@
     "Modified: / 27-10-2010 / 10:56:21 / cg"
 ! !
 
+
 !Win32FileDialog methodsFor:'opening'!
 
 asynchronousOpen
@@ -868,6 +879,7 @@
     "Modified: / 23-01-2011 / 10:59:20 / cg"
 ! !
 
+
 !Win32FileDialog methodsFor:'private'!
 
 fillStruct
@@ -913,6 +925,7 @@
     "Modified: / 26-10-2010 / 18:46:45 / cg"
 ! !
 
+
 !Win32FileDialog::OpenFilenameStructure class methodsFor:'accessing'!
 
 sizeInBytes
@@ -920,6 +933,7 @@
     ^ 76
 ! !
 
+
 !Win32FileDialog::OpenFilenameStructure class methodsFor:'instance creation'!
 
 new
@@ -927,6 +941,7 @@
     ^ super new: self sizeInBytes
 ! !
 
+
 !Win32FileDialog::OpenFilenameStructure methodsFor:'accessing'!
 
 flags
@@ -1174,6 +1189,7 @@
     ^ self class sizeInBytes
 ! !
 
+
 !Win32FileDialog::OpenFilenameStructure methodsFor:'printing'!
 
 printOn: aStream
@@ -1201,6 +1217,7 @@
     aStream nextPutAll:'nMaxFileTitle: ', self nMaxFileTitle printString; cr.    
 ! !
 
+
 !Win32FileDialog class methodsFor:'documentation'!
 
 version
@@ -1209,6 +1226,11 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/Win32FileDialog.st,v 1.13 2012-10-29 11:41:53 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: Win32FileDialog.st 8074 2012-11-30 17:23:39Z vranyj1 $'
 ! !
 
+
 Win32FileDialog initialize!
--- a/WorkspaceApplication.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/WorkspaceApplication.st	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 "
  COPYRIGHT (c) 2001 by eXept Software AG
-              All Rights Reserved
+	      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
@@ -15,7 +15,7 @@
 	instanceVariableNames:'autoDefineVariables syntaxHolder poolsConsideredInDoIts
 		smalltalkMenuEnabledHolder clipBoardWatcherProcess
 		fetchClipboardLines cursorLineHolder cursorColHolder
-		modeLabelHolder toolBarView'
+		modeLabelHolder toolBarView canChangeLanguageHolder'
 	classVariableNames:'LastFilterBlockString LastProcessingBlockString LastTeaWaitTime
 		DefaultToolBarVisible ClipBoardFetchingInstance LastLanguage
 		MyWorkspaceOpened'
@@ -28,7 +28,7 @@
 copyright
 "
  COPYRIGHT (c) 2001 by eXept Software AG
-              All Rights Reserved
+	      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
@@ -44,10 +44,11 @@
     A simple wrapper around a WorkSpace-View, adding a pullDown menu.
 
     [author:]
-        Claus Gittinger
+	Claus Gittinger
 "
 ! !
 
+
 !WorkspaceApplication class methodsFor:'defaults'!
 
 defaultEditToolbarVisible
@@ -65,23 +66,23 @@
 defaultMyWorkspaceDotWspFile
     |stxFolder f |
 
-    stxFolder := Filename homeDirectory / '.smalltalk'. 
+    stxFolder := Filename homeDirectory / '.smalltalk'.
     f := stxFolder / 'MyWorkspace.wsp'.
     f exists ifFalse:[
-        stxFolder makeDirectory.
-
-        f writingFileDo:[:s|
-            'MyWorkspace.wsp' asFilename exists ifTrue:[
-                s nextPutAll:('MyWorkspace.wsp' asFilename contentsAsString)   
-            ] ifFalse:[
-                s nextPutLine: '"This is your personal workspace..."'.
-                s nextPutLine: '"Edit and save as  ', f pathName , '"'.
-
-                'MyWorkspaceSample.wsp' asFilename exists ifTrue:[
-                    s nextPutAll:('MyWorkspaceSample.wsp' asFilename contentsAsString)   
-                ]
-            ]
-        ]
+	stxFolder makeDirectory.
+
+	f writingFileDo:[:s|
+	    'MyWorkspace.wsp' asFilename exists ifTrue:[
+		s nextPutAll:('MyWorkspace.wsp' asFilename contentsAsString)
+	    ] ifFalse:[
+		s nextPutLine: '"This is your personal workspace..."'.
+		s nextPutLine: '"Edit and save as  ', f pathName , '"'.
+
+		'MyWorkspaceSample.wsp' asFilename exists ifTrue:[
+		    s nextPutAll:('MyWorkspaceSample.wsp' asFilename contentsAsString)
+		]
+	    ]
+	]
     ].
     ^f
 
@@ -100,6 +101,7 @@
     ^ '/workspace'
 ! !
 
+
 !WorkspaceApplication class methodsFor:'help specs'!
 
 flyByHelpSpec
@@ -144,6 +146,7 @@
     "Modified: / 08-07-2011 / 08:29:51 / cg"
 ! !
 
+
 !WorkspaceApplication class methodsFor:'interface specs'!
 
 manageSnipletsDialogSpec
@@ -160,120 +163,120 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: manageSnipletsDialogSpec
-        window: 
+	name: manageSnipletsDialogSpec
+	window:
        (WindowSpec
-          label: 'Manage Sniplets'
-          name: 'Manage Sniplets'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 379 590)
-        )
-        component: 
+	  label: 'Manage Sniplets'
+	  name: 'Manage Sniplets'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 379 590)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (LabelSpec
-              label: 'Sniplet:'
-              name: 'Label1'
-              layout: (LayoutFrame 0 0 0 0 0 1 30 0)
-              translateLabel: true
-              adjust: left
-            )
-           (VariableVerticalPanelSpec
-              name: 'VariableVerticalPanel1'
-              layout: (LayoutFrame 0 0 30 0 0 1 -80 1)
-              component: 
-             (SpecCollection
-                collection: (
-                 (SequenceViewSpec
-                    name: 'List1'
-                    model: selectedSniplet
-                    hasHorizontalScrollBar: true
-                    hasVerticalScrollBar: true
-                    useIndex: true
-                    sequenceList: listOfSniplets
-                  )
-                 (TextEditorSpec
-                    name: 'TextEditor1'
-                    model: selectedSnipletsText
-                    hasHorizontalScrollBar: true
-                    hasVerticalScrollBar: true
-                    hasKeyboardFocusInitially: false
-                    viewClassName: ''
-                  )
-                 )
-               
-              )
-              handles: (Any 0.5 1.0)
-            )
-           (HorizontalPanelViewSpec
-              name: 'ButtonPanel'
-              layout: (LayoutFrame 0 0 -70 1 0 1 -40 1)
-              horizontalLayout: center
-              verticalLayout: center
-              horizontalSpace: 3
-              verticalSpace: 3
-              component: 
-             (SpecCollection
-                collection: (
-                 (ActionButtonSpec
-                    label: 'Save Changes'
-                    name: 'Button4'
-                    translateLabel: true
-                    model: saveSelectedSniplet
-                    enableChannel: saveEnabled
-                    extent: (Point 125 22)
-                  )
-                 (ActionButtonSpec
-                    label: 'Remove'
-                    name: 'Button2'
-                    translateLabel: true
-                    model: removeSelectedSniplet
-                    enableChannel: removeEnabled
-                    extent: (Point 125 22)
-                  )
-                 (ActionButtonSpec
-                    label: 'Paste'
-                    name: 'Button3'
-                    translateLabel: true
-                    model: pasteSelectedSniplet
-                    enableChannel: pasteEnabled
-                    extent: (Point 125 22)
-                  )
-                 )
-               
-              )
-            )
-           (DividerSpec
-              name: 'Separator1'
-              layout: (LayoutFrame 0 0.0 557 0 0 1.0 561 0)
-            )
-           (HorizontalPanelViewSpec
-              name: 'CloseButtonPanel'
-              layout: (LayoutFrame 0 0 -30 1 0 1 0 1)
-              horizontalLayout: fitSpace
-              verticalLayout: center
-              horizontalSpace: 3
-              verticalSpace: 3
-              reverseOrderIfOKAtLeft: true
-              component: 
-             (SpecCollection
-                collection: (
-                 (ActionButtonSpec
-                    label: 'Close'
-                    name: 'Button1'
-                    translateLabel: true
-                    model: cancel
-                    extent: (Point 373 22)
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (LabelSpec
+	      label: 'Sniplet:'
+	      name: 'Label1'
+	      layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+	      translateLabel: true
+	      adjust: left
+	    )
+	   (VariableVerticalPanelSpec
+	      name: 'VariableVerticalPanel1'
+	      layout: (LayoutFrame 0 0 30 0 0 1 -80 1)
+	      component:
+	     (SpecCollection
+		collection: (
+		 (SequenceViewSpec
+		    name: 'List1'
+		    model: selectedSniplet
+		    hasHorizontalScrollBar: true
+		    hasVerticalScrollBar: true
+		    useIndex: true
+		    sequenceList: listOfSniplets
+		  )
+		 (TextEditorSpec
+		    name: 'TextEditor1'
+		    model: selectedSnipletsText
+		    hasHorizontalScrollBar: true
+		    hasVerticalScrollBar: true
+		    hasKeyboardFocusInitially: false
+		    viewClassName: ''
+		  )
+		 )
+
+	      )
+	      handles: (Any 0.5 1.0)
+	    )
+	   (HorizontalPanelViewSpec
+	      name: 'ButtonPanel'
+	      layout: (LayoutFrame 0 0 -70 1 0 1 -40 1)
+	      horizontalLayout: center
+	      verticalLayout: center
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      component:
+	     (SpecCollection
+		collection: (
+		 (ActionButtonSpec
+		    label: 'Save Changes'
+		    name: 'Button4'
+		    translateLabel: true
+		    model: saveSelectedSniplet
+		    enableChannel: saveEnabled
+		    extent: (Point 125 22)
+		  )
+		 (ActionButtonSpec
+		    label: 'Remove'
+		    name: 'Button2'
+		    translateLabel: true
+		    model: removeSelectedSniplet
+		    enableChannel: removeEnabled
+		    extent: (Point 125 22)
+		  )
+		 (ActionButtonSpec
+		    label: 'Paste'
+		    name: 'Button3'
+		    translateLabel: true
+		    model: pasteSelectedSniplet
+		    enableChannel: pasteEnabled
+		    extent: (Point 125 22)
+		  )
+		 )
+
+	      )
+	    )
+	   (DividerSpec
+	      name: 'Separator1'
+	      layout: (LayoutFrame 0 0.0 557 0 0 1.0 561 0)
+	    )
+	   (HorizontalPanelViewSpec
+	      name: 'CloseButtonPanel'
+	      layout: (LayoutFrame 0 0 -30 1 0 1 0 1)
+	      horizontalLayout: fitSpace
+	      verticalLayout: center
+	      horizontalSpace: 3
+	      verticalSpace: 3
+	      reverseOrderIfOKAtLeft: true
+	      component:
+	     (SpecCollection
+		collection: (
+		 (ActionButtonSpec
+		    label: 'Close'
+		    name: 'Button1'
+		    translateLabel: true
+		    model: cancel
+		    extent: (Point 373 22)
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 !
 
@@ -291,30 +294,30 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: toolBarSpec
-        window: 
+	name: toolBarSpec
+	window:
        (WindowSpec
-          label: 'Toolbar'
-          name: 'Toolbar'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 728 48)
-        )
-        component: 
+	  label: 'Toolbar'
+	  name: 'Toolbar'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 728 48)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (MenuPanelSpec
-              name: 'ToolBarMenu'
-              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
-              level: 0
-              visibilityChannel: toolBarVisibleHolder
-              menu: toolBarMenu
-              textDefault: true
-            )
-           )
-         
-        )
+	  collection: (
+	   (MenuPanelSpec
+	      name: 'ToolBarMenu'
+	      layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+	      level: 0
+	      visibilityChannel: toolBarVisibleHolder
+	      menu: toolBarMenu
+	      textDefault: true
+	    )
+	   )
+
+	)
       )
 !
 
@@ -333,100 +336,100 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpec
-        window: 
+	name: windowSpec
+	window:
        (WindowSpec
-          label: 'Workspace'
-          name: 'Workspace'
-          min: (Point 10 10)
-          bounds: (Rectangle 0 0 640 480)
-          menu: mainMenu
-        )
-        component: 
+	  label: 'Workspace'
+	  name: 'Workspace'
+	  min: (Point 10 10)
+	  bounds: (Rectangle 0 0 640 480)
+	  menu: mainMenu
+	)
+	component:
        (SpecCollection
-          collection: (
-           (ViewSpec
-              name: 'ToolBar'
-              layout: (LayoutFrame 0 0 0 0 0 1 32 0)
-              visibilityChannel: toolBarVisibleHolder
-              component: 
-             (SpecCollection
-                collection: (
-                 (ActionButtonSpec
-                    label: 'hideToolBarIcon'
-                    name: 'HideToolBarButton'
-                    layout: (LayoutFrame 0 0 0 0 13 0 0 1)
-                    activeHelpKey: hideToolBar
-                    hasCharacterOrientedLabel: false
-                    translateLabel: true
-                    model: hideToolbar
-                    postBuildCallback: hideToolBarButtonCreated:
-                  )
-                 (NonScrollableArbitraryComponentSpec
-                    name: 'ToolBarView'
-                    layout: (LayoutFrame 13 0.0 0 0.0 0 1.0 0 1.0)
-                    level: 1
-                    visibilityChannel: toolBarVisibleHolder
-                    component: toolBarView
-                  )
-                 )
-               
-              )
-            )
-           (ViewSpec
-              name: 'EditToolBar'
-              layout: (LayoutFrame 0 0 32 0 0 1 64 0)
-              visibilityChannel: editToolBarVisibleHolder
-              component: 
-             (SpecCollection
-                collection: (
-                 (ActionButtonSpec
-                    label: 'hideToolBarIcon'
-                    name: 'HideEditToolBarButton'
-                    layout: (LayoutFrame 0 0 0 0 13 0 0 1)
-                    activeHelpKey: hideEditToolBar
-                    hasCharacterOrientedLabel: false
-                    translateLabel: true
-                    model: hideEditToolbar
-                    postBuildCallback: hideToolBarButtonCreated:
-                  )
-                 (MenuPanelSpec
-                    name: 'EditToolBar1'
-                    layout: (LayoutFrame 13 0.0 0 0.0 0 1.0 0 1.0)
-                    visibilityChannel: editToolBarVisibleHolder
-                    menu: editToolBarMenu
-                    textDefault: true
-                  )
-                 )
-               
-              )
-            )
-           (NoteBookViewSpec
-              name: 'NoteBook'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 -26 1.0)
-              model: selectedWorkspaceIndexHolder
-              menu: tabList
-              useIndex: true
-              accessTabMenuAction: tabMenuAt:
-              destroyTabAction: destroyTab:
-              canvas: workspaceHolder
-              canvasInset: 0
-              keepCanvasAlive: true
-              tabLevel: 1
-            )
-           (UISubSpecification
-              name: 'infoBarSubSpec'
-              layout: (LayoutFrame 0 0.0 -26 1 0 1.0 0 1.0)
-              visibilityChannel: infoVisibleHolder
-              majorKey: WorkspaceApplication
-              minorKey: windowSpecForInfoBar
+	  collection: (
+	   (ViewSpec
+	      name: 'ToolBar'
+	      layout: (LayoutFrame 0 0 0 0 0 1 32 0)
+	      visibilityChannel: toolBarVisibleHolder
+	      component:
+	     (SpecCollection
+		collection: (
+		 (ActionButtonSpec
+		    label: 'hideToolBarIcon'
+		    name: 'HideToolBarButton'
+		    layout: (LayoutFrame 0 0 0 0 13 0 0 1)
+		    activeHelpKey: hideToolBar
+		    hasCharacterOrientedLabel: false
+		    translateLabel: true
+		    model: hideToolbar
+		    postBuildCallback: hideToolBarButtonCreated:
+		  )
+		 (NonScrollableArbitraryComponentSpec
+		    name: 'ToolBarView'
+		    layout: (LayoutFrame 13 0.0 0 0.0 0 1.0 0 1.0)
+		    level: 1
+		    visibilityChannel: toolBarVisibleHolder
+		    component: toolBarView
+		  )
+		 )
+
+	      )
+	    )
+	   (ViewSpec
+	      name: 'EditToolBar'
+	      layout: (LayoutFrame 0 0 32 0 0 1 64 0)
+	      visibilityChannel: editToolBarVisibleHolder
+	      component:
+	     (SpecCollection
+		collection: (
+		 (ActionButtonSpec
+		    label: 'hideToolBarIcon'
+		    name: 'HideEditToolBarButton'
+		    layout: (LayoutFrame 0 0 0 0 13 0 0 1)
+		    activeHelpKey: hideEditToolBar
+		    hasCharacterOrientedLabel: false
+		    translateLabel: true
+		    model: hideEditToolbar
+		    postBuildCallback: hideToolBarButtonCreated:
+		  )
+		 (MenuPanelSpec
+		    name: 'EditToolBar1'
+		    layout: (LayoutFrame 13 0.0 0 0.0 0 1.0 0 1.0)
+		    visibilityChannel: editToolBarVisibleHolder
+		    menu: editToolBarMenu
+		    textDefault: true
+		  )
+		 )
+
+	      )
+	    )
+	   (NoteBookViewSpec
+	      name: 'NoteBook'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 -26 1.0)
+	      model: selectedWorkspaceIndexHolder
+	      menu: tabList
+	      useIndex: true
+	      accessTabMenuAction: tabMenuAt:
+	      destroyTabAction: destroyTab:
+	      canvas: workspaceHolder
+	      canvasInset: 0
+	      keepCanvasAlive: true
+	      tabLevel: 1
+	    )
+	   (UISubSpecification
+	      name: 'infoBarSubSpec'
+	      layout: (LayoutFrame 0 0.0 -26 1 0 1.0 0 1.0)
+	      visibilityChannel: infoVisibleHolder
+	      majorKey: WorkspaceApplication
+	      minorKey: windowSpecForInfoBar
               keepSpaceForOSXResizeHandleH: true
-            )
-           )
-         
-        )
+	    )
+	   )
+
+	)
       )
 !
 
@@ -444,81 +447,82 @@
 
     <resource: #canvas>
 
-    ^ 
+    ^
      #(FullSpec
-        name: windowSpecForInfoBar
-        window: 
+	name: windowSpecForInfoBar
+	window:
        (WindowSpec
-          label: 'Info Bar'
-          name: 'Info Bar'
-          min: (Point 400 320)
-          max: (Point 1152 900)
-          bounds: (Rectangle 0 0 500 30)
-        )
-        component: 
+	  label: 'Info Bar'
+	  name: 'Info Bar'
+	  min: (Point 400 320)
+	  max: (Point 1152 900)
+	  bounds: (Rectangle 0 0 500 30)
+	)
+	component:
        (SpecCollection
-          collection: (
-           (ViewSpec
-              name: 'infoView'
-              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              component: 
-             (SpecCollection
-                collection: (
-                 (LabelSpec
-                    name: 'infoLabel'
-                    layout: (LayoutFrame 0 0.0 0 0.0 -162 1.0 0 1.0)
-                    level: -1
-                    labelChannel: infoLabelHolder
-                    resizeForLabel: false
-                    adjust: left
-                  )
-                 (LabelSpec
-                    name: 'LanguageLabel'
-                    layout: (LayoutFrame -160 1.0 0 0.0 -60 1.0 0 1.0)
-                    activeHelpKey: languageSelection
-                    level: -1
-                    labelChannel: languageInfoLabelHolder
-                    resizeForLabel: false
-                    adjust: left
-                    menu: languageInfoLabelMenu
-                  )
-                 (LabelSpec
-                    name: 'ModeLabel'
-                    layout: (LayoutFrame -60 1 0 0.0 -50 1 0 1.0)
-                    activeHelpKey: modeLabel
-                    level: -1
-                    translateLabel: true
-                    labelChannel: modeLabelHolder
-                    postBuildCallback: postBuildEditModeInfoLabel:
-                  )
-                 (LabelSpec
-                    name: 'CursorLineLabel'
-                    layout: (LayoutFrame -50 1 0 0.0 -20 1 0 1.0)
-                    activeHelpKey: lineLabel
-                    level: -1
-                    translateLabel: true
-                    labelChannel: cursorLineLabelHolder
-                    adjust: right
-                  )
-                 (LabelSpec
-                    name: 'CursorColLabel'
-                    layout: (LayoutFrame -20 1 0 0.0 0 1.0 0 1.0)
-                    activeHelpKey: columnLabel
-                    level: -1
-                    translateLabel: true
-                    labelChannel: cursorColLabelHolder
-                    adjust: right
-                  )
-                 )
-               
-              )
-            )
-           )
-         
-        )
+	  collection: (
+	   (ViewSpec
+	      name: 'infoView'
+	      layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+	      component:
+	     (SpecCollection
+		collection: (
+		 (LabelSpec
+		    name: 'infoLabel'
+		    layout: (LayoutFrame 0 0.0 0 0.0 -162 1.0 0 1.0)
+		    level: -1
+		    labelChannel: infoLabelHolder
+		    resizeForLabel: false
+		    adjust: left
+		  )
+		 (LabelSpec
+		    name: 'LanguageLabel'
+		    layout: (LayoutFrame -160 1.0 0 0.0 -60 1.0 0 1.0)
+		    activeHelpKey: languageSelection
+		    level: -1
+		    labelChannel: languageInfoLabelHolder
+		    resizeForLabel: false
+		    adjust: left
+		    menu: languageInfoLabelMenu
+		  )
+		 (LabelSpec
+		    name: 'ModeLabel'
+		    layout: (LayoutFrame -60 1 0 0.0 -50 1 0 1.0)
+		    activeHelpKey: modeLabel
+		    level: -1
+		    translateLabel: true
+		    labelChannel: modeLabelHolder
+		    postBuildCallback: postBuildEditModeInfoLabel:
+		  )
+		 (LabelSpec
+		    name: 'CursorLineLabel'
+		    layout: (LayoutFrame -50 1 0 0.0 -20 1 0 1.0)
+		    activeHelpKey: lineLabel
+		    level: -1
+		    translateLabel: true
+		    labelChannel: cursorLineLabelHolder
+		    adjust: right
+		  )
+		 (LabelSpec
+		    name: 'CursorColLabel'
+		    layout: (LayoutFrame -20 1 0 0.0 0 1.0 0 1.0)
+		    activeHelpKey: columnLabel
+		    level: -1
+		    translateLabel: true
+		    labelChannel: cursorColLabelHolder
+		    adjust: right
+		  )
+		 )
+
+	      )
+	    )
+	   )
+
+	)
       )
 ! !
 
+
 !WorkspaceApplication class methodsFor:'menu specs'!
 
 bufferAddMenuSlice
@@ -528,6 +532,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:WorkspaceApplication andSelector:#bufferAddMenuSlice
      (Menu new fromLiteralArrayEncoding:(WorkspaceApplication bufferAddMenuSlice)) startUp
@@ -535,33 +540,39 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            label: 'Terminal'
-            itemValue: addTerminal
-            translateLabel: true
-          )
-         (MenuItem
-            label: 'Web Browser'
-            itemValue: addWebBrowser
-            translateLabel: true
-            isVisible: isWebBrowserAvailable
-          )
-         (MenuItem
-            label: 'Tea-Timer'
-            itemValue: addTeaTimer
-            translateLabel: true
-          )
-         (MenuItem
+	(
+	 (MenuItem
+	    label: 'Terminal'
+	    itemValue: addTerminal
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: 'Web Browser'
+	    itemValue: addWebBrowser
+	    translateLabel: true
+	    isVisible: isWebBrowserAvailable
+	  )
+	 (MenuItem
+	    enabled: isSQLWorkspaceAvailable
+	    label: 'SQL Workspace'
+	    itemValue: addSQLWorkspace
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: 'Tea Timer'
+	    itemValue: addTeaTimer
+	    translateLabel: true
+	  )
+	 (MenuItem
             label: 'Stopwatch'
-            itemValue: addStopWatch
-            translateLabel: true
-          )
-         )
-        nil
-        nil
+	    itemValue: addStopWatch
+	    translateLabel: true
+	  )
+	 )
+	nil
+	nil
       )
 !
 
@@ -579,95 +590,95 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            label: 'Add Buffer'
-            itemValue: addWorkspace
-            translateLabel: true
-            shortcutKey: Ctrlt
-          )
-         (MenuItem
-            label: '-'
-            isVisible: thisIsASmalltalkWorkspace
-          )
-         (MenuItem
-            label: 'Add Buffer on MyWorkspace'
-            itemValue: addMyWorkspace
-            translateLabel: true
-            isVisible: thisIsASmalltalkWorkspace
-          )
-         (MenuItem
-            enabled: anyWorkspaceVariableIsDefined
-            label: 'Add Buffer on Workspace Variables'
-            itemValue: addWorkspaceVariableInspector
-            translateLabel: true
-            isVisible: thisIsASmalltalkWorkspace
-          )
-         (MenuItem
-            label: 'Add Buffer on Global Variables'
-            itemValue: addGlobalVariableInspector
-            translateLabel: true
-            isVisible: thisIsASmalltalkWorkspace
-          )
-         (MenuItem
-            label: 'Add Buffer on Namespace...'
-            itemValue: addNamespaceInspector
-            translateLabel: true
-            isVisible: thisIsASmalltalkWorkspace
-          )
-         (MenuItem
-            label: 'Add Buffer on SharedPool...'
-            itemValue: addSharedPoolInspector
-            translateLabel: true
-            isVisible: thisIsASmalltalkWorkspace
-          )
-         (MenuItem
-            label: 'Add Buffer on Class Variables'
-            itemValue: addClassVariableInspector
-            translateLabel: true
-            isVisible: thisIsASmalltalkWorkspace
-          )
-         (MenuItem
-            label: '-'
-            isVisible: thisIsASmalltalkWorkspace
-          )
-         (MenuItem
-            label: 'Add Evaluation Buffer'
-            itemValue: addEvaluationWorkspace
-            translateLabel: true
-            isVisible: thisIsASmalltalkWorkspace
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Menu Slice'
-            translateLabel: true
-            submenuChannel: bufferAddMenuSlice
-            isMenuSlice: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Rename...'
-            itemValue: renameWorkspace
-            translateLabel: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: canRemoveWorkspace
-            label: 'Remove Buffer'
-            itemValue: removeWorkspace
-            translateLabel: true
-          )
-         )
-        nil
-        nil
+	(
+	 (MenuItem
+	    label: 'Add Buffer'
+	    itemValue: addWorkspace
+	    translateLabel: true
+	    shortcutKey: Ctrlt
+	  )
+	 (MenuItem
+	    label: '-'
+	    isVisible: thisIsASmalltalkWorkspace
+	  )
+	 (MenuItem
+	    label: 'Add Buffer on MyWorkspace'
+	    itemValue: addMyWorkspace
+	    translateLabel: true
+	    isVisible: thisIsASmalltalkWorkspace
+	  )
+	 (MenuItem
+	    enabled: anyWorkspaceVariableIsDefined
+	    label: 'Add Buffer on Workspace Variables'
+	    itemValue: addWorkspaceVariableInspector
+	    translateLabel: true
+	    isVisible: thisIsASmalltalkWorkspace
+	  )
+	 (MenuItem
+	    label: 'Add Buffer on Global Variables'
+	    itemValue: addGlobalVariableInspector
+	    translateLabel: true
+	    isVisible: thisIsASmalltalkWorkspace
+	  )
+	 (MenuItem
+	    label: 'Add Buffer on Namespace...'
+	    itemValue: addNamespaceInspector
+	    translateLabel: true
+	    isVisible: thisIsASmalltalkWorkspace
+	  )
+	 (MenuItem
+	    label: 'Add Buffer on SharedPool...'
+	    itemValue: addSharedPoolInspector
+	    translateLabel: true
+	    isVisible: thisIsASmalltalkWorkspace
+	  )
+	 (MenuItem
+	    label: 'Add Buffer on Class Variables'
+	    itemValue: addClassVariableInspector
+	    translateLabel: true
+	    isVisible: thisIsASmalltalkWorkspace
+	  )
+	 (MenuItem
+	    label: '-'
+	    isVisible: thisIsASmalltalkWorkspace
+	  )
+	 (MenuItem
+	    label: 'Add Evaluation Buffer'
+	    itemValue: addEvaluationWorkspace
+	    translateLabel: true
+	    isVisible: thisIsASmalltalkWorkspace
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    label: 'Menu Slice'
+	    translateLabel: true
+	    submenuChannel: bufferAddMenuSlice
+	    isMenuSlice: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    label: 'Rename...'
+	    itemValue: renameWorkspace
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    enabled: canRemoveWorkspace
+	    label: 'Remove Buffer'
+	    itemValue: removeWorkspace
+	    translateLabel: true
+	  )
+	 )
+	nil
+	nil
       )
 !
 
@@ -686,207 +697,207 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            enabled: hasSelectionInActiveWorkspace
-            label: 'Cut'
-            itemValue: cutSelection
-            translateLabel: true
-          )
-         (MenuItem
-            enabled: hasSelectionInActiveWorkspace
-            label: 'Copy'
-            itemValue: copySelection
-            translateLabel: true
-          )
-         (MenuItem
-            label: 'Paste'
-            itemValue: paste
-            translateLabel: true
-          )
-         (MenuItem
-            enabled: hasHistory
-            label: 'Paste Last'
-            itemValue: pasteLastDoIt
-            translateLabel: true
-            isVisible: thisIsASmalltalkWorkspace
-            submenuChannel: pasteRecentDoItMenu
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
+	(
+	 (MenuItem
+	    enabled: hasSelectionInActiveWorkspace
+	    label: 'Cut'
+	    itemValue: cutSelection
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    enabled: hasSelectionInActiveWorkspace
+	    label: 'Copy'
+	    itemValue: copySelection
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: 'Paste'
+	    itemValue: paste
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    enabled: hasHistory
+	    label: 'Paste Last'
+	    itemValue: pasteLastDoIt
+	    translateLabel: true
+	    isVisible: thisIsASmalltalkWorkspace
+	    submenuChannel: pasteRecentDoItMenu
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
             enabled: hasSelectionInActiveWorkspace
-            label: 'Copy as Sniplet...'
-            itemValue: addSelectionToSniplets
-            translateLabel: true
-          )
-         (MenuItem
+	    label: 'Copy as Sniplet...'
+	    itemValue: addSelectionToSniplets
+	    translateLabel: true
+	  )
+	 (MenuItem
             enabled: selectedWorkspaceIsTextView
-            label: 'Paste Sniplet...'
-            itemValue: pasteSniplet
-            translateLabel: true
-          )
-         (MenuItem
+	    label: 'Paste Sniplet...'
+	    itemValue: pasteSniplet
+	    translateLabel: true
+	  )
+	 (MenuItem
             enabled: selectedWorkspaceIsTextView
-            label: 'Manage Sniplets...'
-            itemValue: manageSniplets
-            translateLabel: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Select All'
-            itemValue: selectAll
-            translateLabel: true
-          )
-         (MenuItem
-            label: '-'
-            isVisible: thisIsASmalltalkWorkspace
-          )
-         (MenuItem
+	    label: 'Manage Sniplets...'
+	    itemValue: manageSniplets
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    label: 'Select All'
+	    itemValue: selectAll
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: '-'
+	    isVisible: thisIsASmalltalkWorkspace
+	  )
+	 (MenuItem
             enabled: selectedWorkspaceIsTextView
-            label: 'Filter Text...'
-            itemValue: filterText
-            translateLabel: true
-            isVisible: thisIsASmalltalkWorkspace
-          )
-         (MenuItem
+	    label: 'Filter Text...'
+	    itemValue: filterText
+	    translateLabel: true
+	    isVisible: thisIsASmalltalkWorkspace
+	  )
+	 (MenuItem
             enabled: selectedWorkspaceIsTextView
-            label: 'Process Text...'
-            itemValue: processText
-            translateLabel: true
-            isVisible: thisIsASmalltalkWorkspace
-          )
-         (MenuItem
+	    label: 'Process Text...'
+	    itemValue: processText
+	    translateLabel: true
+	    isVisible: thisIsASmalltalkWorkspace
+	  )
+	 (MenuItem
             label: 'Compare Text Against...'
             itemValue: compareTextAgainst
             translateLabel: true
           )
          (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Services'
-            translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Autofetch Selection'
-                  itemValue: autoFetchSelection:
-                  translateLabel: true
+	    label: '-'
+	  )
+	 (MenuItem
+	    label: 'Services'
+	    translateLabel: true
+	    submenu:
+	   (Menu
+	      (
+	       (MenuItem
+		  label: 'Autofetch Selection'
+		  itemValue: autoFetchSelection:
+		  translateLabel: true
                   hideMenuOnActivated: false
-                  indication: autoFetchSelection
-                )
-               (MenuItem
+		  indication: autoFetchSelection
+		)
+	       (MenuItem
                   enabled: autoFetchSelection
                   label: 'Insert as Line (Append CR)'
-                  translateLabel: true
+		  translateLabel: true
                   hideMenuOnActivated: false
-                  indication: autoFetchSelectionLines
-                )
-               (MenuItem
-                  label: '-'
-                  isVisible: thisIsASmalltalkWorkspace
-                )
-               (MenuItem
-                  enabled: hasSelectionInActiveWorkspace
-                  label: 'Google Spell'
-                  itemValue: googleSpellingSuggestion
-                  translateLabel: true
-                  isVisible: thisIsASmalltalkWorkspace
-                )
-               (MenuItem
+		  indication: autoFetchSelectionLines
+		)
+	       (MenuItem
+		  label: '-'
+		  isVisible: thisIsASmalltalkWorkspace
+		)
+	       (MenuItem
+		  enabled: hasSelectionInActiveWorkspace
+		  label: 'Google Spell'
+		  itemValue: googleSpellingSuggestion
+		  translateLabel: true
+		  isVisible: thisIsASmalltalkWorkspace
+		)
+	       (MenuItem
                   enabled: hasSelectionInActiveWorkspace
-                  label: 'Translate (babelFish)'
-                  translateLabel: true
-                  isVisible: thisIsASmalltalkWorkspace
-                  submenu: 
-                 (Menu
-                    (
-                     (MenuItem
-                        enabled: hasSelectionInActiveWorkspace
-                        label: 'English -> German'
-                        itemValue: babelFishTranslate:
-                        translateLabel: true
-                        argument: 'en_de'
-                      )
-                     (MenuItem
-                        enabled: hasSelectionInActiveWorkspace
-                        label: 'English -> French'
-                        itemValue: babelFishTranslate:
-                        translateLabel: true
-                        argument: 'en_fr'
-                      )
-                     (MenuItem
-                        enabled: hasSelectionInActiveWorkspace
-                        label: 'English -> Spanish'
-                        itemValue: babelFishTranslate:
-                        translateLabel: true
-                        argument: 'en_es'
-                      )
-                     (MenuItem
-                        enabled: hasSelectionInActiveWorkspace
-                        label: 'English -> Portuguese'
-                        itemValue: babelFishTranslate:
-                        translateLabel: true
-                        argument: 'en_pt'
-                      )
-                     (MenuItem
-                        label: '-'
-                      )
-                     (MenuItem
-                        enabled: hasSelectionInActiveWorkspace
-                        label: 'German -> English'
-                        itemValue: babelFishTranslate:
-                        translateLabel: true
-                        argument: 'de_en'
-                      )
-                     (MenuItem
-                        enabled: hasSelectionInActiveWorkspace
-                        label: 'French -> English'
-                        itemValue: babelFishTranslate:
-                        translateLabel: true
-                        argument: 'fr_en'
-                      )
-                     (MenuItem
-                        enabled: hasSelectionInActiveWorkspace
-                        label: 'Spanish -> English'
-                        itemValue: babelFishTranslate:
-                        translateLabel: true
-                        argument: 'es_en'
-                      )
-                     (MenuItem
-                        enabled: hasSelectionInActiveWorkspace
-                        label: 'Portuguese -> English'
-                        itemValue: babelFishTranslate:
-                        translateLabel: true
-                        argument: 'pt_en'
-                      )
-                     (MenuItem
-                        enabled: hasSelectionInActiveWorkspace
-                        label: 'Russian -> English'
-                        itemValue: babelFishTranslate:
-                        translateLabel: true
-                        argument: 'ru_en'
-                      )
-                     )
-                    nil
-                    nil
-                  )
-                )
-               )
-              nil
-              nil
-            )
-          )
-         )
-        nil
-        nil
+		  label: 'Translate (babelFish)'
+		  translateLabel: true
+		  isVisible: thisIsASmalltalkWorkspace
+		  submenu:
+		 (Menu
+		    (
+		     (MenuItem
+			enabled: hasSelectionInActiveWorkspace
+			label: 'English -> German'
+			itemValue: babelFishTranslate:
+			translateLabel: true
+			argument: 'en_de'
+		      )
+		     (MenuItem
+			enabled: hasSelectionInActiveWorkspace
+			label: 'English -> French'
+			itemValue: babelFishTranslate:
+			translateLabel: true
+			argument: 'en_fr'
+		      )
+		     (MenuItem
+			enabled: hasSelectionInActiveWorkspace
+			label: 'English -> Spanish'
+			itemValue: babelFishTranslate:
+			translateLabel: true
+			argument: 'en_es'
+		      )
+		     (MenuItem
+			enabled: hasSelectionInActiveWorkspace
+			label: 'English -> Portuguese'
+			itemValue: babelFishTranslate:
+			translateLabel: true
+			argument: 'en_pt'
+		      )
+		     (MenuItem
+			label: '-'
+		      )
+		     (MenuItem
+			enabled: hasSelectionInActiveWorkspace
+			label: 'German -> English'
+			itemValue: babelFishTranslate:
+			translateLabel: true
+			argument: 'de_en'
+		      )
+		     (MenuItem
+			enabled: hasSelectionInActiveWorkspace
+			label: 'French -> English'
+			itemValue: babelFishTranslate:
+			translateLabel: true
+			argument: 'fr_en'
+		      )
+		     (MenuItem
+			enabled: hasSelectionInActiveWorkspace
+			label: 'Spanish -> English'
+			itemValue: babelFishTranslate:
+			translateLabel: true
+			argument: 'es_en'
+		      )
+		     (MenuItem
+			enabled: hasSelectionInActiveWorkspace
+			label: 'Portuguese -> English'
+			itemValue: babelFishTranslate:
+			translateLabel: true
+			argument: 'pt_en'
+		      )
+		     (MenuItem
+			enabled: hasSelectionInActiveWorkspace
+			label: 'Russian -> English'
+			itemValue: babelFishTranslate:
+			translateLabel: true
+			argument: 'ru_en'
+		      )
+		     )
+		    nil
+		    nil
+		  )
+		)
+	       )
+	      nil
+	      nil
+	    )
+	  )
+	 )
+	nil
+	nil
       )
 
     "Modified: / 20-07-2012 / 10:30:57 / cg"
@@ -906,27 +917,27 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            label: 'Insert'
-            itemValue: editModeInsert
-            translateLabel: true
-          )
-         (MenuItem
-            label: 'Overwrite'
-            itemValue: editModeOverwrite
-            translateLabel: true
-          )
-         (MenuItem
-            label: 'Insert Selecting'
-            itemValue: editModeInsertAndSelect
-            translateLabel: true
-          )
-         )
-        nil
-        nil
+	(
+	 (MenuItem
+	    label: 'Insert'
+	    itemValue: editModeInsert
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: 'Overwrite'
+	    itemValue: editModeOverwrite
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: 'Insert Selecting'
+	    itemValue: editModeInsertAndSelect
+	    translateLabel: true
+	  )
+	 )
+	nil
+	nil
       )
 
     "Created: / 22-01-2011 / 11:50:05 / cg"
@@ -946,85 +957,85 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            activeHelpKey: editCut
-            label: 'Cut'
-            itemValue: cutSelection
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary cut16x16Icon)
-            isButton: true
-          )
-         (MenuItem
-            activeHelpKey: editCopy
-            label: 'Copy'
-            itemValue: copySelection
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary copy16x16Icon)
-            isButton: true
-          )
-         (MenuItem
-            activeHelpKey: editPaste
-            label: 'Paste'
-            itemValue: paste
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary paste16x16Icon)
-            isButton: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            activeHelpKey: editUndo
-            label: 'Undo'
-            itemValue: undo
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary undo16x16Icon)
-            isButton: true
-          )
-         (MenuItem
-            activeHelpKey: editRedo
-            label: 'Redo'
-            itemValue: redo
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary redo16x16Icon)
-            isButton: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            activeHelpKey: editSearch
-            label: 'Search'
-            itemValue: search
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary search16x16Icon)
-            isButton: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            activeHelpKey: doUndent
-            label: 'Undent'
-            itemValue: undent
-            translateLabel: true
-            isButton: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary undent16x16Icon)
-          )
-         (MenuItem
-            activeHelpKey: doIndent
-            label: 'Indent'
-            itemValue: indent
-            translateLabel: true
-            isButton: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary indent16x16Icon)
-          )
-         )
-        nil
-        nil
+	(
+	 (MenuItem
+	    activeHelpKey: editCut
+	    label: 'Cut'
+	    itemValue: cutSelection
+	    translateLabel: true
+	    labelImage: (ResourceRetriever ToolbarIconLibrary cut16x16Icon)
+	    isButton: true
+	  )
+	 (MenuItem
+	    activeHelpKey: editCopy
+	    label: 'Copy'
+	    itemValue: copySelection
+	    translateLabel: true
+	    labelImage: (ResourceRetriever ToolbarIconLibrary copy16x16Icon)
+	    isButton: true
+	  )
+	 (MenuItem
+	    activeHelpKey: editPaste
+	    label: 'Paste'
+	    itemValue: paste
+	    translateLabel: true
+	    labelImage: (ResourceRetriever ToolbarIconLibrary paste16x16Icon)
+	    isButton: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    activeHelpKey: editUndo
+	    label: 'Undo'
+	    itemValue: undo
+	    translateLabel: true
+	    labelImage: (ResourceRetriever ToolbarIconLibrary undo16x16Icon)
+	    isButton: true
+	  )
+	 (MenuItem
+	    activeHelpKey: editRedo
+	    label: 'Redo'
+	    itemValue: redo
+	    translateLabel: true
+	    labelImage: (ResourceRetriever ToolbarIconLibrary redo16x16Icon)
+	    isButton: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    activeHelpKey: editSearch
+	    label: 'Search'
+	    itemValue: search
+	    translateLabel: true
+	    labelImage: (ResourceRetriever ToolbarIconLibrary search16x16Icon)
+	    isButton: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    activeHelpKey: doUndent
+	    label: 'Undent'
+	    itemValue: undent
+	    translateLabel: true
+	    isButton: true
+	    labelImage: (ResourceRetriever ToolbarIconLibrary undent16x16Icon)
+	  )
+	 (MenuItem
+	    activeHelpKey: doIndent
+	    label: 'Indent'
+	    itemValue: indent
+	    translateLabel: true
+	    isButton: true
+	    labelImage: (ResourceRetriever ToolbarIconLibrary indent16x16Icon)
+	  )
+	 )
+	nil
+	nil
       )
 !
 
@@ -1043,72 +1054,72 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            enabled: hasHistory
-            label: 'Redo Last'
-            itemValue: redoLastDoIt
-            submenuChannel: redoRecentDoItMenu
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasSelectionInActiveWorkspace
-            label: 'DoIt'
-            itemValue: doIt
-          )
-         (MenuItem
-            enabled: hasSelectionInActiveWorkspace
-            label: 'PrintIt'
-            itemValue: printIt
-          )
-         (MenuItem
-            enabled: hasSelectionInActiveWorkspace
-            label: 'InspectIt'
-            itemValue: inspectIt
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasSelectionInActiveWorkspace
-            label: 'TimeIt'
-            itemValue: timeIt
-          )
-         (MenuItem
-            enabled: hasSelectionInActiveWorkspace
-            label: 'SpyOnIt (Transcript)'
-            itemValue: spyOnIt
-          )
-         (MenuItem
-            enabled: hasSelectionInActiveWorkspace
-            label: 'ProfileIt (Visual)'
-            itemValue: profileIt
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasSelectionInActiveWorkspace
-            label: 'Browse Class'
-            itemValue: browseIt
-          )
-         (MenuItem
-            enabled: hasSelectionInActiveWorkspace
-            label: 'Browse Implementors of It'
-            itemValue: browseImplementorsOfIt
-          )
-         (MenuItem
-            enabled: hasSelectionInActiveWorkspace
-            label: 'Browse References to It'
-            itemValue: browseReferencesToIt
-          )
-         )
-        nil
-        nil
+	(
+	 (MenuItem
+	    enabled: hasHistory
+	    label: 'Redo Last'
+	    itemValue: redoLastDoIt
+	    submenuChannel: redoRecentDoItMenu
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    enabled: hasSelectionInActiveWorkspace
+	    label: 'DoIt'
+	    itemValue: doIt
+	  )
+	 (MenuItem
+	    enabled: hasSelectionInActiveWorkspace
+	    label: 'PrintIt'
+	    itemValue: printIt
+	  )
+	 (MenuItem
+	    enabled: hasSelectionInActiveWorkspace
+	    label: 'InspectIt'
+	    itemValue: inspectIt
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    enabled: hasSelectionInActiveWorkspace
+	    label: 'TimeIt'
+	    itemValue: timeIt
+	  )
+	 (MenuItem
+	    enabled: hasSelectionInActiveWorkspace
+	    label: 'SpyOnIt (Transcript)'
+	    itemValue: spyOnIt
+	  )
+	 (MenuItem
+	    enabled: hasSelectionInActiveWorkspace
+	    label: 'ProfileIt (Visual)'
+	    itemValue: profileIt
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    enabled: hasSelectionInActiveWorkspace
+	    label: 'Browse Class'
+	    itemValue: browseIt
+	  )
+	 (MenuItem
+	    enabled: hasSelectionInActiveWorkspace
+	    label: 'Browse Implementors of It'
+	    itemValue: browseImplementorsOfIt
+	  )
+	 (MenuItem
+	    enabled: hasSelectionInActiveWorkspace
+	    label: 'Browse References to It'
+	    itemValue: browseReferencesToIt
+	  )
+	 )
+	nil
+	nil
       )
 !
 
@@ -1119,6 +1130,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:WorkspaceApplication andSelector:#fileMenu
      (Menu new fromLiteralArrayEncoding:(WorkspaceApplication fileMenu)) startUp
@@ -1126,84 +1138,94 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            label: 'New Workspace'
-            itemValue: newWorkspace
-            translateLabel: true
-            shortcutKey: Ctrln
-          )
-         (MenuItem
-            label: 'New Tab'
-            itemValue: addWorkspace
-            translateLabel: true
-            isVisible: false
-            shortcutKey: Ctrlt
-          )
-         (MenuItem
-            label: 'New SystemWorkspace'
-            itemValue: newSystemWorkspace
-            translateLabel: true
-            isVisible: thisIsASmalltalkWorkspace
-          )
-         (MenuItem
-            label: 'New EvaluationWorkspace'
-            itemValue: newEvaluationWorkspace
-            translateLabel: true
-            isVisible: thisIsASmalltalkWorkspace
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Load File...'
-            itemValue: menuLoad
-            translateLabel: true
-            shortcutKey: Ctrlo
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Save'
-            itemValue: menuSave
-            translateLabel: true
-            shortcutKey: Ctrls
-          )
-         (MenuItem
-            label: 'Save As...'
-            itemValue: menuSaveAs
-            translateLabel: true
-            shortcutKey: SaveAs
-          )
-         (MenuItem
-            enabled: hasMultipleBuffersHolder
-            label: 'Save all As...'
-            itemValue: menuSaveAllAs
-            translateLabel: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasTextInActiveWorkspace
-            label: 'Print...'
-            itemValue: menuPrint
-            translateLabel: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Exit'
-            itemValue: closeRequest
-            translateLabel: true
-          )
-         )
-        nil
-        nil
+	(
+	 (MenuItem
+	    label: 'Connect...'
+	    itemValue: menuSQLConnect
+	    translateLabel: true
+	    isVisible: isSQLWorkspaceSelected
+	  )
+	 (MenuItem
+	    label: '-'
+	    isVisible: isSQLWorkspaceSelected
+	  )
+	 (MenuItem
+	    label: 'New Workspace'
+	    itemValue: newWorkspace
+	    translateLabel: true
+	    shortcutKey: Ctrln
+	  )
+	 (MenuItem
+	    label: 'New Tab'
+	    itemValue: addWorkspace
+	    translateLabel: true
+	    isVisible: false
+	    shortcutKey: Ctrlt
+	  )
+	 (MenuItem
+	    label: 'New SystemWorkspace'
+	    itemValue: newSystemWorkspace
+	    translateLabel: true
+	    isVisible: thisIsASmalltalkWorkspace
+	  )
+	 (MenuItem
+	    label: 'New EvaluationWorkspace'
+	    itemValue: newEvaluationWorkspace
+	    translateLabel: true
+	    isVisible: thisIsASmalltalkWorkspace
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    label: 'Open File...'
+	    itemValue: menuLoad
+	    translateLabel: true
+	    shortcutKey: Ctrlo
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    label: 'Save'
+	    itemValue: menuSave
+	    translateLabel: true
+	    shortcutKey: Ctrls
+	  )
+	 (MenuItem
+	    label: 'Save As...'
+	    itemValue: menuSaveAs
+	    translateLabel: true
+	    shortcutKey: SaveAs
+	  )
+	 (MenuItem
+	    enabled: hasMultipleBuffersHolder
+	    label: 'Save all As...'
+	    itemValue: menuSaveAllAs
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    enabled: hasTextInActiveWorkspace
+	    label: 'Print...'
+	    itemValue: menuPrint
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    label: 'Exit'
+	    itemValue: closeRequest
+	    translateLabel: true
+	  )
+	 )
+	nil
+	nil
       )
 !
 
@@ -1221,30 +1243,30 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            label: 'Documentation'
-            itemValue: openDocumentation
-            translateLabel: true
-          )
-         (MenuItem
-            label: 'Documentation on Smalltalk/X'
-            itemValue: openSTXDocumentation
-            translateLabel: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'About this Application...'
-            itemValue: openAboutThisApplication
-            translateLabel: true
-          )
-         )
-        nil
-        nil
+	(
+	 (MenuItem
+	    label: 'Documentation'
+	    itemValue: openDocumentation
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: 'Documentation on Smalltalk/X'
+	    itemValue: openSTXDocumentation
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    label: 'About this Application...'
+	    itemValue: openAboutThisApplication
+	    translateLabel: true
+	  )
+	 )
+	nil
+	nil
       )
 !
 
@@ -1262,9 +1284,9 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-                    (
+		    (
 "/                     (MenuItem
 "/                        label: 'Smalltalk'
 "/                        translateLabel: true
@@ -1277,16 +1299,16 @@
 "/                        choice: syntaxHolder
 "/                        choiceValue: JavaScript
 "/                      )
-                     (MenuItem
-                        label: 'Language List Slice'
-                        translateLabel: true
-                        submenuChannel: languageListMenuSlice
-                        isMenuSlice: true
-                      )
-                     )
-                    nil
-                    nil
-                  )
+		     (MenuItem
+			label: 'Language List Slice'
+			translateLabel: true
+			submenuChannel: languageListMenuSlice
+			isMenuSlice: true
+		      )
+		     )
+		    nil
+		    nil
+		  )
 
     "Created: / 24-12-2010 / 02:03:59 / cg"
 !
@@ -1305,69 +1327,69 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            label: 'File'
-            translateLabel: true
-            submenuChannel: fileMenu
-            keepLinkedMenu: true
-          )
-         (MenuItem
-            label: 'Buffers'
-            translateLabel: true
-            submenuChannel: bufferMenu
-            keepLinkedMenu: true
-          )
-         (MenuItem
-            label: 'Edit'
-            translateLabel: true
-            submenuChannel: editMenu
-            keepLinkedMenu: true
-          )
-         (MenuItem
-            label: 'View'
-            translateLabel: true
-            submenuChannel: viewMenu
-            keepLinkedMenu: true
-          )
-         (MenuItem
-            label: 'Bookmarks'
-            translateLabel: true
-            submenuChannel: bookmarkMenu
-          )
-         (MenuItem
-            label: 'Execute'
-            translateLabel: true
-            isVisible: executeMenuVisible
-            submenuChannel: executionMenu
-            keepLinkedMenu: true
-          )
-         (MenuItem
-            label: 'Workspace'
-            translateLabel: true
-            isVisible: thisIsASmalltalkWorkspace
-            submenuChannel: workspaceMenu
-            keepLinkedMenu: true
-          )
-         (MenuItem
-            enabled: smalltalkMenuEnabledHolder
-            label: 'Smalltalk'
-            translateLabel: true
-            isVisible: thisIsASmalltalkWorkspace
-            submenuChannel: smalltalkMenu
-            keepLinkedMenu: true
-          )
-         (MenuItem
-            label: 'MENU_Help'
-            translateLabel: true
-            submenuChannel: helpMenu
-            keepLinkedMenu: true
-          )
-         )
-        nil
-        nil
+	(
+	 (MenuItem
+	    label: 'File'
+	    translateLabel: true
+	    submenuChannel: fileMenu
+	    keepLinkedMenu: true
+	  )
+	 (MenuItem
+	    label: 'Buffers'
+	    translateLabel: true
+	    submenuChannel: bufferMenu
+	    keepLinkedMenu: true
+	  )
+	 (MenuItem
+	    label: 'Edit'
+	    translateLabel: true
+	    submenuChannel: editMenu
+	    keepLinkedMenu: true
+	  )
+	 (MenuItem
+	    label: 'View'
+	    translateLabel: true
+	    submenuChannel: viewMenu
+	    keepLinkedMenu: true
+	  )
+	 (MenuItem
+	    label: 'Bookmarks'
+	    translateLabel: true
+	    submenuChannel: bookmarkMenu
+	  )
+	 (MenuItem
+	    label: 'Execute'
+	    translateLabel: true
+	    isVisible: executeMenuVisible
+	    submenuChannel: executionMenu
+	    keepLinkedMenu: true
+	  )
+	 (MenuItem
+	    label: 'Workspace'
+	    translateLabel: true
+	    isVisible: thisIsASmalltalkWorkspace
+	    submenuChannel: workspaceMenu
+	    keepLinkedMenu: true
+	  )
+	 (MenuItem
+	    enabled: smalltalkMenuEnabledHolder
+	    label: 'Smalltalk'
+	    translateLabel: true
+	    isVisible: thisIsASmalltalkWorkspace
+	    submenuChannel: smalltalkMenu
+	    keepLinkedMenu: true
+	  )
+	 (MenuItem
+	    label: 'MENU_Help'
+	    translateLabel: true
+	    submenuChannel: helpMenu
+	    keepLinkedMenu: true
+	  )
+	 )
+	nil
+	nil
       )
 !
 
@@ -1386,54 +1408,54 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            enabled: hasSelectionInActiveWorkspace
-            label: 'FileIn Text'
-            itemValue: fileInText
-            translateLabel: true
-          )
-         (MenuItem
-            enabled: hasSelectionInActiveWorkspace
-            label: 'ChangeList on Text'
-            itemValue: changesBrowserOnText
-            translateLabel: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: selectedWorkspaceIsTextView
-            label: 'Add Global Variable...'
-            itemValue: addGlobalVariable
-            translateLabel: true
-          )
-         (MenuItem
-            enabled: selectedWorkspaceIsTextView
-            label: 'Remove Global Variable...'
-            itemValue: removeGlobalVariable
-            translateLabel: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: selectedWorkspaceIsTextView
-            label: 'Add SharedPool...'
-            itemValue: addSharedPool
-            translateLabel: true
-          )
-         (MenuItem
-            enabled: selectedWorkspaceIsTextView
-            label: 'Remove SharedPool...'
-            itemValue: removeSharedPool
-            translateLabel: true
-          )
-         )
-        nil
-        nil
+	(
+	 (MenuItem
+	    enabled: hasSelectionInActiveWorkspace
+	    label: 'FileIn Text'
+	    itemValue: fileInText
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    enabled: hasSelectionInActiveWorkspace
+	    label: 'ChangeList on Text'
+	    itemValue: changesBrowserOnText
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    enabled: selectedWorkspaceIsTextView
+	    label: 'Add Global Variable...'
+	    itemValue: addGlobalVariable
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    enabled: selectedWorkspaceIsTextView
+	    label: 'Remove Global Variable...'
+	    itemValue: removeGlobalVariable
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    enabled: selectedWorkspaceIsTextView
+	    label: 'Add SharedPool...'
+	    itemValue: addSharedPool
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    enabled: selectedWorkspaceIsTextView
+	    label: 'Remove SharedPool...'
+	    itemValue: removeSharedPool
+	    translateLabel: true
+	  )
+	 )
+	nil
+	nil
       )
 !
 
@@ -1451,92 +1473,92 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            label: ''
-          )
-         (MenuItem
-            label: 'Add Buffer'
-            itemValue: addWorkspace
-            translateLabel: true
-            isButton: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary addBufferIcon)
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            activeHelpKey: menuSaveOrSaveAs
-            label: 'Save Text'
-            itemValue: menuSave
-            translateLabel: true
-            isButton: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary saveToFileIcon)
-          )
-         (MenuItem
-            label: '-'
-            isVisible: doItMenuButtonVisibile
-          )
-         (MenuItem
-            activeHelpKey: #'help_doIt'
-            label: 'DoIt'
-            itemValue: doIt
-            translateLabel: true
-            isButton: true
-            isVisible: doItMenuButtonVisibile
-            labelImage: (ResourceRetriever ToolbarIconLibrary doItIcon)
-          )
-         (MenuItem
-            activeHelpKey: #'help_printIt'
-            label: 'PrintIt'
-            itemValue: printIt
-            translateLabel: true
-            isButton: true
-            isVisible: printItMenuButtonVisibile
-            labelImage: (ResourceRetriever ToolbarIconLibrary printItIcon)
-          )
-         (MenuItem
-            activeHelpKey: #'help_inspectIt'
-            label: 'InspectIt'
-            itemValue: inspectIt
-            translateLabel: true
-            isButton: true
-            isVisible: inspectItMenuButtonVisibile
-            labelImage: (ResourceRetriever ToolbarIconLibrary inspectItIcon)
-          )
-         (MenuItem
-            activeHelpKey: #'help_browseIt'
-            label: 'BrowseIt'
-            itemValue: browseIt
-            translateLabel: true
-            isButton: true
-            isVisible: browseItMenuButtonVisibile
-            labelImage: (ResourceRetriever ToolbarIconLibrary browseItIcon)
-          )
-         (MenuItem
-            activeHelpKey: addTerminal
-            label: 'Web Browser'
-            itemValue: addWebBrowser
-            translateLabel: true
-            isButton: true
-            startGroup: right
-            isVisible: isWebBrowserAvailable
-            labelImage: (ResourceRetriever ToolbarIconLibrary webKit22x22)
-          )
-         (MenuItem
-            activeHelpKey: addTerminal
-            label: 'Terminal'
-            itemValue: addTerminal
-            translateLabel: true
-            isButton: true
-            startGroup: right
-            labelImage: (ResourceRetriever ToolbarIconLibrary shellTerminalIcon)
-          )
-         )
-        nil
-        nil
+	(
+	 (MenuItem
+	    label: ''
+	  )
+	 (MenuItem
+	    label: 'Add Buffer'
+	    itemValue: addWorkspace
+	    translateLabel: true
+	    isButton: true
+	    labelImage: (ResourceRetriever ToolbarIconLibrary addBufferIcon)
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    activeHelpKey: menuSaveOrSaveAs
+	    label: 'Save Text'
+	    itemValue: menuSave
+	    translateLabel: true
+	    isButton: true
+	    labelImage: (ResourceRetriever ToolbarIconLibrary saveToFileIcon)
+	  )
+	 (MenuItem
+	    label: '-'
+	    isVisible: doItMenuButtonVisibile
+	  )
+	 (MenuItem
+	    activeHelpKey: #'help_doIt'
+	    label: 'DoIt'
+	    itemValue: doIt
+	    translateLabel: true
+	    isButton: true
+	    isVisible: doItMenuButtonVisibile
+	    labelImage: (ResourceRetriever ToolbarIconLibrary doItIcon)
+	  )
+	 (MenuItem
+	    activeHelpKey: #'help_printIt'
+	    label: 'PrintIt'
+	    itemValue: printIt
+	    translateLabel: true
+	    isButton: true
+	    isVisible: printItMenuButtonVisibile
+	    labelImage: (ResourceRetriever ToolbarIconLibrary printItIcon)
+	  )
+	 (MenuItem
+	    activeHelpKey: #'help_inspectIt'
+	    label: 'InspectIt'
+	    itemValue: inspectIt
+	    translateLabel: true
+	    isButton: true
+	    isVisible: inspectItMenuButtonVisibile
+	    labelImage: (ResourceRetriever ToolbarIconLibrary inspectItIcon)
+	  )
+	 (MenuItem
+	    activeHelpKey: #'help_browseIt'
+	    label: 'BrowseIt'
+	    itemValue: browseIt
+	    translateLabel: true
+	    isButton: true
+	    isVisible: browseItMenuButtonVisibile
+	    labelImage: (ResourceRetriever ToolbarIconLibrary browseItIcon)
+	  )
+	 (MenuItem
+	    activeHelpKey: addTerminal
+	    label: 'Web Browser'
+	    itemValue: addWebBrowser
+	    translateLabel: true
+	    isButton: true
+	    startGroup: right
+	    isVisible: isWebBrowserAvailable
+	    labelImage: (ResourceRetriever ToolbarIconLibrary webKit22x22)
+	  )
+	 (MenuItem
+	    activeHelpKey: addTerminal
+	    label: 'Terminal'
+	    itemValue: addTerminal
+	    translateLabel: true
+	    isButton: true
+	    startGroup: right
+	    labelImage: (ResourceRetriever ToolbarIconLibrary shellTerminalIcon)
+	  )
+	 )
+	nil
+	nil
       )
 
     "Modified: / 19-07-2012 / 12:04:47 / cg"
@@ -1557,100 +1579,105 @@
 
     <resource: #menu>
 
-    ^ 
+    ^
      #(Menu
-        (
-         (MenuItem
-            enabled: selectedWorkspaceIsTextView
-            label: 'Add Workspace Variable...'
-            itemValue: addWorkspaceVariable
-            translateLabel: true
-          )
-         (MenuItem
-            enabled: anyWorkspaceVariableIsDefined
-            label: 'Remove Workspace Variable...'
-            itemValue: removeWorkspaceVariable
-            translateLabel: true
-          )
-         (MenuItem
-            enabled: anyWorkspaceVariableIsDefined
-            label: 'Remove all Workspace Variables...'
-            itemValue: removeAllWorkspaceVariables
-            translateLabel: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Language List Slice'
-            translateLabel: true
-            submenuChannel: languageListMenuSlice
-            isMenuSlice: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: anyWorkspaceVariableIsDefined
-            label: 'Inspect Workspace Variables'
-            itemValue: inspectWorkspaceVariables
-            translateLabel: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            label: 'Autodefine Variables'
-            translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'As Workspace Variable'
-                  translateLabel: true
-                  hideMenuOnActivated: false
-                  choice: autoDefineVariables
-                  choiceValue: workspace
-                )
-               (MenuItem
-                  label: 'As DoIt Variable'
-                  translateLabel: true
-                  hideMenuOnActivated: false
-                  choice: autoDefineVariables
-                  choiceValue: doIt
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Do not Autodefine'
-                  translateLabel: true
-                  hideMenuOnActivated: false
-                  choice: autoDefineVariables
-                )
-               )
-              nil
-              nil
-            )
-          )
-         )
-        nil
-        nil
+	(
+	 (MenuItem
+	    enabled: selectedWorkspaceIsTextView
+	    label: 'Add Workspace Variable...'
+	    itemValue: addWorkspaceVariable
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    enabled: anyWorkspaceVariableIsDefined
+	    label: 'Remove Workspace Variable...'
+	    itemValue: removeWorkspaceVariable
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    enabled: anyWorkspaceVariableIsDefined
+	    label: 'Remove all Workspace Variables...'
+	    itemValue: removeAllWorkspaceVariables
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    label: 'Language List Slice'
+	    translateLabel: true
+	    submenuChannel: languageListMenuSlice
+	    isMenuSlice: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    enabled: anyWorkspaceVariableIsDefined
+	    label: 'Inspect Workspace Variables'
+	    itemValue: inspectWorkspaceVariables
+	    translateLabel: true
+	  )
+	 (MenuItem
+	    label: '-'
+	  )
+	 (MenuItem
+	    label: 'Autodefine Variables'
+	    translateLabel: true
+	    submenu:
+	   (Menu
+	      (
+	       (MenuItem
+		  label: 'As Workspace Variable'
+		  translateLabel: true
+		  hideMenuOnActivated: false
+		  choice: autoDefineVariables
+		  choiceValue: workspace
+		)
+	       (MenuItem
+		  label: 'As DoIt Variable'
+		  translateLabel: true
+		  hideMenuOnActivated: false
+		  choice: autoDefineVariables
+		  choiceValue: doIt
+		)
+	       (MenuItem
+		  label: '-'
+		)
+	       (MenuItem
+		  label: 'Do not Autodefine'
+		  translateLabel: true
+		  hideMenuOnActivated: false
+		  choice: autoDefineVariables
+		)
+	       )
+	      nil
+	      nil
+	    )
+	  )
+	 )
+	nil
+	nil
       )
 
     "Modified: / 12-09-2012 / 12:18:40 / cg"
 ! !
 
+
 !WorkspaceApplication class methodsFor:'private'!
 
 createWorkspaceView
-    ^(UserPreferences current useCodeView2In:#Workspace)
-        ifTrue:[Tools::CodeView2 new]
-        ifFalse:[HVScrollableView for:Workspace]
+    ^(UserPreferences current useCodeView2In:#Workspace) ifTrue:[
+	Tools::CodeView2 new
+    ] ifFalse:[
+	HVScrollableView for:Workspace
+    ]
 
     "Modified: / 26-07-2011 / 10:28:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 21-08-2012 / 17:18:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !WorkspaceApplication class methodsFor:'special startup'!
 
 openEvaluationWorkspace
@@ -1743,13 +1770,13 @@
     workspace initialSyntax:SmalltalkLanguage instance.
 
     Error handle:[:ex |
-        ex reject.
-        "/ no time to debug that stuff now...
-        Dialog information:'Error in bookmark handling: ',ex description
+	ex reject.
+	"/ no time to debug that stuff now...
+	Dialog information:'Error in bookmark handling: ',ex description
     ] do:[
-        BookmarkList forWorkspace myWorkspaces do:[:bookmark|
-            workspace switchToBookmarkEntry: bookmark
-        ].
+	BookmarkList forWorkspace myWorkspaces do:[:bookmark|
+	    workspace switchToBookmarkEntry: bookmark
+	].
     ].
     workspace selectedWorkspaceIndexHolder value: 1.
     workspace openWindow.
@@ -1784,7 +1811,7 @@
     ws := self openWith:nil.
 
     "/ let the ws load the file - instead of the caller.
-    "/ so the error dialog is shown in its context, 
+    "/ so the error dialog is shown in its context,
     "/ and the caller (Launcher) is not blocked.
     ws enqueueDelayedAction:[ws loadFile:aFilename].
 "/    ws loadFile:aFilename.
@@ -1804,18 +1831,18 @@
     wsApp allButOpen.
 
     (wsApp builder componentAt:'NoteBook')
-        destroyTabAction:[:tabIndex| wsApp removeWorkspace:tabIndex].
+	destroyTabAction:[:tabIndex| wsApp removeWorkspace:tabIndex].
 
     wsApp window extent:640@400.
 
     path := (Smalltalk getSystemFileName:'README') ?  '../../README'.
     path := path asFilename.
     path isReadable ifTrue:[
-        wsApp addWindow:(self createWorkspaceView) named:'README' asFirst:false.
-        wsApp loadFile:path.
-        wsApp removeWorkspace:1.  "/ the original Workspace
-        wsApp renameWorkspace:1 to:'LICENCE README'.
-        needRemove := false.
+	wsApp addWindow:(self createWorkspaceView) named:'README' asFirst:false.
+	wsApp loadFile:path.
+	wsApp removeWorkspace:1.  "/ the original Workspace
+	wsApp renameWorkspace:1 to:'LICENCE README'.
+	needRemove := false.
     ].
 
 "/    path := (Smalltalk getSystemFileName:'doc/online/english/LICENCE_STX.html') ?  '../../doc/online/english/LICENCE_STX.html'.
@@ -1828,64 +1855,64 @@
 "/    ].
 
     wsApp graphicsDevice platformName = 'X11' ifTrue:[
-        font := Font family:'unifont' face:'medium' style:'roman' size:16 encoding:'iso10646-1'.
-        font := font onDevice:wsApp graphicsDevice ifAbsent:nil.
-        font isNil ifTrue:[    
-            font := Font family:'arial' face:'medium' style:'roman' size:12 encoding:'iso10646-1'.
-            font := font onDevice:wsApp graphicsDevice ifAbsent:nil.
-        ].
+	font := Font family:'unifont' face:'medium' style:'roman' size:16 encoding:'iso10646-1'.
+	font := font onDevice:wsApp graphicsDevice ifAbsent:nil.
+	font isNil ifTrue:[
+	    font := Font family:'arial' face:'medium' style:'roman' size:12 encoding:'iso10646-1'.
+	    font := font onDevice:wsApp graphicsDevice ifAbsent:nil.
+	].
     ] ifFalse:[
-        "/ font := Font family:'Arial Unicode MS' face:'medium' style:'roman' size:10 encoding:'ms-ansi'.
-        font := Font family:'Arial' face:'medium' style:'roman' size:10 encoding:'ms-ansi'.
-        font := font onDevice:wsApp graphicsDevice ifAbsent:nil.
+	"/ font := Font family:'Arial Unicode MS' face:'medium' style:'roman' size:10 encoding:'ms-ansi'.
+	font := Font family:'Arial' face:'medium' style:'roman' size:10 encoding:'ms-ansi'.
+	font := font onDevice:wsApp graphicsDevice ifAbsent:nil.
     ].
 
     #(  "/ file                     resourceKey             title                       forcedEncoding  type
-        ('Hello_utf8.wsp'           HELLO_UTF_FILE          'Hello'                     #'utf8'         #text)
-        ('Welcome.wsp'              WELCOME_FILE            'This Release'              nil             #text)
+	('Hello_utf8.wsp'           HELLO_UTF_FILE          'Hello'                     #'utf8'         #text)
+	('Welcome.wsp'              WELCOME_FILE            'This Release'              nil             #text)
 "/        ('Setup.wsp'                SETUP_FILE              'Setup'                     nil             #text)
-        ('Keyboard.wsp'             KEYBOARD_FILE           'Keyboard'                  nil             #text)
+	('Keyboard.wsp'             KEYBOARD_FILE           'Keyboard'                  nil             #text)
 "/        ('GettingStarted.wsp'       GETTING_STARTED_FILE    'Getting Started'           nil             #text)
-        ('../../doc/online/english/GettingStarted.html'   GETTING_STARTED_TML_FILE  'Getting Started'           nil             #html)
-        ('../../doc/books/JoyOfST/IntroToST.html'         INTRO_TO_ST_FILE          'Smalltalk Introduction'    nil             #html)
+	('../../doc/online/english/GettingStarted.html'   GETTING_STARTED_TML_FILE  'Getting Started'           nil             #html)
+	('../../doc/books/JoyOfST/IntroToST.html'         INTRO_TO_ST_FILE          'Smalltalk Introduction'    nil             #html)
     "/ if these are present, show them.
-        ('Private.wsp'              PRIVATE_FILE            'Private Workspace'         nil             #text)
-        ('MyWorkspace.wsp'          MYWORKSPACE_FILE        'My Workspace'              nil             #text)
+	('Private.wsp'              PRIVATE_FILE            'Private Workspace'         nil             #text)
+	('MyWorkspace.wsp'          MYWORKSPACE_FILE        'My Workspace'              nil             #text)
     ) do:[:tuple |
-        |file resKey title forcedEncoding type pane encoding htmlView|
-
-        file := tuple at:1.
-        resKey := tuple at:2.
-        file := self classResources string:resKey default:file.
-
-        title := tuple at:3.
-        forcedEncoding := tuple at:4.
-        type := tuple at:5.
-
-        path := Smalltalk getSystemFileName:file.
-        (path notNil and:[path asFilename isReadable]) ifTrue:[
-            type == #html ifTrue:[
-                wsApp addWindow:(htmlView := HVScrollableView for:HTMLDocumentView) named:title asFirst:false.
-                htmlView homeDocument:path.
-                htmlView updateTopViewsTitleFlag:false.
-            ] ifFalse:[
-                wsApp addWindow:(pane := self createWorkspaceView) named:title asFirst:false.
-                forcedEncoding notNil ifTrue:[
-                    encoding := forcedEncoding.
-                    font notNil ifTrue:[
-                        pane font:font.
-                    ]
-                ] ifFalse:[
-                    encoding := CharacterEncoder guessEncodingOfFile:path.
-                    (encoding == #'iso8859-1' or:[encoding == #'ascii']) ifTrue:[
-                        encoding := nil
-                    ].
-                ].
-                wsApp loadFile:path encoding:encoding label:title.
-            ].
-            needRemove ifTrue:[wsApp removeWorkspace:1].  "/ the original Workspace
-            needRemove := false.
-        ].
+	|file resKey title forcedEncoding type pane encoding htmlView|
+
+	file := tuple at:1.
+	resKey := tuple at:2.
+	file := self classResources string:resKey default:file.
+
+	title := tuple at:3.
+	forcedEncoding := tuple at:4.
+	type := tuple at:5.
+
+	path := Smalltalk getSystemFileName:file.
+	(path notNil and:[path asFilename isReadable]) ifTrue:[
+	    type == #html ifTrue:[
+		wsApp addWindow:(htmlView := HVScrollableView for:HTMLDocumentView) named:title asFirst:false.
+		htmlView homeDocument:path.
+		htmlView updateTopViewsTitleFlag:false.
+	    ] ifFalse:[
+		wsApp addWindow:(pane := self createWorkspaceView) named:title asFirst:false.
+		forcedEncoding notNil ifTrue:[
+		    encoding := forcedEncoding.
+		    font notNil ifTrue:[
+			pane font:font.
+		    ]
+		] ifFalse:[
+		    encoding := CharacterEncoder guessEncodingOfFile:path.
+		    (encoding == #'iso8859-1' or:[encoding == #'ascii']) ifTrue:[
+			encoding := nil
+		    ].
+		].
+		wsApp loadFile:path encoding:encoding label:title.
+	    ].
+	    needRemove ifTrue:[wsApp removeWorkspace:1].  "/ the original Workspace
+	    needRemove := false.
+	].
     ].
     wsApp openWindow.
     wsApp selectedWorkspaceIndexHolder value:2.
@@ -1897,13 +1924,13 @@
      ws addMyWorkspace.
      ws selectedWorkspaceIndexHolder value:(ws workspaces size).
      ws selectedWorkspace contents:'Tools::NewSystemBrowser open'; selectAll.
-     ws selectedWorkspace 
-        add:(b := Button label:'DoIt' action:[ws doIt. b destroy])
+     ws selectedWorkspace
+	add:(b := Button label:'DoIt' action:[ws doIt. b destroy])
     "
     "
      |ws b|
      ws := self new.
-     ws open. 
+     ws open.
      ws selectedWorkspace contents:'Tools::NewSystemBrowser open'; selectAll.
     "
 
@@ -1958,16 +1985,17 @@
     "
 ! !
 
+
 !WorkspaceApplication class methodsFor:'startup'!
 
 open
     "/ the very first open opens a MyWorkspace
 
     (MyWorkspaceOpened == true) ifTrue:[
-        super open
+	super open
     ] ifFalse:[
-        MyWorkspaceOpened := true.
-        self openMyWorkspace
+	MyWorkspaceOpened := true.
+	self openMyWorkspace
     ].
 
     "
@@ -1979,17 +2007,18 @@
     "Modified (comment): / 05-07-2011 / 15:23:53 / cg"
 ! !
 
+
 !WorkspaceApplication methodsFor:'aspects'!
 
 autoDefineVariables
     autoDefineVariables isNil ifTrue:[
-        autoDefineVariables := ValueHolder new.
-        (UserPreferences current autoDefineWorkspaceVariables) ifTrue:[
-            autoDefineVariables value:#workspace.
-        ] ifFalse:[
-            autoDefineVariables value:#doIt.
-        ].
-        autoDefineVariables onChangeSend:#autoDefineVariablesChanged to:self.
+	autoDefineVariables := ValueHolder new.
+	(UserPreferences current autoDefineWorkspaceVariables) ifTrue:[
+	    autoDefineVariables value:#workspace.
+	] ifFalse:[
+	    autoDefineVariables value:#doIt.
+	].
+	autoDefineVariables onChangeSend:#autoDefineVariablesChanged to:self.
     ].
     ^ autoDefineVariables.
 !
@@ -1999,16 +2028,16 @@
 
     ws := self selectedWorkspace scrolledView.
     ws isTextView ifTrue:[
-        ^ BookmarkList forWorkspace
+	^ BookmarkList forWorkspace
     ].
     (ws isApplicationSubView) ifTrue:[
-        app := ws application.
-        (app respondsTo:#bookmarks) ifTrue:[
-            ^ app bookmarks
-        ].
-        (app respondsTo:#bookmarkListHolder) ifTrue:[
-            ^ app bookmarkListHolder value
-        ].
+	app := ws application.
+	(app respondsTo:#bookmarks) ifTrue:[
+	    ^ app bookmarks
+	].
+	(app respondsTo:#bookmarkListHolder) ifTrue:[
+	    ^ app bookmarkListHolder value
+	].
     ].
     ^ BookmarkList new.
 
@@ -2021,9 +2050,26 @@
     ^ self thisIsASmalltalkWorkspace
 !
 
+canChangeLanguageHolder
+    "return/create the 'canChangeLanguageHolder' value holder (automatically generated)"
+
+    canChangeLanguageHolder isNil ifTrue:[
+	canChangeLanguageHolder := ValueHolder with: true.
+    ].
+    ^ canChangeLanguageHolder
+
+    "Modified: / 10-05-2012 / 23:43:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+canChangeLanguageHolder:something
+    "set the 'canChangeLanguageHolder' value holder (automatically generated)"
+
+    canChangeLanguageHolder := something.
+!
+
 cursorColHolder
     cursorColHolder isNil ifTrue:[
-        cursorColHolder := IndirectValue for:(1 asValue)
+	cursorColHolder := IndirectValue for:(1 asValue)
     ].
     ^ cursorColHolder
 
@@ -2031,16 +2077,16 @@
 !
 
 cursorColLabelHolder
-    ^ BlockValue 
-            with:[:v | v isNil ifTrue:[''] ifFalse:[v printString]]
-            argument:self cursorColHolder.
+    ^ BlockValue
+	    with:[:v | v isNil ifTrue:[''] ifFalse:[v printString]]
+	    argument:self cursorColHolder.
 
     "Created: / 22-01-2011 / 11:36:08 / cg"
 !
 
 cursorLineHolder
     cursorLineHolder isNil ifTrue:[
-        cursorLineHolder := IndirectValue for:(1 asValue)
+	cursorLineHolder := IndirectValue for:(1 asValue)
     ].
     ^ cursorLineHolder
 
@@ -2048,9 +2094,9 @@
 !
 
 cursorLineLabelHolder
-    ^ BlockValue 
-            with:[:v | v isNil ifTrue:[''] ifFalse:[v printString]]
-            argument:self cursorLineHolder.
+    ^ BlockValue
+	    with:[:v | v isNil ifTrue:[''] ifFalse:[v printString]]
+	    argument:self cursorLineHolder.
 
     "Modified: / 22-01-2011 / 11:42:56 / cg"
 !
@@ -2073,21 +2119,21 @@
 
 languageInfoLabelHolder
     ^ BlockValue
-        with:[:syntax | 
-                syntax notNil ifTrue:[
-                    "'Syntax: ',"syntax name 
-                ] ifFalse:[
-                    'Text'
-                ]
-             ]
-        argument:self syntaxHolder
+	with:[:syntax |
+		syntax notNil ifTrue:[
+		    "'Syntax: ',"syntax name
+		] ifFalse:[
+		    'Text'
+		]
+	     ]
+	argument:self syntaxHolder
 
     "Modified: / 19-07-2012 / 16:53:30 / cg"
 !
 
 modeLabelHolder
     modeLabelHolder isNil ifTrue:[
-        modeLabelHolder := IndirectValue for:('I' asValue)
+	modeLabelHolder := IndirectValue for:('I' asValue)
     ].
     ^ modeLabelHolder
 
@@ -2098,7 +2144,7 @@
     ^ self thisIsASmalltalkWorkspace
 !
 
-setWindowLabel: label 
+setWindowLabel: label
 
     self setWindowLabel: label language: self syntaxHolder value
 !
@@ -2116,15 +2162,15 @@
 
 smalltalkMenuEnabledHolder
     smalltalkMenuEnabledHolder isNil ifTrue:[
-        smalltalkMenuEnabledHolder := true asValue.
+	smalltalkMenuEnabledHolder := true asValue.
     ].
     ^ smalltalkMenuEnabledHolder
 !
 
 syntaxHolder
     syntaxHolder isNil ifTrue:[
-        syntaxHolder := self defaultEvaluatorSyntax asValue.
-        syntaxHolder onChangeSend:#setCompilerForSyntax to:self
+	syntaxHolder := self defaultEvaluatorSyntax asValue.
+	syntaxHolder onChangeSend:#setCompilerForSyntax to:self
     ].
     ^ syntaxHolder
 !
@@ -2132,9 +2178,9 @@
 toolBarView
 
     toolBarView isNil ifTrue:[
-        toolBarView := SubCanvas new.
-        toolBarView level: 0.
-        toolBarView client: self spec: #toolBarSpec builder: builder.
+	toolBarView := SubCanvas new.
+	toolBarView level: 0.
+	toolBarView client: self spec: #toolBarSpec builder: builder.
     ].
     ^toolBarView
 
@@ -2142,6 +2188,7 @@
     "Modified: / 11-06-2011 / 00:06:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !WorkspaceApplication methodsFor:'aspects-queries'!
 
 anyWorkspaceVariableIsDefined
@@ -2156,15 +2203,33 @@
 
     ws := self selectedWorkspace scrolledView.
     ^ws isTextView ifTrue:[
-        file := ws defaultFileNameForFileDialog.
-        file notNil.
+	file := ws defaultFileNameForFileDialog.
+	file notNil.
     ] ifFalse:[
-        true
+	true
     ]
 
     "Created: / 20-06-2011 / 22:43:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+isSQLWorkspaceAvailable
+
+    ^(Smalltalk at:#'SQL::WorkspacePage') notNil
+
+    "Created: / 10-05-2012 / 18:49:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isSQLWorkspaceSelected
+
+    ^self aspectAt:#isSQLWorkspaceSelected ifAbsentPut:[
+	BlockValue
+	    with:[:ignored|self selectedWorkspaceApplication isKindOf: (Smalltalk at:#'SQL::WorkspacePage')]
+	    argument: self selectedWorkspaceIndexHolder
+    ]
+
+    "Created: / 11-05-2012 / 09:41:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 isWebBrowserAvailable
 
     ^(Smalltalk at:#WebKitView) notNil
@@ -2176,6 +2241,7 @@
     ^ self selectedWorkspacesTextView notNil
 ! !
 
+
 !WorkspaceApplication methodsFor:'autofetch selection'!
 
 autoFetchSelection
@@ -2186,20 +2252,20 @@
 
 autoFetchSelection:aBoolean
     Display platformName = 'WIN32' ifTrue:[
-        aBoolean ifTrue:[
-            self startClipboardWatcher
-        ] ifFalse:[
-            self stopClipboardWatcher
-        ].
-        ^ self.
+	aBoolean ifTrue:[
+	    self startClipboardWatcher
+	] ifFalse:[
+	    self stopClipboardWatcher
+	].
+	^ self.
     ].
 
     aBoolean ifTrue:[
-        self window windowGroup addPreEventHook:self.
-        device addSelectionHandler:self
+	self window windowGroup addPreEventHook:self.
+	device addSelectionHandler:self
     ] ifFalse:[
-        self window windowGroup removePreEventHook:self.
-        device removeSelectionHandler:self
+	self window windowGroup removePreEventHook:self.
+	device removeSelectionHandler:self
     ].
 
     "Created: / 16-11-2010 / 14:34:15 / cg"
@@ -2207,7 +2273,7 @@
 
 autoFetchSelectionLines
     fetchClipboardLines isNil ifTrue:[
-        fetchClipboardLines := true asValue
+	fetchClipboardLines := true asValue
     ].
     ^ fetchClipboardLines
 
@@ -2219,10 +2285,10 @@
 
     text := self window getClipboardText.
     (text notNil and:[text isString]) ifTrue:[
-        self autoFetchSelectionLines value ifTrue:[
-            text := text , Character cr
-        ].
-        self paste:text.
+	self autoFetchSelectionLines value ifTrue:[
+	    text := text , Character cr
+	].
+	self paste:text.
     ].
 
     "Created: / 16-11-2010 / 14:44:26 / cg"
@@ -2231,18 +2297,18 @@
 
 startClipboardWatcher
     clipBoardWatcherProcess isNil ifTrue:[
-        ClipBoardFetchingInstance notNil ifTrue:[
-            ClipBoardFetchingInstance stopClipboardWatcher
-        ].
-        clipBoardWatcherProcess := 
-            [
-                [true] whileTrue:[
-                    self waitForClipBoardToChange.
-                ].
-            ] newProcess.
-
-        clipBoardWatcherProcess resume.
-        ClipBoardFetchingInstance := self.
+	ClipBoardFetchingInstance notNil ifTrue:[
+	    ClipBoardFetchingInstance stopClipboardWatcher
+	].
+	clipBoardWatcherProcess :=
+	    [
+		[true] whileTrue:[
+		    self waitForClipBoardToChange.
+		].
+	    ] newProcess.
+
+	clipBoardWatcherProcess resume.
+	ClipBoardFetchingInstance := self.
     ].
 
     "Created: / 16-11-2010 / 14:35:55 / cg"
@@ -2252,9 +2318,9 @@
     |p|
 
     (p := clipBoardWatcherProcess) notNil ifTrue:[
-        ClipBoardFetchingInstance := nil.
-        clipBoardWatcherProcess := nil.
-        p terminate
+	ClipBoardFetchingInstance := nil.
+	clipBoardWatcherProcess := nil.
+	p terminate
     ].
 
     "Created: / 16-11-2010 / 14:36:12 / cg"
@@ -2264,15 +2330,16 @@
     |prev|
 
     prev := self window getClipboardText.
-    [ 
-        Delay waitForSeconds:0.2.
-        self window getClipboardText = prev
+    [
+	Delay waitForSeconds:0.2.
+	self window getClipboardText = prev
     ] whileTrue.
     self itemFromClipboard.
 
     "Created: / 16-11-2010 / 14:44:05 / cg"
 ! !
 
+
 !WorkspaceApplication methodsFor:'defaults'!
 
 defaultEvaluatorSyntax
@@ -2293,8 +2360,8 @@
 
     ws := self selectedWorkspace scrolledView.
     ws isTextView ifFalse:[
-        "/ eval-ws
-        ^ super defaultFileNameForSave
+	"/ eval-ws
+	^ super defaultFileNameForSave
     ].
     ^ ws defaultFileNameForFileDialog ? super defaultFileNameForSave
 
@@ -2313,7 +2380,7 @@
     "Created: / 25-10-2006 / 14:57:25 / cg"
 !
 
-executeMenuVisible 
+executeMenuVisible
     ^ self thisIsASmalltalkWorkspace
 !
 
@@ -2324,16 +2391,18 @@
     ^ true
 ! !
 
+
 !WorkspaceApplication methodsFor:'drag & drop'!
 
 droppedFile:aFilename in:aComponent
     "this is a notification from my textView component"
 
-    self 
-        renameWorkspace:(self selectedWorkspaceIndexHolder value)
-        to:aFilename asFilename baseName
+    self
+	renameWorkspace:(self selectedWorkspaceIndexHolder value)
+	to:aFilename asFilename baseName
 ! !
 
+
 !WorkspaceApplication methodsFor:'help'!
 
 flyByHelpSpec
@@ -2349,17 +2418,17 @@
     "/ dynamically adjust the menuSave item's flyByhelpText
     ws := self selectedWorkspace scrolledView.
     ws isTextView ifTrue:[
-        file := ws defaultFileNameForFileDialog.
+	file := ws defaultFileNameForFileDialog.
     ].
 
     aSpec
-        at:#menuSaveOrSaveAs 
-        put:(file isNil ifTrue:[aSpec at:#menuSaveAs] ifFalse:[aSpec at:#menuSave]).
+	at:#menuSaveOrSaveAs
+	put:(file isNil ifTrue:[aSpec at:#menuSaveAs] ifFalse:[aSpec at:#menuSave]).
 
     OperatingSystem isMSWINDOWSlike ifTrue:[
-        aSpec
-            at:#addTerminal 
-            put:(aSpec at:#addTerminalWindows).
+	aSpec
+	    at:#addTerminal
+	    put:(aSpec at:#addTerminalWindows).
 
     ].
     ^ aSpec
@@ -2367,13 +2436,14 @@
     "Created: / 06-07-2011 / 16:32:13 / cg"
 ! !
 
+
 !WorkspaceApplication methodsFor:'initialization & release'!
 
 closeRequest
     "asks for permission before closing"
 
     (self askIfAnyModified:'Text was not saved. Close anyway ?' yesButton:'Close') ifFalse:[
-        ^ self
+	^ self
     ].
 
     ^ super closeRequest
@@ -2412,16 +2482,17 @@
      Return true, if I have eaten the event"
 
     anEvent isButtonMultiPressEvent ifTrue:[
-        anEvent view name = 'CursorLineLabel' ifTrue:[
-            self selectedWorkspace scrolledView gotoLine.
-            ^ true
-        ].
+	anEvent view name = 'CursorLineLabel' ifTrue:[
+	    self selectedWorkspace scrolledView gotoLine.
+	    ^ true
+	].
     ].
     ^ false
 
     "Created: / 22-01-2011 / 12:10:01 / cg"
 ! !
 
+
 !WorkspaceApplication methodsFor:'menu-actions'!
 
 askForFilterBlock:message template:template rememberIn:nameOfClassVar
@@ -2429,28 +2500,28 @@
 
     classVarValue := self class classVarAt:nameOfClassVar ifAbsent:nil.
     classVarValue isNil ifTrue:[
-        self class classVarAt:nameOfClassVar put:template. 
-        classVarValue := template.
+	self class classVarAt:nameOfClassVar put:template.
+	classVarValue := template.
     ].
 
     textHolder := ValueHolder new.
-    dialog := Dialog 
-                 forRequestText:(resources string:message)
-                 lines:25 
-                 columns:70
-                 initialAnswer:classVarValue
-                 model:textHolder.
+    dialog := Dialog
+		 forRequestText:(resources string:message)
+		 lines:25
+		 columns:70
+		 initialAnswer:classVarValue
+		 model:textHolder.
     dialog addButton:(Button label:'Template' action:[textHolder value:template. textHolder changed:#value.]).
     dialog open.
     dialog accepted ifFalse:[^ nil].
 
     filterBlockString := textHolder value.
-    self class classVarAt:nameOfClassVar put:filterBlockString. 
+    self class classVarAt:nameOfClassVar put:filterBlockString.
 
     filterBlock := Parser evaluate:filterBlockString.
     filterBlock isBlock ifFalse:[
-        self error:'bad input for filterBlock' mayProceed:true.
-        ^ nil
+	self error:'bad input for filterBlock' mayProceed:true.
+	^ nil
     ].
 
     ^ filterBlock
@@ -2459,11 +2530,13 @@
 autoDefineVariablesChanged
     |autoDefine|
 
-    autoDefine := autoDefineVariables value.
+    autoDefine := self autoDefineVariables value.
     UserPreferences current autoDefineWorkspaceVariables:(autoDefine == #workspace).
     workspaces do:[:each |
-        each autoDefineVariables:autoDefine
+	each autoDefineVariables:autoDefine
     ].
+
+    "Modified: / 18-03-2012 / 23:34:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 basicInspectIt
@@ -2479,7 +2552,7 @@
 
     ws := self selectedWorkspacesTextView.
     ws notNil ifTrue:[
-        ws browseIt
+	ws browseIt
     ]
 !
 
@@ -2496,22 +2569,22 @@
 
     ws := self selectedWorkspace scrolledView.
     ws isTextView ifFalse:[
-        ^ self 
+	^ self
     ].
 
     ws hasSelection ifTrue:[
-        thisText := ws selectionAsString.
+	thisText := ws selectionAsString.
     ] ifFalse:[
-        thisText := ws contents asString.
+	thisText := ws contents asString.
     ].
 
     otherText := Dialog requestText:'Paste other text below:'.
     otherText isEmptyOrNil ifTrue:[^ self ].
 
-    DiffTextView 
-        openOn: thisText label: 'Workspace' 
-        and: otherText label: 'Other Text' 
-        title: 'Comparing Workspace Contents'
+    DiffTextView
+	openOn: thisText label: 'Workspace'
+	and: otherText label: 'Other Text'
+	title: 'Comparing Workspace Contents'
 
     "Created: / 04-05-2012 / 15:35:32 / cg"
 !
@@ -2521,7 +2594,7 @@
 
     ws := self selectedWorkspacesTextView.
     ws notNil ifTrue:[
-        ws doIt
+	ws doIt
     ]
 !
 
@@ -2534,14 +2607,14 @@
 
     ws := self selectedWorkspacesTextView.
     ws isNil ifTrue:[
-        "there is none - i.e. it is a HTMLDocumentView"
-        ^ self.
+	"there is none - i.e. it is a HTMLDocumentView"
+	^ self.
     ].
     ws
-        do:(ws selection) 
-        withValueDo:[:result | 
-                        self addInspectorOn:result basic:isBasicInspector suppressPseudoSlots:false
-                    ]
+	do:(ws selection)
+	withValueDo:[:result |
+			self addInspectorOn:result basic:isBasicInspector suppressPseudoSlots:false
+		    ]
 
 "/    self selectedWorkspace inspectIt
 !
@@ -2551,8 +2624,8 @@
 
     wsvars := Workspace workspaceVariables.
     wsvars size == 0 ifTrue:[
-        Dialog information:'No Workspace Variables are defined'.
-        ^ self
+	Dialog information:'No Workspace Variables are defined'.
+	^ self
     ].
     wsvars inspect
 !
@@ -2567,14 +2640,14 @@
     (f exists not and:[f isAbsolute not]) ifTrue:[
     f := Filename homeDirectory / '.smalltalk' / f pathName.
     f exists ifFalse:[
-        (aFileName = 'MyWorkspace.wsp') 
-            ifTrue:
-                [| s|
-                s := f writeStream.
-                [s nextPutAll:'"Edit and save as  ', f pathName , '"']
-                    ensure:[s close]]
-            ifFalse:
-                [f := aFileName asFilename]
+	(aFileName = 'MyWorkspace.wsp')
+	    ifTrue:
+		[| s|
+		s := f writeStream.
+		[s nextPutAll:'"Edit and save as  ', f pathName , '"']
+		    ensure:[s close]]
+	    ifFalse:
+		[f := aFileName asFilename]
     ]].
     ^super loadFile:f pathName encoding:encodingSymbolOrNil label:label
 
@@ -2590,8 +2663,8 @@
 
     snipletsDictionary := Workspace sniplets.
     snipletsDictionary isEmptyOrNil ifTrue:[
-        Dialog information:(resources string:'No Sniplets to Manage').
-        ^ self.
+	Dialog information:(resources string:'No Sniplets to Manage').
+	^ self.
     ].
 
     listOfSniplets := List withAll:(snipletsDictionary keys asOrderedCollection sort).
@@ -2599,41 +2672,41 @@
 
     selectedSnipletHolder := nil asValue.
     selectedSnipletHolder onChangeEvaluate:[
-        (selectedSnipletHolder value) isNil ifTrue:[
-            selectedSnipletsName := nil.
-            selectedSnipletsTextHolder value:''.
-        ] ifFalse:[
-            selectedSnipletsName := listOfSniplets at:(selectedSnipletHolder value).
-            selectedSnipletsTextHolder value:(snipletsDictionary at:selectedSnipletsName).
-        ].
+	(selectedSnipletHolder value) isNil ifTrue:[
+	    selectedSnipletsName := nil.
+	    selectedSnipletsTextHolder value:''.
+	] ifFalse:[
+	    selectedSnipletsName := listOfSniplets at:(selectedSnipletHolder value).
+	    selectedSnipletsTextHolder value:(snipletsDictionary at:selectedSnipletsName).
+	].
     ].
 
     hasSelectionHolder := BlockValue with:[:m | m value notNil] argument:selectedSnipletHolder.
     removeEnabledHolder := hasSelectionHolder.
     pasteEnabledHolder := hasSelectionHolder.
-    saveEnabledHolder := BlockValue with:[:m :textHolder| 
-        m value notNil
-            and:[(snipletsDictionary at:(listOfSniplets at:(selectedSnipletHolder value))) ~= textHolder value]
+    saveEnabledHolder := BlockValue with:[:m :textHolder|
+	m value notNil
+	    and:[(snipletsDictionary at:(listOfSniplets at:(selectedSnipletHolder value))) ~= textHolder value]
     ] argument: selectedSnipletHolder argument: selectedSnipletsTextHolder.
 
     removeAction := [
-        snipletsDictionary removeKey:selectedSnipletsName.
-        listOfSniplets remove:selectedSnipletsName.
+	snipletsDictionary removeKey:selectedSnipletsName.
+	listOfSniplets remove:selectedSnipletsName.
     ].
 
     pasteAction := [
-        |text|
-        text := snipletsDictionary at:selectedSnipletsName.
-        self paste:text
+	|text|
+	text := snipletsDictionary at:selectedSnipletsName.
+	self paste:text
     ].
     saveAction := [
-        |originalText newText|
-        originalText := snipletsDictionary at:selectedSnipletsName.
-        newText := selectedSnipletsTextHolder value.
-        originalText ~= newText ifTrue:[
-            snipletsDictionary at: selectedSnipletsName put: newText.
-        ].
-        saveEnabledHolder recomputeValue.
+	|originalText newText|
+	originalText := snipletsDictionary at:selectedSnipletsName.
+	newText := selectedSnipletsTextHolder value.
+	originalText ~= newText ifTrue:[
+	    snipletsDictionary at: selectedSnipletsName put: newText.
+	].
+	saveEnabledHolder recomputeValue.
     ].
 
     bindings := IdentityDictionary new.
@@ -2650,22 +2723,29 @@
     self openDialogInterface:#manageSnipletsDialogSpec withBindings:bindings
 !
 
+menuSQLConnect
+
+    self selectedWorkspaceApplication menuConnect
+
+    "Created: / 11-05-2012 / 10:00:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 menuSave
     |ws file|
 
     ws := self selectedWorkspace scrolledView.
     ws isTextView ifFalse:[
-        self shouldImplement:'Functionality not yet implemented'.
+	self shouldImplement:'Functionality not yet implemented'.
     ].
     file := ws defaultFileNameForFileDialog.
-    file 
-        ifNil:[
-            self menuSaveAs.
-            ^ self
-        ].
+    file
+	ifNil:[
+	    self menuSaveAs.
+	    ^ self
+	].
     ws saveAs:file doAppend:false.
     ws isCodeView2 ifTrue:[
-        ws beUnmodified
+	ws beUnmodified
     ]
 
     "Created: / 21-06-2011 / 11:42:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -2699,17 +2779,17 @@
 
     snipletsDictionary := Workspace sniplets.
     snipletsDictionary isEmptyOrNil ifTrue:[
-        Dialog information:(resources string:'No Sniplets to Paste').
-        ^ self.
+	Dialog information:(resources string:'No Sniplets to Paste').
+	^ self.
     ].
     allSniplets := snipletsDictionary keys asOrderedCollection sort.
 
-    snipletToPaste := Dialog 
-                choose:(resources string:'Paste Sniplet:')
-                fromList:allSniplets
-                lines:10.
+    snipletToPaste := Dialog
+		choose:(resources string:'Paste Sniplet:')
+		fromList:allSniplets
+		lines:10.
     snipletToPaste isNil ifTrue:[
-        ^ self
+	^ self
     ].
     self paste:(snipletsDictionary at:snipletToPaste) withCRs.
 
@@ -2721,7 +2801,7 @@
 
     ws := self selectedWorkspacesTextView.
     ws notNil ifTrue:[
-        ws printIt
+	ws printIt
     ]
 !
 
@@ -2730,20 +2810,20 @@
 
     template :=
 '"/ general text processor;
-"/ the following block should evaluate to a new line, 
+"/ the following block should evaluate to a new line,
 "/ given the original line as argument.
 "/ Beginner warning: Smalltalk know-how is useful here.
 
 [:line |
      "/ any processing on line.
      "/ Notice, that line might be a Text object (i.e. non-string),
-     "/ 
+     "/
      "/ Useful operations on the line are:
      "/     - '' .... '' ,                      concatenation of any prefix/suffix
      "/     - leftPaddedTo:size                 padding
      "/     - rightPaddedTo:size                padding
-     "/     - copyTo:(size min:N)               
-     "/     - asUppercase 
+     "/     - copyTo:(size min:N)
+     "/     - asUppercase
      "/     - asLowercase
      "/     - withoutSeparators                 remove whiteSpace
      "/     - asCollectionOfWords               words
@@ -2762,40 +2842,40 @@
 ]
 '.
     filterBlock := self askForFilterBlock:'Processing block:'
-                        template:template
-                        rememberIn:#LastProcessingBlockString.
+			template:template
+			rememberIn:#LastProcessingBlockString.
     filterBlock isNil ifTrue:[^ self].
 
     oldList := self selectedWorkspacesTextView list.
     oldList := oldList collect:[:lineOrNil | lineOrNil ? ''].
     newList := oldList collect:[:line | |newLine|
-                newLine := line.
-                Error handle:[:ex |
-                ] do:[
-                    newLine := filterBlock value:line
-                ].
-                newLine
-               ].
+		newLine := line.
+		Error handle:[:ex |
+		] do:[
+		    newLine := filterBlock value:line
+		].
+		newLine
+	       ].
     newList := newList collect:[:line | (line isString and:[line size == 0]) ifTrue:[nil] ifFalse:[line]].
 
     flags := (1 to:oldList size) collect:[:i | (oldList at:i) ~= (newList at:i)].
     flags := flags select:[:flag | flag].
     nChanged := flags size.
     nChanged == 0 ifTrue:[
-        self information:'No lines were changed.'.
-        ^ self
+	self information:'No lines were changed.'.
+	^ self
     ].
 
-    answer := Dialog confirmWithCancel:(resources 
-                        string:'%1 lines changed. Change text ?'
-                        with:nChanged)
-                labels:#( 'Cancel' 'No, Show Changed' 'Yes').
+    answer := Dialog confirmWithCancel:(resources
+			string:'%1 lines changed. Change text ?'
+			with:nChanged)
+		labels:#( 'Cancel' 'No, Show Changed' 'Yes').
     answer isNil ifTrue:[^ self].
     answer ifFalse:[
-        changedLines := (1 to:oldList size) select:[:i | (oldList at:i) ~= (newList at:i)].
-        changedLines := changedLines collect:[:i | (newList at:i)].
-        TextBox openOn:(changedLines asStringCollection) title:'Changed lines'.
-        ^ self.
+	changedLines := (1 to:oldList size) select:[:i | (oldList at:i) ~= (newList at:i)].
+	changedLines := changedLines collect:[:i | (newList at:i)].
+	TextBox openOn:(changedLines asStringCollection) title:'Changed lines'.
+	^ self.
     ].
 
     self selectedWorkspacesTextView list:newList.
@@ -2810,14 +2890,14 @@
 
     s := self lastDoItsString.
     s notNil ifTrue:[
-        self pasteAndExecute:s
+	self pasteAndExecute:s
     ]
 !
 
 removeAllWorkspaceVariables
     (Dialog confirm:(resources string:'Do you really want to remove all Workspace Variables ?'))
     ifTrue:[
-        Workspace removeAllWorkspaceVariables
+	Workspace removeAllWorkspaceVariables
    ].
 !
 
@@ -2826,27 +2906,27 @@
 
     selection := self selectedWorkspacesTextView selection ? ''.
 
-    name := Dialog 
-                request:'Remove Global Variable:'
-                initialAnswer:(selection asString string)
-                okLabel:'Remove'
-                title:'Remove Global'.
+    name := Dialog
+		request:'Remove Global Variable:'
+		initialAnswer:(selection asString string)
+		okLabel:'Remove'
+		title:'Remove Global'.
 
     name size == 0 ifTrue:[^ self].
     nameKey := name asSymbolIfInterned.
     nameKey isNil ifTrue:[^ self].
 
     (Smalltalk includesKey:nameKey) ifFalse:[
-        self warn:('No such Global Binding: ''%1''.' bindWith:name).
-        ^ self.
+	self warn:('No such Global Binding: ''%1''.' bindWith:name).
+	^ self.
     ].
 
     value := Smalltalk at:nameKey.
     value notNil ifTrue:[
-        (self confirm:('Global ''%1'' is currently bound to %2\\Remove Binding ?' bindWith:name with:value) withCRs)
-        ifFalse:[
-            ^ self.
-        ].
+	(self confirm:('Global ''%1'' is currently bound to %2\\Remove Binding ?' bindWith:name with:value) withCRs)
+	ifFalse:[
+	    ^ self.
+	].
     ].
     Smalltalk at:nameKey put:nil.
     Smalltalk removeKey:nameKey
@@ -2856,25 +2936,25 @@
     |poolToRemove|
 
     poolsConsideredInDoIts isEmptyOrNil ifTrue:[
-        Dialog information:'No pools have been added yet'.
-        ^ self.
+	Dialog information:'No pools have been added yet'.
+	^ self.
     ].
 
-    poolToRemove := Dialog 
-                choose:'Pool to Remove (No longer known in doIt-Evaluations):'
-                fromList:(poolsConsideredInDoIts asOrderedCollection sort)
-                lines:10.
+    poolToRemove := Dialog
+		choose:'Pool to Remove (No longer known in doIt-Evaluations):'
+		fromList:(poolsConsideredInDoIts asOrderedCollection sort)
+		lines:10.
 
     poolToRemove isNil ifTrue:[
-        ^ self
+	^ self
     ].
     poolsConsideredInDoIts remove:poolToRemove.
-    workspaces do:[:eachWs |    
-        |ws|
-        ws := self workspaceViewOfView:eachWs.
-        ws notNil ifTrue:[
-            ws poolsConsideredInDoIts:poolsConsideredInDoIts.
-        ].
+    workspaces do:[:eachWs |
+	|ws|
+	ws := self workspaceViewOfView:eachWs.
+	ws notNil ifTrue:[
+	    ws poolsConsideredInDoIts:poolsConsideredInDoIts.
+	].
     ].
 
     "Modified: / 24-11-2006 / 12:44:16 / cg"
@@ -2885,20 +2965,20 @@
 
     wsVarNames := Workspace workspaceVariableNames.
     wsVarNames isEmpty ifTrue:[
-        Dialog information:'No Workspace Variables are defined'.
-        ^ self
+	Dialog information:'No Workspace Variables are defined'.
+	^ self
     ].
 
     selection := self selectedWorkspacesTextView selection ? ''.
 
-    name := Dialog 
-                request:'Variable to remove:'
-                initialAnswer:(selection asString string)
-                okLabel:'Remove'
-                title:'Enter Variable Name'
-                list:(wsVarNames asOrderedCollection sort).      
+    name := Dialog
+		request:'Variable to remove:'
+		initialAnswer:(selection asString string)
+		okLabel:'Remove'
+		title:'Enter Variable Name'
+		list:(wsVarNames asOrderedCollection sort).
     name isEmptyOrNil ifTrue:[
-        ^ self
+	^ self
     ].
     Workspace removeWorkspaceVariable:name.
 
@@ -2910,10 +2990,10 @@
 
     tabList := self tabList.
     tabList notEmpty ifTrue:[
-        tabList at:wsIndex put:newName.
+	tabList at:wsIndex put:newName.
     ].
     wsIndex == self selectedWorkspaceIndexHolder value ifTrue:[
-        self setWindowLabel: newName.
+	self setWindowLabel: newName.
     ].
 !
 
@@ -2921,36 +3001,30 @@
     |selectedWorkspace ws|
 
     (selectedWorkspace := self selectedWorkspace) notNil ifTrue:[
-        (ws := self workspaceViewOfView:selectedWorkspace) notNil ifTrue:[
-            self setCompilerForSyntaxIn:ws.
-        ]
+	(ws := self workspaceViewOfView:selectedWorkspace) notNil ifTrue:[
+	    self setCompilerForSyntaxIn:ws.
+	]
     ].
 
     "Modified: / 26-09-2012 / 11:55:59 / cg"
 !
 
 setCompilerForSyntaxIn:aWorkspace
-    |compilerClass language|
-
+    | language ws |
+
+    ws := aWorkspace isScrollWrapper ifTrue:[ aWorkspace scrolledView ] ifFalse:[ aWorkspace ].
     language := self syntaxHolder value.
     language isSymbol ifTrue:[
-        language := ProgrammingLanguage named:language  
-    ].
-    language isNil ifTrue:[
-        compilerClass := nil
-    ] ifFalse:[
-        compilerClass := (language evaluatorClass "self compilerClassForSyntaxName:syntax").
+	language := ProgrammingLanguage named:language
     ].
-    [
-        "/ could be a non-text view (VT100Terminal)
-        aWorkspace compilerClass:compilerClass.
-    ] on:MessageNotUnderstood do:[].
-
-    self smalltalkMenuEnabledHolder value:(language notNil and:[language isSmalltalk]).
+    (ws respondsTo: #compilerClass:) ifTrue:[
+	ws compilerClass:(language evaluatorClass "self compilerClassForSyntaxName:syntax").
+    ].
+    self smalltalkMenuEnabledHolder value:(language isSmalltalk).
 
     "Created: / 08-02-2011 / 21:32:39 / cg"
-    "Modified: / 17-08-2011 / 08:47:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 28-09-2012 / 19:55:18 / cg"
+    "Modified: / 26-04-2012 / 12:04:42 / cg"
+    "Modified: / 13-08-2012 / 23:04:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 spyOnIt
@@ -2962,23 +3036,23 @@
 
     ws := self selectedWorkspace scrolledView.
     (ws isApplicationSubView) ifTrue:[
-        ((app := ws application) respondsTo:#switchToBookmarkEntry:) ifTrue:[
-            app switchToBookmarkEntry: bookmark
-        ].
-        ^ self.
+	((app := ws application) respondsTo:#switchToBookmarkEntry:) ifTrue:[
+	    app switchToBookmarkEntry: bookmark
+	].
+	^ self.
     ].
 
     bookmark isFileBookmark ifTrue:[
-        file := bookmark path asFilename.
-        (ws isTextView not or:[ws contents notEmpty]) ifTrue:[
-            self addWindow: (self createWorkspace) named:  file withoutSuffix baseName.
-        ].
-        file exists ifFalse:[
-            Transcript showCR:('Bookmarked workspace file no longer exists: %1' bindWith:file)
-        ] ifTrue:[
-            self loadFile: file.
-        ].
-        ^ self.
+	file := bookmark path asFilename.
+	(ws isTextView not or:[ws contents notEmpty]) ifTrue:[
+	    self addWindow: (self createWorkspace) named:  file withoutSuffix baseName.
+	].
+	file exists ifFalse:[
+	    Transcript showCR:('Bookmarked workspace file no longer exists: %1' bindWith:file)
+	] ifTrue:[
+	    self loadFile: file.
+	].
+	^ self.
     ].
 
     "Created: / 20-06-2011 / 22:45:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -2990,6 +3064,7 @@
     self selectedWorkspacesTextView timeIt
 ! !
 
+
 !WorkspaceApplication methodsFor:'menu-actions-adding'!
 
 addBookmark
@@ -3004,8 +3079,8 @@
     |v|
 
     ClassVariablesInspectorView isNil ifTrue:[
-        self error:'Missing class: "ClassVariablesInspectorView"'.
-        ^ self.
+	self error:'Missing class: "ClassVariablesInspectorView"'.
+	^ self.
     ].
     v := self addInspectorOn:Smalltalk inspectorClass:ClassVariablesInspectorView suppressPseudoSlots:true.
 
@@ -3026,19 +3101,19 @@
 
     selection := self selectedWorkspacesTextView selection ? ''.
 
-    name := Dialog 
-                request:'Name of new Global Variable:'
-                initialAnswer:(selection asString string)
-                okLabel:'Add'
-                title:'Enter Variable Name'.
+    name := Dialog
+		request:'Name of new Global Variable:'
+		initialAnswer:(selection asString string)
+		okLabel:'Add'
+		title:'Enter Variable Name'.
     name size == 0 ifTrue:[
-        ^ self
+	^ self
     ].
     nameKey := name asSymbol.
 
     (Smalltalk includesKey:nameKey) ifTrue:[
-        self warn:'Global named ''' , name , ''' already exists.'.
-        ^ self.
+	self warn:'Global named ''' , name , ''' already exists.'.
+	^ self.
     ].
     Smalltalk at:nameKey put:nil.
 !
@@ -3053,16 +3128,16 @@
     |inspectorClass|
 
     isBasicInspector ifFalse:[
-        inspectorClass := aValue inspectorClass.
+	inspectorClass := aValue inspectorClass.
     ].
     inspectorClass isNil ifTrue:[
-        inspectorClass := InspectorView
+	inspectorClass := InspectorView
     ].
 
     ^ self
-        addInspectorOn:aValue 
-        inspectorClass:inspectorClass 
-        suppressPseudoSlots:suppressPseudoSlots
+	addInspectorOn:aValue
+	inspectorClass:inspectorClass
+	suppressPseudoSlots:suppressPseudoSlots
 !
 
 addInspectorOn:aValue inspectorClass:inspectorClass suppressPseudoSlots:suppressPseudoSlots
@@ -3073,9 +3148,9 @@
     view inspect:aValue.
     "/ v allowFollow:true.
     aValue isBehavior ifTrue:[
-        resultString := aValue name
+	resultString := aValue name
     ] ifFalse:[
-        resultString := aValue classNameWithArticle
+	resultString := aValue classNameWithArticle
     ].
     self addWindow:view named:('Inspecting: ' , resultString).
     ^ view
@@ -3084,22 +3159,22 @@
 addMyWorkspace
     |pane f|
 
-    self 
-        addWindow:self createWorkspaceView"(pane := HVScrollableView for:Workspace)"
-        named:'My Workspace'
-        asFirst:false.
+    self
+	addWindow:self createWorkspaceView"(pane := HVScrollableView for:Workspace)"
+	named:'My Workspace'
+	asFirst:false.
 
     f := Filename homeDirectory / 'MyWorkspace.wsp'.
     f exists ifFalse:[
-        f := Filename homeDirectory / '.smalltalk' / 'MyWorkspace.wsp'.
-        f exists ifFalse:[
-            f := 'MyWorkspace.wsp' asFilename 
-        ]
+	f := Filename homeDirectory / '.smalltalk' / 'MyWorkspace.wsp'.
+	f exists ifFalse:[
+	    f := 'MyWorkspace.wsp' asFilename
+	]
     ].
     f exists ifTrue:[
-        self loadFile:f label:'My Workspace'.
+	self loadFile:f label:'My Workspace'.
     ] ifFalse:[
-        pane defaultFileNameForFileDialog: f pathName.
+	pane defaultFileNameForFileDialog: f pathName.
     ].
 
     "Modified: / 21-06-2010 / 08:40:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -3120,61 +3195,72 @@
     |v label|
 
     SmalltalkInspectorView isNil ifTrue:[
-        self error:'Missing class: "SmalltalkInspectorView"'.
-        ^ nil.
+	self error:'Missing class: "SmalltalkInspectorView"'.
+	^ nil.
     ].
 
-    v := self 
-            addInspectorOn:aNameSpaceOrSharedPool 
-            inspectorClass:SmalltalkInspectorView 
-            suppressPseudoSlots:true.
+    v := self
+	    addInspectorOn:aNameSpaceOrSharedPool
+	    inspectorClass:SmalltalkInspectorView
+	    suppressPseudoSlots:true.
 
     v fieldListLabel:'Name'.
     aNameSpaceOrSharedPool == Smalltalk ifTrue:[
-        label := 'Smalltalk (Globals)'
+	label := 'Smalltalk (Globals)'
     ] ifFalse:[
-        aNameSpaceOrSharedPool isSharedPool ifTrue:[
-            label := aNameSpaceOrSharedPool name,' (SharedPool)'
-        ] ifFalse:[
-            label := aNameSpaceOrSharedPool name,' (Namespace)'
-        ].
+	aNameSpaceOrSharedPool isSharedPool ifTrue:[
+	    label := aNameSpaceOrSharedPool name,' (SharedPool)'
+	] ifFalse:[
+	    label := aNameSpaceOrSharedPool name,' (Namespace)'
+	].
     ].
 
-    self 
-        renameWorkspace:(self selectedWorkspaceIndexHolder value) 
-        to:label.
+    self
+	renameWorkspace:(self selectedWorkspaceIndexHolder value)
+	to:label.
     ^ v
 
     "Created: / 29-05-2007 / 19:08:45 / cg"
 !
 
+addSQLWorkspace
+    |page view |
+
+    page := (Smalltalk at:#'SQL::WorkspacePage') new.
+    view := ApplicationSubView new.
+    view client:page spec:#windowSpec.
+    self addWindow:view named:'SQL Workspace %1'.
+
+    "Created: / 10-05-2012 / 18:48:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 addSelectionToSniplets
     |selection snipletsBaseName snipletsName nr snipletsDictionary|
 
     selection := (self selectedWorkspacesTextView selection ? '') asString.
     selection isEmpty ifTrue:[
-        Dialog information:(resources string:'Nothing Selected').
-        ^ self
+	Dialog information:(resources string:'Nothing Selected').
+	^ self
     ].
 
     snipletsBaseName := Dialog request:(resources string:'Name of Sniplet:').
     snipletsBaseName isNil ifTrue:[
-        ^ self
+	^ self
     ].
     snipletsBaseName isEmpty ifTrue:[
-        snipletsBaseName := Time now asString.
+	snipletsBaseName := Time now asString.
     ].
     snipletsDictionary := Workspace sniplets.
 
     snipletsName := snipletsBaseName.
     (snipletsDictionary includesKey:snipletsName) ifTrue:[
-        (Dialog confirm:(resources string:'Replace existing sniplet named "%1" ?' with:snipletsName))
-        ifFalse:[
-            [snipletsDictionary includesKey:snipletsName] whileTrue:[
-                nr := (nr ? 1) + 1.
-                snipletsName := (snipletsBaseName,'(%1)') bindWith:nr
-            ].
-        ]
+	(Dialog confirm:(resources string:'Replace existing sniplet named "%1" ?' with:snipletsName))
+	ifFalse:[
+	    [snipletsDictionary includesKey:snipletsName] whileTrue:[
+		nr := (nr ? 1) + 1.
+		snipletsName := (snipletsBaseName,'(%1)') bindWith:nr
+	    ].
+	]
     ].
     snipletsDictionary at:snipletsName put:selection
 
@@ -3188,23 +3274,23 @@
     allPools removeAll:(poolsConsideredInDoIts ? #()).
     allPools sort.
 
-    poolToAdd := Dialog 
-                choose:'Select a SharedPool to Add (To be known in doIt-Evaluations):'
-                fromList:allPools
-                lines:15.
+    poolToAdd := Dialog
+		choose:'Select a SharedPool to Add (To be known in doIt-Evaluations):'
+		fromList:allPools
+		lines:15.
     poolToAdd isNil ifTrue:[
-        ^ self
+	^ self
     ].
     poolsConsideredInDoIts isNil ifTrue:[
-        poolsConsideredInDoIts := (Set new).
+	poolsConsideredInDoIts := (Set new).
     ].
     poolsConsideredInDoIts add:poolToAdd.
-    workspaces do:[:eachWs |    
-        |ws|
-        ws := self workspaceViewOfView:eachWs.
-        ws notNil ifTrue:[
-            ws poolsConsideredInDoIts:poolsConsideredInDoIts.
-        ].
+    workspaces do:[:eachWs |
+	|ws|
+	ws := self workspaceViewOfView:eachWs.
+	ws notNil ifTrue:[
+	    ws poolsConsideredInDoIts:poolsConsideredInDoIts.
+	].
     ].
 
     "Modified: / 24-11-2006 / 12:44:16 / cg"
@@ -3228,19 +3314,19 @@
     clock := ClockView in:v.
     clock beStopWatch.
 
-    clock 
-        origin:[ 
-            |ext|
-
-            ext := (v height) min:(v width).
-            (v extent - ext) // 2
-        ]
-        extent:[        
-            |ext|
-
-            ext := (v height) min:(v width).
-            ext @ ext
-        ].
+    clock
+	origin:[
+	    |ext|
+
+	    ext := (v height) min:(v width).
+	    (v extent - ext) // 2
+	]
+	extent:[
+	    |ext|
+
+	    ext := (v height) min:(v width).
+	    ext @ ext
+	].
 
     self addWindow:v named:'StopWatch%1'.
 !
@@ -3252,9 +3338,9 @@
     |l dt tEnd dur answer confirmed confirmButton|
 
     dt := LastTeaWaitTime ? (3*60).
-    answer := Dialog 
-                request:'Delta-Time (seconds), Duration (n s/m/h) or End-Time (hh:mm:ss):' 
-                initialAnswer:(TimeDuration seconds:dt) printString.
+    answer := Dialog
+		request:'Delta-Time (seconds), Duration (n s/m/h) or End-Time (hh:mm:ss):'
+		initialAnswer:(TimeDuration seconds:dt) printString.
     answer isEmptyOrNil ifTrue:[^ self].
 
     "/ allow 3 formats:
@@ -3266,24 +3352,24 @@
 
     tEnd := Time readFromString:answer onError:nil.
     tEnd isNil ifTrue:[
-        dur := TimeDuration readFromString:answer onError:nil.
-        dur isNil ifTrue:[
-            dt := Number readFromString:answer onError:[^ self].
-            LastTeaWaitTime := dt.
-            tEnd := Timestamp now addSeconds:dt.
-        ] ifFalse:[
-            dt := dur asSeconds.
-            tEnd := Timestamp now + dur.
-        ].                
+	dur := TimeDuration readFromString:answer onError:nil.
+	dur isNil ifTrue:[
+	    dt := Number readFromString:answer onError:[^ self].
+	    LastTeaWaitTime := dt.
+	    tEnd := Timestamp now addSeconds:dt.
+	] ifFalse:[
+	    dt := dur asSeconds.
+	    tEnd := Timestamp now + dur.
+	].
     ] ifFalse:[
-        tEnd < Time now ifTrue:[
-            (Dialog confirm:'Tomorrow ?') ifFalse:[^ self].
-            tEnd := tEnd asTimestamp addDays:1.
-            dt := tEnd - Timestamp now.
-        ] ifFalse:[
-            dt := tEnd - Time now.
-            tEnd := tEnd asTimestamp.
-        ].
+	tEnd < Time now ifTrue:[
+	    (Dialog confirm:'Tomorrow ?') ifFalse:[^ self].
+	    tEnd := tEnd asTimestamp addDays:1.
+	    dt := tEnd - Timestamp now.
+	] ifFalse:[
+	    dt := tEnd - Time now.
+	    tEnd := tEnd asTimestamp.
+	].
     ].
 
     l := Label new.
@@ -3296,34 +3382,34 @@
     self addWindow:l named:'TeaTimer%1'.
 
     [
-        Error handle:[ 
-            self halt.
-            #intentionallyLeftBlank
-        ] do:[
-            |remaining wg|
-
-            confirmed := false.
-            [Timestamp now < tEnd ] whileTrue:[
-                remaining := tEnd - Timestamp now.
-                l label:'Waiting... [',(TimeDuration seconds:remaining) printString,']'.
-                Delay waitForSeconds:1.
-            ].
-
-            l label:'TEA is ready !!'.
-            "/ could have been removed in the meantime....
-            (wg := confirmButton windowGroup) notNil ifTrue:[
-                confirmButton beVisible.
-                wg repairDamage.
-
-                [ confirmed ] whileFalse:[
-                    3 timesRepeat:[ l beep. Delay waitForSeconds:0.4 ].
-                    Delay waitForSeconds:5.
-                ].
-
-                l viewBackground:Color green.
-                l topView raiseDeiconified.
-            ].
-        ]
+	Error handle:[
+	    self halt.
+	    #intentionallyLeftBlank
+	] do:[
+	    |remaining wg|
+
+	    confirmed := false.
+	    [Timestamp now < tEnd ] whileTrue:[
+		remaining := tEnd - Timestamp now.
+		l label:'Waiting... [',(TimeDuration seconds:remaining) printString,']'.
+		Delay waitForSeconds:1.
+	    ].
+
+	    l label:'TEA is ready !!'.
+	    "/ could have been removed in the meantime....
+	    (wg := confirmButton windowGroup) notNil ifTrue:[
+		confirmButton beVisible.
+		wg repairDamage.
+
+		[ confirmed ] whileFalse:[
+		    3 timesRepeat:[ l beep. Delay waitForSeconds:0.4 ].
+		    Delay waitForSeconds:5.
+		].
+
+		l viewBackground:Color green.
+		l topView raiseDeiconified.
+	    ].
+	]
     ] fork.
 
     "Modified: / 16-11-2010 / 14:54:05 / cg"
@@ -3334,24 +3420,24 @@
     | v termView |
 
     (OperatingSystem isUNIXlike and:[XTermView notNil and:[XTermView isAvailable]]) ifTrue:[
-        v := termView := XTermView new
+	v := termView := XTermView new
     ] ifFalse:[
-        v := (HVScrollableView for:VT100TerminalView).
-        termView := v scrolledView.
-        v autoHideScrollBars:false.
-        v horizontalMini:true.
-        "/ the startShell seems to realize the view, which is not allowed.
-        "/ do it later (after adding to myself)
+	v := (HVScrollableView for:VT100TerminalView).
+	termView := v scrolledView.
+	v autoHideScrollBars:false.
+	v horizontalMini:true.
+	"/ the startShell seems to realize the view, which is not allowed.
+	"/ do it later (after adding to myself)
 "/        termView startShellIn: Filename currentDirectory asString.
     ].
 
-    self addWindow:v named:'Terminal%1'.
+    self addWindow:v named:'Terminal %1'.
 
     termView shellTerminateAction:[ termView cr; nextPutLine:'*** shell terminated ***' allBold; cr.].
     termView startShellIn: Filename currentDirectory asString.
 
-    "Modified: / 09-12-2010 / 23:22:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 05-07-2011 / 14:42:39 / cg"
+    "Modified: / 10-05-2012 / 18:48:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 addWebBrowser
@@ -3361,10 +3447,11 @@
     browser toolBarVisibleHolder value:false.
     view := ApplicationSubView new.
     view client:browser spec:#windowSpec.
-    self addWindow:view named:'Web Browser%1'.
+    self addWindow:view named:'Web Browser %1'.
 
     "Created: / 10-06-2011 / 23:27:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (format): / 05-07-2011 / 14:30:59 / cg"
+    "Modified: / 10-05-2012 / 18:49:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 addWorkspaceVariable
@@ -3372,16 +3459,16 @@
 
     selectedWorkspacesTextView := self selectedWorkspacesTextView.
     selectedWorkspacesTextView notNil ifTrue:[
-        selection := selectedWorkspacesTextView selection.
+	selection := selectedWorkspacesTextView selection.
     ].
 
-    name := Dialog 
-                request:'Name of new Workspace Variable:'
-                initialAnswer:(selection ? '') asString string
-                okLabel:'Add'
-                title:'Enter Variable Name'.
+    name := Dialog
+		request:'Name of new Workspace Variable:'
+		initialAnswer:(selection ? '') asString string
+		okLabel:'Add'
+		title:'Enter Variable Name'.
     name size == 0 ifTrue:[
-        ^ self
+	^ self
     ].
     Workspace addWorkspaceVariable:name.
 
@@ -3403,24 +3490,25 @@
 
     ws := self selectedWorkspace scrolledView.
     ws isTextView ifTrue:[
-        file := ws defaultFileNameForFileDialog.
-        file ifNotNil:[folder add: (Bookmark forFile: file)].
-        folder model save.
+	file := ws defaultFileNameForFileDialog.
+	file ifNotNil:[folder add: (Bookmark forFile: file)].
+	folder model save.
     ] ifFalse:[
-        self shouldImplement
+	self shouldImplement
     ]
 
     "Created: / 21-06-2011 / 08:56:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !WorkspaceApplication methodsFor:'menu-actions-editing'!
 
 babelFishTranslate:fromToModeString
     "translate the selected text and paste it after the selection"
 
     SOAP::BabelFishClient isNil ifTrue:[
-        Dialog information:'Sorry the SOAP-BabelFish translation-client is not available'.
-        ^ self.
+	Dialog information:'Sorry the SOAP-BabelFish translation-client is not available'.
+	^ self.
     ].
     self selectedWorkspace babelFishTranslate:fromToModeString
 
@@ -3428,8 +3516,8 @@
 !
 
 changesBrowserOnText
-    (UserPreferences current changeSetBrowserClass) 
-        openOn:(ChangeSet fromStream:self selectedWorkspacesTextView contentsAsString readStream)
+    (UserPreferences current changeSetBrowserClass)
+	openOn:(ChangeSet fromStream:self selectedWorkspacesTextView contentsAsString readStream)
 
     "Created: / 27-08-2007 / 10:57:30 / cg"
 !
@@ -3437,8 +3525,8 @@
 editBookmarks
 
     BookmarkListEditor new
-        bookmarkList: self bookmarks;
-        open.
+	bookmarkList: self bookmarks;
+	open.
 
     "Created: / 20-06-2011 / 22:34:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -3480,14 +3568,14 @@
      "/ any condition on line.
      "/ Notice, that line might be a Text object (i.e. non-string),
      "/ so you may want to use ''line string''.
-     "/ 
+     "/
      "/ Useful queries on the line are:
      "/     - size                   the length of the line
      "/     - hasChangeOfEmphasis    any bold, italic etc.
      "/     - startsWith:someString
      "/     - endsWith:someString
      "/     - includesString:someString
-     "/     - pattern match: 
+     "/     - pattern match:
 
      "/ example filters
      "/
@@ -3510,8 +3598,8 @@
 '.
 
     filterBlock := self askForFilterBlock:'Filter block (to remove lines):'
-                        template:template
-                        rememberIn:#LastFilterBlockString.
+			template:template
+			rememberIn:#LastFilterBlockString.
     filterBlock isNil ifTrue:[^ self].
 
     oldList := self selectedWorkspacesTextView list.
@@ -3519,48 +3607,48 @@
     deletedLines := OrderedCollection new.
 
     oldList notEmptyOrNil ifTrue:[
-        line := nil.
-        nextLine := oldList at: 1.
-        1 to: oldList size do:[:lineNr |
-            prevLine := line.
-            line := nextLine.
-            nextLine := oldList at: lineNr + 1 ifAbsent: nil.
-
-            (filterBlock 
-                value:(line ? '') 
-                value: lineNr 
-                value: (prevLine ? '')  
-                value: (nextLine ? '') 
-            ) ifTrue: [
-                newList add: line
-            ] ifFalse:[
-                deletedLines add: line.
-            ]
-        ].
-
-        newList := newList collect:[:line | (line isString and:[line size == 0]) ifTrue:[nil] ifFalse:[line]].
+	line := nil.
+	nextLine := oldList at: 1.
+	1 to: oldList size do:[:lineNr |
+	    prevLine := line.
+	    line := nextLine.
+	    nextLine := oldList at: lineNr + 1 ifAbsent: nil.
+
+	    (filterBlock
+		value:(line ? '')
+		value: lineNr
+		value: (prevLine ? '')
+		value: (nextLine ? '')
+	    ) ifTrue: [
+		newList add: line
+	    ] ifFalse:[
+		deletedLines add: line.
+	    ]
+	].
+
+	newList := newList collect:[:line | (line isString and:[line size == 0]) ifTrue:[nil] ifFalse:[line]].
     ].
 
     nDeleted := deletedLines size.
     nDeleted == 0 ifTrue:[
-        self information:'No lines were deleted.'.
-        ^ self
+	self information:'No lines were deleted.'.
+	^ self
     ].
 
-    answer := OptionBox 
-                request:(resources 
-                        string:'%1 lines remain (%2 deleted). Change text ?'
-                        with:newList size
-                        with:nDeleted)
-                buttonLabels:#( 'Cancel' 'No, Show Deleted' 'Yes, but Show Deleted' 'Yes')
-                values:#(nil false yesAndShow true)
-                default:true.
+    answer := OptionBox
+		request:(resources
+			string:'%1 lines remain (%2 deleted). Change text ?'
+			with:newList size
+			with:nDeleted)
+		buttonLabels:#( 'Cancel' 'No, Show Deleted' 'Yes, but Show Deleted' 'Yes')
+		values:#(nil false yesAndShow true)
+		default:true.
     answer isNil ifTrue:[^ self].
     (answer ~~ true) ifTrue:[
-        TextBox openOn:(deletedLines asStringCollection) title:'Filtered lines'.
-        (answer == false) ifTrue:[
-            ^ self.
-        ].
+	TextBox openOn:(deletedLines asStringCollection) title:'Filtered lines'.
+	(answer == false) ifTrue:[
+	    ^ self.
+	].
     ].
 
     self selectedWorkspacesTextView list:newList.
@@ -3581,7 +3669,7 @@
 
     s := self lastDoItsString.
     s notNil ifTrue:[
-        self paste:s
+	self paste:s
     ]
 !
 
@@ -3589,6 +3677,7 @@
     self selectedWorkspacesTextView undentBy4.
 ! !
 
+
 !WorkspaceApplication methodsFor:'menu-dynamic'!
 
 bookmarkMenu
@@ -3603,7 +3692,7 @@
     menu addItem: item.
 
     menu addSeparator.
-    
+
     item := MenuItem labeled:(resources string:'Edit Bookmarks').
     item itemValue:#editBookmarks.
     menu addItem: item.
@@ -3621,37 +3710,45 @@
 !
 
 languageListMenuSlice
-    |m allLanguages|
-
-    allLanguages := ProgrammingLanguage all reject:[:lang | lang isSmalltalk ].
+    |m allLanguages |
+
+    allLanguages := OrderedCollection new.
+    ProgrammingLanguage allDo:[:eachLanguage |
+	eachLanguage isSmalltalk ifFalse:[
+	    allLanguages add:eachLanguage
+	]
+    ].
     allLanguages sort:[:a :b | a name < b name].
 
     m := Menu new.
-    m addItem:((MenuItem 
-                label:'Text'
-                choice: #syntaxHolder
-                choiceValue:nil) 
-                itemValue:#syntaxChangedByUser).
-    m addItem:((MenuItem 
-                label:'Smalltalk'
-                choice: #syntaxHolder
-                choiceValue:SmalltalkLanguage instance) 
-                itemValue:#syntaxChangedByUser).
+    m addItem:((MenuItem
+		label:'Smalltalk'
+		choice:#syntaxHolder
+		choiceValue:SmalltalkLanguage instance)
+		enabled: self canChangeLanguageHolder).
 
 "/    allLanguages notEmpty ifTrue:[
 "/        m addItem:(MenuItem separator).
 
-        allLanguages do:[:eachLanguage |
-            m addItem:((MenuItem 
-                        label:(eachLanguage name) 
-                        choice: #syntaxHolder
-                        choiceValue:eachLanguage) 
-                        itemValue:#syntaxChangedByUser).
-        ].
+	allLanguages do:[:eachLanguage |
+	    "JV@2012-02-18: Add language only iff it supports
+	     evaluation (most of then do, but some may not -
+	     such as Java)"
+	    (eachLanguage evaluatorClass notNil
+		and:[eachLanguage evaluatorClass canUnderstand: #evaluate:in:receiver:notifying:logged:ifFail:])
+		ifTrue:[
+		m addItem:((MenuItem
+			    label:(eachLanguage name)
+			    choice:#syntaxHolder
+			    choiceValue:eachLanguage)
+			    enabled: self canChangeLanguageHolder).
+	    ].
+	].
 "/    ].
     ^ m
 
-    "Modified: / 19-07-2012 / 10:53:05 / cg"
+    "Modified: / 04-02-2012 / 11:52:07 / cg"
+    "Modified: / 10-05-2012 / 23:44:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 makeRecentDoItsMenuFor:aSelector
@@ -3661,30 +3758,30 @@
 
     doIts := Workspace doItHistory.
     doIts size > 0 ifTrue:[
-        m := Menu new.
-        doIts do:[:doItEntry |
-            |lines label item|
-
-            lines := doItEntry withoutLeadingSeparators asStringCollection.
-            label := lines first.
-            (label size > cmdLabelLen) ifTrue:[
-                label := (label contractTo:cmdLabelLen)
-            ]. 
-            (lines size > 1) ifTrue:[
-                label := label , ' [...]'
-            ].
-            label := '''' , label , ''''.
-
-            item := MenuItem label:label.
-            item itemValue:aSelector argument:doItEntry.
-            m addItem:item.
-        ].
-        m addSeparator.
-        m addItem: (MenuItem new 
-                    label: (resources string:'Clear History'); 
-                    itemValue: #clearHistory; 
-                    activeHelpKey: #historyEmptyMenu;
-                    translateLabel:true).
+	m := Menu new.
+	doIts do:[:doItEntry |
+	    |lines label item|
+
+	    lines := doItEntry withoutLeadingSeparators asStringCollection.
+	    label := lines first.
+	    (label size > cmdLabelLen) ifTrue:[
+		label := (label contractTo:cmdLabelLen)
+	    ].
+	    (lines size > 1) ifTrue:[
+		label := label , ' [...]'
+	    ].
+	    label := '''' , label , ''''.
+
+	    item := MenuItem label:label.
+	    item itemValue:aSelector argument:doItEntry.
+	    m addItem:item.
+	].
+	m addSeparator.
+	m addItem: (MenuItem new
+		    label: (resources string:'Clear History');
+		    itemValue: #clearHistory;
+		    activeHelpKey: #historyEmptyMenu;
+		    translateLabel:true).
    ].
    ^ m
 
@@ -3701,7 +3798,7 @@
     <resource: #programMenu >
 
     ^ [
-        self makeRecentDoItsMenuFor:aSelector
+	self makeRecentDoItsMenuFor:aSelector
     ].
 !
 
@@ -3711,35 +3808,36 @@
     ^ self recentDoItsMenuFor:#'pasteAndExecute:'
 ! !
 
+
 !WorkspaceApplication methodsFor:'private'!
 
 askIfAnyModified:question yesButton:yesButtonText
     (workspaces contains:[:aView | self isModifiedWorkspace:aView]) ifFalse:[^ true].
 
-    (Dialog 
-        confirm:(resources stringWithCRs:question)
-        yesLabel:(resources string:yesButtonText)
-        noLabel:(resources string:'Cancel'))
+    (Dialog
+	confirm:(resources stringWithCRs:question)
+	yesLabel:(resources string:yesButtonText)
+	noLabel:(resources string:'Cancel'))
     ifTrue:[
-        "/ reset modified flag so question is asked only once
-        workspaces 
-            select:[:aView | (self isModifiedWorkspace:aView)]
-            thenDo:[:eachModifiedTextView |
-                        eachModifiedTextView 
-                                perform:#modified: with:false
-                                ifNotUnderstood:[].
-                    ].
-        ^ true
+	"/ reset modified flag so question is asked only once
+	workspaces
+	    select:[:aView | (self isModifiedWorkspace:aView)]
+	    thenDo:[:eachModifiedTextView |
+			eachModifiedTextView
+				perform:#modified: with:false
+				ifNotUnderstood:[].
+		    ].
+	^ true
     ].
     ^ false
 !
 
 compilerClassForSyntaxName:syntax
     syntax == #Smalltalk ifTrue:[
-        ^ Compiler
+	^ Compiler
     ].
     syntax == #JavaScript ifTrue:[
-        ^ JavaScriptCompiler
+	^ JavaScriptCompiler
     ].
     ^ Compiler
 !
@@ -3760,7 +3858,7 @@
       box add:l.
 
       ws := HVScrollableView for:Workspace.
-      ws scrolledView name:#'Workspace'.  
+      ws scrolledView name:#'Workspace'.
       ws autoDefineVariables:#workspace.
       ws layout:((0.0@0.0 corner:1.0@1.0) asLayout topOffset:22; bottomOffset:-22).
       box add:ws.
@@ -3810,30 +3908,30 @@
 "/     self renameWorkspace:(self selectedWorkspaceIndexHolder value) to:'Eval'.
 
     ws doItAction:[:theCode |
-        |t result resultString|
-
-        t := TimeDuration toRun:[
-            result := ws executeDoIt:theCode.
-        ].
-        timeLabel label:(resources string:'Exec. Time: %1' with:t printString).
-
-        resultString := [
-                            result storeString
-                        ] on:Error do:[
-                            result printString
-                        ].  
-                        
-        resultView showCR:resultString.
-        9 to:1 by:-1 do:[:h|
-            (workspaceVariables includesKey:('_%1' bindWith:h-1)) ifTrue:[
-                workspaceVariables 
-                        at:('_%1' bindWith:h)
-                        put:(workspaceVariables at:('_%1' bindWith:h-1)).
-            ].
-        ].
-        workspaceVariables at:'_0' put:(ValueHolder with:result).
-        environmentView doUpdate.
-        result.
+	|t result resultString|
+
+	t := TimeDuration toRun:[
+	    result := ws executeDoIt:theCode.
+	].
+	timeLabel label:(resources string:'Exec. Time: %1' with:t printString).
+
+	resultString := [
+			    result storeString
+			] on:Error do:[
+			    result printString
+			].
+
+	resultView showCR:resultString.
+	9 to:1 by:-1 do:[:h|
+	    (workspaceVariables includesKey:('_%1' bindWith:h-1)) ifTrue:[
+		workspaceVariables
+			at:('_%1' bindWith:h)
+			put:(workspaceVariables at:('_%1' bindWith:h-1)).
+	    ].
+	].
+	workspaceVariables at:'_0' put:(ValueHolder with:result).
+	environmentView doUpdate.
+	result.
     ].
     panel relativeCorners:#(0.4 0.6 1.0).
     ^ panel
@@ -3845,43 +3943,44 @@
     |ws|
 
     ws := self createWorkspaceView.
-    ws autoDefineVariables:autoDefineVariables.
+    ws autoDefineVariables:self autoDefineVariables value.
     ws poolsConsideredInDoIts:poolsConsideredInDoIts.
     ^ ws
 
-    "Modified: / 14-02-2010 / 19:51:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (format): / 05-07-2011 / 14:18:52 / cg"
+    "Modified: / 18-03-2012 / 23:37:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 createWorkspaceView
     |ws language|
 
     ws := self class createWorkspaceView.
+    ws acceptAction:[:code | self menuSave ].
     (ws respondsTo:#languageHolder:) ifTrue:[
-        ws languageHolder:self syntaxHolder
+	ws languageHolder:self syntaxHolder
     ].
     (language := self syntaxHolder value) notNil ifTrue:[
-        ws compilerClass:(language evaluatorClass).
+	ws compilerClass:(language evaluatorClass).
     ].
     ^ ws
 
-    "Modified: / 14-07-2010 / 18:47:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 19-07-2012 / 16:39:15 / cg"
+    "Modified: / 21-08-2012 / 17:20:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-isModifiedWorkspace:aView 
+isModifiedWorkspace:aView
     |view|
 
     aView isNil ifTrue:[
-        ^ false
+	^ false
     ].
     view := self workspaceViewOfView:aView.
-    (view isNil 
-        or:[ view modified not 
-        or:[ view contentsWasSaved 
-        or:[ view contents withoutSeparators isEmpty ]]]) 
-    ifTrue:[ 
-        ^ false 
+    (view isNil
+	or:[ view modified not
+	or:[ view contentsWasSaved
+	or:[ view contents withoutSeparators isEmpty ]]])
+    ifTrue:[
+	^ false
     ].
     ^ true
 
@@ -3894,17 +3993,17 @@
 
     history := Workspace doItHistory.
     history size > 0 ifFalse:[
-        self selectedWorkspacesTextView flash.
-        ^ nil
+	self selectedWorkspacesTextView flash.
+	^ nil
     ].
     ^ history first
 !
 
-syntaxFromEvaluatorClass:aClass 
-    ProgrammingLanguage allDo:[:lang | 
-        lang evaluatorClass = aClass ifTrue:[
-            ^ lang
-        ]
+syntaxFromEvaluatorClass:aClass
+    ProgrammingLanguage allDo:[:lang |
+	lang evaluatorClass = aClass ifTrue:[
+	    ^ lang
+	]
     ].
 
      "Unknown language - should not happen :-)"
@@ -3916,29 +4015,33 @@
 workspaceSelectionChanged
     "attach line, col and mode holders to the current workspace window"
 
-    |compilerClass selectedWorkspace|
+    |compilerClass selectedWorkspace selectedWorkspaceApp |
+
+
+    "JV@2012-05-10: Modified to better support complex application models as tabs"
 
     super workspaceSelectionChanged.
 
     selectedWorkspace := self selectedWorkspace.
-    (selectedWorkspace notNil and:[selectedWorkspace isScrollWrapper]) ifTrue:[  
+    selectedWorkspaceApp  := self selectedWorkspaceApplication.
+
+    (selectedWorkspace notNil and:[selectedWorkspace isScrollWrapper]) ifTrue:[
         selectedWorkspace := selectedWorkspace scrolledView
     ].
-    [    
-        "/ catch, because it could be a non-edit view there (VT100 view)
-        compilerClass := selectedWorkspace compilerClass. 
-    ] on:MessageNotUnderstood do:[].
-
-    compilerClass notNil ifTrue:[
-        self syntaxHolder value:(self syntaxFromEvaluatorClass:compilerClass).
-    ] ifFalse:[
-        self syntaxHolder value:nil.
-    ].
-
-    (selectedWorkspace notNil and:[ selectedWorkspace scrolledView isTextView ]) ifTrue:[
-        self cursorLineHolder valueHolder:( selectedWorkspace perform:#cursorLineHolder ifNotUnderstood:nil ).
-        self cursorColHolder valueHolder:( selectedWorkspace perform:#cursorColHolder ifNotUnderstood:nil ).
-        self modeLabelHolder valueHolder:( selectedWorkspace perform:#modeLabelHolder ifNotUnderstood:nil ).
+
+    compilerClass := selectedWorkspaceApp ? selectedWorkspace
+                            perform: #compilerClass
+                            ifNotUnderstood: [Compiler].
+    self canChangeLanguageHolder value:
+        (selectedWorkspaceApp ? selectedWorkspace respondsTo: #compilerClass:).
+
+
+    self syntaxHolder value:(self syntaxFromEvaluatorClass:compilerClass).
+
+    (selectedWorkspace notNil and:[ selectedWorkspace scrolledView isTextView or:[selectedWorkspaceApp notNil] ]) ifTrue:[
+        self cursorLineHolder valueHolder:( selectedWorkspaceApp ? selectedWorkspace perform:#cursorLineHolder ifNotUnderstood:nil ).
+        self cursorColHolder valueHolder:( selectedWorkspaceApp ? selectedWorkspace perform:#cursorColHolder ifNotUnderstood:nil ).
+        self modeLabelHolder valueHolder:( selectedWorkspaceApp ? selectedWorkspace perform:#modeLabelHolder ifNotUnderstood:nil ).
     ] ifFalse:[
         self cursorLineHolder valueHolder:nil.
         self cursorColHolder valueHolder:nil.
@@ -3946,12 +4049,10 @@
     ].
 
     "Update toolbar"
-    (selectedWorkspace notNil and:[selectedWorkspace isApplicationSubView]) ifTrue:[
-        | app |
-        app := selectedWorkspace application.
-        (app class respondsTo: #toolBarSpec) ifTrue:[
+    selectedWorkspaceApp notNil ifTrue:[
+        (selectedWorkspaceApp class respondsTo: #toolBarSpec) ifTrue:[
             self toolBarView
-                client: app spec: #toolBarSpec
+                client: selectedWorkspaceApp spec: #toolBarSpec
         ] ifFalse:[
             self toolBarView
                 client: self spec: #toolBarSpec builder: builder.
@@ -3961,10 +4062,10 @@
             client: self spec: #toolBarSpec builder: builder.
     ]
 
-    "Modified: / 11-06-2011 / 00:06:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 28-09-2012 / 19:53:46 / cg"
+
 ! !
 
+
 !WorkspaceApplication methodsFor:'user actions'!
 
 infoVisibilityChanged
@@ -3989,6 +4090,7 @@
     "Created: / 14-07-2007 / 16:45:31 / cg"
 ! !
 
+
 !WorkspaceApplication class methodsFor:'documentation'!
 
 version
--- a/XTermView.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/XTermView.st	Wed Jan 30 11:15:09 2013 +0000
@@ -34,6 +34,7 @@
 "
 ! !
 
+
 !XTermView class methodsFor:'class initialization'!
 
 initialize
@@ -53,6 +54,7 @@
     "Created: / 09-12-2010 / 23:15:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !XTermView class methodsFor:'defaults'!
 
 defaultFont
@@ -71,6 +73,7 @@
     "Created: / 25-11-2010 / 12:21:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !XTermView class methodsFor:'queries'!
 
 isAvailable
@@ -80,6 +83,7 @@
     "Created: / 09-12-2010 / 23:21:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !XTermView methodsFor:'accessing'!
 
 workingDirectory: aStringOrFilename
@@ -90,6 +94,7 @@
     "Created: / 25-11-2010 / 12:32:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !XTermView methodsFor:'event handling'!
 
 clientUnplugged: clientInitiated
@@ -103,16 +108,23 @@
     "But hackish..."
     app := self application.
     app ifNil:[^self].
+    (app class == FileApplicationNoteBook::Terminal) ifTrue:[
+        app doClose.
+        ^self.
+    ].
     #(removeWorkspace "WorkspaceApplication"
-      doCloseApplication "FileBrowserNotebook"
       bufferMenuRemoveCurrentBuffer "NewSystemBrowser"
     ) do:[:closeSelector|
-        (app topApplication respondsTo: closeSelector) ifTrue:
-            [app topApplication perform: closeSelector]].
+        (app topApplication respondsTo: closeSelector) ifTrue: [
+            app topApplication perform: closeSelector.
+            ^self
+        ]
+    ].
 
     "Created: / 06-06-2011 / 10:04:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !XTermView methodsFor:'initialization & release'!
 
 destroy
@@ -138,8 +150,108 @@
     "Created: / 25-11-2010 / 12:34:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
+!XTermView methodsFor:'menu'!
+
+doClear
+    "reset the scroll-range etc, clear the text buffer"
+
+"/    rangeStartLine := 1.
+"/    rangeEndLine := numberOfLines.
+"/
+"/    self normal.
+"/    self clear.
+
+    "Created: / 03-04-2007 / 08:58:59 / cg"
+    "Modified: / 03-04-2012 / 10:34:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doReset
+    "reset the scroll-range; 
+     may have to reset more in the future (current font-set; color; etc)"
+
+"/    rangeStartLine := 1.
+"/    rangeEndLine := numberOfLines.
+"/
+"/    self normal.
+
+    "Modified: / 03-04-2012 / 10:34:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doSendInterrupt
+    "send an INT-signal to the shell (UNIX only)"
+    pid notNil ifTrue:[
+        OperatingSystem sendSignal:(OperatingSystem sigINT) to:pid negated.
+    ].
+
+    "Modified: / 10-06-1998 / 17:49:49 / cg"
+    "Modified: / 03-04-2012 / 10:34:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doSendKillSignal
+    "send a KILL-signal to the shell (UNIX only)"
+
+    pid notNil ifTrue:[
+        OperatingSystem sendSignal:(OperatingSystem sigKILL) to:pid negated.
+    ]
+
+    "Modified: / 03-04-2012 / 10:34:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+
 !XTermView methodsFor:'mimicry'!
 
+defaultFileNameForFileDialog
+
+    ^nil
+
+    "Created: / 03-05-2012 / 12:29:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+lineLimit:aSmallInteger
+
+    "Nothing"
+
+    "Created: / 03-04-2012 / 10:42:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+list
+    ^nil
+
+    "Created: / 17-07-2012 / 21:11:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+modified
+
+    ^false
+
+    "Created: / 03-05-2012 / 11:42:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+save
+
+    Dialog warn: 'Not yet implemented for XTermView'
+
+    "Created: / 03-04-2012 / 10:43:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectionAsString
+
+    ^ (device getSelectionOwnerOf: #PRIMARY) = drawableId ifTrue:[
+        device getClipboardText:#selection for:drawableId
+    ] ifFalse:[
+        nil
+    ]
+
+    "Created: / 03-04-2012 / 10:30:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+sendLine:aString
+    self halt:'please define sendLine: here'.
+
+    "Created: / 03-04-2012 / 10:33:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 shellTerminateAction: aBlock
 
     "Nothing to do"
@@ -154,6 +266,7 @@
     "Created: / 25-11-2010 / 12:38:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !XTermView methodsFor:'private'!
 
 xcolorNameFor: aColor
@@ -196,6 +309,7 @@
     "Modified: / 09-12-2010 / 23:16:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !XTermView methodsFor:'queries'!
 
 preferredExtent
@@ -220,6 +334,7 @@
     "Created: / 25-11-2010 / 12:51:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !XTermView methodsFor:'realization'!
 
 postRealize
@@ -245,15 +360,17 @@
     "Modified: / 02-06-2011 / 23:27:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !XTermView methodsFor:'testing'!
 
 isTextView
 
-    ^false
+    ^true
 
     "Created: / 13-09-2011 / 11:22:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !XTermView class methodsFor:'documentation'!
 
 version_CVS
@@ -264,4 +381,5 @@
     ^ '§Id: XTermView.st 7802 2011-07-05 18:33:36Z vranyj1 §'
 ! !
 
+
 XTermView initialize!
--- a/abbrev.stc	Sun Jan 27 02:50:59 2013 +0100
+++ b/abbrev.stc	Wed Jan 30 11:15:09 2013 +0000
@@ -4,10 +4,10 @@
 AboutBox AboutBox stx:libtool 'Views-DialogBoxes' 2
 AbstractFileApplicationNoteBookComponent AbstractFileApplicationNoteBookComponent stx:libtool 'Interface-Tools-File' 1
 AbstractFileBrowser AbstractFileBrowser stx:libtool 'Interface-Tools-File' 3
-AbstractLauncherApplication AbstractLauncherApplication stx:libtool 'Interface-Smalltalk' 9
+AbstractLauncherApplication AbstractLauncherApplication stx:libtool 'Interface-Smalltalk' 7
+AbstractVersionDiffBrowserItem AbstractVersionDiffBrowserItem stx:libtool 'Interface-Browsers-Support' 0
 AbstractRevisionItem AbstractRevisionItem stx:libtool 'Interface-Browsers-Support' 0
 AbstractSettingsApplication AbstractSettingsApplication stx:libtool 'Interface-Smalltalk' 1
-AbstractVersionDiffBrowserItem AbstractVersionDiffBrowserItem stx:libtool 'Interface-Browsers-Support' 0
 ApplicationBuilder ApplicationBuilder stx:libtool 'Interface-Tools' 8
 Bookmark Bookmark stx:libtool 'Interface-Bookmarks' 0
 BookmarkBar BookmarkBar stx:libtool 'Interface-Bookmarks' 1
@@ -27,11 +27,11 @@
 ClassRevisionTree ClassRevisionTree stx:libtool 'Interface-Browsers-Support' 1
 ClassVariablesInspectorView ClassVariablesInspectorView stx:libtool 'Interface-Inspector' 2
 CodeGenerator CodeGenerator stx:libtool 'Interface-Browsers' 0
-CodeGeneratorTests CodeGeneratorTests stx:libtool 'Interface-Browsers' 0
+CodeGeneratorTests CodeGeneratorTests stx:libtool 'Interface-Browsers' 1
 CodeGeneratorTool CodeGeneratorTool stx:libtool 'Interface-Browsers' 0
 ColorInspectorView ColorInspectorView stx:libtool 'Interface-Inspector' 2
 DebugView DebugView stx:libtool 'Interface-Debugger' 2
-Diff Diff stx:libtool 'Collections-Sequenceable-Diff' 0
+Diff Diff stx:libtool 'Collections-Support' 0
 Diff3TextView Diff3TextView stx:libtool 'Views-Text' 2
 DiffListUtility DiffListUtility stx:libtool 'Views-Text' 0
 DiffTextView DiffTextView stx:libtool 'Views-Text' 2
@@ -43,7 +43,7 @@
 FileBrowser FileBrowser stx:libtool 'Interface-Tools-File' 2
 FileBrowserV2PanelView FileBrowserV2PanelView stx:libtool 'Interface-Tools-File' 2
 FileBrowserV2SettingsDialog FileBrowserV2SettingsDialog stx:libtool 'Interface-Tools-File' 1
-FileBrowserV2Tests FileBrowserV2Tests stx:libtool 'Interface-Tools-File' 0
+FileBrowserV2Tests FileBrowserV2Tests stx:libtool 'Interface-Tools-File' 1
 FileBrowserV2UISpecifications FileBrowserV2UISpecifications stx:libtool 'Interface-Tools-File' 0
 FileDialog FileDialog stx:libtool 'Interface-Tools-File' 1
 FileDialogV2 FileDialogV2 stx:libtool 'Interface-Tools-File' 1
@@ -52,7 +52,7 @@
 HierarchicalClassRevisionList HierarchicalClassRevisionList stx:libtool 'Interface-Browsers-Support' 0
 HierarchicalVersionDiffBrowser HierarchicalVersionDiffBrowser stx:libtool 'Interface-Browsers' 1
 InspectorView InspectorView stx:libtool 'Interface-Inspector' 2
-Launcher Launcher stx:libtool 'Interface-Smalltalk' 9
+Launcher Launcher stx:libtool 'Interface-Smalltalk' 7
 LibraryBuilder LibraryBuilder stx:libtool 'Interface-Tools' 8
 MemoryMonitor MemoryMonitor stx:libtool 'Monitors-ST/X' 1
 MemoryMonitorView MemoryMonitorView stx:libtool 'Monitors-ST/X' 2
@@ -73,7 +73,7 @@
 SystemBrowser SystemBrowser stx:libtool 'Interface-Browsers' 1
 SystemStatusMonitor SystemStatusMonitor stx:libtool 'Monitors-ST/X' 2
 TerminalApplication TerminalApplication stx:libtool 'Interface-Smalltalk' 7
-TextDiffTests TextDiffTests stx:libtool 'Collections-Sequenceable-Diff' 0
+TextDiffTests TextDiffTests stx:libtool 'Collections-Sequenceable-Diff' 1
 Tools::AbstractTestRunner Tools__AbstractTestRunner stx:libtool 'SUnit-UI' 1
 Tools::BreakpointBrowser Tools__BreakpointBrowser stx:libtool 'Interface-Smalltalk-Breakpoints' 1
 Tools::Browslet Tools__Browslet stx:libtool 'Interface-Browsers-Browslets' 1
@@ -84,7 +84,7 @@
 Tools::ChangeSetSelectionDialog Tools__ChangeSetSelectionDialog stx:libtool 'Interface-Dialogs' 1
 Tools::ChangeSetSpec Tools__ChangeSetSpec stx:libtool 'Interface-Dialogs' 0
 Tools::CheckinInfoDialog Tools__CheckinInfoDialog stx:libtool 'System-SourceCodeManagement' 1
-Tools::ClassChecker Tools_ClassChecker stx:libtool 'Interface-Browsers-New' 0
+Tools::ClassChecker Tools__ClassChecker stx:libtool 'Interface-Browsers-New' 0
 Tools::ClassSorter Tools__ClassSorter stx:libtool 'Interface-Browsers-New' 0
 Tools::CodeCompletionMenu Tools__CodeCompletionMenu stx:libtool 'Interface-CodeView' 2
 Tools::CodeCritics Tools__CodeCritics stx:libtool 'Interface-Browsers-New' 0
@@ -103,20 +103,20 @@
 Tools::LintRuleSelectionDialog Tools__LintRuleSelectionDialog stx:libtool 'Interface-Lint' 1
 Tools::MethodCategoryCache Tools__MethodCategoryCache stx:libtool 'Interface-Browsers-New' 0
 Tools::MethodRewriter Tools__MethodRewriter stx:libtool 'Interface-MethodRewriter' 1
-Tools::NavigationHistory Tools__NavigationHistory stx:libtool 'Interface-History' 0
-Tools::NavigationHistoryTests Tools__NavigationHistoryTests stx:libtool 'Interface-History' 0
-Tools::NavigationState Tools_NavigationState stx:libtool 'Interface-Browsers-New' 0
-Tools::NavigatorModel Tools_NavigatorModel stx:libtool 'Interface-Browsers-New' 1
+Tools::NavigationHistory Tools__NavigationHistory stx:libtool 'Interface-Browsers-New-History' 0
+Tools::NavigationHistoryTests Tools__NavigationHistoryTests stx:libtool 'Interface-Browsers-New-History' 1
+Tools::NavigationState Tools__NavigationState stx:libtool 'Interface-Browsers-New' 0
+Tools::NavigatorModel Tools__NavigatorModel stx:libtool 'Interface-Browsers-New' 1
 Tools::NewClassWizardDialog Tools__NewClassWizardDialog stx:libtool 'Interface-Browsers-New' 1
 Tools::NewSystemBrowserCodeView Tools__NewSystemBrowserCodeView stx:libtool 'Interface-Browsers-New' 2
 Tools::Profiler Tools__Profiler stx:libtool 'Interface-Browsers-New-Profiler' 0
 Tools::ProfilerInfoBuilder Tools__ProfilerInfoBuilder stx:libtool 'Interface-Browsers-New-Profiler' 0
 Tools::ProfilerInfoItem Tools__ProfilerInfoItem stx:libtool 'Interface-Browsers-New-Profiler' 0
 Tools::ProjectLoader Tools__ProjectLoader stx:libtool 'Interface-Tools' 1
-Tools::SearchDialog Tools_SearchDialog stx:libtool 'Interface-Browsers-New' 2
+Tools::SearchDialog Tools__SearchDialog stx:libtool 'Interface-Browsers-New' 2
 Tools::SmalltalkDiffTool Tools__SmalltalkDiffTool stx:libtool 'Interface-Diff & Merge tool' 1
 Tools::SmalltalkMergeTool Tools__SmalltalkMergeTool stx:libtool 'Interface-Diff & Merge tool' 1
-Tools::SpecialCodeView Tools_SpecialCodeView stx:libtool 'Interface-Browsers-New' 1
+Tools::SpecialCodeView Tools__SpecialCodeView stx:libtool 'Interface-Browsers-New' 1
 Tools::StringSearchTool Tools__StringSearchTool stx:libtool 'Interface-Tools' 1
 Tools::Tag Tools__Tag stx:libtool 'Interface-Tools-File-Tags' 0
 Tools::TagList Tools__TagList stx:libtool 'Interface-Tools-File-Tags' 0
@@ -146,19 +146,20 @@
 AbstractFileFinderApplicationComponent AbstractFileFinderApplicationComponent stx:libtool 'Interface-Tools-File' 1
 FindFileApplication FindFileApplication stx:libtool 'Interface-Tools-File' 1
 ImageInspectorView ImageInspectorView stx:libtool 'Interface-Inspector' 2
-NewLauncher NewLauncher stx:libtool 'Interface-Smalltalk' 9
+NewLauncher NewLauncher stx:libtool 'Interface-Smalltalk' 7
 OrderedCollectionInspectorView OrderedCollectionInspectorView stx:libtool 'Interface-Inspector' 2
 SetInspectorView SetInspectorView stx:libtool 'Interface-Inspector' 2
 SmalltalkCodeGeneratorTool SmalltalkCodeGeneratorTool stx:libtool 'Interface-Browsers' 0
 Tools::BreakpointService Tools__BreakpointService stx:libtool 'Interface-CodeView' 0
-Tools::BrowserList Tools_BrowserList stx:libtool 'Interface-Browsers-New' 1
+Tools::BrowserList Tools__BrowserList stx:libtool 'Interface-Browsers-New' 1
+Tools::BrowserListWithFilter Tools__BrowserListWithFilter stx:libtool 'Interface-Browsers-New' 1
 Tools::CodeCompletionService Tools__CodeCompletionService stx:libtool 'Interface-CodeView' 0
 Tools::CodeHighlightingService Tools__CodeHighlightingService stx:libtool 'Interface-CodeView' 0
 Tools::CodeNavigationService Tools__CodeNavigationService stx:libtool 'Interface-CodeView' 0
 Tools::CodeView2SettingsAppl Tools__CodeView2SettingsAppl stx:libtool 'Interface-CodeView' 1
-Tools::NavigatorCanvas Tools_NavigatorCanvas stx:libtool 'Interface-Browsers-New' 1
+Tools::NavigatorCanvas Tools__NavigatorCanvas stx:libtool 'Interface-Browsers-New' 1
 Tools::NewSystemBrowser Tools__NewSystemBrowser stx:libtool 'Interface-Browsers-New' 1
-Tools::OrganizerCanvas Tools_OrganizerCanvas stx:libtool 'Interface-Browsers-New' 1
+Tools::OrganizerCanvas Tools__OrganizerCanvas stx:libtool 'Interface-Browsers-New' 1
 Tools::SendersBrowslet Tools__SendersBrowslet stx:libtool 'Interface-Browsers-Browslets' 1
 Tools::StringSearchToolForTextView Tools__StringSearchToolForTextView stx:libtool 'Interface-Tools' 1
 Tools::TestRunnerEmbedded Tools__TestRunnerEmbedded stx:libtool 'SUnit-UI' 1
@@ -173,35 +174,48 @@
 StoreSourceCodeManagementSettingsAppl StoreSourceCodeManagementSettingsAppl stx:libtool 'System-SourceCodeManagement' 1
 Tools::ChangeList Tools__ChangeList stx:libtool 'Interface-Browsers-ChangeSet' 1
 Tools::ChangeSetDiffList Tools__ChangeSetDiffList stx:libtool 'Interface-Diff' 1
-Tools::ClassCategoryList Tools_ClassCategoryList stx:libtool 'Interface-Browsers-New' 1
-Tools::ClassGeneratorList Tools_ClassGeneratorList stx:libtool 'Interface-Browsers-New' 1
-Tools::ClassList Tools_ClassList stx:libtool 'Interface-Browsers-New' 1
+Tools::ClassCategoryList Tools__ClassCategoryList stx:libtool 'Interface-Browsers-New' 1
+Tools::ClassGeneratorList Tools__ClassGeneratorList stx:libtool 'Interface-Browsers-New' 1
+Tools::ClassList Tools__ClassList stx:libtool 'Interface-Browsers-New' 1
 Tools::LintRuleList Tools__LintRuleList stx:libtool 'Interface-Lint' 1
-Tools::MethodCategoryList Tools_MethodCategoryList stx:libtool 'Interface-Browsers-New' 1
-Tools::MethodList Tools_MethodList stx:libtool 'Interface-Browsers-New' 1
-Tools::NamespaceList Tools_NamespaceList stx:libtool 'Interface-Browsers-New' 1
-Tools::ProjectList Tools_ProjectList stx:libtool 'Interface-Browsers-New' 1
+Tools::MethodCategoryList Tools__MethodCategoryList stx:libtool 'Interface-Browsers-New' 1
+Tools::MethodList Tools__MethodList stx:libtool 'Interface-Browsers-New' 1
+Tools::NamespaceList Tools__NamespaceList stx:libtool 'Interface-Browsers-New' 1
+Tools::ProjectList Tools__ProjectList stx:libtool 'Interface-Browsers-New' 1
 Tools::VariableList Tools__VariableList stx:libtool 'Interface-Browsers-New' 1
-Tools::FullMethodCategoryList Tools_FullMethodCategoryList stx:libtool 'Interface-Browsers-New' 1
+Tools::FullMethodCategoryList Tools__FullMethodCategoryList stx:libtool 'Interface-Browsers-New' 1
 Tools::HierarchicalChangeList Tools__HierarchicalChangeList stx:libtool 'Interface-Browsers-ChangeSet' 1
-Tools::HierarchicalClassCategoryList Tools_HierarchicalClassCategoryList stx:libtool 'Interface-Browsers-New' 1
-Tools::HierarchicalClassList Tools_HierarchicalClassList stx:libtool 'Interface-Browsers-New' 1
+Tools::HierarchicalClassCategoryList Tools__HierarchicalClassCategoryList stx:libtool 'Interface-Browsers-New' 1
+Tools::HierarchicalClassList Tools__HierarchicalClassList stx:libtool 'Interface-Browsers-New' 1
 Tools::HierarchicalLintRuleList Tools__HierarchicalLintRuleList stx:libtool 'Interface-Lint' 1
-Tools::HierarchicalProjectList Tools_HierarchicalProjectList stx:libtool 'Interface-Browsers-New' 1
-Tools::ImplementingClassList Tools_ImplementingClassList stx:libtool 'Interface-Browsers-New' 1
-Tools::ImplementingMethodList Tools_ImplementingMethodList stx:libtool 'Interface-Browsers-New' 1
+Tools::HierarchicalProjectList Tools__HierarchicalProjectList stx:libtool 'Interface-Browsers-New' 1
+Tools::ImplementingClassList Tools__ImplementingClassList stx:libtool 'Interface-Browsers-New' 1
+Tools::ImplementingMethodList Tools__ImplementingMethodList stx:libtool 'Interface-Browsers-New' 1
 Tools::NamespaceFilter Tools__NamespaceFilter stx:libtool 'Interface-Browsers-New' 1
 Tools::TestRunner2 Tools__TestRunner2 stx:libtool 'SUnit-UI' 1
 Tools::HierarchicalPackageFilterList Tools__HierarchicalPackageFilterList stx:libtool 'Interface-Browsers-New-Profiler' 1
-Tools::InheritanceClassList Tools_InheritanceClassList stx:libtool 'Interface-Browsers-New' 1
+Tools::InheritanceClassList Tools__InheritanceClassList stx:libtool 'Interface-Browsers-New' 1
 Tools::LintHighlighter Tools__LintHighlighter stx:libtool 'Interface-Lint' 0
 Tools::LintService Tools__LintService stx:libtool 'Interface-Lint' 0
 Tools::SourceCodeManagerConfigurationTestTool Tools__SourceCodeManagerConfigurationTestTool stx:libtool 'System-SourceCodeManagement' 1
-Tools::BrowserListWithFilter Tools__BrowserListWithFilter stx:libtool 'Interface-Browsers-New' 1
 FileBasedSourceCodeManagementSettingsAppl FileBasedSourceCodeManagementSettingsAppl stx:libtool 'System-SourceCodeManagement' 1
 DataBaseSourceCodeManagementSettingsAppl DataBaseSourceCodeManagementSettingsAppl stx:libtool 'System-SourceCodeManagement' 1
 DirectoryDifferenceViewApplication DirectoryDifferenceViewApplication stx:libtool 'Interface-Tools-File' 1
 MercurialSourceCodeManagementSettingsAppl MercurialSourceCodeManagementSettingsAppl stx:libtool 'System-SourceCodeManagement' 1
 GitSourceCodeManagementSettingsAppl GitSourceCodeManagementSettingsAppl stx:libtool 'System-SourceCodeManagement' 1
+Tools::LintAnnotation Tools__LintAnnotation stx:libtool 'Interface-Lint' 0
+Tools::ProjectCheckerBrowser Tools__ProjectCheckerBrowser stx:libtool 'System-Support-Projects' 1
+ParseTreeIndex ParseTreeIndex stx:libtool 'Interface-CodeView-Syntax' 0
+Tools::Diff2CodeView2 Tools__Diff2CodeView2 stx:libtool 'Interface-CodeView' 2
+Tools::Diff3CodeView2 Tools__Diff3CodeView2 stx:libtool 'Interface-CodeView' 2
+Tools::TextDiff2Tool Tools__TextDiff2Tool stx:libtool 'Interface-Diff' 1
+Tools::TextDiff3Tool Tools__TextDiff3Tool stx:libtool 'Interface-Diff' 1
+Diff2 Diff2 stx:libtool 'Collections-Sequenceable-Diff2' 0
+Diff3 Diff3 stx:libtool 'Collections-Sequenceable-Diff3' 0
+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
+Tools::ChangeSetDiffInfo Tools__ChangeSetDiffInfo stx:libtool 'Interface-Diff' 0
 PerforceSourceCodeManagerUtilities PerforceSourceCodeManagerUtilities stx:libtool 'System-SourceCodeManagement' 0
-Tools::ProjectCheckerBrowser Tools__ProjectCheckerBrowser stx:libtool 'System-Support-Projects' 1
--- a/bc.mak	Sun Jan 27 02:50:59 2013 +0100
+++ b/bc.mak	Wed Jan 30 11:15:09 2013 +0000
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libtool/bc.mak,v 1.120 2012-12-11 14:37:03 cg Exp $
+# $Header$
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libtool.
@@ -37,7 +37,7 @@
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser -I$(INCLUDE_TOP)\stx\libui -I$(INCLUDE_TOP)\stx\libview -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libwidg -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libwidg2 -I$(INCLUDE_TOP)\stx\libwidg3 -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic3 -I$(INCLUDE_TOP)\stx\libboss -I$(INCLUDE_TOP)\stx\libcomp
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\parser -I$(INCLUDE_TOP)\stx\libwidg -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libview -I$(INCLUDE_TOP)\stx\libhtml -I$(INCLUDE_TOP)\stx\libcomp -I$(INCLUDE_TOP)\stx\libboss -I$(INCLUDE_TOP)\stx\libwidg2 -I$(INCLUDE_TOP)\stx\libbasic3 -I$(INCLUDE_TOP)\stx\libui
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) $(COMMONSYMBOLS) -varPrefix=$(LIBNAME)
@@ -53,24 +53,32 @@
 
 # build all prerequisite packages for this package
 prereq:
-	pushd ..\libwidg3 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\goodies\refactoryBrowser\parser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\libdb\libodbc & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libcomp & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-	pushd ..\libbasic3 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\libdb & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libboss & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\libdb\libsqlite & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\goodies\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libui & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\libbasic3 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libwidg & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\libhtml & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 	pushd ..\libwidg2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
-#        pushd ..\librun & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\librun & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
 
 
 
 
 
+
+test: $(TOP)\goodies\builder\reports\NUL
+	pushd $(TOP)\goodies\builder\reports & $(MAKE_BAT)
+	$(TOP)\goodies\builder\reports\report-runner.bat -D . -r Builder::TestReport -p $(PACKAGE)
+
 # BEGINMAKEDEPEND --- do not remove this line; make depend needs it
 $(OUTDIR)AboutBox.$(O) AboutBox.$(H): AboutBox.st $(INCLUDE_TOP)\stx\libwidg\InfoBox.$(H) $(INCLUDE_TOP)\stx\libwidg\DialogBox.$(H) $(INCLUDE_TOP)\stx\libview\ModalBox.$(H) $(INCLUDE_TOP)\stx\libview\StandardSystemView.$(H) $(INCLUDE_TOP)\stx\libview\TopView.$(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) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)AbstractFileApplicationNoteBookComponent.$(O) AbstractFileApplicationNoteBookComponent.$(H): AbstractFileApplicationNoteBookComponent.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -90,6 +98,10 @@
 $(OUTDIR)CodeGeneratorTool.$(O) CodeGeneratorTool.$(H): CodeGeneratorTool.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)DebugView.$(O) DebugView.$(H): DebugView.st $(INCLUDE_TOP)\stx\libview\StandardSystemView.$(H) $(INCLUDE_TOP)\stx\libview\TopView.$(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) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Diff.$(O) Diff.$(H): Diff.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\Link.$(H) $(STCHDR)
+$(OUTDIR)Diff2.$(O) Diff2.$(H): Diff2.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Diff3.$(O) Diff3.$(H): Diff3.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Diff3Hunk.$(O) Diff3Hunk.$(H): Diff3Hunk.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Diff3InclusiveVisitor.$(O) Diff3InclusiveVisitor.$(H): Diff3InclusiveVisitor.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)DiffListUtility.$(O) DiffListUtility.$(H): DiffListUtility.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)DiffTextView.$(O) DiffTextView.$(H): DiffTextView.st $(INCLUDE_TOP)\stx\libwidg2\TwoColumnTextView.$(H) $(INCLUDE_TOP)\stx\libwidg2\SyncedMultiColumnTextView.$(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)EditFieldWithCompletion.$(O) EditFieldWithCompletion.$(H): EditFieldWithCompletion.st $(INCLUDE_TOP)\stx\libwidg\EditField.$(H) $(INCLUDE_TOP)\stx\libwidg\EditTextView.$(H) $(INCLUDE_TOP)\stx\libwidg\TextView.$(H) $(INCLUDE_TOP)\stx\libwidg\ListView.$(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) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -104,9 +116,9 @@
 $(OUTDIR)MemoryMonitor.$(O) MemoryMonitor.$(H): MemoryMonitor.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)MemoryMonitorView.$(O) MemoryMonitorView.$(H): MemoryMonitorView.st $(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) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)MultiViewToolApplication.$(O) MultiViewToolApplication.$(H): MultiViewToolApplication.st $(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)ParseTreeIndex.$(O) ParseTreeIndex.$(H): ParseTreeIndex.st $(INCLUDE_TOP)\stx\libbasic\SortedCollection.$(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) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(STCHDR)
 $(OUTDIR)PerforceSourceCodeManagerUtilities.$(O) PerforceSourceCodeManagerUtilities.$(H): PerforceSourceCodeManagerUtilities.st $(INCLUDE_TOP)\stx\libbasic3\SourceCodeManagerUtilities.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\SimpleDialog.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(STCHDR)
 $(OUTDIR)ProcessMonitorV2.$(O) ProcessMonitorV2.$(H): ProcessMonitorV2.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(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\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)SyntaxElement.$(O) SyntaxElement.$(H): SyntaxElement.st $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SyntaxHighlighter2.$(O) SyntaxHighlighter2.$(H): SyntaxHighlighter2.st $(INCLUDE_TOP)\stx\libcomp\SyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\Parser.$(H) $(INCLUDE_TOP)\stx\libcomp\Scanner.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SystemBrowser.$(O) SystemBrowser.$(H): SystemBrowser.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -116,11 +128,12 @@
 $(OUTDIR)Tools__BrowsletCanvas.$(O) Tools__BrowsletCanvas.$(H): Tools__BrowsletCanvas.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__CachedTags.$(O) Tools__CachedTags.$(H): Tools__CachedTags.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__ChangeSetBrowser2.$(O) Tools__ChangeSetBrowser2.$(H): Tools__ChangeSetBrowser2.st $(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)Tools__ChangeSetDiffInfo.$(O) Tools__ChangeSetDiffInfo.$(H): Tools__ChangeSetDiffInfo.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__ChangeSetDiffTool.$(O) Tools__ChangeSetDiffTool.$(H): Tools__ChangeSetDiffTool.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libview2\SimpleDialog.$(H) $(STCHDR)
 $(OUTDIR)Tools__ChangeSetSelectionDialog.$(O) Tools__ChangeSetSelectionDialog.$(H): Tools__ChangeSetSelectionDialog.st $(INCLUDE_TOP)\stx\libview2\SimpleDialog.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__ChangeSetSpec.$(O) Tools__ChangeSetSpec.$(H): Tools__ChangeSetSpec.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__CheckinInfoDialog.$(O) Tools__CheckinInfoDialog.$(H): Tools__CheckinInfoDialog.st $(INCLUDE_TOP)\stx\libview2\SimpleDialog.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Tools_ClassChecker.$(O) Tools_ClassChecker.$(H): Tools_ClassChecker.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__ClassChecker.$(O) Tools__ClassChecker.$(H): Tools__ClassChecker.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__ClassSorter.$(O) Tools__ClassSorter.$(H): Tools__ClassSorter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__CodeCompletionMenu.$(O) Tools__CodeCompletionMenu.$(H): Tools__CodeCompletionMenu.st $(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) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__CodeCritics.$(O) Tools__CodeCritics.$(H): Tools__CodeCritics.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -131,14 +144,15 @@
 $(OUTDIR)Tools__InlineMessageDialog.$(O) Tools__InlineMessageDialog.$(H): Tools__InlineMessageDialog.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__Inspector2.$(O) Tools__Inspector2.$(H): Tools__Inspector2.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__Inspector2Tab.$(O) Tools__Inspector2Tab.$(H): Tools__Inspector2Tab.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__LintAnnotation.$(O) Tools__LintAnnotation.$(H): Tools__LintAnnotation.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__LintHighlighter.$(O) Tools__LintHighlighter.$(H): Tools__LintHighlighter.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__LintRuleDetail.$(O) Tools__LintRuleDetail.$(H): Tools__LintRuleDetail.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__LintRuleSelectionDialog.$(O) Tools__LintRuleSelectionDialog.$(H): Tools__LintRuleSelectionDialog.st $(INCLUDE_TOP)\stx\libview2\SimpleDialog.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__MethodCategoryCache.$(O) Tools__MethodCategoryCache.$(H): Tools__MethodCategoryCache.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__MethodRewriter.$(O) Tools__MethodRewriter.$(H): Tools__MethodRewriter.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__NavigationHistory.$(O) Tools__NavigationHistory.$(H): Tools__NavigationHistory.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Tools_NavigationState.$(O) Tools_NavigationState.$(H): Tools_NavigationState.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Tools_NavigatorModel.$(O) Tools_NavigatorModel.$(H): Tools_NavigatorModel.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__NavigationState.$(O) Tools__NavigationState.$(H): Tools__NavigationState.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__NavigatorModel.$(O) Tools__NavigatorModel.$(H): Tools__NavigatorModel.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__NewClassWizardDialog.$(O) Tools__NewClassWizardDialog.$(H): Tools__NewClassWizardDialog.st $(INCLUDE_TOP)\stx\libview2\SimpleDialog.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__NewSystemBrowserCodeView.$(O) Tools__NewSystemBrowserCodeView.$(H): Tools__NewSystemBrowserCodeView.st $(INCLUDE_TOP)\stx\libwidg\CodeView.$(H) $(INCLUDE_TOP)\stx\libwidg\Workspace.$(H) $(INCLUDE_TOP)\stx\libwidg\TextCollector.$(H) $(INCLUDE_TOP)\stx\libwidg\EditTextView.$(H) $(INCLUDE_TOP)\stx\libwidg\TextView.$(H) $(INCLUDE_TOP)\stx\libwidg\ListView.$(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) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__Profiler.$(O) Tools__Profiler.$(H): Tools__Profiler.st $(INCLUDE_TOP)\stx\libbasic3\MessageTally.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -146,15 +160,16 @@
 $(OUTDIR)Tools__ProfilerInfoItem.$(O) Tools__ProfilerInfoItem.$(H): Tools__ProfilerInfoItem.st $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__ProjectCheckerBrowser.$(O) Tools__ProjectCheckerBrowser.$(H): Tools__ProjectCheckerBrowser.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__ProjectLoader.$(O) Tools__ProjectLoader.$(H): Tools__ProjectLoader.st $(INCLUDE_TOP)\stx\libview2\SimpleDialog.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Tools_SearchDialog.$(O) Tools_SearchDialog.$(H): Tools_SearchDialog.st $(INCLUDE_TOP)\stx\libwidg\DialogBox.$(H) $(INCLUDE_TOP)\stx\libview\ModalBox.$(H) $(INCLUDE_TOP)\stx\libview\StandardSystemView.$(H) $(INCLUDE_TOP)\stx\libview\TopView.$(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) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__SearchDialog.$(O) Tools__SearchDialog.$(H): Tools__SearchDialog.st $(INCLUDE_TOP)\stx\libwidg\DialogBox.$(H) $(INCLUDE_TOP)\stx\libview\ModalBox.$(H) $(INCLUDE_TOP)\stx\libview\StandardSystemView.$(H) $(INCLUDE_TOP)\stx\libview\TopView.$(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) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__SmalltalkDiffTool.$(O) Tools__SmalltalkDiffTool.$(H): Tools__SmalltalkDiffTool.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__SourceCodeManagerConfigurationTestTool.$(O) Tools__SourceCodeManagerConfigurationTestTool.$(H): Tools__SourceCodeManagerConfigurationTestTool.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Tools_SpecialCodeView.$(O) Tools_SpecialCodeView.$(H): Tools_SpecialCodeView.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Tools__SpecialCodeView.$(O) Tools__SpecialCodeView.$(H): Tools__SpecialCodeView.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__StringSearchTool.$(O) Tools__StringSearchTool.$(H): Tools__StringSearchTool.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__Tag.$(O) Tools__Tag.$(H): Tools__Tag.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(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)
@@ -166,6 +181,7 @@
 $(OUTDIR)BookmarkMenuBuilder.$(O) BookmarkMenuBuilder.$(H): BookmarkMenuBuilder.st $(INCLUDE_TOP)\stx\libtool\BookmarkVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)ContextInspectorView.$(O) ContextInspectorView.$(H): ContextInspectorView.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)DictionaryInspectorView.$(O) DictionaryInspectorView.$(H): DictionaryInspectorView.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)Diff3ExclusiveVisitor.$(O) Diff3ExclusiveVisitor.$(H): Diff3ExclusiveVisitor.st $(INCLUDE_TOP)\stx\libtool\Diff3InclusiveVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)DiffCodeView.$(O) DiffCodeView.$(H): DiffCodeView.st $(INCLUDE_TOP)\stx\libtool\DiffTextView.$(H) $(INCLUDE_TOP)\stx\libwidg2\TwoColumnTextView.$(H) $(INCLUDE_TOP)\stx\libwidg2\SyncedMultiColumnTextView.$(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)FileApplicationNoteBook.$(O) FileApplicationNoteBook.$(H): FileApplicationNoteBook.st $(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\libtool\AbstractFileApplicationNoteBookComponent.$(H) $(STCHDR)
 $(OUTDIR)FileBrowserV2.$(O) FileBrowserV2.$(H): FileBrowserV2.st $(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)
@@ -175,21 +191,26 @@
 $(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\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)
-$(OUTDIR)Tools_BrowserList.$(O) Tools_BrowserList.$(H): Tools_BrowserList.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) $(STCHDR)
+$(OUTDIR)Tools__BrowserList.$(O) Tools__BrowserList.$(H): Tools__BrowserList.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) $(STCHDR)
 $(OUTDIR)Tools__CodeCompletionService.$(O) Tools__CodeCompletionService.$(H): Tools__CodeCompletionService.st $(INCLUDE_TOP)\stx\libtool\Tools__CodeViewService.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__CodeNavigationService.$(O) Tools__CodeNavigationService.$(H): Tools__CodeNavigationService.st $(INCLUDE_TOP)\stx\libtool\Tools__CodeViewService.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Tools__CodeView2SettingsAppl.$(O) Tools__CodeView2SettingsAppl.$(H): Tools__CodeView2SettingsAppl.st $(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)Tools__Diff2CodeView2.$(O) Tools__Diff2CodeView2.$(H): Tools__Diff2CodeView2.st $(INCLUDE_TOP)\stx\libtool\Tools__DiffCodeView2.$(H) $(INCLUDE_TOP)\stx\libwidg2\TwoColumnTextView.$(H) $(INCLUDE_TOP)\stx\libwidg2\SyncedMultiColumnTextView.$(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)Tools__Diff3CodeView2.$(O) Tools__Diff3CodeView2.$(H): Tools__Diff3CodeView2.st $(INCLUDE_TOP)\stx\libtool\Tools__DiffCodeView2.$(H) $(INCLUDE_TOP)\stx\libwidg2\TwoColumnTextView.$(H) $(INCLUDE_TOP)\stx\libwidg2\SyncedMultiColumnTextView.$(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)Tools__LintService.$(O) Tools__LintService.$(H): Tools__LintService.st $(INCLUDE_TOP)\stx\libtool\Tools__CodeViewService.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Tools_NavigatorCanvas.$(O) Tools_NavigatorCanvas.$(H): Tools_NavigatorCanvas.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) $(STCHDR)
+$(OUTDIR)Tools__NavigatorCanvas.$(O) Tools__NavigatorCanvas.$(H): Tools__NavigatorCanvas.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) $(STCHDR)
 $(OUTDIR)Tools__NewSystemBrowser.$(O) Tools__NewSystemBrowser.$(H): Tools__NewSystemBrowser.st $(INCLUDE_TOP)\stx\libtool\SystemBrowser.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Tools_OrganizerCanvas.$(O) Tools_OrganizerCanvas.$(H): Tools_OrganizerCanvas.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) $(STCHDR)
+$(OUTDIR)Tools__OrganizerCanvas.$(O) Tools__OrganizerCanvas.$(H): Tools__OrganizerCanvas.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) $(STCHDR)
 $(OUTDIR)Tools__SendersBrowslet.$(O) Tools__SendersBrowslet.$(H): Tools__SendersBrowslet.st $(INCLUDE_TOP)\stx\libtool\Tools__Browslet.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(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__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)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) $(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)
 $(OUTDIR)BookmarkToolbarMenuBuilder.$(O) BookmarkToolbarMenuBuilder.$(H): BookmarkToolbarMenuBuilder.st $(INCLUDE_TOP)\stx\libtool\BookmarkMenuBuilder.$(H) $(INCLUDE_TOP)\stx\libtool\BookmarkVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -199,36 +220,37 @@
 $(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)GitSourceCodeManagementSettingsAppl.$(O) GitSourceCodeManagementSettingsAppl.$(H): GitSourceCodeManagementSettingsAppl.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)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)
 $(OUTDIR)StoreSourceCodeManagementSettingsAppl.$(O) StoreSourceCodeManagementSettingsAppl.$(H): StoreSourceCodeManagementSettingsAppl.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)Tools__BrowserListWithFilter.$(O) Tools__BrowserListWithFilter.$(H): Tools__BrowserListWithFilter.st $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_ClassCategoryList.$(O) Tools_ClassCategoryList.$(H): Tools_ClassCategoryList.st $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_ClassGeneratorList.$(O) Tools_ClassGeneratorList.$(H): Tools_ClassGeneratorList.st $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_ClassList.$(O) Tools_ClassList.$(H): Tools_ClassList.st $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__BrowserListWithFilter.$(O) Tools__BrowserListWithFilter.$(H): Tools__BrowserListWithFilter.st $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__ClassCategoryList.$(O) Tools__ClassCategoryList.$(H): Tools__ClassCategoryList.st $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__ClassGeneratorList.$(O) Tools__ClassGeneratorList.$(H): Tools__ClassGeneratorList.st $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__ClassList.$(O) Tools__ClassList.$(H): Tools__ClassList.st $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
 $(OUTDIR)Tools__CodeHighlightingService.$(O) Tools__CodeHighlightingService.$(H): Tools__CodeHighlightingService.st $(INCLUDE_TOP)\stx\libtool\Tools__BackgroundSourceProcessingService.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__CodeViewService.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)Tools__LintRuleList.$(O) Tools__LintRuleList.$(H): Tools__LintRuleList.st $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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)Tools_MethodCategoryList.$(O) Tools_MethodCategoryList.$(H): Tools_MethodCategoryList.st $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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\libbasic\Method.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(STCHDR)
-$(OUTDIR)Tools_MethodList.$(O) Tools_MethodList.$(H): Tools_MethodList.st $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_NamespaceList.$(O) Tools_NamespaceList.$(H): Tools_NamespaceList.st $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_ProjectList.$(O) Tools_ProjectList.$(H): Tools_ProjectList.st $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools__VariableList.$(O) Tools__VariableList.$(H): Tools__VariableList.st $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools__ChangeList.$(O) Tools__ChangeList.$(H): Tools__ChangeList.st $(INCLUDE_TOP)\stx\libtool\Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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)Tools__ChangeSetDiffList.$(O) Tools__ChangeSetDiffList.$(H): Tools__ChangeSetDiffList.st $(INCLUDE_TOP)\stx\libtool\Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_FullMethodCategoryList.$(O) Tools_FullMethodCategoryList.$(H): Tools_FullMethodCategoryList.st $(INCLUDE_TOP)\stx\libtool\Tools_MethodCategoryList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_HierarchicalClassCategoryList.$(O) Tools_HierarchicalClassCategoryList.$(H): Tools_HierarchicalClassCategoryList.st $(INCLUDE_TOP)\stx\libtool\Tools_ClassCategoryList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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\HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
-$(OUTDIR)Tools_HierarchicalClassList.$(O) Tools_HierarchicalClassList.$(H): Tools_HierarchicalClassList.st $(INCLUDE_TOP)\stx\libtool\Tools_ClassList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools__HierarchicalLintRuleList.$(O) Tools__HierarchicalLintRuleList.$(H): Tools__HierarchicalLintRuleList.st $(INCLUDE_TOP)\stx\libtool\Tools__LintRuleList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_HierarchicalProjectList.$(O) Tools_HierarchicalProjectList.$(H): Tools_HierarchicalProjectList.st $(INCLUDE_TOP)\stx\libtool\Tools_ProjectList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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\HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
-$(OUTDIR)Tools_ImplementingClassList.$(O) Tools_ImplementingClassList.$(H): Tools_ImplementingClassList.st $(INCLUDE_TOP)\stx\libtool\Tools_MethodList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools_ImplementingMethodList.$(O) Tools_ImplementingMethodList.$(H): Tools_ImplementingMethodList.st $(INCLUDE_TOP)\stx\libtool\Tools_MethodList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools__NamespaceFilter.$(O) Tools__NamespaceFilter.$(H): Tools__NamespaceFilter.st $(INCLUDE_TOP)\stx\libtool\Tools_NamespaceList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools__TestRunner2.$(O) Tools__TestRunner2.$(H): Tools__TestRunner2.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) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_ClassList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_NavigatorModel.$(H) $(STCHDR)
-$(OUTDIR)Tools__HierarchicalChangeList.$(O) Tools__HierarchicalChangeList.$(H): Tools__HierarchicalChangeList.st $(INCLUDE_TOP)\stx\libtool\Tools__ChangeList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)Tools__HierarchicalPackageFilterList.$(O) Tools__HierarchicalPackageFilterList.$(H): Tools__HierarchicalPackageFilterList.st $(INCLUDE_TOP)\stx\libtool\Tools_HierarchicalProjectList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_ProjectList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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\HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
-$(OUTDIR)Tools_InheritanceClassList.$(O) Tools_InheritanceClassList.$(H): Tools_InheritanceClassList.st $(INCLUDE_TOP)\stx\libtool\Tools_HierarchicalClassList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_ClassList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools_BrowserList.$(H) $(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) $(STCHDR)
-$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libcomp\Breakpoint.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libcomp\BreakpointDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic3\Change.$(H) $(INCLUDE_TOP)\stx\libbasic3\ChangeSet.$(H) $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Character.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libview\Color.$(H) $(INCLUDE_TOP)\stx\libbasic3\CompositeChange.$(H) $(INCLUDE_TOP)\stx\libbasic\Date.$(H) $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libwidg\EditTextView.$(H) $(INCLUDE_TOP)\stx\libwidg\TextView.$(H) $(INCLUDE_TOP)\stx\libwidg\ListView.$(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) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libview\Form.$(H) $(INCLUDE_TOP)\stx\libview\Image.$(H) $(INCLUDE_TOP)\stx\libbasic\Integer.$(H) $(INCLUDE_TOP)\stx\libbasic\Number.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticValue.$(H) $(INCLUDE_TOP)\stx\libwidg\MenuView.$(H) $(INCLUDE_TOP)\stx\libwidg\SelectionInListView.$(H) $(INCLUDE_TOP)\stx\libbasic\Method.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\MethodDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\KeyedCollection.$(H) $(INCLUDE_TOP)\stx\libwidg\PopUpMenu.$(H) $(INCLUDE_TOP)\stx\libview\PopUpView.$(H) $(INCLUDE_TOP)\stx\libview\TopView.$(H) $(INCLUDE_TOP)\stx\libbasic3\ProfileTree.$(H) $(INCLUDE_TOP)\stx\libbasic2\RunArray.$(H) $(INCLUDE_TOP)\stx\libwidg2\SelectionInListModelView.$(H) $(INCLUDE_TOP)\stx\libwidg2\ListModelView.$(H) $(INCLUDE_TOP)\stx\libbasic\StringCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Symbol.$(H) $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic2\Text.$(H) $(INCLUDE_TOP)\stx\libbasic\Timestamp.$(H) $(INCLUDE_TOP)\stx\libbasic\AbstractTime.$(H) $(INCLUDE_TOP)\stx\libbasic\UserPreferences.$(H) $(INCLUDE_TOP)\stx\libbasic\IdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libcomp\AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\Parser.$(H) $(INCLUDE_TOP)\stx\libcomp\Scanner.$(H) $(INCLUDE_TOP)\stx\libwidg\GenericToolbarIconLibrary.$(H) $(INCLUDE_TOP)\stx\libbasic\NameSpace.$(H) $(INCLUDE_TOP)\stx\libbasic\Smalltalk.$(H) $(STCHDR)
+$(OUTDIR)Tools__LintRuleList.$(O) Tools__LintRuleList.$(H): Tools__LintRuleList.st $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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)Tools__MethodCategoryList.$(O) Tools__MethodCategoryList.$(H): Tools__MethodCategoryList.st $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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\libbasic\Method.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(STCHDR)
+$(OUTDIR)Tools__MethodList.$(O) Tools__MethodList.$(H): Tools__MethodList.st $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__NamespaceList.$(O) Tools__NamespaceList.$(H): Tools__NamespaceList.st $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__ProjectList.$(O) Tools__ProjectList.$(H): Tools__ProjectList.st $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__VariableList.$(O) Tools__VariableList.$(H): Tools__VariableList.st $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__ChangeList.$(O) Tools__ChangeList.$(H): Tools__ChangeList.st $(INCLUDE_TOP)\stx\libtool\Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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)Tools__ChangeSetDiffList.$(O) Tools__ChangeSetDiffList.$(H): Tools__ChangeSetDiffList.st $(INCLUDE_TOP)\stx\libtool\Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__FullMethodCategoryList.$(O) Tools__FullMethodCategoryList.$(H): Tools__FullMethodCategoryList.st $(INCLUDE_TOP)\stx\libtool\Tools__MethodCategoryList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__HierarchicalClassCategoryList.$(O) Tools__HierarchicalClassCategoryList.$(H): Tools__HierarchicalClassCategoryList.st $(INCLUDE_TOP)\stx\libtool\Tools__ClassCategoryList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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\HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)Tools__HierarchicalClassList.$(O) Tools__HierarchicalClassList.$(H): Tools__HierarchicalClassList.st $(INCLUDE_TOP)\stx\libtool\Tools__ClassList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__HierarchicalLintRuleList.$(O) Tools__HierarchicalLintRuleList.$(H): Tools__HierarchicalLintRuleList.st $(INCLUDE_TOP)\stx\libtool\Tools__LintRuleList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__HierarchicalProjectList.$(O) Tools__HierarchicalProjectList.$(H): Tools__HierarchicalProjectList.st $(INCLUDE_TOP)\stx\libtool\Tools__ProjectList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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\HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)Tools__ImplementingClassList.$(O) Tools__ImplementingClassList.$(H): Tools__ImplementingClassList.st $(INCLUDE_TOP)\stx\libtool\Tools__MethodList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__ImplementingMethodList.$(O) Tools__ImplementingMethodList.$(H): Tools__ImplementingMethodList.st $(INCLUDE_TOP)\stx\libtool\Tools__MethodList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__NamespaceFilter.$(O) Tools__NamespaceFilter.$(H): Tools__NamespaceFilter.st $(INCLUDE_TOP)\stx\libtool\Tools__NamespaceList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__TestRunner2.$(O) Tools__TestRunner2.$(H): Tools__TestRunner2.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) $(INCLUDE_TOP)\stx\libtool\Tools__ClassList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__NavigatorModel.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)Tools__HierarchicalChangeList.$(O) Tools__HierarchicalChangeList.$(H): Tools__HierarchicalChangeList.st $(INCLUDE_TOP)\stx\libtool\Tools__ChangeList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserListWithFilter.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)Tools__HierarchicalPackageFilterList.$(O) Tools__HierarchicalPackageFilterList.$(H): Tools__HierarchicalPackageFilterList.st $(INCLUDE_TOP)\stx\libtool\Tools__HierarchicalProjectList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__ProjectList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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\HierarchicalItemWithLabel.$(H) $(INCLUDE_TOP)\stx\libwidg2\HierarchicalItem.$(H) $(STCHDR)
+$(OUTDIR)Tools__InheritanceClassList.$(O) Tools__InheritanceClassList.$(H): Tools__InheritanceClassList.st $(INCLUDE_TOP)\stx\libtool\Tools__HierarchicalClassList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__ClassList.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__BrowserList.$(H) $(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) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libcomp\Breakpoint.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libcomp\BreakpointDescription.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic3\Change.$(H) $(INCLUDE_TOP)\stx\libbasic3\ChangeSet.$(H) $(INCLUDE_TOP)\stx\libbasic\OrderedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Character.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libview\Color.$(H) $(INCLUDE_TOP)\stx\libbasic3\CompositeChange.$(H) $(INCLUDE_TOP)\stx\libbasic\Date.$(H) $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libwidg\EditTextView.$(H) $(INCLUDE_TOP)\stx\libwidg\TextView.$(H) $(INCLUDE_TOP)\stx\libwidg\ListView.$(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) $(INCLUDE_TOP)\stx\libbasic\ExecutableFunction.$(H) $(INCLUDE_TOP)\stx\libview\Form.$(H) $(INCLUDE_TOP)\stx\libview\Image.$(H) $(INCLUDE_TOP)\stx\libbasic\Integer.$(H) $(INCLUDE_TOP)\stx\libbasic\Number.$(H) $(INCLUDE_TOP)\stx\libbasic\ArithmeticValue.$(H) $(INCLUDE_TOP)\stx\libwidg\MenuView.$(H) $(INCLUDE_TOP)\stx\libwidg\SelectionInListView.$(H) $(INCLUDE_TOP)\stx\libbasic\Method.$(H) $(INCLUDE_TOP)\stx\libbasic\CompiledCode.$(H) $(INCLUDE_TOP)\stx\libbasic\MethodDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\KeyedCollection.$(H) $(INCLUDE_TOP)\stx\libwidg\PopUpMenu.$(H) $(INCLUDE_TOP)\stx\libview\PopUpView.$(H) $(INCLUDE_TOP)\stx\libview\TopView.$(H) $(INCLUDE_TOP)\stx\libbasic3\ProfileTree.$(H) $(INCLUDE_TOP)\stx\libbasic2\RunArray.$(H) $(INCLUDE_TOP)\stx\libwidg2\SelectionInListModelView.$(H) $(INCLUDE_TOP)\stx\libwidg2\ListModelView.$(H) $(INCLUDE_TOP)\stx\libbasic\StringCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Symbol.$(H) $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic2\Text.$(H) $(INCLUDE_TOP)\stx\libbasic\Timestamp.$(H) $(INCLUDE_TOP)\stx\libbasic\AbstractTime.$(H) $(INCLUDE_TOP)\stx\libbasic\UserPreferences.$(H) $(INCLUDE_TOP)\stx\libbasic\IdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libcomp\AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\Parser.$(H) $(INCLUDE_TOP)\stx\libcomp\Scanner.$(H) $(INCLUDE_TOP)\stx\libwidg\GenericToolbarIconLibrary.$(H) $(INCLUDE_TOP)\stx\libbasic\NameSpace.$(H) $(INCLUDE_TOP)\stx\libbasic\Block.$(H) $(INCLUDE_TOP)\stx\libbasic\LimitedPrecisionReal.$(H) $(INCLUDE_TOP)\stx\libbasic\UndefinedObject.$(H) $(INCLUDE_TOP)\stx\libbasic\Behavior.$(H) $(INCLUDE_TOP)\stx\libbasic2\Iterator.$(H) $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
--- a/bmake.bat	Sun Jan 27 02:50:59 2013 +0100
+++ b/bmake.bat	Wed Jan 30 11:15:09 2013 +0000
@@ -1,8 +1,12 @@
 @REM -------
-@REM make using borland bcc
+@REM make using Borland bcc32
 @REM type bmake, and wait...
 @REM do not edit - automatically generated from ProjectDefinition
 @REM -------
-make.exe -N -f bc.mak %*
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+make.exe -N -f bc.mak  %DEFINES% %*
 
 
--- a/extensions.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/extensions.st	Wed Jan 30 11:15:09 2013 +0000
@@ -9,7 +9,6 @@
     "Created: / 25-07-2010 / 08:57:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (format): / 04-10-2011 / 19:47:20 / cg"
 ! !
-
 !AbstractSyntaxHighlighter class methodsFor:'api highlighting'!
 
 formatMethod:aString in:aClass using:preferencesOrNil elementsInto: elements
@@ -18,7 +17,6 @@
 
     "Created: / 25-07-2010 / 08:58:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !ArrayedCollection methodsFor:'inspecting'!
 
 inspector2TabForHexDump
@@ -86,7 +84,6 @@
 
     "Created: / 13-02-2012 / 15:08:42 / cg"
 ! !
-
 !Behavior methodsFor:'inspecting'!
 
 inspectorExtraAttributes
@@ -112,7 +109,6 @@
     ].
     ^ super inspectorValueStringInListFor:anInspector
 ! !
-
 !Block methodsFor:'inspecting'!
 
 inspectorExtraAttributes
@@ -134,7 +130,6 @@
 
     "Created: / 15-11-2011 / 14:24:10 / cg"
 ! !
-
 !Breakpoint methodsFor:'accessing'!
 
 icon
@@ -143,7 +138,6 @@
 
     "Created: / 11-07-2011 / 18:21:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !BreakpointDescription methodsFor:'accessing'!
 
 icon
@@ -167,7 +161,6 @@
     "Created: / 28-06-2011 / 08:29:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 27-01-2012 / 13:46:23 / cg"
 ! !
-
 !ByteArray methodsFor:'inspecting'!
 
 inspectorExtraAttributes
@@ -196,13 +189,11 @@
     "Created: / 18-09-2006 / 21:29:59 / cg"
     "Modified: / 06-10-2006 / 13:57:20 / cg"
 ! !
-
 !Change methodsFor:'private'!
 
 flattenOnto: aCollection 
 	aCollection add: self
 ! !
-
 !Change methodsFor:'private'!
 
 flattenedChanges
@@ -211,7 +202,6 @@
 	self flattenOnto: changes.
 	^changes
 ! !
-
 !Change methodsFor:'accessing'!
 
 removed
@@ -220,7 +210,6 @@
 
     "Created: / 24-10-2009 / 21:10:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !Change methodsFor:'accessing'!
 
 removed: aBoolean
@@ -229,7 +218,6 @@
 
     "Created: / 24-10-2009 / 21:11:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !ChangeSet methodsFor:'utilities'!
 
 condenseChangesForRemoved
@@ -251,7 +239,18 @@
     "Created: / 05-11-2001 / 14:21:17 / cg"
     "Modified: / 12-10-2006 / 16:51:27 / cg"
 ! !
+!ChangeSet methodsFor:'private'!
 
+! !
+!ChangeSet methodsFor:'private'!
+
+! !
+!ChangeSet methodsFor:'inspecting'!
+
+! !
+!ChangeSet methodsFor:'inspecting'!
+
+! !
 !Character methodsFor:'inspecting'!
 
 inspectorExtraAttributes
@@ -271,7 +270,6 @@
 
     "Created: / 22-10-2006 / 03:52:20 / cg"
 ! !
-
 !Character methodsFor:'inspecting'!
 
 inspectorValueStringInListFor:anInspector
@@ -282,7 +280,6 @@
     ].
     ^ self storeString,(' "%1"' bindWith:asciivalue)
 ! !
-
 !CharacterArray methodsFor:'inspecting'!
 
 inspector2TabBytes
@@ -297,7 +294,6 @@
     "Created: / 20-07-2011 / 16:36:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 21-08-2011 / 07:32:57 / cg"
 ! !
-
 !CharacterArray methodsFor:'inspecting'!
 
 inspector2TabHTML
@@ -310,7 +306,6 @@
     "Created: / 17-02-2008 / 10:10:50 / janfrog"
     "Created: / 07-11-2011 / 12:35:15 / cg"
 ! !
-
 !CharacterArray methodsFor:'inspecting'!
 
 inspector2TabText
@@ -323,7 +318,6 @@
     "Created: / 17-02-2008 / 10:10:50 / janfrog"
     "Modified: / 21-08-2011 / 08:02:57 / cg"
 ! !
-
 !CharacterArray methodsFor:'inspecting'!
 
 inspector2Tabs
@@ -336,7 +330,6 @@
 
     "Created: / 05-07-2011 / 13:40:27 / cg"
 ! !
-
 !CharacterArray methodsFor:'inspecting'!
 
 inspectorExtraAttributes
@@ -361,7 +354,6 @@
 
     "Created: / 22-10-2006 / 03:52:20 / cg"
 ! !
-
 !CharacterArray methodsFor:'inspecting'!
 
 inspectorValueStringInListFor:anInspector
@@ -369,7 +361,6 @@
 
     ^ self basicStoreString contractTo:30.
 ! !
-
 !Collection methodsFor:'inspecting'!
 
 inspectorValueStringInListFor:anInspector
@@ -382,7 +373,6 @@
     ].
     ^ (super inspectorValueStringInListFor:anInspector),' size=',sz printString
 ! !
-
 !Color methodsFor:'inspecting'!
 
 inspectorClass
@@ -393,7 +383,6 @@
 
     "Modified: 23.4.1996 / 13:39:50 / cg"
 ! !
-
 !Color methodsFor:'inspecting'!
 
 inspectorExtraAttributes
@@ -409,7 +398,6 @@
      Color red inspect
     "
 ! !
-
 !Color methodsFor:'inspecting'!
 
 inspectorValueStringInListFor:anInspector
@@ -417,35 +405,30 @@
 
     ^ self htmlPrintString
 ! !
-
 !CompositeChange methodsFor:'utilities'!
 
 condenseChangesForRemoved
 
     self changes condenseChangesForRemoved
 ! !
-
 !CompositeChange methodsFor:'private'!
 
 flattenOnto: aCollection
 
     changes do:[:change|change flattenOnto: aCollection]
 ! !
-
 !CompositeChange methodsFor:'accessing'!
 
 removed
 
     ^changes allSatisfy: [:e|e removed]
 ! !
-
 !CompositeChange methodsFor:'accessing'!
 
 removed: aBoolean
 
     changes do:[:e|e removed: aBoolean]
 ! !
-
 !Date methodsFor:'inspecting'!
 
 inspectorExtraAttributes
@@ -466,7 +449,6 @@
 
     "Created: / 20-01-2011 / 12:19:05 / cg"
 ! !
-
 !Dictionary methodsFor:'inspecting'!
 
 inspector2TabLabel
@@ -474,7 +456,6 @@
 
     "Created: / 14-07-2011 / 11:57:18 / cg"
 ! !
-
 !Dictionary methodsFor:'inspecting'!
 
 inspectorClass
@@ -483,7 +464,6 @@
 
     ^ DictionaryInspectorView
 ! !
-
 !EditTextView methodsFor:'accessing-dimensions'!
 
 absoluteXOfPosition:positionInText 
@@ -501,7 +481,6 @@
 
     "Created: / 16-02-2010 / 10:05:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !EditTextView methodsFor:'accessing-dimensions'!
 
 absoluteYOfCursor
@@ -520,7 +499,6 @@
     "Created: / 27-05-2005 / 07:45:53 / janfrog"
     "Modified: / 27-05-2005 / 23:03:40 / janfrog"
 ! !
-
 !EditTextView methodsFor:'accessing-dimensions'!
 
 xOfPosition: positionInText
@@ -534,7 +512,6 @@
 
     "Created: / 16-02-2010 / 10:04:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !EditTextView methodsFor:'accessing-dimensions'!
 
 yOfCursor
@@ -543,7 +520,6 @@
 
     "Created: / 27-05-2005 / 07:43:41 / janfrog"
 ! !
-
 !EditTextView methodsFor:'accessing-dimensions'!
 
 yOfPosition: positionInText
@@ -554,7 +530,6 @@
 
     "Created: / 16-02-2010 / 10:08:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !ExecutableFunction methodsFor:'printing & storing'!
 
 printStringForBrowserWithSelector:selector
@@ -562,7 +537,6 @@
 
     ^ self printStringForBrowserWithSelector:selector inClass:nil
 ! !
-
 !Form methodsFor:'inspecting'!
 
 inspectorClass
@@ -571,7 +545,6 @@
 
     ^ ImageInspectorView
 ! !
-
 !GenericToolbarIconLibrary class methodsFor:'image specs-22x22'!
 
 bookmarks22x22
@@ -601,7 +574,6 @@
 
     "Modified: / 05-05-2011 / 12:45:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !GenericToolbarIconLibrary class methodsFor:'image specs-16x16'!
 
 bug16x16Icon
@@ -626,7 +598,6 @@
 ?_????????????7=W5=_W5?=O/7???????>L?PLC@0LC?_????????7=/4S[7S 8TY/=?VC?????L#L.>JI3I+A%H#[?????GA3_]U*/M3_;BPRLD_????7=
 ?_B@M>DE-04>?U/??????2_=HEXYQ7:R<Q_???????4>G2$%Q9QEL?5_??????????<=?\;M??????????????????=-H????????0@a') ; colorMapFromArray:#[205 205 205 227 35 35 106 106 106 98 98 98 135 135 135 163 34 34 101 5 5 124 124 124 48 2 2 227 11 11 173 173 173 218 54 54 241 241 241 235 19 19 225 225 225 219 18 18 245 58 58 214 214 214 249 46 46 90 90 90 254 61 61 36 36 36 176 176 176 233 233 233 114 114 114 255 78 78 212 33 33 230 57 57 61 61 61 94 94 94 76 76 76 19 19 19 255 57 57 161 161 161 83 83 83 217 217 217 249 249 249 255 65 65 139 2 2 27 27 27 169 169 169 253 53 53 210 28 28 251 251 251 154 154 154 117 117 117 195 1 1 245 245 245 145 145 145 218 5 5 230 230 230 69 2 2 181 181 181 11 11 11 141 141 141 249 61 61 205 21 21 165 165 165 157 157 157 241 28 28 223 223 223 109 109 109 2 2 2 245 45 45 146 0 0 69 69 69 137 137 137 140 40 40 188 1 1 206 24 24 219 33 33 255 76 76 249 49 49 249 56 56 236 236 236 121 121 121 248 53 53 171 1 1 111 40 40 237 41 41 178 21 21 205 16 16 129 129 129 163 1 1 155 18 18 85 4 4 243 68 68 73 73 73 45 45 45 202 51 51 241 40 40 86 86 86 114 1 1 210 4 4 246 41 41 148 148 148 189 189 189 209 209 209 210 17 17 158 28 28 213 5 5 205 1 1 53 53 53 217 9 9 69 40 40 187 10 10 255 74 74 218 28 28 146 11 11 65 65 65 232 37 37 101 101 101 196 26 26 245 53 53 188 26 26 213 10 10 184 184 184 206 5 5 249 65 65 172 21 21 206 34 34 195 195 195 237 32 32 131 12 12 233 29 29 179 36 36 241 37 37 139 13 13 245 49 49 180 1 1 168 37 37 198 198 198 202 202 202 228 21 21 206 10 10 206 29 29 229 30 30 255 80 80 188 20 20 245 37 37 57 57 57 252 50 50 87 42 42 172 10 10 209 13 13 155 4 4 164 11 11 242 44 44 255 70 70 225 25 25 222 14 14 237 24 24 240 49 49 205 13 13 202 44 44 201 0 0 225 17 17 186 42 42 255 72 72 122 1 1 40 40 40 157 10 10 209 8 8 222 8 8 195 41 41 223 21 21 180 11 11 255 68 68 162 28 28 194 11 11 232 25 25 131 1 1 241 32 32 246 246 246 49 49 49 224 44 44 208 2 2 227 227 227 239 239 239 239 46 46 162 20 20 245 33 33 219 219 219 238 29 29 237 37 37 171 29 29 36 46 46 250 68 68 147 16 16 182 26 26 187 187 187 24 1 1 185 32 32 229 24 24 232 33 33 150 150 150 122 12 12 229 17 17 204 27 27 242 52 52 213 2 2 200 15 15 191 191 191 217 43 43 217 12 12 115 10 10 140 16 16 200 28 28 202 6 6 215 13 13 182 41 41 57 46 46 40 46 46 233 40 40 252 70 70 173 40 40 226 28 28 46 54 54 202 22 22 203 18 18 245 72 72 191 17 17 200 37 37 10 0 0 50 52 52 252 74 74 252 72 72 247 38 38 160 40 40 231 14 14 252 68 68 200 10 10 15 15 15 211 47 47 254 254 254 253 76 76 23 23 23 237 69 69 7 7 7 144 7 7 196 8 7 32 32 32 59 59 59 90 93 93 67 67 67 70 28 28 50 56 56 232 15 16 208 4 4 237 35 35 220 12 11 232 20 20 223 62 62 0 0 0 255 255 255 255 255 255]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@L@@0@C8AO C?0O<C?>G?0??#?>C?0_?@O@@L@b') ; yourself); yourself]
 ! !
-
 !GenericToolbarIconLibrary class methodsFor:'image specs-24x24'!
 
 bug24x24Icon
@@ -655,7 +626,6 @@
 <Q_???????????4XO!!?DJRU*Q9P%QSL5?U<-?????????3T5???=F$  EB@?L37?G3;=????????????????O_7D3,7=??????????????????????????<(
 [RO?????????????????????????????????????????????') ; colorMapFromArray:#[205 205 205 227 35 35 106 106 106 98 98 98 135 135 135 163 34 34 101 5 5 124 124 124 48 2 2 227 11 11 173 173 173 218 54 54 241 241 241 235 19 19 225 225 225 219 18 18 245 58 58 214 214 214 249 46 46 90 90 90 254 61 61 36 36 36 176 176 176 233 233 233 114 114 114 255 78 78 212 33 33 230 57 57 61 61 61 94 94 94 76 76 76 19 19 19 255 57 57 161 161 161 83 83 83 217 217 217 249 249 249 255 65 65 139 2 2 27 27 27 169 169 169 253 53 53 210 28 28 251 251 251 154 154 154 117 117 117 195 1 1 245 245 245 145 145 145 218 5 5 230 230 230 69 2 2 181 181 181 11 11 11 141 141 141 249 61 61 205 21 21 165 165 165 157 157 157 241 28 28 223 223 223 109 109 109 2 2 2 245 45 45 146 0 0 69 69 69 137 137 137 140 40 40 188 1 1 206 24 24 219 33 33 255 76 76 249 49 49 249 56 56 236 236 236 121 121 121 248 53 53 171 1 1 111 40 40 237 41 41 178 21 21 205 16 16 129 129 129 163 1 1 155 18 18 85 4 4 243 68 68 73 73 73 45 45 45 202 51 51 241 40 40 86 86 86 114 1 1 210 4 4 246 41 41 148 148 148 189 189 189 209 209 209 210 17 17 158 28 28 213 5 5 205 1 1 53 53 53 217 9 9 69 40 40 187 10 10 255 74 74 218 28 28 146 11 11 65 65 65 232 37 37 101 101 101 196 26 26 245 53 53 188 26 26 213 10 10 184 184 184 206 5 5 249 65 65 172 21 21 206 34 34 195 195 195 237 32 32 131 12 12 233 29 29 179 36 36 241 37 37 139 13 13 245 49 49 180 1 1 168 37 37 198 198 198 202 202 202 228 21 21 206 10 10 206 29 29 229 30 30 255 80 80 188 20 20 245 37 37 57 57 57 252 50 50 87 42 42 172 10 10 209 13 13 155 4 4 164 11 11 242 44 44 255 70 70 225 25 25 222 14 14 237 24 24 240 49 49 205 13 13 202 44 44 201 0 0 225 17 17 186 42 42 255 72 72 122 1 1 40 40 40 157 10 10 209 8 8 222 8 8 195 41 41 223 21 21 180 11 11 255 68 68 162 28 28 194 11 11 232 25 25 131 1 1 241 32 32 246 246 246 49 49 49 224 44 44 208 2 2 227 227 227 239 239 239 239 46 46 162 20 20 245 33 33 219 219 219 238 29 29 237 37 37 171 29 29 36 46 46 250 68 68 147 16 16 182 26 26 187 187 187 24 1 1 185 32 32 229 24 24 232 33 33 150 150 150 122 12 12 229 17 17 204 27 27 242 52 52 213 2 2 200 15 15 191 191 191 217 43 43 217 12 12 115 10 10 140 16 16 200 28 28 202 6 6 215 13 13 182 41 41 57 46 46 40 46 46 233 40 40 252 70 70 173 40 40 226 28 28 46 54 54 202 22 22 203 18 18 245 72 72 191 17 17 200 37 37 10 0 0 50 52 52 252 74 74 252 72 72 247 38 38 160 40 40 231 14 14 252 68 68 200 10 10 15 15 15 211 47 47 254 254 254 253 76 76 23 23 23 237 69 69 7 7 7 144 7 7 196 8 7 32 32 32 59 59 59 90 93 93 67 67 67 70 28 28 50 56 56 232 15 16 208 4 4 237 35 35 220 12 11 232 20 20 223 62 62 0 0 0 255 255 255 255 255 255]; mask:((ImageMask new) width: 24; height: 24; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@H@@HH@@FH@@FH@@CX@@G<@BO<HGO>8A??0@??@@??@G??<C??8@??@G??<G??<G??XA??0C??8CO>8@G8@@A0@@@@@') ; yourself); yourself]
 ! !
-
 !GenericToolbarIconLibrary class methodsFor:'image specs-32x32'!
 
 bug32x32Icon
@@ -707,7 +677,6 @@
                 yourself
         ]
 ! !
-
 !GenericToolbarIconLibrary class methodsFor:'image specs-16x16'!
 
 lint16x16Icon
@@ -732,7 +701,6 @@
 @XS??????????3<)-;^76.Z5A0O???????<P@W!!8>-3J<0+??????0\JI1,;7^?57-[;''T????<JS0P"PN3'':-V>8L??????V5@''G57.1,!!#X-''R_O???1(R
 @RMW:Y*KY6+7*RW??????3P*ZU[;.:#!!/:7???????<A@6AV2?S:9+>5??????????< BC &?????;?Z??????????<XU_?????X<P@a') ; colorMapFromArray:#[0 1 0 0 2 0 1 4 0 3 6 2 30 1 0 6 9 5 34 2 2 10 12 8 43 4 2 13 15 12 15 17 13 77 0 0 16 18 15 35 14 12 17 19 16 67 6 1 19 20 18 75 7 10 21 23 20 86 9 4 25 27 24 111 4 7 103 7 10 96 10 12 32 29 28 29 30 28 31 33 30 153 2 0 33 35 33 35 36 34 110 16 16 173 0 1 36 38 35 41 37 36 165 4 0 155 7 7 128 15 14 39 41 39 157 12 16 51 42 42 207 0 4 43 45 42 58 41 39 141 19 15 199 4 0 210 3 0 221 1 4 48 49 47 231 0 12 211 7 8 172 19 10 172 19 18 52 54 51 53 55 53 234 5 23 59 54 53 176 24 21 56 57 55 57 59 56 204 19 22 195 22 24 103 47 48 227 16 9 60 61 59 198 25 19 216 20 21 61 63 60 119 48 45 228 20 20 63 65 62 211 30 27 68 69 67 69 71 68 212 32 34 242 25 29 72 74 71 74 76 74 191 45 50 245 31 38 76 78 75 77 79 76 79 80 78 138 66 66 248 36 40 240 41 43 83 85 82 216 50 52 241 43 50 195 58 61 86 88 85 244 46 46 87 89 86 89 91 88 214 58 58 193 65 67 92 93 91 248 51 49 109 90 87 185 68 87 194 67 80 87 95 125 250 54 57 173 74 96 202 67 84 159 78 103 253 56 52 188 72 90 87 99 135 129 89 121 99 101 98 73 104 148 255 59 60 159 83 106 175 81 94 94 102 132 187 78 98 215 71 85 255 61 67 169 84 104 251 66 66 104 106 103 90 106 147 151 92 119 200 81 93 107 108 106 140 99 131 162 94 119 255 72 76 144 100 128 96 112 153 228 80 83 159 97 120 111 113 110 191 90 111 206 87 104 113 115 112 87 118 163 115 117 114 83 122 166 179 100 117 118 120 117 199 99 101 231 91 88 138 113 147 120 122 119 196 101 119 123 125 122 115 123 167 213 100 113 119 123 162 180 109 128 127 129 126 208 108 109 115 131 173 185 115 140 158 122 154 173 119 144 131 133 130 130 130 163 178 122 124 181 119 147 106 139 178 136 138 135 120 139 175 126 138 175 204 121 132 132 139 172 113 146 186 136 143 176 144 146 143 121 149 184 153 142 173 135 150 181 148 150 147 125 153 188 130 153 182 179 140 167 150 152 149 205 136 148 181 145 146 136 159 189 155 157 154 140 163 193 159 161 158 161 163 160 143 166 196 162 164 161 148 167 192 164 166 163 165 165 187 197 159 173 167 169 166 152 171 196 191 163 180 157 172 191 169 171 168 216 159 166 171 173 170 208 163 179 187 169 190 217 162 175 174 176 173 159 178 203 186 173 174 207 167 175 163 178 198 213 166 176 179 181 178 198 176 192 169 185 204 183 185 182 216 175 184 209 177 189 212 180 192 204 183 198 208 183 193 188 190 187 180 192 206 194 196 193 215 191 201 187 199 213 204 198 197 211 196 210 199 201 198 190 202 216 191 203 217 201 202 212 202 204 201 208 203 201 219 201 210 205 207 203 217 203 217 206 208 205 213 207 206 223 205 214 203 211 220 211 213 210 211 212 222 214 216 213 221 215 227 217 219 216 219 221 218 228 218 224 217 222 225 221 223 220 231 221 227 216 225 233 220 226 228 224 226 223 221 229 238 231 233 230 228 234 236 233 235 232 235 238 234 249 251 248 255 255 255]; mask:((ImageMask new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@L@@0@C8AO0C?0O>C?>O?0??#?>C?0O?@OC@LLb') ; yourself); yourself]
 ! !
-
 !GenericToolbarIconLibrary class methodsFor:'image specs-24x24'!
 
 lint24x24Icon
@@ -761,7 +729,6 @@
 /:6D??????????<)@PLSXEY?2?S<>.Y-/;V-?????????1$A??<GRU)/]8JMT"_?/;>5#O??????????????H@ +NBXQ??????>:/=*L??????????????<9
 FEU_????????6OF5????????????????????????????-]K?') ; colorMapFromArray:#[0 1 0 0 2 0 1 4 0 3 6 2 30 1 0 6 9 5 34 2 2 10 12 8 43 4 2 13 15 12 15 17 13 77 0 0 16 18 15 35 14 12 17 19 16 67 6 1 19 20 18 75 7 10 21 23 20 86 9 4 25 27 24 111 4 7 103 7 10 96 10 12 32 29 28 29 30 28 31 33 30 153 2 0 33 35 33 35 36 34 110 16 16 173 0 1 36 38 35 41 37 36 165 4 0 155 7 7 128 15 14 39 41 39 157 12 16 51 42 42 207 0 4 43 45 42 58 41 39 141 19 15 199 4 0 210 3 0 221 1 4 48 49 47 231 0 12 211 7 8 172 19 10 172 19 18 52 54 51 53 55 53 234 5 23 59 54 53 176 24 21 56 57 55 57 59 56 204 19 22 195 22 24 103 47 48 227 16 9 60 61 59 198 25 19 216 20 21 61 63 60 119 48 45 228 20 20 63 65 62 211 30 27 68 69 67 69 71 68 212 32 34 242 25 29 72 74 71 74 76 74 191 45 50 245 31 38 76 78 75 77 79 76 79 80 78 138 66 66 248 36 40 240 41 43 83 85 82 216 50 52 241 43 50 195 58 61 86 88 85 244 46 46 87 89 86 89 91 88 214 58 58 193 65 67 92 93 91 248 51 49 109 90 87 185 68 87 194 67 80 87 95 125 250 54 57 173 74 96 202 67 84 159 78 103 253 56 52 188 72 90 87 99 135 129 89 121 99 101 98 73 104 148 255 59 60 159 83 106 175 81 94 94 102 132 187 78 98 215 71 85 255 61 67 169 84 104 251 66 66 104 106 103 90 106 147 151 92 119 200 81 93 107 108 106 140 99 131 162 94 119 255 72 76 144 100 128 96 112 153 228 80 83 159 97 120 111 113 110 191 90 111 206 87 104 113 115 112 87 118 163 115 117 114 83 122 166 179 100 117 118 120 117 199 99 101 231 91 88 138 113 147 120 122 119 196 101 119 123 125 122 115 123 167 213 100 113 119 123 162 180 109 128 127 129 126 208 108 109 115 131 173 185 115 140 158 122 154 173 119 144 131 133 130 130 130 163 178 122 124 181 119 147 106 139 178 136 138 135 120 139 175 126 138 175 204 121 132 132 139 172 113 146 186 136 143 176 144 146 143 121 149 184 153 142 173 135 150 181 148 150 147 125 153 188 130 153 182 179 140 167 150 152 149 205 136 148 181 145 146 136 159 189 155 157 154 140 163 193 159 161 158 161 163 160 143 166 196 162 164 161 148 167 192 164 166 163 165 165 187 197 159 173 167 169 166 152 171 196 191 163 180 157 172 191 169 171 168 216 159 166 171 173 170 208 163 179 187 169 190 217 162 175 174 176 173 159 178 203 186 173 174 207 167 175 163 178 198 213 166 176 179 181 178 198 176 192 169 185 204 183 185 182 216 175 184 209 177 189 212 180 192 204 183 198 208 183 193 188 190 187 180 192 206 194 196 193 215 191 201 187 199 213 204 198 197 211 196 210 199 201 198 190 202 216 191 203 217 201 202 212 202 204 201 208 203 201 219 201 210 205 207 203 217 203 217 206 208 205 213 207 206 223 205 214 203 211 220 211 213 210 211 212 222 214 216 213 221 215 227 217 219 216 219 221 218 228 218 224 217 222 225 221 223 220 231 221 227 216 225 233 220 226 228 224 226 223 221 229 238 231 233 230 228 234 236 233 235 232 235 238 234 249 251 248 255 255 255]; mask:((ImageMask new) width: 24; height: 24; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@LL@@FH@@FH@@CX@@G<@BG>HGO>XA??8@?? @?? G??<G??8@??0G??<G??<G??<@??8A??8CO><@G8O@A8G@@@F') ; yourself); yourself]
 ! !
-
 !GenericToolbarIconLibrary class methodsFor:'image specs-32x32'!
 
 lint32x32Icon
@@ -798,7 +765,64 @@
 @@@@@@@@D@@@NC @@A 8@@@\L@@@CC@@@@Y0@@@G8@@@C? @AA?<H@8??G@G???0@???8@G??8@@??>@C???>A???? O???0@O??0@C??<@O???8G???>@??
 ?? @???@@_??8@O???@GO?38@!!?8_@@O<C8@@>@^@@@@C@@@@@@b') ; yourself); yourself]
 ! !
+!GenericToolbarIconLibrary class methodsFor:'image specs-16x16'!
 
+smalllintWarning16x16
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self smalllintWarning16x16 inspect
+     ImageEditor openOnClass:self andSelector:#smalllintWarning16x16
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'GenericToolbarIconLibrary class smalllintWarning16x16'
+        ifAbsentPut:[(Depth24Image new) width: 16; height: 16; photometric:(#rgb); bitsPerSample:(#[8 8 8]); samplesPerPixel:(3); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@????????????????????@@@@@@@@@@@@@@@@@@@@@@@@
+@@@@@@@@@@@@@@@@????;;5!!;J)@;J1C;J)@;;5!!????@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@????<[9&<+=#?>^5?>^5?>^5<;=#<[=&????@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@????;[@??N&/?^".?N&/?^".?N&/;J<?????@@@@@@@@@@@@@@@@@@@@@@@@@@@@????;; ?>>>2?OKF?OKD?OKF>>:2;[\?????
+????????@@@@@@@@@@@@@@@@@@@@????;+(9>OJ/?_3,?_/$?_3,>OJ/;+,::,BM8ZUU:,&_????@@@@@@@@@@@@@@@@@@@@>M2N;<]G>_[B????>_[B;<!!G
+>M6O8ZUU??3S8ZUU????@@@@@@@@@@@@@@@@@@@@?????^A?>-E$????=<-Z?^JA:,BM>M"@TB @>M"@:,BM????@@@@@@@@@@@@@@@@@@@@????.*591=W.
+-Z]3????8ZUU>M"@TB @>M"@8ZUU????@@@@@@@@@@@@@@@@@@@@????!!Z3P????TV*K8[M8;\A >M"@4)4>>M"@;[= 8+M8????@@@@@@@@@@@@@@@@????
+!!JN<+;[BWGBG8ZUU?]:B;\I4TB @;\I4?]6B8ZUU????@@@@@@@@@@@@@@@@????,<CLR6A91,7U1(T.?.NV<M"P-YQR<M"P?>JV1(T.????@@@@@@@@@@@@
+@@@@@@@@????????????9\^ 1(T.1(T.1(T.1(T.1(T.9\^ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@????????????????????????????@@@@@@@@
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') ; mask:((Depth1Image new) width: 16; height: 16; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@_@C>@_<A?0G?0_? ?>C?<G?0_?!!?>G?8O?@G<@@@b') ; yourself); yourself]
+! !
+!GenericToolbarIconLibrary class methodsFor:'image specs-versions'!
+
+versionMerged24x24
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self versionMerged24x24 inspect
+     ImageEditor openOnClass:self andSelector:#versionMerged24x24
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'GenericToolbarIconLibrary class versionMerged24x24'
+        ifAbsentPut:[(Depth8Image new) width: 24; height: 24; photometric:(#palette); bitsPerSample:(#(8)); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@!!LNDADQE!!XVF!!0_H2D$H2@ H18"H!!8AO=SZ6]''\7^C"8.[&9.#*;N?2;_W6>]HXU^''.;.;.<OS4=OS4=?_8>O#;?O;=?>\RTMOM3L3K2<3M3<?Q5=/^8^W)
+9.[1:=T]Q<N:.[&8.K?A/\GA1LSG1<+J5-#$7<8VR*:.,+N6-+&9.[2<0LC@0LC@0<#B4L$ON:J*****+:.+*;N1-[V5-;.;0LB=1+8VN*J\)JF!!)JR#*J"+
+*:6-,[V5-+&9/;@MNIBQ$)JY$)JY''):^(:N#*J"/)+J/-I4LNXNK#H.N!!)JT$)JR%).[&Y.&)*J&*YLTM6&H"H"H"H.N#(:N#9BP$IZV&*JZ&8(UMU5,\8E9
+ V=2^XRH"8.K"8:O#9*V%''4UMT%HV6I1\WE1\W9/^XNC (NH"H.K#G@YM$EAP45_W&11[7E1^GM8\7M: (M3"VLULDMCRDMAP45[V6I"X&I"[F1,X''91_5 K
+LDMQUEEMRDMCPUQTW6!!+]&I,[HE5[D0KLU)ST5M(W5)TTT5MTUEQUE)SW6-SYC4JL65ST5MST5MST5MSS$9NS$9HQD9DRC8JLVI1[FI"X&I WE1ST5M[ZF!!_
+UEQNS30GLFI,\V11\W!!,X&I"Y&I!!W%9^T5MSWS0HLH]:^&93[798[G9/\V1,X&I!!WFA\Y30EMIF,%9RK_G%9\&=/[6=1[&91[GV@]DHDJ9>6+)2P"8"A!!7=?
+_7=?_7=?\7Q.^4@CA"X-I2\''I2</JR$)JR (JB (K"4,J"T@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[28 1 19 26 0 23 36 0 35 57 0 48 55 1 50 58 0 51 61 0 54 57 3 52 56 0 54 63 0 57 64 0 58 63 0 62 67 3 66 66 0 68 69 5 67 70 6 68 70 0 72 71 0 73 57 15 60 65 17 63 72 9 70 79 0 77 70 0 74 72 0 75 61 25 59 81 2 79 74 13 71 74 1 77 76 4 79 70 15 72 66 23 68 78 7 81 75 19 76 81 12 83 61 25 67 75 21 77 78 23 79 91 5 94 114 6 111 122 0 119 124 0 121 130 0 123 118 0 120 110 25 104 119 0 122 119 17 114 120 0 123 125 20 115 129 2 127 135 0 131 137 0 134 139 0 136 125 26 118 138 1 141 137 22 130 142 9 143 138 16 142 139 31 136 142 22 145 145 26 147 147 16 155 154 0 166 159 22 161 128 73 126 148 48 147 186 0 187 155 40 156 187 0 189 196 0 193 188 0 190 188 0 191 156 31 162 189 0 192 180 0 187 157 32 163 198 0 197 164 20 172 191 4 193 200 0 200 182 3 189 156 57 155 193 9 194 202 0 202 203 0 204 196 13 195 152 66 152 194 0 199 205 0 206 164 41 168 206 0 207 197 17 195 195 0 201 207 0 208 188 16 192 196 0 202 198 20 195 207 0 209 196 0 203 197 0 204 167 45 171 199 23 196 198 0 205 208 0 211 192 23 194 200 26 196 189 0 201 199 2 206 201 29 196 203 7 208 202 31 197 192 5 203 200 0 210 173 52 176 206 13 209 201 0 211 195 11 204 199 33 198 214 18 211 204 36 198 201 0 212 208 17 210 202 0 213 197 15 205 190 33 195 203 0 214 184 47 187 210 21 211 202 39 200 208 41 201 211 24 212 200 22 207 202 25 208 214 28 214 204 28 209 198 1 216 207 47 203 207 31 211 200 45 202 185 65 187 208 33 212 198 32 208 209 35 213 210 38 214 212 40 215 213 42 216 207 55 208 202 40 211 193 73 194 214 44 217 205 42 213 216 46 218 213 28 223 206 44 214 208 47 215 220 49 221 214 62 214 221 51 222 192 87 193 210 50 217 206 83 201 215 64 215 211 51 218 224 55 224 213 53 219 217 67 217 227 58 226 218 68 218 215 56 221 218 58 223 213 80 212 220 71 220 219 60 224 229 62 229 220 61 225 231 64 230 223 74 222 201 96 202 222 63 226 224 75 223 225 76 224 218 85 217 224 65 228 226 78 224 224 67 229 218 77 222 228 80 226 229 82 227 226 70 231 230 83 228 223 81 226 211 105 211 225 92 223 233 85 230 226 93 224 224 84 228 231 75 235 227 95 225 234 87 232 219 94 223 230 98 228 228 89 232 217 106 222 234 102 232 225 100 229 226 101 230 228 104 232 213 116 219 229 105 233 231 107 235 224 114 229 199 149 203 242 102 244 216 137 220 205 135 215 237 113 241 234 128 234 238 114 242 223 126 229 226 134 228 236 130 236 225 128 231 229 131 234 240 134 239 233 117 242 230 133 236 239 128 243 236 143 238 238 145 239 238 123 247 243 133 247 238 146 240 215 161 223 241 148 243 250 144 249 235 156 239 225 155 235 237 158 241 229 163 235 249 142 255 242 161 245 247 149 252 238 154 246 246 170 245 249 151 254 249 153 255 238 170 243 230 176 238 245 161 253 247 163 255 236 181 244 245 166 255 243 172 253 245 190 253 243 184 254 246 193 255 238 193 253]; yourself]
+! !
 !Image methodsFor:'inspecting'!
 
 inspector2TabImage
@@ -810,7 +834,6 @@
 
     "Created: / 11-10-2011 / 17:12:01 / cg"
 ! !
-
 !Image methodsFor:'inspecting'!
 
 inspector2Tabs
@@ -818,7 +841,6 @@
 
     "Created: / 11-10-2011 / 17:11:21 / cg"
 ! !
-
 !Image methodsFor:'inspecting'!
 
 inspectorClass
@@ -832,7 +854,6 @@
 
     "Modified: 10.6.1996 / 18:23:55 / cg"
 ! !
-
 !Integer methodsFor:'inspecting'!
 
 inspectorExtraAttributes
@@ -852,7 +873,6 @@
     "Created: / 18-09-2006 / 21:22:46 / cg"
     "Modified: / 06-10-2006 / 13:57:28 / cg"
 ! !
-
 !Iterator methodsFor:'inspecting'!
 
 inspectorValueStringInListFor:anInspector
@@ -861,7 +881,6 @@
 
     ^ self classNameWithArticle
 ! !
-
 !LimitedPrecisionReal methodsFor:'inspecting'!
 
 inspectorExtraAttributes
@@ -883,7 +902,6 @@
 
     "Created: / 20-03-2012 / 22:34:46 / cg"
 ! !
-
 !MenuView methodsFor:'accessing-behavior'!
 
 shortKeys
@@ -891,7 +909,6 @@
 
     "Created: / 18-10-2008 / 19:16:59 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
-
 !Method methodsFor:'inspecting'!
 
 inspectorExtraAttributes
@@ -910,7 +927,6 @@
     "Created: / 18-09-2006 / 21:34:01 / cg"
     "Modified: / 06-10-2006 / 13:57:33 / cg"
 ! !
-
 !Method methodsFor:'printing & storing'!
 
 printStringForBrowserWithSelector:selector inClass:aClass
@@ -1036,13 +1052,11 @@
     "Modified: / 05-03-2007 / 16:18:53 / cg"
     "Modified: / 20-07-2010 / 15:39:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !Method methodsFor:'printing & storing'!
 
 selectorPrintStringInBrowserFor:selector
     ^ selector
 ! !
-
 !Method methodsFor:'printing & storing'!
 
 selectorPrintStringInBrowserFor:selector class:aClass
@@ -1060,7 +1074,6 @@
 
     "Modified: / 20-07-2010 / 10:33:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !MethodDictionary methodsFor:'inspecting'!
 
 inspectorClass
@@ -1071,7 +1084,6 @@
 
     "Created: 12.6.1996 / 12:29:13 / stefan"
 ! !
-
 !NameSpace class methodsFor:'inspecting'!
 
 inspectorClass
@@ -1084,7 +1096,6 @@
 
 
 ! !
-
 !Object methodsFor:'debugging'!
 
 inspect
@@ -1113,7 +1124,6 @@
      (Image fromFile:'bitmaps/garfield.gif') inspect
     "
 ! !
-
 !Object methodsFor:'inspecting'!
 
 inspector2TabCommon
@@ -1124,7 +1134,6 @@
     "Created: / 24-05-2011 / 14:56:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 05-07-2011 / 14:06:28 / cg"
 ! !
-
 !Object methodsFor:'inspecting'!
 
 inspector2TabForBasicInspect
@@ -1138,7 +1147,6 @@
 
     "Created: / 05-07-2011 / 13:59:59 / cg"
 ! !
-
 !Object methodsFor:'inspecting'!
 
 inspector2TabForInspectorClass
@@ -1152,7 +1160,6 @@
 
     "Created: / 05-07-2011 / 14:06:16 / cg"
 ! !
-
 !Object methodsFor:'inspecting'!
 
 inspector2TabLabel
@@ -1162,7 +1169,6 @@
 
     "Created: / 14-07-2011 / 11:56:23 / cg"
 ! !
-
 !Object methodsFor:'inspecting'!
 
 inspector2Tabs
@@ -1174,7 +1180,6 @@
 
     "Created: / 05-07-2011 / 13:39:24 / cg"
 ! !
-
 !Object methodsFor:'debugging'!
 
 inspectorExtraAttributes
@@ -1195,7 +1200,6 @@
     "Modified: / 02-09-2005 / 19:00:01 / janfrog"
     "Modified: / 04-10-2006 / 14:33:34 / cg"
 ! !
-
 !Object methodsFor:'inspecting'!
 
 inspectorValueStringInListFor:anInspector
@@ -1205,7 +1209,6 @@
 
     "Created: / 13-06-2012 / 12:50:26 / cg"
 ! !
-
 !Object methodsFor:'testing'!
 
 isTestCaseLike
@@ -1214,7 +1217,6 @@
 
     "Created: / 28-02-2011 / 21:30:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !Object methodsFor:'debugging'!
 
 newInspector2Tab
@@ -1225,7 +1227,6 @@
         ifNil:[self error:'Inspector2 not available!! Something is rotten...']
         ifNotNil:[(Smalltalk at: #'Tools::Inspector2Tab') new]
 ! !
-
 !OrderedCollection methodsFor:'inspecting'!
 
 inspectorClass
@@ -1240,7 +1241,6 @@
      #(0 8 15 3 99 2) asSortedCollection inspect
     "
 ! !
-
 !PopUpMenu methodsFor:'converting'!
 
 asMenu
@@ -1267,7 +1267,6 @@
     "Created: / 18-10-2008 / 19:01:32 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 09-09-2012 / 13:10:25 / cg"
 ! !
-
 !ProfileTree methodsFor:'accessing'!
 
 method
@@ -1278,7 +1277,6 @@
     "Created: / 01-12-2007 / 22:50:16 / janfrog"
     "Modified: / 07-11-2008 / 08:40:35 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
-
 !ProfileTree methodsFor:'accessing'!
 
 package
@@ -1289,7 +1287,6 @@
     "Created: / 01-12-2007 / 22:50:28 / janfrog"
     "Modified: / 07-11-2008 / 08:40:35 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
-
 !RunArray methodsFor:'user interface'!
 
 inspectorClass
@@ -1300,19 +1297,16 @@
 
     "Modified: / 30.10.1997 / 14:28:20 / cg"
 ! !
-
 !SelectionInListModelView methodsFor:'accessing'!
 
 textStartLeft
     ^ textStartLeft
 ! !
-
 !SelectionInListModelView methodsFor:'accessing'!
 
 textStartLeft:something
     textStartLeft := something.
 ! !
-
 !Set methodsFor:'inspecting'!
 
 inspectorClass
@@ -1321,7 +1315,6 @@
 
     ^ SetInspectorView
 ! !
-
 !SimpleView methodsFor:'testing'!
 
 isCodeView2
@@ -1330,7 +1323,6 @@
 
     "Created: / 20-07-2010 / 15:42:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !StringCollection methodsFor:'inspecting'!
 
 inspector2TabText
@@ -1342,7 +1334,6 @@
 
     "Created: / 17-02-2008 / 10:13:07 / janfrog"
 ! !
-
 !StringCollection methodsFor:'inspecting'!
 
 inspector2Tabs
@@ -1350,7 +1341,6 @@
 
     "Created: / 05-07-2011 / 13:40:43 / cg"
 ! !
-
 !Symbol methodsFor:'accessing'!
 
 formattedCode
@@ -1361,7 +1351,6 @@
 
     "Created: / 07-07-2009 / 20:03:21 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
-
 !Symbol methodsFor:'inspecting'!
 
 inspectorValueStringInListFor:anInspector
@@ -1369,7 +1358,6 @@
 
     ^ self storeString
 ! !
-
 !Text methodsFor:'inspecting'!
 
 inspector2TabText
@@ -1383,7 +1371,6 @@
     "Modified: / 17-02-2008 / 10:28:33 / janfrog"
     "Modified: / 21-08-2011 / 08:02:46 / cg"
 ! !
-
 !Text methodsFor:'inspecting'!
 
 inspectorExtraAttributes
@@ -1401,7 +1388,6 @@
     "Created: / 18-09-2006 / 21:25:52 / cg"
     "Modified: / 06-10-2006 / 13:57:38 / cg"
 ! !
-
 !Timestamp methodsFor:'inspecting'!
 
 inspectorExtraAttributes
@@ -1422,7 +1408,6 @@
 
     "Created: / 20-01-2011 / 12:19:05 / cg"
 ! !
-
 !UndefinedObject methodsFor:'inspecting'!
 
 inspectorValueStringInListFor:anInspector
@@ -1430,7 +1415,6 @@
 
     ^ 'nil'
 ! !
-
 !UninterpretedBytes methodsFor:'inspecting'!
 
 inspector2Tabs
@@ -1438,7 +1422,6 @@
 
     "Created: / 27-02-2012 / 21:51:36 / cg"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 alwaysOpenNewTabWhenCtrlClick
@@ -1453,7 +1436,6 @@
     "Created: / 19-10-2008 / 08:00:53 / Jan Vrany <vranyj1@fel.cvut.cz>"
     "Modified: / 14-02-2010 / 19:37:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 alwaysOpenNewTabWhenCtrlClick: aBoolean
@@ -1462,7 +1444,16 @@
 
     "Created: / 19-10-2008 / 08:01:45 / Jan Vrany <vranyj1@fel.cvut.cz>"
 ! !
+!UserPreferences methodsFor:'accessing-pref''d tools'!
 
+changesBrowserClassName
+
+    ^ self 
+        at: #changesBrowserClassName 
+        ifAbsent:[self changesBrowserClass name]."/Backward comparibility
+
+    "Created: / 03-04-2012 / 11:02:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
 !UserPreferences methodsFor:'accessing-prefs-code view'!
 
 codeView2AutoIndent
@@ -1477,7 +1468,6 @@
     "Modified: / 15-02-2010 / 09:26:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 07-08-2011 / 12:46:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-code view'!
 
 codeView2AutoIndent: aBoolean
@@ -1492,7 +1482,6 @@
     "Modified: / 15-02-2010 / 09:26:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 07-08-2011 / 12:47:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-code view'!
 
 codeView2ShowAcceptCancel
@@ -1506,7 +1495,6 @@
     "Modified: / 15-02-2010 / 09:26:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 10-10-2011 / 16:41:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-code view'!
 
 codeView2ShowAcceptCancel: aBoolean
@@ -1520,7 +1508,89 @@
     "Modified: / 15-02-2010 / 09:26:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 10-10-2011 / 16:40:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
+!UserPreferences methodsFor:'accessing-prefs-browser'!
 
+confirmRefactorings
+    "If set, each refactoring must be confirmed before accepted.
+     A programmer may select which changes to apply and which not
+     and/or alter the change.
+
+     See RefactoryChange>>shouldBeConfirmed
+     "
+
+    ^ self at:#confirmRefactorings ifAbsent:[false].
+
+    "
+     UserPreferences current confirmRefactorings
+     UserPreferences current confirmRefactorings:true
+     UserPreferences current confirmRefactorings:false
+    "
+
+    "Created: / 04-04-2012 / 14:02:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+!UserPreferences methodsFor:'accessing-prefs-browser'!
+
+confirmRefactorings:aBoolean
+    "If set, each refactoring must be confirmed before accepted.
+     A programmer may select which changes to apply and which not
+     and/or alter the change.
+
+     See RefactoryChange>>shouldBeConfirmed
+     "
+
+    ^ self at:#confirmRefactorings put:aBoolean
+
+    "
+     UserPreferences current confirmRefactorings
+     UserPreferences current confirmRefactorings:true
+     UserPreferences current confirmRefactorings:false
+    "
+
+    "Created: / 04-04-2012 / 14:02:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+!UserPreferences methodsFor:'accessing-pref''d tools'!
+
+fileBrowserClass
+    | class className |
+
+    className := self at: #fileBrowserClassName ifAbsent:[nil].
+    className notNil ifTrue:[
+        class := Smalltalk at: className asSymbol.
+        class notNil ifTrue:[ ^ class ].
+    ].
+
+    "/ Old code
+    self useNewFileBrowser ifTrue:[
+        ^ (FileBrowserV2 ? FileBrowser)
+    ].
+    ^ FileBrowser
+
+    "Modified: / 03-04-2012 / 10:59:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+!UserPreferences methodsFor:'accessing-pref''d tools'!
+
+fileBrowserClass: aClass
+
+    self at: #fileBrowserClassName put: aClass name.
+
+    "
+        UserPreferences current fileBrowserClass
+        UserPreferences current fileBrowserClass: FileBrowser.
+        UserPreferences current fileBrowserClass: FileBrowserV2.
+    "
+
+    "Created: / 03-04-2012 / 10:57:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+!UserPreferences methodsFor:'accessing-pref''d tools'!
+
+fileBrowserClassName
+
+    ^ self 
+        at: #fileBrowserClassName 
+        ifAbsent:[self fileBrowserClass name]."/Backward comparibility
+
+    "Created: / 03-04-2012 / 11:01:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 showBookmarkBar
@@ -1537,7 +1607,6 @@
     "Created: / 18-05-2011 / 16:48:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 03-06-2011 / 11:01:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 showBookmarkBar: aBoolean
@@ -1553,7 +1622,6 @@
 
     "Created: / 18-05-2011 / 17:28:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 showEmbeddedTestRunnerInBrowser
@@ -1569,7 +1637,6 @@
 
     "Created: / 11-03-2010 / 10:11:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 showEmbeddedTestRunnerInBrowser:aBoolean
@@ -1584,7 +1651,6 @@
 
     "Created: / 11-03-2010 / 10:11:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 showGlobalHistory
@@ -1601,7 +1667,6 @@
     "Created: / 07-07-2011 / 00:03:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (comment): / 26-07-2012 / 16:35:54 / cg"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 showGlobalHistory: aBoolean
@@ -1618,7 +1683,6 @@
     "Created: / 07-07-2011 / 00:02:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (comment): / 26-07-2012 / 16:35:57 / cg"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 showLocalHistory
@@ -1635,7 +1699,6 @@
     "Created: / 07-07-2011 / 00:02:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (comment): / 26-07-2012 / 16:35:31 / cg"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 showLocalHistory: aBoolean
@@ -1652,7 +1715,6 @@
     "Created: / 07-07-2011 / 00:02:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (comment): / 26-07-2012 / 16:35:41 / cg"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 showMethodTemplate
@@ -1668,7 +1730,6 @@
 
     "Created: / 12-02-2010 / 12:06:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 showMethodTemplate:aBoolean
@@ -1683,7 +1744,6 @@
 
     "Created: / 12-02-2010 / 12:05:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 sortAndIndentClassesByInheritance
@@ -1698,7 +1758,6 @@
 
     "Created: / 06-07-2011 / 19:09:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 sortAndIndentClassesByInheritance: aBoolean
@@ -1713,7 +1772,6 @@
 
     "Created: / 06-07-2011 / 19:09:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 sourceCodeManagementMenuLayout
@@ -1736,7 +1794,6 @@
 
     "Created: / 06-10-2011 / 18:42:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 sourceCodeManagementMenuLayout: aSymbol
@@ -1760,7 +1817,6 @@
 
     "Created: / 06-10-2011 / 18:44:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-code view'!
 
 useCodeView2In: appSymbol
@@ -1780,7 +1836,6 @@
     "Modified: / 15-02-2010 / 09:26:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 26-07-2011 / 10:26:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-code view'!
 
 useCodeView2InBrowser
@@ -1795,7 +1850,6 @@
     "Modified: / 15-02-2010 / 09:26:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 26-07-2011 / 10:22:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-code view'!
 
 useCodeView2InBrowser: aBoolean
@@ -1810,7 +1864,6 @@
     "Modified: / 15-02-2010 / 09:26:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 26-07-2011 / 10:21:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-code view'!
 
 useCodeView2InDebugger
@@ -1825,7 +1878,6 @@
 
     "Created: / 26-07-2011 / 10:22:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-code view'!
 
 useCodeView2InDebugger: aBoolean
@@ -1840,7 +1892,6 @@
     "Modified: / 15-02-2010 / 09:26:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Created: / 26-07-2011 / 10:22:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-code view'!
 
 useCodeView2InTools
@@ -1854,7 +1905,6 @@
     "Created: / 12-02-2010 / 12:13:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 15-02-2010 / 09:26:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-code view'!
 
 useCodeView2InTools:aBoolean 
@@ -1865,7 +1915,6 @@
      UserPreferences current useCodeView2InBrowser:false"
     "Created: / 12-02-2010 / 12:14:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-code view'!
 
 useCodeView2InWorkspace
@@ -1880,7 +1929,6 @@
 
     "Created: / 26-07-2011 / 10:23:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-code view'!
 
 useCodeView2InWorkspace: aBoolean
@@ -1895,7 +1943,6 @@
 
     "Created: / 26-07-2011 / 10:22:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 useInPlaceSearchInBrowserLists
@@ -1910,7 +1957,6 @@
 
     "Created: / 28-07-2011 / 09:34:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 useInPlaceSearchInBrowserLists: aBoolean
@@ -1925,7 +1971,6 @@
 
     "Created: / 28-07-2011 / 09:35:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 webBrowserLikeLayout
@@ -1941,7 +1986,6 @@
 
     "Created: / 07-06-2011 / 14:33:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !UserPreferences methodsFor:'accessing-prefs-browser'!
 
 webBrowserLikeLayout: aBoolean
@@ -1957,9 +2001,13 @@
 
     "Created: / 07-06-2011 / 14:31:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
-
 !stx_libtool class methodsFor:'documentation'!
 
 extensionsVersion_CVS
     ^ '$Header: /cvs/stx/stx/libtool/extensions.st,v 1.92 2012-12-18 21:36:46 stefan Exp $'
-! !
\ No newline at end of file
+! !
+!stx_libtool class methodsFor:'documentation'!
+
+extensionsVersion_SVN
+    ^ '$Id:: extensions.st 8086 2013-01-15 12:03:21Z vranyj1                                                                        $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lccmake.bat	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,8 @@
+@REM -------
+@REM make using lcc compiler
+@REM type lccmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+make.exe -N -f bc.mak -DUSELCC=1 %*
+
+
--- a/libInit.cc	Sun Jan 27 02:50:59 2013 +0100
+++ b/libInit.cc	Wed Jan 30 11:15:09 2013 +0000
@@ -1,5 +1,5 @@
 /*
- * $Header: /cvs/stx/stx/libtool/libInit.cc,v 1.101 2012-07-26 12:07:34 vrany Exp $
+ * $Header$
  *
  * DO NOT EDIT
  * automagically generated from the projectDefinition: stx_libtool.
@@ -45,6 +45,10 @@
 _CodeGeneratorTool_Init(pass,__pRT__,snd);
 _DebugView_Init(pass,__pRT__,snd);
 _Diff_Init(pass,__pRT__,snd);
+_Diff2_Init(pass,__pRT__,snd);
+_Diff3_Init(pass,__pRT__,snd);
+_Diff3Hunk_Init(pass,__pRT__,snd);
+_Diff3InclusiveVisitor_Init(pass,__pRT__,snd);
 _DiffListUtility_Init(pass,__pRT__,snd);
 _DiffTextView_Init(pass,__pRT__,snd);
 _EditFieldWithCompletion_Init(pass,__pRT__,snd);
@@ -59,9 +63,9 @@
 _MemoryMonitor_Init(pass,__pRT__,snd);
 _MemoryMonitorView_Init(pass,__pRT__,snd);
 _MultiViewToolApplication_Init(pass,__pRT__,snd);
+_ParseTreeIndex_Init(pass,__pRT__,snd);
 _PerforceSourceCodeManagerUtilities_Init(pass,__pRT__,snd);
 _ProcessMonitorV2_Init(pass,__pRT__,snd);
-_SettingsDialog_Init(pass,__pRT__,snd);
 _SyntaxElement_Init(pass,__pRT__,snd);
 _SyntaxHighlighter2_Init(pass,__pRT__,snd);
 _SystemBrowser_Init(pass,__pRT__,snd);
@@ -71,6 +75,7 @@
 _Tools__BrowsletCanvas_Init(pass,__pRT__,snd);
 _Tools__CachedTags_Init(pass,__pRT__,snd);
 _Tools__ChangeSetBrowser2_Init(pass,__pRT__,snd);
+_Tools__ChangeSetDiffInfo_Init(pass,__pRT__,snd);
 _Tools__ChangeSetDiffTool_Init(pass,__pRT__,snd);
 _Tools__ChangeSetSelectionDialog_Init(pass,__pRT__,snd);
 _Tools__ChangeSetSpec_Init(pass,__pRT__,snd);
@@ -86,6 +91,7 @@
 _Tools__InlineMessageDialog_Init(pass,__pRT__,snd);
 _Tools__Inspector2_Init(pass,__pRT__,snd);
 _Tools__Inspector2Tab_Init(pass,__pRT__,snd);
+_Tools__LintAnnotation_Init(pass,__pRT__,snd);
 _Tools__LintHighlighter_Init(pass,__pRT__,snd);
 _Tools__LintRuleDetail_Init(pass,__pRT__,snd);
 _Tools__LintRuleSelectionDialog_Init(pass,__pRT__,snd);
@@ -110,6 +116,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);
@@ -121,6 +128,7 @@
 _BookmarkMenuBuilder_Init(pass,__pRT__,snd);
 _ContextInspectorView_Init(pass,__pRT__,snd);
 _DictionaryInspectorView_Init(pass,__pRT__,snd);
+_Diff3ExclusiveVisitor_Init(pass,__pRT__,snd);
 _DiffCodeView_Init(pass,__pRT__,snd);
 _FileApplicationNoteBook_Init(pass,__pRT__,snd);
 _FileBrowserV2_Init(pass,__pRT__,snd);
@@ -130,6 +138,7 @@
 _NewLauncher_Init(pass,__pRT__,snd);
 _OrderedCollectionInspectorView_Init(pass,__pRT__,snd);
 _SetInspectorView_Init(pass,__pRT__,snd);
+_SettingsDialog_Init(pass,__pRT__,snd);
 _SmalltalkCodeGeneratorTool_Init(pass,__pRT__,snd);
 _Tools__BackgroundSourceProcessingService_Init(pass,__pRT__,snd);
 _Tools__BreakpointService_Init(pass,__pRT__,snd);
@@ -137,6 +146,8 @@
 _Tools__CodeCompletionService_Init(pass,__pRT__,snd);
 _Tools__CodeNavigationService_Init(pass,__pRT__,snd);
 _Tools__CodeView2SettingsAppl_Init(pass,__pRT__,snd);
+_Tools__Diff2CodeView2_Init(pass,__pRT__,snd);
+_Tools__Diff3CodeView2_Init(pass,__pRT__,snd);
 _Tools__LintService_Init(pass,__pRT__,snd);
 _Tools__NavigatorCanvas_Init(pass,__pRT__,snd);
 _Tools__NewSystemBrowser_Init(pass,__pRT__,snd);
@@ -144,6 +155,8 @@
 _Tools__SendersBrowslet_Init(pass,__pRT__,snd);
 _Tools__StringSearchToolForTextView_Init(pass,__pRT__,snd);
 _Tools__TestRunnerEmbedded_Init(pass,__pRT__,snd);
+_Tools__TextDiff2Tool_Init(pass,__pRT__,snd);
+_Tools__TextDiff3Tool_Init(pass,__pRT__,snd);
 _Tools__VisualProfilerCanvas_Init(pass,__pRT__,snd);
 _WorkspaceApplication_Init(pass,__pRT__,snd);
 _BookmarkAddMenuBuilder_Init(pass,__pRT__,snd);
@@ -154,6 +167,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);
 _GitSourceCodeManagementSettingsAppl_Init(pass,__pRT__,snd);
 _MercurialSourceCodeManagementSettingsAppl_Init(pass,__pRT__,snd);
--- a/make.bat	Sun Jan 27 02:50:59 2013 +0100
+++ b/make.bat	Wed Jan 30 11:15:09 2013 +0000
@@ -1,1 +1,1 @@
-nmake /nologo -f nt.mak
+nmake /nologo -f nt.mak
--- a/mingwmake.bat	Sun Jan 27 02:50:59 2013 +0100
+++ b/mingwmake.bat	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,12 @@
 @REM -------
-@REM make using mingw compiler
+@REM make using mingw gnu compiler
 @REM type mingwmake, and wait...
 @REM do not edit - automatically generated from ProjectDefinition
 @REM -------
-make.exe -N -f bc.mak USEMINGW=1 %1 %2
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+make.exe -N -f bc.mak -DUSEMINGW=1 %DEFINES% %*
+
+
--- a/resources/DebugView.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/DebugView.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding iso8859-1
 
-; $Header: /cvs/stx/stx/libtool/resources/DebugView.rs,v 1.1 2010-03-10 23:52:43 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/DebugView.rs,v 1.1 2010/03/10 23:52:43 cg Exp $
 
 ;
 ; additional debugView-specific translations
--- a/resources/ProcessMonitor.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/ProcessMonitor.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding iso8859-1
 
-; $Header: /cvs/stx/stx/libtool/resources/ProcessMonitor.rs,v 1.1 2010-03-10 23:57:35 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/ProcessMonitor.rs,v 1.1 2010/03/10 23:57:35 cg Exp $
 
 ;
 ; additional processmonitor-specific translations
--- a/resources/af.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/af.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding iso8859-1
 
-; $Header: /cvs/stx/stx/libtool/resources/af.rs,v 1.3 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/af.rs,v 1.3 2008/11/28 16:41:56 cg Exp $
 
 ;
 ; Help please !
--- a/resources/cs.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/cs.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf8
 
-; $Header: /cvs/stx/stx/libtool/resources/cs.rs,v 1.5 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/cs.rs,v 1.5 2008/11/28 16:41:56 cg Exp $
 ;
 ; notice, that cs is the code for the czech the language,
 ; while cz/sk are codes for the countries.
--- a/resources/da.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/da.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding iso8859-1
 
-; $Header: /cvs/stx/stx/libtool/resources/da.rs,v 1.2 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/da.rs,v 1.2 2008/11/28 16:41:56 cg Exp $
 ;
 ; Launcher
 
--- a/resources/de.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/de.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -19,16 +19,16 @@
 ; GETTING_STARTED_FILE 'GettingStarted_de.wsp'
 
 'Buffers'                               'Seiten'
-'Add Buffer'                            'Seite hinzufügen'
-'Add Buffer on Workspace Variables'     'Seite mit Workspace Variablen hinzufügen'
-'Add Buffer on Global Variables'        'Seite mit Globalen Variablen hinzufügen'
-'Add Buffer on Namespace'               'Seite mit Namensraum-Variablen hinzufügen'
-'Add Buffer on SharedPool'              'Seite mit SharedPool-Variablen hinzufügen'
-'Add Buffer on Class Variables'         'Seite mit Klassenvariablen hinzufügen'
-'Add Buffer on MyWorkspace'             'Seite mit MyWorkspace hinzufügen'
-'Add Evaluation Buffer'                 'Seite mit Evaluator hinzufügen'
+'Add Buffer'                            'Seite hinzufgen'
+'Add Buffer on Workspace Variables'     'Seite mit Workspace Variablen hinzufgen'
+'Add Buffer on Global Variables'        'Seite mit Globalen Variablen hinzufgen'
+'Add Buffer on Namespace'               'Seite mit Namensraum-Variablen hinzufgen'
+'Add Buffer on SharedPool'              'Seite mit SharedPool-Variablen hinzufgen'
+'Add Buffer on Class Variables'         'Seite mit Klassenvariablen hinzufgen'
+'Add Buffer on MyWorkspace'             'Seite mit MyWorkspace hinzufgen'
+'Add Evaluation Buffer'                 'Seite mit Evaluator hinzufgen'
 'Remove Buffer'                         'Seite entfernen'
-'Add Tab'                               'Tab hinzufügen'
+'Add Tab'                               'Tab hinzufgen'
 'Remove Tab'                            'Tab entfernen'
 'Documentation on Smalltalk/X'          'Dokumentation zu Smalltalk/X'
 
@@ -36,45 +36,45 @@
 'New Workspace'                         'Neuer Workspace'
 'New SystemWorkspace'                   'Neuer SystemWorkspace'
 'New EvaluationWorkspace'               'Neuer EvaluatorWorkspace'
-'Add Workspace Variable'                'Workspace Variable hinzufügen'
+'Add Workspace Variable'                'Workspace Variable hinzufgen'
 'Inspect Workspace Variables'           'Workspace Variable inspizieren'
 'Remove Workspace Variable'             'Workspace Variable entfernen'
 'Remove all Workspace Variables'        'Alle Workspace Variablen entfernen'
 
-'New Name for %1:'                      'Neuer Name für %1:'
-'New Name for "%1":'                    'Neuer Name für "%1":'
+'New Name for %1:'                      'Neuer Name fr %1:'
+'New Name for "%1":'                    'Neuer Name fr "%1":'
 
 'Save all As'                                           'Alle sichern als'
 'Ask for a file and save the page''s contents there'    'Den Seiteninhalt in einer Datei sichern'
 'Save the page''s contents in the original file'        'Den Seiteninhalt in der Originaldatei sichern'
 
-'Accept'                                'Ãœbernehmen'
+'Accept'                                'bernehmen'
 
 'Filter Text'                           'Text filtern'
 'Process Text'                          'Text bearbeiten'
 'Compare Text Against'                  'Text vergleichen mit'
 'Redo Last'                             'Letzte Anweisung wiederholen'
-'Paste Last'                            'Letzte Anweisung einfügen'
-
-'Text was not saved. Close anyway ?'            'Text wurde nicht gesichert. Dennoch schließen ?'
-'Text was modified. Load anyway ?'              'Text wurde geändert. Dennoch laden ?'
-'Text was modified. Remove buffer anyway ?'     'Text wurde geändert. Seite dennoch entfernen ?'
-'Clear History'                                 'Historie löschen'
+'Paste Last'                            'Letzte Anweisung einfgen'
+
+'Text was not saved. Close anyway ?'            'Text wurde nicht gesichert. Dennoch schlieen ?'
+'Text was modified. Load anyway ?'              'Text wurde gendert. Dennoch laden ?'
+'Text was modified. Remove buffer anyway ?'     'Text wurde gendert. Seite dennoch entfernen ?'
+'Clear History'                                 'Historie lschen'
 
 'FileIn Text'                           'Text laden (fileIn im Chunk Format)'
 
 'Select All'                            'Alles Markieren'
 'Google Spell'                          'Google Rechtschreibhilfe'
-'Translate'                             'Ãœbersetzen'
+'Translate'                             'bersetzen'
 'Compare with Clipboard'                'Vergleich mit Clipboard'
-'Open Workspace with It'                'Workspace mit Selektion öffnen'
+'Open Workspace with It'                'Workspace mit Selektion ffnen'
 'Services'                              'Dienste'
 'English -> German'                     'Englisch -> Deutsch'
-'English -> French'                     'Englisch -> Französisch'
+'English -> French'                     'Englisch -> Franzsisch'
 'English -> Spanish'                    'Englisch -> Spanisch'
 'English -> Portuguese'                 'Englisch -> Portugiesisch'
 'German -> English'                     'Deutsch -> Englisch'
-'French -> English'                     'Französisch -> Englisch'
+'French -> English'                     'Franzsisch -> Englisch'
 'Spanish -> English'                    'Spanisch -> Englisch'
 'Portuguese -> English'                 'Portugiesisch -> Englisch'
 'Russian -> English'                    'Russisch -> Englisch'
@@ -89,13 +89,13 @@
 'Autodefine as DoIt Variable'           'Automatisch definieren als DoIt-Variable'
 'Autodefine off'                        'Nicht automatisch definieren'
 'Autofetch Selection'                   'Clipboard automatisch holen'
-'Insert as Line (Append CR)'            'Als Zeile einfügen (CR anhängen)'
-
-'Add SharedPool'                        'SharedPool hinzufügen'
+'Insert as Line (Append CR)'            'Als Zeile einfgen (CR anhngen)'
+
+'Add SharedPool'                        'SharedPool hinzufgen'
 'Remove SharedPool'                     'SharedPool ignorieren'
 
 'Copy as Sniplet'                       'Zu Schnipsel kopieren'
-'Paste Sniplet'                         'Schnipsel einfügen'
+'Paste Sniplet'                         'Schnipsel einfgen'
 'Manage Sniplets'                       'Schnipsel verwalten'
 'No Sniplets to Manage'                 'Keine Schnipsel zum verwalten'
 'Nothing Selected'                      'Kein Text markiert'
@@ -112,15 +112,15 @@
 'Lines by nth Word (ignore case)'       'Zeilen nach n-tem Wort (gross/klein ignorieren)'
 'Words (ignore case)'                   'Worte (gross/klein ignorieren)'
 
-'Paste Previous'                        'Vorherigen Text einfügen'
+'Paste Previous'                        'Vorherigen Text einfgen'
 'Join Lines'                            'Zeilen zusammenfassen'
-'Insert new UUID'                       'Neue UUID einfügen'
-'AutoIndent'                            'Automatisch einrücken'
-
-'Hide Toolbar. Show again via the "View"-Menu'          'Werkzeugleiste ausblenden. Wiederherstellen über das "Ansicht"-Menu'
-; 'Hide Editor-Toolbar. Show again via the "View"-Menu'   'Editor-Werkzeugleiste ausblenden. Wiederherstellen über das "Ansicht"-Menu'
-'Hide Edit-Toolbar. Show again via the "View"-Menu'     'Editor-Werkzeugleiste ausblenden. Wiederherstellen über das "Ansicht"-Menu'
-'Hide Bookmarkbar. Show again via the "View"-Menu'      'Lesezeichenleiste ausblenden. Wiederherstellen über das "Ansicht"-Menu'
+'Insert new UUID'                       'Neue UUID einfgen'
+'AutoIndent'                            'Automatisch einrcken'
+
+'Hide Toolbar. Show again via the "View"-Menu'          'Werkzeugleiste ausblenden. Wiederherstellen ber das "Ansicht"-Menu'
+; 'Hide Editor-Toolbar. Show again via the "View"-Menu'   'Editor-Werkzeugleiste ausblenden. Wiederherstellen ber das "Ansicht"-Menu'
+'Hide Edit-Toolbar. Show again via the "View"-Menu'     'Editor-Werkzeugleiste ausblenden. Wiederherstellen ber das "Ansicht"-Menu'
+'Hide Bookmarkbar. Show again via the "View"-Menu'      'Lesezeichenleiste ausblenden. Wiederherstellen ber das "Ansicht"-Menu'
 
 ;--------------------------------------------------------------------------------------------
 ;
@@ -132,9 +132,9 @@
 'Create PatchFile'    'Patch-Datei erzeugen'
 'Exit'                'Beenden'
 'Documentation'       'Dokumentation'
-'About this Application'  'Ãœber diese Anwendung'
-
-'Changed'             'Geändert'
+'About this Application'  'ber diese Anwendung'
+
+'Changed'             'Gendert'
 'current'             'aktuell'
 'newest'              'neueste'
 'current:'            'aktuell:'
@@ -150,17 +150,17 @@
 
 'Interrupt'                         'Unterbrechen (Interrupt)'
 'Kill'                              'Beenden (Kill)'
-'Reset Terminal'                    'Terminalemulation zurücksetzen'
+'Reset Terminal'                    'Terminalemulation zurcksetzen'
 
 ;--------------------------------------------------------------------------------------------
 ;
 ; Packager
 ;
 
-'Project Type Selection'            'Projektart auswählen'
-'ProjectDefinition Selection'       'Projekt-Definitionsklasse auswählen'
-'Startup Application Selection'     'Applikationsklasse auswählen'
-'Startup Class Selection'           'Startklasse auswählen'
+'Project Type Selection'            'Projektart auswhlen'
+'ProjectDefinition Selection'       'Projekt-Definitionsklasse auswhlen'
+'Startup Application Selection'     'Applikationsklasse auswhlen'
+'Startup Class Selection'           'Startklasse auswhlen'
 'Specify Contents'                  'Projektinhalt definieren'
 'Specify Prerequisites'             'Vorausgesetzte Pakete definieren'
 'Specify Project Attributes'        'Projektattribute definieren'
@@ -169,17 +169,17 @@
 'Deploy'                            'Ausliefern'
 'Finish'                            'Beenden'
 
-'Choose the <B>type</B> of project you are about to build.'  'Wählen Sie die <B>Art</B> des Projekts, das gebaut werden soll.'
-'Choose an existing project definition or create a new one. These are subclasses of <I>ProjectDefinition</I> and define the type and contents of a project. Notice that the ID directly reflects the project''s location within the source code repository (module:directory/subdirectory...). If in doubt, use "&lt;yourname&gt;:demos/xxx_n".'   'Wählen Sie eine existierende Projektdefinition oder legen Sie eine neue an. Diese sind Subklassen von <I>ProjectDefinition</I> und definieren Art und Inhalt eines Projekts. Beachten Sie, dass die ID direkt mit der Position innerhalb der Quellcodeverwaltung korrespondiert (module:directory/subdirectory...). Im Zweifelsfall geben Sie als ID "&lt;ihrName&gt;:demos/xxx_n" an.'
-'Choose an existing application or create a new one. These are subclasses of <I>ApplicationModel</I> and define the GUI and control flow inside the application. Can also be left blank if the startup class does it all (stx build).'         'Wählen Sie eine existierende Anwendungsklasse oder legen Sie eine neue an. Diese sind Subklassen von <I>ApplicationModel</I> und definieren das GUI (Oberfläche) sowie den Kontrollfluss der Anwendung. Kann leer bleiben, falls die Start-Klasse dies bereits macht (z.B. beim Bauen von stx).'
-'Choose an existing startup-class or create a new one. These are subclasses of <I>StandaloneStartup</I> and start the application. Command line arguments can be interpreted there.'   'Wählen Sie eine existierende Start-Klasse oder legen Sie eine neue an. Diese sind Subklassen von <I>StandaloneStartup</I> und haben die Aufgabe, die eigentliche Anwendung zu starten. Kommandozeilen-Argumente werden typischerweise dort ausgewertet.'
-'Define which (other) classes are to be included. Press "<I>Scan</I>" to include all classes of the package; browse to edit the contents manually.'    'Definieren Sie (weitere) Klassen, welche im Paket beinhaltet sein sollen. Drücken Sie "<I>Aktualisieren/Scan</I>" um alle Klassen des mit dieser Paket-ID einzutragen. Verwenden Sie den Browser um die Liste manuell zu verwalten.'
-'Define which packages are needed as prerequisites. Press "<I>Scan</I>" to search for prerequisites; browse to edit the list manually.'    'Definieren Sie vorausgesetzte Pakete. Drücken Sie "<I>Aktualisieren/Scan</I>" um die Liste der benötigten Pakete automatisch zu erzeugen. Verwenden Sie den Browser um die Liste manuell zu verwalten.'
+'Choose the <B>type</B> of project you are about to build.'  'Whlen Sie die <B>Art</B> des Projekts, das gebaut werden soll.'
+'Choose an existing project definition or create a new one. These are subclasses of <I>ProjectDefinition</I> and define the type and contents of a project. Notice that the ID directly reflects the project''s location within the source code repository (module:directory/subdirectory...). If in doubt, use "&lt;yourname&gt;:demos/xxx_n".'   'Whlen Sie eine existierende Projektdefinition oder legen Sie eine neue an. Diese sind Subklassen von <I>ProjectDefinition</I> und definieren Art und Inhalt eines Projekts. Beachten Sie, dass die ID direkt mit der Position innerhalb der Quellcodeverwaltung korrespondiert (module:directory/subdirectory...). Im Zweifelsfall geben Sie als ID "&lt;ihrName&gt;:demos/xxx_n" an.'
+'Choose an existing application or create a new one. These are subclasses of <I>ApplicationModel</I> and define the GUI and control flow inside the application. Can also be left blank if the startup class does it all (stx build).'         'Whlen Sie eine existierende Anwendungsklasse oder legen Sie eine neue an. Diese sind Subklassen von <I>ApplicationModel</I> und definieren das GUI (Oberflche) sowie den Kontrollfluss der Anwendung. Kann leer bleiben, falls die Start-Klasse dies bereits macht (z.B. beim Bauen von stx).'
+'Choose an existing startup-class or create a new one. These are subclasses of <I>StandaloneStartup</I> and start the application. Command line arguments can be interpreted there.'   'Whlen Sie eine existierende Start-Klasse oder legen Sie eine neue an. Diese sind Subklassen von <I>StandaloneStartup</I> und haben die Aufgabe, die eigentliche Anwendung zu starten. Kommandozeilen-Argumente werden typischerweise dort ausgewertet.'
+'Define which (other) classes are to be included. Press "<I>Scan</I>" to include all classes of the package; browse to edit the contents manually.'    'Definieren Sie (weitere) Klassen, welche im Paket beinhaltet sein sollen. Drcken Sie "<I>Aktualisieren/Scan</I>" um alle Klassen des mit dieser Paket-ID einzutragen. Verwenden Sie den Browser um die Liste manuell zu verwalten.'
+'Define which packages are needed as prerequisites. Press "<I>Scan</I>" to search for prerequisites; browse to edit the list manually.'    'Definieren Sie vorausgesetzte Pakete. Drcken Sie "<I>Aktualisieren/Scan</I>" um die Liste der bentigten Pakete automatisch zu erzeugen. Verwenden Sie den Browser um die Liste manuell zu verwalten.'
 'Define additional attributes.'     'Definieren Sie weitere Attribute.'
-'Define where the build-process is to be performed. All generated files are created below that directory. After deployment, the build directory is no longer needed (but you can keep it for a faster compile the next time).'         'Geben Sie an, in welchem Verzeichnis gebaut werden soll. Alle erzeugten Dateien werden unter diesem Verzeichnis abgelegt. Nach der Lieferung wird dieses Verzeichnis nicht mehr benötigt (Sie können es aber behalten, um nachfolgende Übersetzungen (make) zu beschleunigen).'
-'Start the build-process. This will run make/bcc to compile all required classes and nsis to generate a self-installable executable. You must have the borland-cc and NullSoft NSIS packages installed for this to work.'      'Start des Bauprozesses. Dies wird make aufrufen, um alle benötigten Klassen zu übersetzen, und nsis um ein selbstinstallierendes Paket zu erzeugen. Sie müssen vorher borland-cc und das NullSoft NSIS Paket installiert haben.'
-'Start the build-process. This will run make+bcc/vc to compile all required classes and nsis to generate a self-installable executable. You must have the compiler (borland-bcc or visual-c) and NullSoft NSIS packages installed for this to work.'   'Start des Bauprozesses. Dazu wird make aufrufen, um alle benötigten Klassen zu übersetzen, und nsis um ein selbstinstallierendes Paket zu erzeugen. Sie müssen vorher einen Compiler (borland-bcc oder visual-c) und das NullSoft NSIS Paket installiert haben.'
-'Find the installer to be deployed (or test-run the binary). You can open a Windows-Explorer there to copy the files for deployment. After that, the build directory is no longer needed. However, you can keep it for a faster compile the next time.'    'Hier finden Sie das gebaute Lieferpaket (sowie die gebaute Anwendung zum Testlauf). Sie können hier einen Windows-Explorer öffnen, um die Dateien zur Auslieferung zu kopieren. Danach wird das Bauverzeichnis nicht mehr benötigt. Sie können es aber behalten, um nachfolgende Übersetzungen zu beschleunigen.'
+'Define where the build-process is to be performed. All generated files are created below that directory. After deployment, the build directory is no longer needed (but you can keep it for a faster compile the next time).'         'Geben Sie an, in welchem Verzeichnis gebaut werden soll. Alle erzeugten Dateien werden unter diesem Verzeichnis abgelegt. Nach der Lieferung wird dieses Verzeichnis nicht mehr bentigt (Sie knnen es aber behalten, um nachfolgende bersetzungen (make) zu beschleunigen).'
+'Start the build-process. This will run make/bcc to compile all required classes and nsis to generate a self-installable executable. You must have the borland-cc and NullSoft NSIS packages installed for this to work.'      'Start des Bauprozesses. Dies wird make aufrufen, um alle bentigten Klassen zu bersetzen, und nsis um ein selbstinstallierendes Paket zu erzeugen. Sie mssen vorher borland-cc und das NullSoft NSIS Paket installiert haben.'
+'Start the build-process. This will run make+bcc/vc to compile all required classes and nsis to generate a self-installable executable. You must have the compiler (borland-bcc or visual-c) and NullSoft NSIS packages installed for this to work.'   'Start des Bauprozesses. Dazu wird make aufrufen, um alle bentigten Klassen zu bersetzen, und nsis um ein selbstinstallierendes Paket zu erzeugen. Sie mssen vorher einen Compiler (borland-bcc oder visual-c) und das NullSoft NSIS Paket installiert haben.'
+'Find the installer to be deployed (or test-run the binary). You can open a Windows-Explorer there to copy the files for deployment. After that, the build directory is no longer needed. However, you can keep it for a faster compile the next time.'    'Hier finden Sie das gebaute Lieferpaket (sowie die gebaute Anwendung zum Testlauf). Sie knnen hier einen Windows-Explorer ffnen, um die Dateien zur Auslieferung zu kopieren. Danach wird das Bauverzeichnis nicht mehr bentigt. Sie knnen es aber behalten, um nachfolgende bersetzungen zu beschleunigen.'
 
 'GUI Application'                   'GUI Anwendung'
 'Non-GUI Application'               'nicht-GUI Anwendung'
@@ -203,18 +203,18 @@
 'Company Name'                      'Firmenname'
 
 'Existing Projects of this Type (PackageIDs)'   'Existierende Projekte dieser Art (Paket-IDs)'
-'Hide ST/X Base Packages'                       'ST/X Basispakete unterdrücken'
+'Hide ST/X Base Packages'                       'ST/X Basispakete unterdrcken'
 'New Project''s PackageID'                      'Neues Projekt (Paket-ID)'
 'Existing Projects with ProjectDefinition'      'Existierende Projekte mit Projekt-Definition'
-'Browse Selected Project'                       'Browser auf ausgewähltes Projekt'
+'Browse Selected Project'                       'Browser auf ausgewhltes Projekt'
 'New Application Class'                         'Neue Anwendungsklasse'
 'Existing Applications'                         'Existierende Anwendungsklasse'
-'Hide other Application Classes'                'Andere Anwendungsklassen unterdrücken'
+'Hide other Application Classes'                'Andere Anwendungsklassen unterdrcken'
 'Browse Selected Application'                   'Browser auf Anwendung'
 'Launch Selected Application'                   'Anwendung starten'
 'New Startup Class'                             'Neue Startklasse'
 'Existing Startup Classes'                      'Existierende Startklassen'
-'Hide other Startup Classes'                    'Andere Startklassen unterdrücken'
+'Hide other Startup Classes'                    'Andere Startklassen unterdrcken'
 'Browse Selected StartupClass'                  'Browser auf Startklasse'
 'Browse Project Definition'                     'Browser auf Projektdefinition'
 'Update Contents (Scan)'                        'Liste Aktualisieren (durchsuchen)'
@@ -241,7 +241,7 @@
 'modifications of: %1'                   'Schreibzugriffe auf: %1'
 'references to: %1'                      'Zugriffe auf: %1'
 'supersends (in and below %1)'           'Super-Sends (in und unter %1)'
-'Only the selected method(s) found.\Browse anyway'  'Nur die bereits ausgewählte(n) Methode(n) gefunden.\Dennoch browsen'
+'Only the selected method(s) found.\Browse anyway'  'Nur die bereits ausgewhlte(n) Methode(n) gefunden.\Dennoch browsen'
 'Search Again'                           'Neue Suche'
 
 'System Browser'        'Systembrowser'
@@ -251,23 +251,23 @@
 fileOut                 'sichern (fileOut)'
 'fileOut each'          'einzeln sichern (fileOut)'
 'fileOut all'           'alle sichern'
-; 'fileOut binary'        'binär sichern'
-'SPAWN_CATEGORY'        'Browser für Kategorie'
-'spawn full class'      'Browser für ganze Klassen'
+; 'fileOut binary'        'binr sichern'
+'SPAWN_CATEGORY'        'Browser fr Kategorie'
+'spawn full class'      'Browser fr ganze Klassen'
 update                  'aktualisieren'
 
 ; 'class to find'                  'Name der Klasse'
 'name of new class category:'    'Name der neuen Klassenkategorie:'
-'select a class category first'  'keine Klassenkategorie ist ausgewählt'
-'select a class first'           'keine Klasse ist ausgewählt'
-'select a method category first' 'keine Methodenkategorie ist ausgewählt'
-'select a method first'          'keine Methode ist ausgewählt'
+'select a class category first'  'keine Klassenkategorie ist ausgewhlt'
+'select a class first'           'keine Klasse ist ausgewhlt'
+'select a method category first' 'keine Methodenkategorie ist ausgewhlt'
+'select a method first'          'keine Methode ist ausgewhlt'
 'no class named: %1'             'es gibt keine Klasse mit Name: %1'
 
-'SPAWN_CLASS'          'Browser für Klasse'
-'spawn full protocol'  'Browser für Protokoll'
-'spawn hierarchy'      'Browser für Hierarchie'
-'spawn subclasses'     'Browser für Subklassen'
+'SPAWN_CLASS'          'Browser fr Klasse'
+'spawn full protocol'  'Browser fr Protokoll'
+'spawn hierarchy'      'Browser fr Hierarchie'
+'spawn subclasses'     'Browser fr Subklassen'
 hierarchy              'Hierarchie'
 definition             'Definition'
 comment                'Kommentar'
@@ -287,18 +287,18 @@
 'all instvar mods'  'alle Modifikationen einer Instanzvariable'
 'all classvar mods' 'alle Modifikationen einer Klassenvariable'
 
-'SPAWN_METHODCATEGORY'          'Browser für Methodenkategorie'
-'spawn category'                'Browser für komplette Kategorie'
+'SPAWN_METHODCATEGORY'          'Browser fr Methodenkategorie'
+'spawn category'                'Browser fr komplette Kategorie'
 'new category'                  'neue Kategorie'
 
-'SPAWN_METHOD'          'Browser für Methode'
+'SPAWN_METHOD'          'Browser fr Methode'
 'globals'               'Globale'
 'string search'         'Zeichenkette suchen'
-'apropos'               'Schlüsselwort suchen'
+'apropos'               'Schlsselwort suchen'
 'local senders'         'lokale Sender'
 'local implementors'    'lokale Implementierungen'
 'local string search'   'Zeichenkette lokal suchen'
-'local apropos'         'Schlüsselwort lokal suchen'
+'local apropos'         'Schlsselwort lokal suchen'
 
 'breakpoint'            'Haltepunkt'
 'BreakPoint'            'Haltepunkt'
@@ -315,7 +315,7 @@
 'Format Code (PrettyPrint)'     'Code formatieren (PrettyPrint)'
 'Format code (PrettyPrint)'     'Code formatieren (PrettyPrint)'
 'new method'            'neue Methode'
-'change category'       'Kategorie ändern'
+'change category'       'Kategorie ndern'
 
 'instance variable to browse references to:' 'Instanzvariable auf die Zugriffe gesucht werden:'
 'class variable to browse references to:'    'Klassenvariable auf die Zugriffe gesucht werden:'
@@ -352,14 +352,14 @@
 'remove %1\(with %2 methods) ?'     '%1 entfernen ? (mit %2 Methoden)'
 'remove %1\(with 1 method) ?'       '%1 entfernen ? (mit 1 Methode)'
 
-'text has not been accepted.\\Your modifications will be lost when continuing'  'geänderter Text wurde nicht gesichert.\\Bei Fortfahren gehen ihre Änderungen verloren'
-'Code was modified.\\Change selection anyway'                                   'Geänderter Text wurde nicht gesichert.\\Auswahl dennoch ändern'
-'Modifications have not been saved.\\Exit anyway'                               'Änderungen wurden nicht gesichert.\\Dennoch beenden'
-'Modifications have not been saved.\\Change selection anyway'                   'Änderungen wurden nicht gesichert.\\Auswahl dennoch ändern'
-'Modifications have not been saved.\\Remove buffer anyway'                      'Änderungen wurden nicht gesichert.\\Seite dennoch entfernen'
-'Code was modified.\\Remove buffer anyway'                                      'Änderungen wurden nicht gesichert.\\Seite dennoch entfernen'
-'Modifications have not been saved.\\Your changes will be lost when continuing' 'Geänderter Text wurden nicht gesichert.\\Bei Fortfahren gehen ihre Änderungen verloren'
-'Buffer "%1" was modified.\\Exit anyway'                                        'Änderungen in "%1" wurden nicht gesichert.\\Dennoch beenden'
+'text has not been accepted.\\Your modifications will be lost when continuing'  'genderter Text wurde nicht gesichert.\\Bei Fortfahren gehen ihre nderungen verloren'
+'Code was modified.\\Change selection anyway'                                   'Genderter Text wurde nicht gesichert.\\Auswahl dennoch ndern'
+'Modifications have not been saved.\\Exit anyway'                               'nderungen wurden nicht gesichert.\\Dennoch beenden'
+'Modifications have not been saved.\\Change selection anyway'                   'nderungen wurden nicht gesichert.\\Auswahl dennoch ndern'
+'Modifications have not been saved.\\Remove buffer anyway'                      'nderungen wurden nicht gesichert.\\Seite dennoch entfernen'
+'Code was modified.\\Remove buffer anyway'                                      'nderungen wurden nicht gesichert.\\Seite dennoch entfernen'
+'Modifications have not been saved.\\Your changes will be lost when continuing' 'Genderter Text wurden nicht gesichert.\\Bei Fortfahren gehen ihre nderungen verloren'
+'Buffer "%1" was modified.\\Exit anyway'                                        'nderungen in "%1" wurden nicht gesichert.\\Dennoch beenden'
 
 'compare'                           'vergleichen'
 'Attention'                         'Achtung'
@@ -377,7 +377,7 @@
 abort                   'Abbruch'
 'cancel'                'abbrechen'
 ; abort                   'abbrechen'
-accept                  'übernehmen'
+accept                  'bernehmen'
 continue                'weiter'
 
 'references to undeclared variables'            'Referenzen auf unbekannte Variable'
@@ -385,24 +385,24 @@
 '...\\... none found.'                          '...\\... keine gefunden.'
 
 
-'Keyword Index'          'Schlüsselwort Index'
-
-HELP_CCAT_LIST   'zeigt Klassenkategorien.\Jede Klasse wird einer solchen Kategorie zugeordnet,\um die Übersichtlichkeit zu erhöhen.\Wählen Sie eine Kategorie aus, um die Klassen zu sehen.\Der spezielle Eintrag ``all'''' gibt ihnen eine vollständige alphabetische Liste;\wohingegen ``hierarchy'''' die Klassen nach ihrer Vererbungshierarchie sortiert.\\Semantisch haben Klassenkategorien keine Bedeutung.'
-HELP_CLASS_LIST  'zeigt die Klassen entsprechend der gewählten Kategorie.\Wählen Sie eine Klasse um deren Definition und Methoden anzuzeigen.'
-HELP_HCLASS_LIST 'zeigt die Klassen entlang der Vererbungskette.\Wählen Sie eine Klasse um deren Definition und Methoden anzuzeigen.'
-HELP_PCLASS_LIST 'zeigt die Klassen entlang der Vererbungskette.\Einzelne Klassen können ausgestrichen werden,\womit ihr Protokoll in den Methodenlisten nicht berücksichtigt wird.'
-HELP_MCAT_LIST   'zeigt Methodenkategorien.\Entsprechend der Klassenkategorien werden auch Methoden einer\Kategorie zugeordnet. Auch dies dient nur der Ãœbersicht und hat\keine semantische Bedeutung.'
-HELP_METHOD_LIST 'zeigt Methoden sortiert nach Selektor.\Auswahl eines Selektors zeigt den Quellcode unten.\Sie finden nützliche Such- und Debugfunktionen im Menu des Fensters.'
+'Keyword Index'          'Schlsselwort Index'
+
+HELP_CCAT_LIST   'zeigt Klassenkategorien.\Jede Klasse wird einer solchen Kategorie zugeordnet,\um die bersichtlichkeit zu erhhen.\Whlen Sie eine Kategorie aus, um die Klassen zu sehen.\Der spezielle Eintrag ``all'''' gibt ihnen eine vollstndige alphabetische Liste;\wohingegen ``hierarchy'''' die Klassen nach ihrer Vererbungshierarchie sortiert.\\Semantisch haben Klassenkategorien keine Bedeutung.'
+HELP_CLASS_LIST  'zeigt die Klassen entsprechend der gewhlten Kategorie.\Whlen Sie eine Klasse um deren Definition und Methoden anzuzeigen.'
+HELP_HCLASS_LIST 'zeigt die Klassen entlang der Vererbungskette.\Whlen Sie eine Klasse um deren Definition und Methoden anzuzeigen.'
+HELP_PCLASS_LIST 'zeigt die Klassen entlang der Vererbungskette.\Einzelne Klassen knnen ausgestrichen werden,\womit ihr Protokoll in den Methodenlisten nicht bercksichtigt wird.'
+HELP_MCAT_LIST   'zeigt Methodenkategorien.\Entsprechend der Klassenkategorien werden auch Methoden einer\Kategorie zugeordnet. Auch dies dient nur der bersicht und hat\keine semantische Bedeutung.'
+HELP_METHOD_LIST 'zeigt Methoden sortiert nach Selektor.\Auswahl eines Selektors zeigt den Quellcode unten.\Sie finden ntzliche Such- und Debugfunktionen im Menu des Fensters.'
 HELP_CLSMTHOD_LIST 'zeigt Methoden entsprechend ihrer Recherche.\\Auswahl einer Zeile zeigt den Quellcode unten.'
-HELP_VAR_LIST    'zeigt Instanz- bzw. Klassenvariable\der ausgewählten Klasse.\Geerbte Variable werden ebenfalls angezeigt.\Bei Auswahl werden alle Methoden die auf diese Variable\zugreifen in der Methodenliste hervorgehoben.\Außerdem besitzt das Fenster ein Menu mit weiteren Suchfunktionen.'
-HELP_CODE_VIEW   'zeigt die Definition bzw. den Quellcode der ausgewählten Klasse bzw. Methode.\Sie können den Text bearbeiten und Änderungen mit ``übernehmen'''' installieren.'
-HELP_FULLCODE_VIEW   'zeigt den gesamten Quellcode der ausgewählten Klasse im ``fileOut'''' format.\Sie können den Text bearbeiten und Änderungen mit ``übernehmen'''' installieren.'
-HELP_INST_CLASS_TOGGLE  'Schaltet um zwischen Instanz- und Klassenprotokoll.\\Das Instanzprotokoll wird von Objekten verstanden,\die Instanzen der ausgewählten Klasse oder einer Subklasse sind;\das Klassenprotokoll von den Klassenobjekten selbst.'
-HELP_NS_BOX             'Filter für Namesraum. Es werden nur Klassen im ausgewählten Namesraum angezeigt.'
-
-'WARN_RENAME'           'Eine Klasse mit diesem Namen existiert bereits (in ''%2'').\\Falls Sie fortfahren, wird diese wird nicht mehr sichtbar sein (i.e. gelöscht).\\Fortfahren ?'
-'CREATE_REPOSITORY'     'Anlegen eines neuen Quellcode-Containers für %1.\\'
-'CHANGE_REPOSITORY'     'Ändern des Quellcode-Containers für %1.\\'
+HELP_VAR_LIST    'zeigt Instanz- bzw. Klassenvariable\der ausgewhlten Klasse.\Geerbte Variable werden ebenfalls angezeigt.\Bei Auswahl werden alle Methoden die auf diese Variable\zugreifen in der Methodenliste hervorgehoben.\Auerdem besitzt das Fenster ein Menu mit weiteren Suchfunktionen.'
+HELP_CODE_VIEW   'zeigt die Definition bzw. den Quellcode der ausgewhlten Klasse bzw. Methode.\Sie knnen den Text bearbeiten und nderungen mit ``bernehmen'''' installieren.'
+HELP_FULLCODE_VIEW   'zeigt den gesamten Quellcode der ausgewhlten Klasse im ``fileOut'''' format.\Sie knnen den Text bearbeiten und nderungen mit ``bernehmen'''' installieren.'
+HELP_INST_CLASS_TOGGLE  'Schaltet um zwischen Instanz- und Klassenprotokoll.\\Das Instanzprotokoll wird von Objekten verstanden,\die Instanzen der ausgewhlten Klasse oder einer Subklasse sind;\das Klassenprotokoll von den Klassenobjekten selbst.'
+HELP_NS_BOX             'Filter fr Namesraum. Es werden nur Klassen im ausgewhlten Namesraum angezeigt.'
+
+'WARN_RENAME'           'Eine Klasse mit diesem Namen existiert bereits (in ''%2'').\\Falls Sie fortfahren, wird diese wird nicht mehr sichtbar sein (i.e. gelscht).\\Fortfahren ?'
+'CREATE_REPOSITORY'     'Anlegen eines neuen Quellcode-Containers fr %1.\\'
+'CHANGE_REPOSITORY'     'ndern des Quellcode-Containers fr %1.\\'
 
 Category                'Kategorie'
 Class                   'Klasse'
@@ -413,7 +413,7 @@
 'Other'                 'Weitere'
 
 'Spawn'                 'Neuer Browser'
-'Spawn class'           'Browser für Klasse'
+'Spawn class'           'Browser fr Klasse'
 
 'File Browser'           'Dateibrowser'
 instance                 'Instanz'
@@ -423,11 +423,11 @@
 'FileOut As'           'Sichern als'
 'FileOut Each'            'Einzeln sichern'
 'FileOut Each In'      'Einzeln sichern in'
-'FileOut Each Binary In'  'Einzeln binär sichern in'
+'FileOut Each Binary In'  'Einzeln binr sichern in'
 'FileOut All'             'Alle sichern'
-'FileOut Binary'          'Binär sichern'
-'FileOut Each Binary'  'Einzeln binär sichern'
-'FileOut Binary As'    'Binär sichern als'
+'FileOut Binary'          'Binr sichern'
+'FileOut Each Binary'  'Einzeln binr sichern'
+'FileOut Binary As'    'Binr sichern als'
 PrintOut                  'Drucken'
 ; 'printOut protocol'       'drucken - nur Protokoll'
 ; 'PrintOut Protocol'       'Drucken - nur Protokoll'
@@ -436,58 +436,58 @@
 'Print out Protocol'      'Protokoll drucken'
 'PrintOut Protocol'       'Protokoll drucken'
 'Clone'                   'Browser duplizieren'
-'Open for Class'       'Öffnen für Klasse'
-'Open'                    'Öffnen'
-'Browse Class'              'Browser für Klasse'
+'Open for Class'       'ffnen fr Klasse'
+'Open'                    'ffnen'
+'Browse Class'              'Browser fr Klasse'
 ; 'Browse Class'              'Klasse bearbeiten'
-'browse class'              'Browser für Klasse'
+'browse class'              'Browser fr Klasse'
 'Browse Full Class Source'  'Browser auf gesamten Quellcode'
 'Browse Class Extensions'   'Browser auf Erweiterungen'
 
-'SPAWN_CATEGORY'          'Browser für Kategorie'
-'Spawn Category'          'Browser für Kategorie'
-'Spawn Category'       'Browser für Kategorie'
-'Spawn Full Class'          'Browser für ganze Klassen'
-'Spawn Full Class Browser'  'Browser für ganze Klassen'
-'Full Class Source'         'Browser für ganze Klassen'
-'Spawn Extensions'          'Browser für Erweiterungen'
-'Spawn Extensions Browser'  'Browser für Erweiterungen'
-'Class Extensions'        'Browser für Erweiterungen'
+'SPAWN_CATEGORY'          'Browser fr Kategorie'
+'Spawn Category'          'Browser fr Kategorie'
+'Spawn Category'       'Browser fr Kategorie'
+'Spawn Full Class'          'Browser fr ganze Klassen'
+'Spawn Full Class Browser'  'Browser fr ganze Klassen'
+'Full Class Source'         'Browser fr ganze Klassen'
+'Spawn Extensions'          'Browser fr Erweiterungen'
+'Spawn Extensions Browser'  'Browser fr Erweiterungen'
+'Class Extensions'        'Browser fr Erweiterungen'
 'Find Class'           'Klasse suchen'
 'Method'               'Methode'
 'New Class Category'   'Neue Kategorie anlegen'
 'Visited Classes'         'Besuchte Klassen'
 'Visited History'         'Besuchte Klassen'
-'Changed History'         'Historie - geänderte Methoden'
-'Changed Methods'         'Geänderte Methoden'
+'Changed History'         'Historie - genderte Methoden'
+'Changed Methods'         'Genderte Methoden'
 'Class History'           'Historie'
 'Rename'               'Umbenennen'
 ; Remove                    'Entfernen'
 'Remove'               'Entfernen'
 
 'browse or search class'         'Klasse suchen'
-'class to find (Tab to complete or use matchPattern):' 'Name der Klasse (mit Tab vervollständigen oder Suchmuster):'
-'class to browse (Tab to complete or use matchPattern):' 'Name der Klasse (mit Tab vervollständigen oder Suchmuster):'
+'class to find (Tab to complete or use matchPattern):' 'Name der Klasse (mit Tab vervollstndigen oder Suchmuster):'
+'class to browse (Tab to complete or use matchPattern):' 'Name der Klasse (mit Tab vervollstndigen oder Suchmuster):'
 'class to browse:'               'Name der Klasse:'
-'open new'                       'öffnen'
+'open new'                       'ffnen'
 'find here'                      'hier suchen'
 'name of new class category:'    'Name der neuen Klassenkategorie:'
 'Name of new class category:'    'Name der neuen Klassenkategorie:'
-'select a class category first'  'keine Klassenkategorie ist ausgewählt'
-'select a class first'           'keine Klasse ist ausgewählt'
-'select a method category first' 'keine Methodenkategorie ist ausgewählt'
-'select a method first'          'keine Methode ist ausgewählt'
+'select a class category first'  'keine Klassenkategorie ist ausgewhlt'
+'select a class first'           'keine Klasse ist ausgewhlt'
+'select a method category first' 'keine Methodenkategorie ist ausgewhlt'
+'select a method first'          'keine Methode ist ausgewhlt'
 'no class named: %1'             'es gibt keine Klasse mit Name: %1'
 'selector to find:'              'zu suchender Selektor:'
-'selector to find:\\(Tab to complete or use matchPattern)' 'zu suchender Selektor:\\(mit Tab vervollständigen oder Suchmuster)'
+'selector to find:\\(Tab to complete or use matchPattern)' 'zu suchender Selektor:\\(mit Tab vervollstndigen oder Suchmuster)'
 '#%1\\in which class ?'          '#%1\\in welcher Klasse ?'
 'show'                           'anzeigen'
 'create category'                'Kategorie anlegen'
 
 'Repository history'     'Historie aus Quellcodeverwaltung'
 'Repository History'     'Historie aus Quellcodeverwaltung'
-'Validate class revisions'  'Aktualität aller Klassen prüfen'
-'Validate Class Revisions'  'Aktualität aller Klassen prüfen'
+'Validate class revisions'  'Aktualitt aller Klassen prfen'
+'Validate Class Revisions'  'Aktualitt aller Klassen prfen'
 'Load from repository'   'Aus Quellcodeverwaltung laden'
 'Load from repository'      'Aus Quellcodeverwaltung laden'
 'Load from Repository'      'Aus Quellcodeverwaltung laden'
@@ -495,23 +495,23 @@
 'Modules'                   'Module'
 'Packages'                  'Pakete'
 'Package'                   'Paket'
-'Containers'                'Behälter'
+'Containers'                'Behlter'
 'Load'                      'Laden'
-'Dismiss'                   'Schließen'
-
-'Spawn'                  'Browser für'
+'Dismiss'                   'Schlieen'
+
+'Spawn'                  'Browser fr'
 'Full protocol'             'Gesamtes Protokoll'
 'Full Protocol'             'Gesamtes Protokoll'
 'Local Protocol'            'Lokales Protokoll'
-'Show Temporaries'          'Temporäre Variable anzeigen'
-'Hide Temporaries'          'Temporäre Variable nicht anzeigen'
+'Show Temporaries'          'Temporre Variable anzeigen'
+'Hide Temporaries'          'Temporre Variable nicht anzeigen'
 'Hierarchy'                 'Hierarchie'
 'Subclasses'                'Subklassen'
 
-'SPAWN_CLASS'               'Browser für Klasse'
-'spawn full protocol'       'Browser für Protokoll'
-'spawn hierarchy'           'Browser für Hierarchie'
-'spawn subclasses'          'Browser für Subklassen'
+'SPAWN_CLASS'               'Browser fr Klasse'
+'spawn full protocol'       'Browser fr Protokoll'
+'spawn hierarchy'           'Browser fr Hierarchie'
+'spawn subclasses'          'Browser fr Subklassen'
 hierarchy                   'Hierarchie'
 Definition                  'Definition'
 Comment                     'Kommentar'
@@ -532,11 +532,11 @@
 'Private class'                 'Private Klasse'
 'Private Class'                 'Private Klasse'
 'Make Private Class In'            'Zu privater Klasse konvertieren'
-'Make Public Class'                   'Zu öffentlicher Klasse konvertieren'
+'Make Public Class'                   'Zu ffentlicher Klasse konvertieren'
 'name of owner class:'          'Name der besitzenden Klasse:'
 'no class named ''%1'' found - try again.' 'Es gibt keine ''%1''-Klasse - bitte versuchen Sie es nochmal.'
-'a private class named ''%1'' already exists in ''%2''.\\Please remove/rename that one first,\or rename the public class ''%1'' here\and try again.' 'es existiert bereits eine private Klasse ''%1'' in ''%2''.\\Bitte diese zuerst entfernen oder umbenennen,\oder benennen Sie die öffentliche Klasse ''%1'' hier um\und versuchen es nochmal.'
-'a public class named ''%1'' already exists.\\Please remove/rename that one first,\or rename the private class ''%1'' here\and try again.' 'es existiert bereits eine öffentliche Klasse ''%1''.\\Bitte diese zuerst entfernen oder umbenennen,\oder benennen Sie die private Klasse ''%1'' hier um\und versuchen es nochmal.'
+'a private class named ''%1'' already exists in ''%2''.\\Please remove/rename that one first,\or rename the public class ''%1'' here\and try again.' 'es existiert bereits eine private Klasse ''%1'' in ''%2''.\\Bitte diese zuerst entfernen oder umbenennen,\oder benennen Sie die ffentliche Klasse ''%1'' hier um\und versuchen es nochmal.'
+'a public class named ''%1'' already exists.\\Please remove/rename that one first,\or rename the private class ''%1'' here\and try again.' 'es existiert bereits eine ffentliche Klasse ''%1''.\\Bitte diese zuerst entfernen oder umbenennen,\oder benennen Sie die private Klasse ''%1'' hier um\und versuchen es nochmal.'
 'new class'                     'Neue Klasse'
 'New Class'                     'Neue Klasse'
 'new application'               'Neue Applikation'
@@ -562,7 +562,7 @@
 'C-Objects'                             'C-Objekte'
 
 'filter'                        'Filter'
-'browse full'                   'Browser für gesamte Klasse'
+'browse full'                   'Browser fr gesamte Klasse'
 
 'Inspect'                       'Inspizieren'
 'Inspect Class'                 'Klasse inspizieren'
@@ -572,7 +572,7 @@
 
 'Include in Project as Compiled Class'      'Im Projekt als kompilierte Klasse eintragen'
 'Include in Project as Autoloaded Class'    'Im Projekt als nachgeladene Klasse eintragen (autoload)'
-'Exclude from Project'                      'Aus dem Projekt ausschließen'
+'Exclude from Project'                      'Aus dem Projekt ausschlieen'
 
 'Primitive Definitions'         'Primitive Definitionen'
 'Primitive Functions'           'Primitive Funktionen'
@@ -582,8 +582,8 @@
 
 'source container'           'Container in der Quellcodeverwaltung'
 'Source Container'           'Container in der Quellcodeverwaltung'
-'remove source container'    'Löschen des Quellcode-Containers'
-'Remove Source Container'    'Löschen des Quellcode-Containers'
+'remove source container'    'Lschen des Quellcode-Containers'
+'Remove Source Container'    'Lschen des Quellcode-Containers'
 'revision info'                 'Informationen zur Version'
 'revision log'                  'Informationen zu den Versionen'
 'Revision Log'                  'Informationen zu den Versionen'
@@ -598,7 +598,7 @@
 'Load from repository'          'Laden aus der Quellcodeverwaltung'
 'Load from Repository'          'Laden aus der Quellcodeverwaltung'
 
-'enter log message for: %1'         'Eintrag in der Log-Liste für: %1'
+'enter log message for: %1'         'Eintrag in der Log-Liste fr: %1'
 '(any in nameSpace ''%1'')'         '(Alle im Namensraum ''%1'')'
 '(any in classCategory ''%1'')'     '(Alle unter der Kategorie ''%1'')'
 'No classes in nameSpace ''%''.'    'Keine Klassen im Namensraum ''%1''.'
@@ -619,33 +619,33 @@
 'show classVars'                'Klassen-Variable zeigen'
 'type information'              'Typinfo'
 
-'SPAWN_METHODCATEGORY'          'Browser für Methodenkategorie'
-'spawn category'                'Browser für komplette Kategorie'
-'spawn category'                'Browser für komplette Kategorie'
+'SPAWN_METHODCATEGORY'          'Browser fr Methodenkategorie'
+'spawn category'                'Browser fr komplette Kategorie'
+'spawn category'                'Browser fr komplette Kategorie'
 'copy category'                 'Kategorie kopieren'
 'Copy Category'                 'Kategorie kopieren'
 'new category'                  'Neue Kategorie'
 'New Category'                  'Neue Kategorie'
-'Access Methods (for ''%1'')'   'Zugriffsmethoden (für ''%1'')'
-'Access Methods (for All)'      'Zugriffsmethoden (für alle)'
-'Access Methods for All'        'Zugriffsmethoden für alle'
-'Getter Method(s) for All'      'Get-Methode(n) für alle'
-'Setter Method(s) for All'      'Set-Methode(n) für alle'
-'Access Methods with Change Notification (for ''%1'')'  'Zugriffsmethoden mit change-Nachricht (für ''%1'')'
-'Access Methods with Change Notification (for All)'     'Zugriffsmethoden mit change-Nachricht (für alle)'
+'Access Methods (for ''%1'')'   'Zugriffsmethoden (fr ''%1'')'
+'Access Methods (for All)'      'Zugriffsmethoden (fr alle)'
+'Access Methods for All'        'Zugriffsmethoden fr alle'
+'Getter Method(s) for All'      'Get-Methode(n) fr alle'
+'Setter Method(s) for All'      'Set-Methode(n) fr alle'
+'Access Methods with Change Notification (for ''%1'')'  'Zugriffsmethoden mit change-Nachricht (fr ''%1'')'
+'Access Methods with Change Notification (for All)'     'Zugriffsmethoden mit change-Nachricht (fr alle)'
 'Documentation Stubs'                   'Dokumentationsmethoden'
-'Initial Dialog Code'                   'Code-Skelett für leeren Dialog'
-'Initial Applicaion Code'               'Code-Skelett für leeren Anwendung'
-'Standard update Method Template'       'Skelett für update Methode'
+'Initial Dialog Code'                   'Code-Skelett fr leeren Dialog'
+'Initial Applicaion Code'               'Code-Skelett fr leeren Anwendung'
+'Standard update Method Template'       'Skelett fr update Methode'
 
 'create access methods'               'Zugriffsmethoden erzeugen'
-'create access methods (for ''%1'')'  'Zugriffsmethoden erzeugen (für ''%1'')'
-'create access methods (for all)'     'Zugriffsmethoden erzeugen (für alle)'
-'create access methods with change message (for ''%1'')'  'Zugriffsmethoden mit change-Nachricht erzeugen (für ''%1'')'
-'create access methods with change message (for all)'     'Zugriffsmethoden mit change-Nachricht erzeugen (für alle)'
+'create access methods (for ''%1'')'  'Zugriffsmethoden erzeugen (fr ''%1'')'
+'create access methods (for all)'     'Zugriffsmethoden erzeugen (fr alle)'
+'create access methods with change message (for ''%1'')'  'Zugriffsmethoden mit change-Nachricht erzeugen (fr ''%1'')'
+'create access methods with change message (for all)'     'Zugriffsmethoden mit change-Nachricht erzeugen (fr alle)'
 'create documentation stubs'        'Dokumentationsmethoden erzeugen'
-'create initial dialog code'        'Codeskelett für leeren Dialog erzeugen'
-'create initial applicaion code'    'Codeskelett für leeren Anwendung erzeugen'
+'create initial dialog code'        'Codeskelett fr leeren Dialog erzeugen'
+'create initial applicaion code'    'Codeskelett fr leeren Anwendung erzeugen'
 'category to browse methods (matchPattern allowed):'   'Kategorie (Suchmuster erlaubt):'
 
 'find method'           'Methode suchen'
@@ -656,22 +656,22 @@
 'copy methods'          'Methoden kopieren'
 'Copy Methods'          'Methoden kopieren'
 
-'SPAWN_METHOD'             'Browser für Methode'
+'SPAWN_METHOD'             'Browser fr Methode'
 'senders'              'Sender'
 'Senders'              'Sender'
 'Sender'               'Sender'
 'Implementors'         'Implementierungen'
 'Globals'              'Globale'
 'String Search'        'Zeichenkette suchen'
-'Apropos'              'Schlüsselwort suchen'
+'Apropos'              'Schlsselwort suchen'
 'Local Senders'        'lokale Sender'
 'Local Implementors'   'lokale Implementierungen'
 'Local String Search'  'Zeichenkette lokal suchen'
-'Local Apropos'        'Schlüsselwort lokal suchen'
-
-'Back to Previous'         'Zurück zur vorigen Version'
-; 'Back to previous'      'Zurück zur vorigen Version'
-'Back to Previous Version'  'Zurück zur vorigen Version'
+'Local Apropos'        'Schlsselwort lokal suchen'
+
+'Back to Previous'         'Zurck zur vorigen Version'
+; 'Back to previous'      'Zurck zur vorigen Version'
+'Back to Previous Version'  'Zurck zur vorigen Version'
 'Compare with Previous'    'Vergleich mit voriger Version'
 ; 'Compare with Previous'    'Mit voriger Version vergleichen'
 'With Newest in CVS Repository'    'Mit neuester im CVS Repository'
@@ -681,17 +681,17 @@
 ; 'Trace'                  'Aufruf protokollieren'
 'Trace Sender'           'Aufrufer protokollieren'
 'Trace Full Walkback'    'Aufrufkette komplett protokollieren'
-'Start Counting'         'Aufrufzähler an'
-'Start Mem Usage'        'Speicherzähler an'
-'Stop Counting'          'Aufrufzähler aus'
-'Stop Mem Usage'         'Speicherzähler aus'
+'Start Counting'         'Aufrufzhler an'
+'Start Mem Usage'        'Speicherzhler an'
+'Stop Counting'          'Aufrufzhler aus'
+'Stop Mem Usage'         'Speicherzhler aus'
 'Start Timing'           'Zeitmessung an'
 'Stop Timing'            'Zeitmessung aus'
 'Start Memory Usage'     'Speicherbedarfsmessung an'
 'Stop Memory Usage'      'Speicherbedarfsmessung aus'
-'Run Tests'              'Tests durchführen'
-'Debug Tests'            'Tests mit Debug durchführen'
-'Run Tests for Coverage'                'Tests zur Überdeckungsanalyse durchführen'
+'Run Tests'              'Tests durchfhren'
+'Debug Tests'            'Tests mit Debug durchfhren'
+'Run Tests for Coverage'                'Tests zur berdeckungsanalyse durchfhren'
 
 'stop if method is executed by process:\\(current process is %1)'  'Anhalten wenn Methode in Prozess aufgerufen wird:\\(aktiver Prozess ist %1)'
 
@@ -701,20 +701,20 @@
 'New Menu spec'          'Neue MenuSpec Methode'
 'new image spec'         'Neue ImageSpec Methode'
 'New Image spec'         'Neue ImageSpec Methode'
-'Change Category'     'Kategorie ändern'
-'Change category from ''%1'' to:' 'Kategorie ändern; von ''%1'' nach:'
-'Change category'        'Kategorie ändern'
-'Change'                 'Ändern'
+'Change Category'     'Kategorie ndern'
+'Change category from ''%1'' to:' 'Kategorie ndern; von ''%1'' nach:'
+'Change category'        'Kategorie ndern'
+'Change'                 'ndern'
 
 ; 'move'                 'In andere Klasse verlagern'
 'Move To'              'In andere Klasse verlagern'
 'Copy To'              'In andere Klasse kopieren'
-'Copy this method to which class:'     'Ausgewählte Methode kopieren nach Klasse:'
-'Move current method to which class:'  'Ausgewählte Methode verlagern nach Klasse:'
-'Move this method to which class:'     'Ausgewählte Methode verlagern nach Klasse:'
+'Copy this method to which class:'     'Ausgewhlte Methode kopieren nach Klasse:'
+'Move current method to which class:'  'Ausgewhlte Methode verlagern nach Klasse:'
+'Move this method to which class:'     'Ausgewhlte Methode verlagern nach Klasse:'
 'Move method'             'Methode verlagern'
 ; 'Move'                    'Verlagern'
-'Move'                    'Ãœbertragen'
+'Move'                    'bertragen'
 'Visibility'              'Sichtbarkeit'
 'Mark as Obsolete'        'Als obsolet markieren'
 
@@ -725,8 +725,8 @@
 'Compare source'        'Quelltext vergleichen'
 'Compare Against'       'Quelltext vergleichen'
 'Inspect Method'          'Methodenobjekt inspizieren'
-'compile to machine code' 'in Maschinencode übersetzen'
-'stc-compile'             'Mit stc in Maschinencode übersetzen'
+'compile to machine code' 'in Maschinencode bersetzen'
+'stc-compile'             'Mit stc in Maschinencode bersetzen'
 'decompile'               'Bytecodes anzeigen'
 
 'Make Private'            'Nur private Aufrufe zulassen'
@@ -752,14 +752,14 @@
 'Selector to browse senders of'              'Selektor dessen Sender gesucht werden'
 'Selector to browse local senders of'        'Selektor dessen Sender lokal gesucht werden'
 'Method selector to search for'              'Selektor dessen Methode gesucht wird'
-'Keyword to search for'                            'Zu suchendes Schlüsselwort'
-'Keyword to search for (in selector & comment)'    'Zu suchendes Schlüsselwort (im Selektor & Kommentar)'
+'Keyword to search for'                            'Zu suchendes Schlsselwort'
+'Keyword to search for (in selector & comment)'    'Zu suchendes Schlsselwort (im Selektor & Kommentar)'
 'String to search for in sources'            'In Quelltexten zu suchende Zeichenkette'
 'Name of new method category'                'Name der anzulegenden Kategorie'
 'Search in'                                  'Suchen in'
 'Metaclasses Only'                           'Nur Metaklassen'
 'Classes Only'                               'Nur Klassen'
-'everywhere'                                 'überall'
+'everywhere'                                 'berall'
 'current nameSpace'                          'in diesem Namensraum'
 'current nameSpace (''%1'')'                 'Namensraum (''%1'')'
 'current nameSpace ("%1")'                   'Namensraum ("%1")'
@@ -782,13 +782,13 @@
 'owners & all their private classes'                    'Besitzer & alle private Klassen'
 'owners & their subclasses & all their private classes' 'Besitzer & alle Subklassen & alle private Klassen'
 'methodlist'                                 'Methodenliste'
-'selected methods'                           'Ausgewählte Methoden'
-'selected methods (%1)'                      'Ausgewählte Methoden (%1)'
-'selected method''s class ("%1")'            'Klasse der ausgewählten Methode ("%1")'
-'selected methods'' classes (%1)'            'Klassen der ausgewählten Methoden (%1)'
-'selected method''s package ("%1")'          'Paket der ausgewählten Methode ("%1")'
-'selected methods'' packages (%1)'           'Pakete der ausgewählten Methoden (%1)'
-'selected class categories (%1)'             'Ausgewählte Klassenkategorien (%1)'
+'selected methods'                           'Ausgewhlte Methoden'
+'selected methods (%1)'                      'Ausgewhlte Methoden (%1)'
+'selected method''s class ("%1")'            'Klasse der ausgewhlten Methode ("%1")'
+'selected methods'' classes (%1)'            'Klassen der ausgewhlten Methoden (%1)'
+'selected method''s package ("%1")'          'Paket der ausgewhlten Methode ("%1")'
+'selected methods'' packages (%1)'           'Pakete der ausgewhlten Methoden (%1)'
+'selected class categories (%1)'             'Ausgewhlte Klassenkategorien (%1)'
 
 'class to copy instance method category from:' 'Klasse von der Instanzmethoden einer Kategorie kopiert werden:'
 'class to copy class method category from:'    'Klasse von der Klassenmethoden einer Kategorie kopiert werden:'
@@ -806,7 +806,7 @@
 'rename %1 to'                          '%1 umbenennen in'
 'rename "%1" to'                        '"%1" umbenennen in'
 
-; remove                                  'löschen'
+; remove                                  'lschen'
 'remove category'                       'Kategorie entfernen'
 'remove class'                          'Klasse entfernen'
 
@@ -829,21 +829,21 @@
 'remove %1\(with 1 method) ?'       '%1 entfernen ? (mit 1 Methode)'
 '''%1'' has instances - remove anyway ?' 'Es gibt Instanzen von ''%1'' - dennoch entfernen ?'
 
-'text has not been accepted.\\Your modifications will be lost when continuing.'  'Text wurde nicht gesichert.\\Bei Fortfahren gehen ihre Änderungen verloren.'
-'code here (to be accepted ?)'      'geänderter Quelltext (übernehmen ?)'
+'text has not been accepted.\\Your modifications will be lost when continuing.'  'Text wurde nicht gesichert.\\Bei Fortfahren gehen ihre nderungen verloren.'
+'code here (to be accepted ?)'      'genderter Quelltext (bernehmen ?)'
 'methods actual code'               'alter Quelletext'
 'comparing method versions'         'Unterschiede anzeigen'
 'accept in which method category ?' 'welche Methodenkategorie ?'
-'compare to revision: (empty for newest)' 'Vergleich mit Version: (leer für neueste)'
-'load which revision: (empty for newest)' 'Version laden: (leer für neueste)'
+'compare to revision: (empty for newest)' 'Vergleich mit Version: (leer fr neueste)'
+'load which revision: (empty for newest)' 'Version laden: (leer fr neueste)'
 
 'Copy as'               'Kopieren als'
 'Copy'                  'Kopieren'
 
 'String to Search for in Sources'       'Im Quellcode nach Zeichenkette suchen:'
-"/ 'Ignore case'                           'Groß-Kleinschreibung ignorieren'
-'Ignore case'                           'Groß/Klein ignorieren'
-'Case'                                  'Groß/Klein'
+"/ 'Ignore case'                           'Gro-Kleinschreibung ignorieren'
+'Ignore case'                           'Gro/Klein ignorieren'
+'Case'                                  'Gro/Klein'
 'Match'                                 'Muster'
 'Instance Protocol'                     'Instanzprotokoll'
 'Class Protocol'                        'Klassenprotokoll'
@@ -864,16 +864,16 @@
 ;
 
 'B&uffers'              'Seiten'
-'Create Buffer'         'Seite hinzufügen'
+'Create Buffer'         'Seite hinzufgen'
 'Recently Closed'       'Vor Kurzem geschlossen'
-'Add Buffer'            'Seite hinzufügen'
-'Add buffer'            'Seite hinzufügen'
+'Add Buffer'            'Seite hinzufgen'
+'Add buffer'            'Seite hinzufgen'
 'Remove Buffer'                     'Seite entfernen'
 'Remove Buffer <%1>'                'Seite entfernen <%1>'
 'Remove all but this Buffer <%1>'   'Alle ausser dieser Seite entfernen <%1>'
-'Add Page'                          'Seite hinzufügen'
+'Add Page'                          'Seite hinzufgen'
 'Remove Page'                       'Seite entfernen'
-'Add Tab'                           'Tab hinzufügen'
+'Add Tab'                           'Tab hinzufgen'
 'Remove Tab'                        'Tab entfernen'
 'Remove all other Tabs'             'Alle anderen Tabs entfernen'
 'Remove all other Pages'            'Alle anderen Seiten entfernen'
@@ -885,15 +885,15 @@
 'Spawn'               'Browse'
 'Spawn Browser'       'Neuer Browser'
 
-'Select a Class'        'Klasse auswählen'
-'Select a Category'     'Kategorie auswählen'
-'Select or Enter a Namespace'     'Namensraum auswählen oder eingeben'
-'Select or Enter a Package-ID'    'Paket-ID auswählen oder eingeben'
+'Select a Class'        'Klasse auswhlen'
+'Select a Category'     'Kategorie auswhlen'
+'Select or Enter a Namespace'     'Namensraum auswhlen oder eingeben'
+'Select or Enter a Package-ID'    'Paket-ID auswhlen oder eingeben'
 
 'Sort by Class'       'Sortieren nach Klasse'
 'Sort by Selector'    'Sortieren nach Selektor'
 'Sort by Category'    'Sortieren nach Kategorie'
-'Original Order'      'Ursprüngliche Reihenfolge'
+'Original Order'      'Ursprngliche Reihenfolge'
 
 'Class'               'Klasse'
 'Classes'             'Klassen'
@@ -911,21 +911,21 @@
 'Writes to Global'                   'Modifikation einer Globalen'
 'Class Extensions'          'Erweiterungen einer Klasse'
 'Methods'                   'Methoden'
-'Recently Changed Methods'  'Vor kurzem geänderte Methoden'
-'Recently changed methods'  'Vor kurzem geänderte Methoden'
-'Recently Changed Classes'  'Vor kurzem geänderte Klassen'
-'Recently changed classes'  'Vor kurzem geänderte Klassen'
-'Recently Changed'          'Vor kurzem geändert'
+'Recently Changed Methods'  'Vor kurzem genderte Methoden'
+'Recently changed methods'  'Vor kurzem genderte Methoden'
+'Recently Changed Classes'  'Vor kurzem genderte Klassen'
+'Recently changed classes'  'Vor kurzem genderte Klassen'
+'Recently Changed'          'Vor kurzem gendert'
 'Recently visited'          'Vor kurzem besucht'
 'Initialize Class(es)'      'Klasse(n) initialisieren'
-'Run static code analysis (lint) on the selected classes' 'Statische Codeanalyse auf selektierte Klassen durchführen'
+'Run static code analysis (lint) on the selected classes' 'Statische Codeanalyse auf selektierte Klassen durchfhren'
 
 'Operations'           'Operationen'
-'Undo: %1'             'Rückgängig: %1'
-'Undo'                 'Rückgängig'
-'Undo Recent'          'Rückgängig'
-'Redo: %1'             'Rück-rückgängig: %1'
-'Redo'                 'Rück-rückgängig'
+'Undo: %1'             'Rckgngig: %1'
+'Undo'                 'Rckgngig'
+'Undo Recent'          'Rckgngig'
+'Redo: %1'             'Rck-rckgngig: %1'
+'Redo'                 'Rck-rckgngig'
 'Set Undo Count'    'Anzahl gemerkter Operationen setzen'
 
 'Defining variable'                    'Mit Variable'
@@ -940,18 +940,18 @@
 'All Subclasses of'                       'Alle Subklassen von'
 'All Applications'                        'Alle Anwendungen'
 'All Web Services'                        'Alle Web-Dienste'
-'All TestCases'                           'Alle Testfälle'
+'All TestCases'                           'Alle Testflle'
 'All Shared Pools'                        'Alle Pools'
 'Referring Pools'                         'Besugnehmend auf Pool'
 'Which were Autoloaded'                   'Nachgeladene Klassen'
-'Recently Opened Applications'            'Vor kurzem geöffnete Anwendungen'
+'Recently Opened Applications'            'Vor kurzem geffnete Anwendungen'
 'Overwritten Methods'                     'Redefinierte Methoden'
 'Wrapped Methods (Break- or Tracepoint)'  'Methoden mit Halte- oder Tracepunkt'
 'With Break- or Tracepoint'               'Mit Halte- oder Tracepunkt'
 'With String-Literal Matching'            'Mit String-Konstante passend zu'
 'With Instrumentation'                    'Mit Instrumentierung'
 'Unassigned Extensions'                     'Nicht zugeordnete Erweiterungen'
-'For which'                                 'Für die gilt'
+'For which'                                 'Fr die gilt'
 'Without documentation'                   'Ohne Dokumentation'
 'Without Documentation'                   'Ohne Dokumentation'
 'Without examples'                        'Ohne Beispiele'
@@ -971,8 +971,8 @@
 'Check In'                             'Einchecken'
 'CheckIn'                              'Einchecken'
 'CheckIn All'                          'Alle Einchecken'
-'Quick Check In'                       'Einchecken (ohne Code-Prüfung)'
-'Quick CheckIn'                        'Einchecken (ohne Code-Prüfung)'
+'Quick Check In'                       'Einchecken (ohne Code-Prfung)'
+'Quick CheckIn'                        'Einchecken (ohne Code-Prfung)'
 'Check Out (Update)'                   'Auschecken (Aktualisieren)'
 'CheckOut (Update)'                    'Auschecken (Aktualisieren)'
 'CheckOut'                             'Auschecken'
@@ -1003,7 +1003,7 @@
 'With any Resource'                    'Mit Ressource'
 'Without Comment'                      'Ohne Kommentar'
 'With Ugly Coding Style'               'Mit fraglichem Kodierstil'
-'With Possible Leftover Debug Code'    'Mit möglicherweise vergessenem Debug-Code'
+'With Possible Leftover Debug Code'    'Mit mglicherweise vergessenem Debug-Code'
 'Deprecated'                           'Veraltet'
 'With Exception Raisers'               'Meldet Ausnahme'
 'With Exception Handlers'              'Behandelt Ausnahme'
@@ -1023,8 +1023,8 @@
 'Class(es) to find'                         'Gesuchte Klasse(n)'
 'Class to browse'                           'Klasse browsen'
 'Class(es) to browse'                       'Klasse(n) browsen'
-'(TAB to complete; matchPattern allowed)'      '(TAB zum Vervollständigen; Muster erlaubt)'
-'(TAB for completion; matchPattern allowed)'   '(TAB zum Vervollständigen; Muster erlaubt)'
+'(TAB to complete; matchPattern allowed)'      '(TAB zum Vervollstndigen; Muster erlaubt)'
+'(TAB for completion; matchPattern allowed)'   '(TAB zum Vervollstndigen; Muster erlaubt)'
 'Matching Classes'                              'Passende Klassen'
 'Show Full Name (do not strip off Namespace)'   'Gesamten Namen anzeigen (Namensraum nicht abschneiden)'
 
@@ -1032,24 +1032,24 @@
 'Response to'          'Antwort auf'
 'Class Hierarchy'      'Hierarchie der Klasse'
 'Bookmarks'            'Lesezeichen'
-'add bookmark'         'Lesezeichen hinzufügen'
-'Add Bookmark'         'Lesezeichen hinzufügen'
-'Add Bookmark Here'    'Lesezeichen hier hinzufügen'
+'add bookmark'         'Lesezeichen hinzufgen'
+'Add Bookmark'         'Lesezeichen hinzufgen'
+'Add Bookmark Here'    'Lesezeichen hier hinzufgen'
 'Edit Bookmarks'       'Lesezeichen verwalten'
 'Remove Bookmark'      'Lesezeichen entfernen'
-; 'Remove Bookmark'       'Lesezeichen löschen'
+; 'Remove Bookmark'       'Lesezeichen lschen'
 'Visited Methods'      'Besuchte Methoden'
-'Changed Classes'      'Geänderte Klassen'
+'Changed Classes'      'Genderte Klassen'
 ; 'Changed Classes'               'Modifizierte Klassen'
-'Changed Methods'                   'Geänderte Methoden'
+'Changed Methods'                   'Genderte Methoden'
 ; 'Changed Methods'               'Modifizierte Methoden'
 'Class Wizard'                      'Klassen-Wizard'
 'Launch the Selected Application'   'Selektierte Anwendung starten'
 'Launch the selected application'   'Selektierte Anwendung starten'
-'Execute the Selected Class Method. Show Execution Time and Answer on the Transcript'   'Selektierte Klassenmethode ausführen. Laufzeit und Antwort auf dem Transcript zeigen'
+'Execute the Selected Class Method. Show Execution Time and Answer on the Transcript'   'Selektierte Klassenmethode ausfhren. Laufzeit und Antwort auf dem Transcript zeigen'
 'Go back in global visited history' 'Zur vorigen Methode (in globaler Historie)'
 'Go back in lokal visited history' 'Zur vorigen Methode (in lokaler Historie)'
-'Go forward in lokal visited history' 'Zur nächsten Methode (in lokaler Historie)'
+'Go forward in lokal visited history' 'Zur nchsten Methode (in lokaler Historie)'
 
 'View'                                      'Ansicht'
 'Class Inheritance'                         'Vererbung der Klasse'
@@ -1060,7 +1060,7 @@
 'Short Class Names in Tabs'                 'Kurze Klassennamen zeigen'
 'Emphasize Unloaded Classes'                'Ungeladene Klassen hervorheben'
 'Display Class-Packages'                    'Paketinfo von Klassen anzeigen'
-'Sort and Indent by Inheritance'            'Sortieren und Einrücken nach Vererbung'
+'Sort and Indent by Inheritance'            'Sortieren und Einrcken nach Vererbung'
 
 'Show Class Categories'                     'Kategorien zeigen'
 'Show Class Inheritance'                    'Vererbung zeigen'
@@ -1071,11 +1071,11 @@
 'Show Class Type Indicator'                 'Typindikator bei Klassen anzeigen'
 'Settings'                                  'Einstellungen'
 'Show Inherited Methods'                    'Geerbte Methoden zeigen'
-'Show Inherited Methods except Object''s'   'Geerbte Methoden zeigen (außer von Object)'
-'Show inherited methods (except Object''s)'   'Geerbte Methoden zeigen (außer von Object)'
+'Show Inherited Methods except Object''s'   'Geerbte Methoden zeigen (auer von Object)'
+'Show inherited methods (except Object''s)'   'Geerbte Methoden zeigen (auer von Object)'
 'Show Method Type Indicator'                'Typindikator bei Methoden anzeigen'
-'Show Method-Complexity'                    'Komplexität von Methoden anzeigen'
-'Show Complexity'                           'Komplexität anzeigen'
+'Show Method-Complexity'                    'Komplexitt von Methoden anzeigen'
+'Show Complexity'                           'Komplexitt anzeigen'
 'Do not Show Inherited Methods'             'Geerbte Methoden nicht zeigen'
 
 'Category'              'Kategorie'
@@ -1096,35 +1096,35 @@
 
 ; 'Load'                  'Laden'
 ; 'Unload'                'Entladen'
-'Compile Lazy Methods'                          'Verzögert kompilierte (Lazy) Methoden'
-'Recompile all Methods'                         'Alle Methoden neu übersetzen'
-'Recompile all Methods here and in Subclasses'  'Alle Methoden hier und in Subklassen neu übersetzen'
+'Compile Lazy Methods'                          'Verzgert kompilierte (Lazy) Methoden'
+'Recompile all Methods'                         'Alle Methoden neu bersetzen'
+'Recompile all Methods here and in Subclasses'  'Alle Methoden hier und in Subklassen neu bersetzen'
 'Recompile all Methods with Instrumentation'    'Alle Methoden instrumentieren'
 'Recompile Method(s) with Instrumentation'      'Methode(n) instrumentieren'
 'Recompile Class(es) with Instrumentation'      'Klasse(n) instrumentieren'
 'Recompile Project(s) with Instrumentation'     'Projekt(e) instrumentieren'
 'Recompile all Classes with Instrumentation'    'Alle Klassen instrumentieren'
-'Recompile all Classes (without Instrumentation)'    'Alle Klassen neu übersetzen (ohne Instrumentierung)'
-'Recompile all Methods (without Instrumentation)'    'Alle Methoden neu übersetzen (ohne Instrumentierung)'
-'Recompile all Methods here and in Subclasses (without Instrumentation)'    'Alle Methoden hier und in Subklassen neu übersetzen (ohne Instrumentierung)'
-'Recompile Method(s) (without Instrumentation)'    'Methode(n) neu übersetzen (ohne Instrumentierung)'
-'Recompile Method(s) without Instrumentation'      'Methode(n) neu übersetzen (ohne Instrumentierung)'
+'Recompile all Classes (without Instrumentation)'    'Alle Klassen neu bersetzen (ohne Instrumentierung)'
+'Recompile all Methods (without Instrumentation)'    'Alle Methoden neu bersetzen (ohne Instrumentierung)'
+'Recompile all Methods here and in Subclasses (without Instrumentation)'    'Alle Methoden hier und in Subklassen neu bersetzen (ohne Instrumentierung)'
+'Recompile Method(s) (without Instrumentation)'    'Methode(n) neu bersetzen (ohne Instrumentierung)'
+'Recompile Method(s) without Instrumentation'      'Methode(n) neu bersetzen (ohne Instrumentierung)'
 'Call Graph'                                    'Aufrufgraph'
-'Enable Coverage Recording in all Processes'    'Ãœberdeckungsinfo in allen Prozessen aufzeichnen'
-'Disable Coverage Recording in all Processes'   'Ãœberdeckungsinfo in allen Prozessen nicht aufzeichnen'
-'Enable Global Coverage Recording (in all Processes)'    'Globales Aufzeichnen von Ãœberdeckungsinfo einschalten (in allen Prozessen)'
-'Disable Global Coverage Recording (in all Processes)'   'Globales Aufzeichnen von Ãœberdeckungsinfo ausschalten (in allen Prozessen)'
-'Clear all Coverage Info (Systemwide)'          'Überdeckungsinfo systemweit löschen'
-'Clear Coverage Info (Classwide)'               'Überdeckungsinfo klassenweit löschen'
+'Enable Coverage Recording in all Processes'    'berdeckungsinfo in allen Prozessen aufzeichnen'
+'Disable Coverage Recording in all Processes'   'berdeckungsinfo in allen Prozessen nicht aufzeichnen'
+'Enable Global Coverage Recording (in all Processes)'    'Globales Aufzeichnen von berdeckungsinfo einschalten (in allen Prozessen)'
+'Disable Global Coverage Recording (in all Processes)'   'Globales Aufzeichnen von berdeckungsinfo ausschalten (in allen Prozessen)'
+'Clear all Coverage Info (Systemwide)'          'berdeckungsinfo systemweit lschen'
+'Clear Coverage Info (Classwide)'               'berdeckungsinfo klassenweit lschen'
 'Cleanup ChangeSet'                             'Aus ChangeSet entfernen'
 
 'Build Package for Deployment'                  'Paket zur Auslieferung bauen'
-'Build Binaries for Execution'                  'Ausführbare Binärdatei (exe) zum Testlauf bauen'
+'Build Binaries for Execution'                  'Ausfhrbare Binrdatei (exe) zum Testlauf bauen'
 'Build with Interactive Applicatin Packager'    'Mit interaktivem Application Packager (exe-Builder) bauen'
 ; 'Patch-Set'                                     '???'
 
 'Generate'                  'Generieren'
-'Check'                     'Prüfen'
+'Check'                     'Prfen'
 'Instance Variables'        'Instanzvariable'
 'Class Variables'           'Klassenvariable'
 'Class Inst Variables'      'Klassen-Instanzvariable'
@@ -1132,13 +1132,13 @@
 'Pool Variables'            'Poolvariable'
 
 'Static Analysis (Lint)'    'Statische Codeanalyse (Lint)'
-'Check'                     'Prüfen'
-'Check (all checks)'        'Prüfen (alle Prüfungen)'
-'Check (selected checks)'   'Prüfen (ausgewählte Prüfungen)'
-'Smalltalk/X Checks'        'Prüfen (Smalltalk/X Prüfungen)'
-'Repeat Previously Selected Checks'     'Vorige Prüfungen wiederholen'
-'Run all Checks'                        'Alle Prüfungen durchführen'
-'Run Selected Checks'                   'Ausgewählte Prüfungen durchführen'
+'Check'                     'Prfen'
+'Check (all checks)'        'Prfen (alle Prfungen)'
+'Check (selected checks)'   'Prfen (ausgewhlte Prfungen)'
+'Smalltalk/X Checks'        'Prfen (Smalltalk/X Prfungen)'
+'Repeat Previously Selected Checks'     'Vorige Prfungen wiederholen'
+'Run all Checks'                        'Alle Prfungen durchfhren'
+'Run Selected Checks'                   'Ausgewhlte Prfungen durchfhren'
 
 'Programming Language'      'Programmiersprache'
 'Stereotype'                'Stereotyp'
@@ -1149,7 +1149,7 @@
 'Initializer'               'Initialisierung'
 'Update Method'             'Update Methode'
 'Initial Template Code'     'Initialer Schablonencode'
-'Required Methods (Subclass responsibilities)'     'Benötigte Methoden (Subclassresponsibility)'
+'Required Methods (Subclass responsibilities)'     'Bentigte Methoden (Subclassresponsibility)'
 'Common Protocols'          'Typische Protokolle'
 'Common Categories'         'Typische Kategorien'
 
@@ -1157,12 +1157,12 @@
 'SubclassResponsibility here'               'SubclassResponsibility hier'
 'Templates in Subclasses'                   'Methodenskelette in Subklassen'
 'Templates in all Subclasses'                'Methodenskelette in allen Subklassen'
-'Corresponding Instance Creation in Class'  'Zugehörige Instanzierung auf Klassen-Seite'
+'Corresponding Instance Creation in Class'  'Zugehrige Instanzierung auf Klassen-Seite'
 'Forwarding Method in Instance Protocol'    'Weiterleitende Methode auf Instanz-Seite'
 
 'Previous Versions'         'Vorige Versionen'
-'Compile with stc'          'Mit stc übersetzen'
-'Recompile'                 'Neu übersetzen'
+'Compile with stc'          'Mit stc bersetzen'
+'Recompile'                 'Neu bersetzen'
 'Decompile'                 'Bytecode anzeigen'
 'Process'                   'Bearbeiten mit'
 'Copy List to Clipboard'            'Liste ins Clipboard kopieren'
@@ -1188,13 +1188,13 @@
 'Variables'                     'Variable'
 'Move to Inner Scope'           'In inneren Block schieben'
 
-'Rename Temporary'              'Temporäre umbenennen'
+'Rename Temporary'              'Temporre umbenennen'
 'Rename Local Variable'         'Lokale Variable umbenennen'
 'Rename Instance Variable'      'Instanz-Variable umbenennen'
 'Rename Class Variable'         'Klassen-Variable umbenennen'
-; 'Make Abstract (Access only via Getters/Setters)'          'Abstrakte Variable (Zugriff nur über Get/Set-Methoden)'
+; 'Make Abstract (Access only via Getters/Setters)'          'Abstrakte Variable (Zugriff nur ber Get/Set-Methoden)'
 ; 'Make Concrete (Protect from Access via Getters/Setters)'  'Konkrete Variable (Schutz vor Zugriff durch Get/Set-Methoden)'
-'Make Abstract (Access only via Getters/Setters)'          'Abstrahieren (Zugriff nur über Get/Set-Methoden)'
+'Make Abstract (Access only via Getters/Setters)'          'Abstrahieren (Zugriff nur ber Get/Set-Methoden)'
 'Make Concrete (Protect from Access via Getters/Setters)'  'Konkretisieren (Schutz vor Zugriff durch Get/Set-Methoden)'
 'Make Instance Variable'        'Zu Instanzvariable konvertieren'
 'Convert to ValueHolder'        'Zu ValueHolder konvertieren'
@@ -1202,30 +1202,30 @@
 'Eliminate Constant'            'Konstante eliminieren'
 'Make Pool Variable'            'Zu Poolvariable konvertieren'
 
-'Syntax Coloring'                       'Einfärben'
-'Immediate Syntax Coloring'             'Sofort einfärben'
-'Immediate Explaining'                  'Sofort erklären'
+'Syntax Coloring'                       'Einfrben'
+'Immediate Syntax Coloring'             'Sofort einfrben'
+'Immediate Explaining'                  'Sofort erklren'
 'Auto-Format Code'                      'Automatisch Formatieren'
-'Show MethodTemplate for New Methods'   'Vorlage für neue Methoden anzeigen'
-'Enable Embedded Resource Editors'      'Eingebettete Editoren für Ressourcen'
-'Coverage Info'                         'Ãœberdeckung (Coverage) anzeigen'
+'Show MethodTemplate for New Methods'   'Vorlage fr neue Methoden anzeigen'
+'Enable Embedded Resource Editors'      'Eingebettete Editoren fr Ressourcen'
+'Coverage Info'                         'berdeckung (Coverage) anzeigen'
 
 'Refactorings'                              'Refaktorierungen'
-'Inline Selected Message'                   'Selektierte Methode inline einfügen'
-'Inline Message'                            'Selektierte Methode inline einfügen'
-; 'Extract Selected Message to Temporary'     'Selektion zu neuer Methode extrahieren und temporär zuweisen'
-'Extract Selection to Temporary'            'Selektion extrahieren und temporär zuweisen'
+'Inline Selected Message'                   'Selektierte Methode inline einfgen'
+'Inline Message'                            'Selektierte Methode inline einfgen'
+; 'Extract Selected Message to Temporary'     'Selektion zu neuer Methode extrahieren und temporr zuweisen'
+'Extract Selection to Temporary'            'Selektion extrahieren und temporr zuweisen'
 'Extract Selection into new Method'         'Selektion zu neuer Methode extrahieren'
 'Extract Method from Selection'             'Methode aus Selektion extrahieren'
 'Extract Method'                            'Methode aus Selektion extrahieren'
 'Extract Method to Component'               'Methode aus Selektion zu Komponente extrahieren'
-'Add Parameter to Method'                   'Parameter zur Methode hinzufügen'
+'Add Parameter to Method'                   'Parameter zur Methode hinzufgen'
 'Remove Parameter from Method'              'Parameter von Methode entfernen'
-'Inline Parameter of Method'                'Parameter von Methode inline einfügen'
-'Add Parameter'                             'Parameter hinzufügen'
+'Inline Parameter of Method'                'Parameter von Methode inline einfgen'
+'Add Parameter'                             'Parameter hinzufgen'
 'Remove Parameter'                          'Parameter entfernen'
-'Inline Parameter'                          'Parameter inline einfügen'
-'Inline all self-Sends'                     'Alle self-Sends inline einfügen'
+'Inline Parameter'                          'Parameter inline einfgen'
+'Inline all self-Sends'                     'Alle self-Sends inline einfgen'
 'Push Down Instance Variable'               'Instanz-Variable nach Unten'
 'Pull Up Instance Variable'                 'Instanz-Variable nach Oben'
 'Push Down Class Variable'                  'Klassen-Variable nach Unten'
@@ -1235,15 +1235,15 @@
 ; 'Generate access methods'       'Generiere Get/Set-Methoden'
 'Show ClassVars (statics)'      'Klassenvariable anzeigen'
 'Show ClassVars (Statics)'      'Klassenvariable anzeigen'
-'Add ValueHolder'               'ValueHolder Hinzufügen'
-'Add'                           'Hinzufügen'
+'Add ValueHolder'               'ValueHolder Hinzufgen'
+'Add'                           'Hinzufgen'
 'Pull Up'                       'Nach Oben'
 'Push Up'                       'Nach Oben'
 'Push Down'                     'Nach Unten'
 'Show Type(s)'                  'Typ(en) anzeigen'
 'Browse Type(s)'                'Typ(en) browsen'
 
-'Copy Selected Name'            'Ausgewählten Namen ins Clipboard kopieren'
+'Copy Selected Name'            'Ausgewhlten Namen ins Clipboard kopieren'
 'Sort by Name'                  'Alphabetisch sortieren'
 
 'References'                    'Zugriffe'
@@ -1266,8 +1266,8 @@
 'as'                     'als'
 'XML as'                 'XML als'
 'SIF as'                 'SIF als'
-'binary as'              'binär als'
-'Binary as'              'Binär als'
+'binary as'              'binr als'
+'Binary as'              'Binr als'
 'Mail To'                   'Als Mail senden an'
 'Copy Source to Clipboard'  'Quelltext ins Cliboard kopieren'
 
@@ -1279,8 +1279,8 @@
 'Each SIF as'            'Einzeln SIF in'
 'Each XML in'            'Einzeln XML in'
 'Each SIF in'            'Einzeln SIF in'
-'each binary in'         'einzeln binär in'
-'Each Binary in'         'Einzeln Binär in'
+'each binary in'         'einzeln binr in'
+'Each Binary in'         'Einzeln Binr in'
 
 'CheckIn Each'                          'Einbringen aller Klassen in die Quellcodeverwaltung'
 'CheckIn Each'                          'Einbringen in die Quellcodeverwaltung'
@@ -1293,15 +1293,15 @@
 'CheckIn Extensions Only'               'Einchecken - lediglich Erweiterungen'
 'CheckIn Extensions for Project'        'Einchecken - Erweiterungen zu Projekt'
 'CheckIn Build Support Files Only'      'Einchecken - lediglich Hilfsdateien zum Bauen'
-'CheckIn All Changed Classes'           'Einchecken - Alle geänderte Klassen'
+'CheckIn All Changed Classes'           'Einchecken - Alle genderte Klassen'
 'CheckIn Build Support Files'           'Einchecken - Hilfsdateien zum Bauen'
 'Revision Log'                          'Info zu Versionen'
-'Revision Log (Recent Changes)'         'Info zu Versionen (letzte Änderungen)'
+'Revision Log (Recent Changes)'         'Info zu Versionen (letzte nderungen)'
 'Revision Log (Full)'                   'Info zu Versionen (alle)'
 'Compare with newest in Repository'     'Vergleichen mit neuester Repository-Version'
 ; 'CheckIn classes only'                  'Einchecken - nur Klassen'
 ; 'CheckIn extensions only'                   'Einchecken - nur Erweiterungen'
-'CheckIn Extensions For'                    'Einchecken - Erweiterungen für'
+'CheckIn Extensions For'                    'Einchecken - Erweiterungen fr'
 'CheckOut Newest all (Update)'              'Auschecken alle - Neueste Repository-Version(en)'
 'CheckOut Newest All'                       'Auschecken alle - Neueste Repository-Version(en)'
 'CheckOut Previous Versions All'            'Auschecken alle - Alte Repository-Version(en)'
@@ -1309,7 +1309,7 @@
 'CheckOut all (Load old Revisions)'         'Auschecken alle - Alte Repository-Version(en)'
 'CheckOut all (Load old Revision)'          'Auschecken alle - Alte Repository-Version(en)'
 'CheckOut Extensions Only'                  'Auschecken - lediglich Erweiterungen'
-'Consistency Check'                         'Konsistenz Prüfen'
+'Consistency Check'                         'Konsistenz Prfen'
 'CheckIn Class(es)'                         'Klasse(n) Einchecken'
 'Import and Load Classes'                   'Importieren und Klassen laden'
 'Import Structure'                          'Importieren - Struktur'
@@ -1321,7 +1321,7 @@
 
 'CheckIn Extensions for Projekt'            'Erweiterungen zum Projekt einchecken'
 'All Versions'                              'Alle Versionen'
-'Package Integrity Check'                   'Integrität des Pakets prüfen'
+'Package Integrity Check'                   'Integritt des Pakets prfen'
 
 'CheckOut Newest (Update)'                  'Auschecken der neuesten Repository-Version'
 'CheckOut (Load old Revision)'              'Auschecken einer alten Repository-Version'
@@ -1330,7 +1330,7 @@
 'Compare with Newest in Repository'         'Vergleichen mit neuester Repository-Version'
 'Compare with Stable in Repository'         'Vergleichen mit "stable" Repository-Version'
 'Compare with Stable Version in Repository' 'Vergleichen mit "stable" Repository-Version'
-'Compare with Original in Repository'       'Vergleichen mit ursprünglicher Repository-Version'
+'Compare with Original in Repository'       'Vergleichen mit ursprnglicher Repository-Version'
 'Compare Class with Newest in Repository'   'Vergleiche Klasse mit neuester Repository-Version'
 'Compare two Repository Versions'           'Vergleichen zweier Versionen im Repository'
 'Compare with Repository at Date'           'Vergleichen mit Repository-Version von Datum'
@@ -1422,12 +1422,12 @@
 'To Instance Protocol (Make Instance Method)'           'Zum Instanz-Protokoll'
 'To Class Protocol (Make Class Method) with Forwarding' 'Zum Klassen-Protokoll mit Weiterleitung'
 'Make Private in'        'Als private Klasse von'
-'Make Public in'         'Als öffentliche Klasse von'
-'Make Public'            'Als öffentliche Klasse'
+'Make Public in'         'Als ffentliche Klasse von'
+'Make Public'            'Als ffentliche Klasse'
 'Namespace filter'       'Filter auf Namensraum'
 
 'New Common Superclass with Children (Convert to Siblings)'  'Neue gemeinsame Superklasse mit Kindern (zu Geschwistern konvertieren)'
-'New Common Superclass (Insert Superclass)'                  'Neue gemeinsame Superklasse (Superklasse einfügen)'
+'New Common Superclass (Insert Superclass)'                  'Neue gemeinsame Superklasse (Superklasse einfgen)'
 
 'Inspect Classes'           'Klassen inspizieren'
 'Inspect References to Instances' 'Referenzen auf Instanzen inspizieren'
@@ -1441,7 +1441,7 @@
 'Access Methods for ValueHolder with Change Notification'   'Zugriffs-Methoden mit ValueHolder und change-Benachrichtigung'
 'Access Methods with Change Notification'                   'Zugriffs-Methoden mit change-Benachrichtigung'
 'Access Methods with Lazy Initialization in Getter'         'Zugriffs-Methoden mit lazy Initialisierung'
-'Multi-Setter Method'                                       'Set-Methode für mehrere Variable'
+'Multi-Setter Method'                                       'Set-Methode fr mehrere Variable'
 '"initialize"-Method'                                       '"initialize" Methode'
 '"printOn:"-Method'                                         '"printOn:" Methode'
 '#update Method Template'                                   '#update Methodenvorlage'
@@ -1450,9 +1450,9 @@
 'Visitor && Visited Methods'                                'Visitor && Visited Methoden'
 'Visitor and Visited Methods'                               'Visitor and Visited Methoden'
 'Visitor Pattern Support'                                   'Visitor Pattern'
-'Classtype Test Methods'                                    'Typ-Prüf-Methoden (isXXX)'
-'Classtype Test Methods for all Subclass(es) (isXXX)'       'Typ-Prüf-Methoden für alle Subklassen (isXXX)'
-'Classtype Test Methods for this Class (isXXX)'             'Typ-Prüf-Methoden für diese Klasse (isXXX)'
+'Classtype Test Methods'                                    'Typ-Prf-Methoden (isXXX)'
+'Classtype Test Methods for all Subclass(es) (isXXX)'       'Typ-Prf-Methoden fr alle Subklassen (isXXX)'
+'Classtype Test Methods for this Class (isXXX)'             'Typ-Prf-Methoden fr diese Klasse (isXXX)'
 'False-returning isXXX-Test in SuperClass'                  'False-liefernden isXXX-Test in Superklasse'
 'Application Code'                                          'Applikations-Rahmen'
 'Initialized Instance Creation'                             'Instanzierung mit Initialisierung'
@@ -1466,14 +1466,14 @@
 
 'All'                   'Alles'
 'Errors'                'Fehler'
-'Possible Errors'       'Mögliche Fehler'
+'Possible Errors'       'Mgliche Fehler'
 'Style'                 'Stil'
-'Individual checks'     'Einzelne Prüfungen'
-'Individual Checks'     'Einzelne Prüfungen'
-'Check Compilability'   'Übersetzbarkeit (stc) prüfen'
+'Individual checks'     'Einzelne Prfungen'
+'Individual Checks'     'Einzelne Prfungen'
+'Check Compilability'   'bersetzbarkeit (stc) prfen'
 
 'Window spec'           'Fenster spec'
-'Menu spec'             'Menü spec'
+'Menu spec'             'Men spec'
 'Image spec'            'Bitmap spec'
 
 'Edit Resource'         'Ressource editieren'
@@ -1485,7 +1485,7 @@
 'Breakpoint After'                  'Haltepunkt nach'
 'Breakpoint If'                     'Haltepunkt wenn'
 'Breakpoint in Process'             'Haltepunkt in Prozess'
-'Breakpoint for Instances Of'       'Haltepunkt für Instanzen von'
+'Breakpoint for Instances Of'       'Haltepunkt fr Instanzen von'
 'Goto class (uppercase) or method which implements this selector (lowercase)'  'Klasse (gross) oder Methodenimplementierung (klein) suchen'
 
 'Trace'                             'Aufrufprotokoll (Trace)'
@@ -1494,11 +1494,11 @@
 
 'Instance'              'Instanz'
 
-'About SystemBrowser'   'Ãœber den SystemBrowser'
-
-; 'Recently Changed'         'Änderungen'
+'About SystemBrowser'   'ber den SystemBrowser'
+
+; 'Recently Changed'         'nderungen'
 ; 'Recently Visited'         'Besucht'
-'Show Inherited Methods (except Object''s)'   'Geerbte Methoden anzeigen (außer von Object)'
+'Show Inherited Methods (except Object''s)'   'Geerbte Methoden anzeigen (auer von Object)'
 'Add Breakpoint'           'Haltepunkt setzen'
 'Add Breakpoint on Method' 'Haltepunkt auf Methode setzen'
 'Add breakpoint on method' 'Haltepunkt auf Methode setzen'
@@ -1534,13 +1534,13 @@
 'optional:'                           'optional:'
 'optional (but highly recommended):'  'optional (aber nahegelegt)'
 
-'binaries (approx. %1 Mb)'            'ausführbare Programme (ca. %1 Mb)'
+'binaries (approx. %1 Mb)'            'ausfhrbare Programme (ca. %1 Mb)'
 'libraries (approx. %1 Mb)'           'Hilfsdateien (ca. %1 Mb)'
 
 'doc files'                      'Dokumentation'
 'stc & support files'            'stc & Hilfsdateien'
 'smalltalk source files'         'Smalltalk Quellen'
-'goodies'                        'Goodies (Nützliche Klassen)'
+'goodies'                        'Goodies (Ntzliche Klassen)'
 
 'install'                        'installieren'
 
@@ -1552,28 +1552,28 @@
 'creating %1 ...'                       'anlegen von %1 ...'
 'failed to create directory: %1'        'Das Verzeichnis %1 konnte nicht angelegt werden'
 'not a directory: %1'                   '%1 ist kein Verzeichnis'
-'no read/write access to directory: %1' 'keine schreib/lese Berechtigung für Verzeichnis %1'
-
-'must be in the ''projects/smalltalk'' directory' 'Installation ist nur im ''projects/smalltalk'' Verzeichnis möglich'
+'no read/write access to directory: %1' 'keine schreib/lese Berechtigung fr Verzeichnis %1'
+
+'must be in the ''projects/smalltalk'' directory' 'Installation ist nur im ''projects/smalltalk'' Verzeichnis mglich'
 'installation failed or aborted - retry ?'        'Installation ist fehlgeschlagen bzw. wurde abgebrochen. Nochmal ?'
 
 'detected existing ST/X installation in %1'   'existierende ST/X Installation wurde in %1 gefunden'
-'remove first'                                'zuerst löschen'
-'overwrite'                                   'überschreiben'
-'Insert Selecting'                            'Einfügen und markieren'
-'mhmh - could not remove old installation.'   'mhmh - die alte Installation konnte nicht gelöscht werden.'
+'remove first'                                'zuerst lschen'
+'overwrite'                                   'berschreiben'
+'Insert Selecting'                            'Einfgen und markieren'
+'mhmh - could not remove old installation.'   'mhmh - die alte Installation konnte nicht gelscht werden.'
 
 'ST/X Installation finished.'                 'ST/X Installation beendet.'
 'press continue ...'                          'klicken Sie auf weiter ...'
 'ST/X Installation complete.\\'               'ST/X Installation beendet.\\'
 
-'%1 is not in your PATH.\You should change your ".login" and/or ".profile" files to include it.\\'  '%1 ist nicht in ihrer PATH-Definition enthalten.\Sie sollten Ihre ".login" und/oder ".profile" Datei entsprechend ändern.\\'
-
-'The library directory is not a standard ST/X library directory\("/usr/local/lib/smalltalk" or "/usr/lib/smalltalk").\You have to define the %1 environment variable\as %2 before ST/X can be started.\' 'Das Verzeichnis für die Hilfsdateien ist kein Standard-ST/X-Verzeichnis\("/usr/local/lib/smalltalk" oder "/usr/lib/smalltalk").\Sie müssen die %1 Umgebungsvariable als\%2 definieren, bevor ST/X gestartet werden kann.\'
+'%1 is not in your PATH.\You should change your ".login" and/or ".profile" files to include it.\\'  '%1 ist nicht in ihrer PATH-Definition enthalten.\Sie sollten Ihre ".login" und/oder ".profile" Datei entsprechend ndern.\\'
+
+'The library directory is not a standard ST/X library directory\("/usr/local/lib/smalltalk" or "/usr/lib/smalltalk").\You have to define the %1 environment variable\as %2 before ST/X can be started.\' 'Das Verzeichnis fr die Hilfsdateien ist kein Standard-ST/X-Verzeichnis\("/usr/local/lib/smalltalk" oder "/usr/lib/smalltalk").\Sie mssen die %1 Umgebungsvariable als\%2 definieren, bevor ST/X gestartet werden kann.\'
 'The above mentioned files are also a good place to do this.\'        'Dazu sollten ebenfalls die oben genannten Dateien editiert werden.'
 'The ".login" and/or ".profile" files are a good place to do this.\'  'Dazu sollten Sie Ihre ".login" und/oder ".profile" Datei editieren.'
 
-'Please add the following to your ".profile" file:'     'Bitte fügen Sie folgende Zeile(n) in Ihre ".profile" Datei ein:'
+'Please add the following to your ".profile" file:'     'Bitte fgen Sie folgende Zeile(n) in Ihre ".profile" Datei ein:'
 'or (if you use csh/tcsh), add to your ".login" file:'  'oder (falls Sie csh/tcsh verwenden), folgende Zeile(n) in Ihre ".login" Datei:'
 
 ;--------------------------------------------------------------------------------------------
@@ -1582,11 +1582,11 @@
 ;
 'class documentation'    'Dokumentation'
 'rename ...'             'umbenennen ...'
-'changes'                'Änderungen'
-'browse'                 'Browser für Klassen & Methoden'   "/ mhmh - how should that be translated ...
-'browse redefined'       'Browser für redefinierte Methoden'
+'changes'                'nderungen'
+'browse'                 'Browser fr Klassen & Methoden'   "/ mhmh - how should that be translated ...
+'browse redefined'       'Browser fr redefinierte Methoden'
 'fileOut classes'        'Klassen sichern (fileOut)'
-'fileOut directory ...'  'Verzeichnis für fileOut ...'
+'fileOut directory ...'  'Verzeichnis fr fileOut ...'
 'repository module ...'     'Modul in der Quellcodeverwaltung'
 'repository directory ...'  'Unterverzeichnis (Paket) in der Quellcodeverwaltung'
 'repository defaults ...'   'Voreinstellungen der Quellcodeverwaltung ...'
@@ -1599,23 +1599,23 @@
 'remove package code'    'Paket entfernen'
 
 'The same code is found in the subclass(es)'    'Der selbe Code wurde in Unterklasse(n) gefunden:'
-'You may want to remove it there'               'Vielleicht möchten Sie ihn dort entfernen.'
+'You may want to remove it there'               'Vielleicht mchten Sie ihn dort entfernen.'
 'Remove in Subclass(es)'                        'In Subklasse(n) entfernen'
 'Remove here'                                   'Hier entfernen'
 
 'new name of project:'                  'neuer Name des Projekts:'
-'%1 is not a valid directory'           '%1 ist kein gültiges Verzeichnis'
+'%1 is not a valid directory'           '%1 ist kein gltiges Verzeichnis'
 '%1 does not exist\\create ?'           '%1 existiert nicht.\\anlegen ?'
 'cannot create %1'                      'kann %1 nicht anlegen.'
 'No classes or methods found in %1'     'weder Klassen noch Methoden wurden in %1 gefunden'
-'About to remove %1 classes and %2 additional methods.\\Are you certain you want this ?'  'Löschen von %1 Klassen un %2 Methoden.\\Wirklich entfernen ?'
+'About to remove %1 classes and %2 additional methods.\\Are you certain you want this ?'  'Lschen von %1 Klassen un %2 Methoden.\\Wirklich entfernen ?'
 'No current package.'                   'Kein aktives Paket definiert.'
 'no classes or methods in this project (yet)' '(Noch) keine Klassen oder Methoden in diesem Projekt'
-'no changes made in this project (yet)'       'In diesem Projekt wurden (noch) keine Änderungen gemacht.'
+'no changes made in this project (yet)'       'In diesem Projekt wurden (noch) keine nderungen gemacht.'
 
 'classes in package %1'                 'Klassen im Paket: %1'
 'individual methods in package %1'      'einzelne Methoden im Paket: %1'
-'Changes in %1'                         'Änderungen im Paket: %1'
+'Changes in %1'                         'nderungen im Paket: %1'
 
 ;--------------------------------------------------------------------------------------------
 ;
@@ -1623,7 +1623,7 @@
 ;
 ; 'Debug'                  'Debug'
 'Resume'                 'Fortfahren'
-'Suspend'                'Verdrängen'
+'Suspend'                'Verdrngen'
 'Stop'                   'Anhalten'
 'Abort'                  'Aktion abbrechen'
 'Restart'                'Neu starten'
@@ -1631,15 +1631,15 @@
 'Hard Terminate'         'Prozess sofort terminieren'
 'Terminate Group'        'Prozessgruppe terminieren'
 
-'Raise Prio'             'Priorität erhöhen'
-'Lower Prio'             'Priorität erniedrigen'
+'Raise Prio'             'Prioritt erhhen'
+'Lower Prio'             'Prioritt erniedrigen'
 
 '\c Detail'              '\c Genauere Information'
 
 'Process'               'Prozess'
 'Group'                 'Gruppe'
 'State'                 'Zustand'
-'Prio'                  'Priorität'
+'Prio'                  'Prioritt'
 'Used Stack'            'Verwendeter Stack'
 'Total Stack'           'Reservierter Stack'
 'Current-Segment'       'Aktuelles Stacksegment'
@@ -1670,34 +1670,34 @@
 ;
 ; ChangesBrowser
 ;
-Apply                                   'Ãœbernehmen'
-Test                                    'Prüfen'
+Apply                                   'bernehmen'
+Test                                    'Prfen'
 
 Reload                                  'Neuladen'
 ; Load                                    'Laden'
 ; Save                                    'Speichern'
 Save                                    'Sichern'
-Append                                  'Anfügen'
-
-Change                                  'Änderung'
+Append                                  'Anfgen'
+
+Change                                  'nderung'
 'To End'                                'Bis Ende'
-'All for Class'                         'Alle für Klasse'
-'For Class to End'                      'Für Klasse bis Ende'
+'All for Class'                         'Alle fr Klasse'
+'For Class to End'                      'Fr Klasse bis Ende'
 'From last Snapshot'                    'Ab der letzten Sicherung'
 
-'Apply To End'                          'Ãœbernehmen bis Ende'
-'Apply All For Class'                   'Übernehmen alle für Klasse'
-'Apply For Class To End'                'Übernehmen bis Ende für Klasse'
-
-'Delete To End'                         'Löschen bis Ende'
-'Delete All For Class'                  'Löschen Alle für Klasse'
-'Delete For Class To End'               'Löschen bis Ende für Klasse'
+'Apply To End'                          'bernehmen bis Ende'
+'Apply All For Class'                   'bernehmen alle fr Klasse'
+'Apply For Class To End'                'bernehmen bis Ende fr Klasse'
+
+'Delete To End'                         'Lschen bis Ende'
+'Delete All For Class'                  'Lschen Alle fr Klasse'
+'Delete For Class To End'               'Lschen bis Ende fr Klasse'
 
 Compress                                'Komprimieren'
-'Compress For Class'                    'Komprimieren für Klasse'
+'Compress For Class'                    'Komprimieren fr Klasse'
 
 'Find last Snapshot'                    'Letzte Sicherung suchen'
-'Find next Snapshot'                    'Nächste Sicherung suchen'
+'Find next Snapshot'                    'Nchste Sicherung suchen'
 
 'Compare with Current Version'          'Vergleichen mit aktueller Version'
 'compare with current version'          'Vergleichen - mit aktueller Version'
@@ -1708,18 +1708,18 @@
 'Private Classes as Separate'           'Private Klassen separat'
 
 Columns                                 'Spalten'
-Fonts                                   'Zeichensätze'
-
-'Empty History'                         'Historie löschen'
-'empty history'                         'Historie löschen'
+Fonts                                   'Zeichenstze'
+
+'Empty History'                         'Historie lschen'
+'empty history'                         'Historie lschen'
 
 'Documentation'                         'Dokumentation'
 
 'Change list was modified. Exit anyway?'   'Change-Liste wurde modifiziert. Trotzdem beenden?'
-'Discard Modifications and Exit'           'Änderungen verwerfen und beenden'
-
-'changes are not allowed to be changed'    'Änderungen können nicht geändert werden'
-'Warning: this operation cannot be undone' 'Achtung: diese Operation kann nicht zurückgenommen werden'
+'Discard Modifications and Exit'           'nderungen verwerfen und beenden'
+
+'changes are not allowed to be changed'    'nderungen knnen nicht gendert werden'
+'Warning: this operation cannot be undone' 'Achtung: diese Operation kann nicht zurckgenommen werden'
 'Quit without updating changeFile ?'       'Beenden ohne die Changedatei zu aktualisieren ?'
 
 'changefile has not been updated from the modified changelist.\\Update before closing ?' 'Changedatei wurde nicht aktualisiert.\\Aktualisieren ?'
@@ -1728,12 +1728,12 @@
 'don''t update'                        'nicht aktualisieren'
 
 'not comparable.'                      'nicht vergleichbar'
-'cannot compare this change\\(compare requires class to be loaded).'    'Kein Vergleich möglich\\(Klasse muss erst geladen werden).'
-'cannot compare this change\\(i.e. this is not a method change).'       'Kein Vergleich möglich\\(Änderung bezieht sich nicht auf eine Methode).'
+'cannot compare this change\\(compare requires class to be loaded).'    'Kein Vergleich mglich\\(Klasse muss erst geladen werden).'
+'cannot compare this change\\(i.e. this is not a method change).'       'Kein Vergleich mglich\\(nderung bezieht sich nicht auf eine Methode).'
 'class does not exist'                 'Klasse nicht gefunden'
 'method does not exist'                'Methode nicht gefunden'
 'there is no such method'              'Methode nicht gefunden'
-'change unparsable'                    'Änderung kann nicht analysiert werden'
+'change unparsable'                    'nderung kann nicht analysiert werden'
 'change has no effect\\(same category)' 'Kein Unterschied (gleiche Kategorie)'
 
 'same source'                          'Quelltexte gleich'
@@ -1741,7 +1741,7 @@
 'source changed'                       'Quelltexte unterschiedlich'
 
 'current version (in image)'           'aktuelle Version (im Image)'
-'change version'                       'Änderung'
+'change version'                       'nderung'
 
 'updating...'                   'aktualisieren...'
 
@@ -1756,34 +1756,34 @@
 'Type'                        'Typ'
 'Timestamp'                   'Zeit'
 
-'Change'                                'Änderung'
+'Change'                                'nderung'
 
 'Current'                               'Aktuell'
-'Change'                                'Änderung'
+'Change'                                'nderung'
 
 'search class'                          'Klasse suchen'
-'next for this class'                   'Nächste Änderung zu dieser Klasse'
-'previous for this class'               'Vorige Änderung zu dieser Klasse'
+'next for this class'                   'Nchste nderung zu dieser Klasse'
+'previous for this class'               'Vorige nderung zu dieser Klasse'
 'search selector'                       'Selektor suchen'
-'next with this selector'               'Nächste Änderung mit diesem Selektor'
-'previous with this selector'           'Vorige Änderung mit diesem Selektor'
-'next snapshot'                         'Nächste Sicherung (snapshot)'
+'next with this selector'               'Nchste nderung mit diesem Selektor'
+'previous with this selector'           'Vorige nderung mit diesem Selektor'
+'next snapshot'                         'Nchste Sicherung (snapshot)'
 'previous snapshot'                     'Vorige Sicherung (snapshot)'
 'search string'                         'Zeichenkette suchen'
 
 'Class'                                 'Klasse'
-'Next for Class'                        'Nächste Änderung zu dieser Klasse'
-'Previous for Class'                    'Vorige Änderung zu dieser Klasse'
+'Next for Class'                        'Nchste nderung zu dieser Klasse'
+'Previous for Class'                    'Vorige nderung zu dieser Klasse'
 'Selector'                              'Selektor'
-'Next for Selector'                     'Nächste Änderung mit diesem Selektor'
-'Previous for Selector'                 'Vorige Änderung mit diesem Selektor'
+'Next for Selector'                     'Nchste nderung mit diesem Selektor'
+'Previous for Selector'                 'Vorige nderung mit diesem Selektor'
 'String'                                'Zeichenkette'
-'Next with String'                      'Nächste Änderung mit dieser Zeichenkette'
-'Previous with String'                  'Vorige Änderung mit dieser Zeichenkette'
-'Next Snapshot'                         'Nächste Sicherung (snapshot)'
+'Next with String'                      'Nchste nderung mit dieser Zeichenkette'
+'Previous with String'                  'Vorige nderung mit dieser Zeichenkette'
+'Next Snapshot'                         'Nchste Sicherung (snapshot)'
 'Previous Snapshot'                     'Vorige Sicherung (snapshot)'
 'Last Snapshot'                         'Letzte Sicherung (snapshot)'
-'Next Difference'                       'Nächster Unterschied'
+'Next Difference'                       'Nchster Unterschied'
 'Previous Difference'                   'Voriger Unterschied'
 
 
@@ -1791,112 +1791,112 @@
 'Autoload As Required'                  'Klassen bei Bedarf automatisch laden'
 'Show Diffs'                            'Unterschiede zeigen'
 'Auto Update'                           'Automatisch aktualisieren'
-'Apply in Original NameSpace'           'Im ursprünglichen Namensraum übernehmen'
-'Apply into Package'                    'Ãœbernehmen in Paket'
-'Apply into NameSpace'                  'Ãœbernehmen in Namensraum'
-
-'Apply to End'                          'Ãœbernehmen - bis Ende'
-'Apply for Class to End'                'Übernehmen - bis Ende für diese Klasse'
-'Apply All'                             'Ãœbernehmen - alles'
-
-'Apply from Begin'                      'Ãœbernehmen - vom Anfang'
-'Apply for Class from Begin'            'Übernehmen - vom Anfang für diese Klasse'
-
-; 'apply change'                          'Ãœbernehmen'
-; 'apply changes to end'                  'Ãœbernehmen - bis Ende'
-; 'apply changes for class to end'        'Übernehmen - bis Ende für diese Klasse'
-; 'apply all changes'                     'Ãœbernehmen - alles'
-
-'Apply to Conflict or End'              'Ãœbernehmen - bis Konflikt oder Ende'
-
-'Add to ChangeSet when Applying'        'Bei Ãœbernehmen auch ins ChangeSet eintragen'
+'Apply in Original NameSpace'           'Im ursprnglichen Namensraum bernehmen'
+'Apply into Package'                    'bernehmen in Paket'
+'Apply into NameSpace'                  'bernehmen in Namensraum'
+
+'Apply to End'                          'bernehmen - bis Ende'
+'Apply for Class to End'                'bernehmen - bis Ende fr diese Klasse'
+'Apply All'                             'bernehmen - alles'
+
+'Apply from Begin'                      'bernehmen - vom Anfang'
+'Apply for Class from Begin'            'bernehmen - vom Anfang fr diese Klasse'
+
+; 'apply change'                          'bernehmen'
+; 'apply changes to end'                  'bernehmen - bis Ende'
+; 'apply changes for class to end'        'bernehmen - bis Ende fr diese Klasse'
+; 'apply all changes'                     'bernehmen - alles'
+
+'Apply to Conflict or End'              'bernehmen - bis Konflikt oder Ende'
+
+'Add to ChangeSet when Applying'        'Bei bernehmen auch ins ChangeSet eintragen'
 
 'Delete'                                'Entfernen'
 'Delete to End'                         'Entfernen - bis Ende'
 'Delete from Begin'                     'Entfernen - vom Anfang'
-'Delete for Class to End'               'Entfernen - bis Ende für diese Klasse'
-'Delete for Class from Begin'           'Entfernen - vom Anfang für diese Klasse'
-'Delete All for Class'                  'Entfernen - alles für diese Klasse'
-'Delete all for Class'                  'Entfernen - alles für diese Klasse'
-'Delete All for Classes'                'Entfernen - alles für diese Klassen'
-'Delete all for Classes'                'Entfernen - alles für diese Klassen'
-'delete all for class & its private classes'      'Entfernen - alles für diese Klasse & private Klassen'
-'Delete all for Class && its Private Classes'     'Entfernen - alles für diese Klasse && private Klassen'
-'Delete All for Class && its Private Classes'     'Entfernen - alles für diese Klasse && private Klassen'
-'Delete All for Class & its Private Classes'      'Entfernen - alles für diese Klasse & private Klassen'
-'Delete All for Class && its private Classes'     'Entfernen - alles für diese Klasse && private Klassen'
-'Delete All for Class & its private Classes'      'Entfernen - alles für diese Klasse & private Klassen'
-'Delete All for Classes && their private Classes' 'Entfernen - alles für diese Klassen && private Klassen'
-'Delete All for Classes & their private Classes'  'Entfernen - alles für diese Klassen & private Klassen'
-'Delete all for Classes & their Private Classes'  'Entfernen - alles für diese Klassen & private Klassen'
-
-'delete changes for class to end'      'Entfernen bis Ende für diese Klasse'
-'delete changes for class from begin'  'Entfernen vom Anfang für diese Klasse'
-'delete all changes for class'         'Entfernen alles für diese Klasse'
+'Delete for Class to End'               'Entfernen - bis Ende fr diese Klasse'
+'Delete for Class from Begin'           'Entfernen - vom Anfang fr diese Klasse'
+'Delete All for Class'                  'Entfernen - alles fr diese Klasse'
+'Delete all for Class'                  'Entfernen - alles fr diese Klasse'
+'Delete All for Classes'                'Entfernen - alles fr diese Klassen'
+'Delete all for Classes'                'Entfernen - alles fr diese Klassen'
+'delete all for class & its private classes'      'Entfernen - alles fr diese Klasse & private Klassen'
+'Delete all for Class && its Private Classes'     'Entfernen - alles fr diese Klasse && private Klassen'
+'Delete All for Class && its Private Classes'     'Entfernen - alles fr diese Klasse && private Klassen'
+'Delete All for Class & its Private Classes'      'Entfernen - alles fr diese Klasse & private Klassen'
+'Delete All for Class && its private Classes'     'Entfernen - alles fr diese Klasse && private Klassen'
+'Delete All for Class & its private Classes'      'Entfernen - alles fr diese Klasse & private Klassen'
+'Delete All for Classes && their private Classes' 'Entfernen - alles fr diese Klassen && private Klassen'
+'Delete All for Classes & their private Classes'  'Entfernen - alles fr diese Klassen & private Klassen'
+'Delete all for Classes & their Private Classes'  'Entfernen - alles fr diese Klassen & private Klassen'
+
+'delete changes for class to end'      'Entfernen bis Ende fr diese Klasse'
+'delete changes for class from begin'  'Entfernen vom Anfang fr diese Klasse'
+'delete all changes for class'         'Entfernen alles fr diese Klasse'
 
 'Delete all Versions of Selected Method'        'Entfernen - alle Versionen dieser Methode'
-'Delete all Versions of all Selected Methods'   'Entfernen - alle Versionen der ausgewählten Methoden'
+'Delete all Versions of all Selected Methods'   'Entfernen - alle Versionen der ausgewhlten Methoden'
 
 'update view'                          'Aktualisieren (ChangeDatei lesen)'
 'Update View'                          'Aktualisieren (ChangeDatei lesen)'
 'Update (Reread Change-File)'          'Aktualisieren (ChangeDatei lesen)'
 'Compress'                             'Komprimieren'
-'compress for class'                   'Komprimieren für diese Klasse'
-'Compress for Class'                   'Komprimieren für diese Klasse'
-'Compress for Class && Selector'       'Komprimieren für diese Klasse && Selektor'
+'compress for class'                   'Komprimieren fr diese Klasse'
+'Compress for Class'                   'Komprimieren fr diese Klasse'
+'Compress for Class && Selector'       'Komprimieren fr diese Klasse && Selektor'
 'compare and compress'                 'Vergleichen und Komprimieren'
 'Compare and Compress'                 'Vergleichen und Komprimieren'
 
-'make change a patch'                  'Änderung automatisieren (in patches übernehmen)'
-'Make Change a Patch'                  'Änderung automatisieren (in patches übernehmen)'
+'make change a patch'                  'nderung automatisieren (in patches bernehmen)'
+'Make Change a Patch'                  'nderung automatisieren (in patches bernehmen)'
 
 'save change in'                    'Sichern in'
 'save changes to end in'            'Sichern bis Ende in'
-'save changes for class to end in'  'Sichern bis Ende für diese Klasse in'
-'save all changes for class in'     'Sichern alle für diese Klasse in'
+'save changes for class to end in'  'Sichern bis Ende fr diese Klasse in'
+'save all changes for class in'     'Sichern alle fr diese Klasse in'
 
 'save in'                           'sichern in'
 'Save In'                           'Sichern in'
 'save to end in'                    'Sichern bis Ende in'
 'Save to End in'                    'Sichern bis Ende in'
 'Save to End In'                    'Sichern bis Ende in'
-'save for class to end in'          'Sichern bis Ende für diese Klasse in'
-'Save for Class to End in'          'Sichern bis Ende für diese Klasse in'
-'Save for Class to End In'          'Sichern bis Ende für diese Klasse in'
-'save all for class in'             'Sichern alle für diese Klasse in'
-'Save all for Class In'             'Sichern alle für diese Klasse in'
-
-'update sourcefile from change'        'Änderung in sources eintragen'
-'writeback changeFile'                 'Zurückschreiben (in ChangeDatei)'
-'Writeback ChangeFile'                 'Zurückschreiben (in ChangeDatei)'
-'Writeback ClassFile'                  'Zurückschreiben (in Datei)'
-
-'fileout & delete all for class'               'Klasse in Datei sichern (fileOut) und alle Änderungen dazu entfernen'
-'Fileout && Delete All for Class'              'Klasse in Datei sichern (fileOut) und alle Änderungen dazu entfernen'
-'Fileout & Delete All for Class'               'Klasse in Datei sichern (fileOut) und alle Änderungen dazu entfernen'
-'Fileout && Delete all Changes for Class'      'Klasse in Datei sichern (fileOut) und alle Änderungen dazu entfernen'
-'Fileout && Delete All Changes for Class'      'Klasse in Datei sichern (fileOut) und alle Änderungen dazu entfernen'
-'Fileout & Delete All for Classes'             'Klasse in Datei sichern (fileOut) und alle Änderungen dazu entfernen'
-
-'checkIn & delete all for class'               'Klasse in Quellcodeverwaltung sichern (checkIn) und alle Änderungen dazu entfernen'
-'CheckIn && Delete All for Class'              'Klasse in Quellcodeverwaltung sichern (checkIn) und alle Änderungen dazu entfernen'
-'CheckIn & Delete All for Class'               'Klasse in Quellcodeverwaltung sichern (checkIn) und alle Änderungen dazu entfernen'
-'CheckIn && Delete All Changes for Class'      'Klasse in Quellcodeverwaltung sichern (checkIn) und alle Änderungen dazu entfernen'
-'CheckIn && Delete all Changes for Class'      'Klasse in Quellcodeverwaltung sichern (checkIn) und alle Änderungen dazu entfernen'
-'CheckIn & Delete All Changes for Class'       'Klasse in Quellcodeverwaltung sichern (checkIn) und alle Änderungen dazu entfernen'
-
-'The modified changelist has not been written back to the change file.\\Write change file before closing ?' 'Modifizierte Change-Liste wurde nicht in die Changedatei zurückgeschrieben.\\ChangeDatei aktualisieren ?'
-'The modified changelist has not been written back to the change file.\\Write change file before exiting ?' 'Modifizierte Change-Liste wurde nicht in die Changedatei zurückgeschrieben.\\ChangeDatei aktualisieren ?'
-
-'Write'                                'Zurückschreiben'
-'Don''t Write'                         'Nicht Zurückschreiben'
-'don''t write'                         'Nicht Zurückschreiben'
+'save for class to end in'          'Sichern bis Ende fr diese Klasse in'
+'Save for Class to End in'          'Sichern bis Ende fr diese Klasse in'
+'Save for Class to End In'          'Sichern bis Ende fr diese Klasse in'
+'save all for class in'             'Sichern alle fr diese Klasse in'
+'Save all for Class In'             'Sichern alle fr diese Klasse in'
+
+'update sourcefile from change'        'nderung in sources eintragen'
+'writeback changeFile'                 'Zurckschreiben (in ChangeDatei)'
+'Writeback ChangeFile'                 'Zurckschreiben (in ChangeDatei)'
+'Writeback ClassFile'                  'Zurckschreiben (in Datei)'
+
+'fileout & delete all for class'               'Klasse in Datei sichern (fileOut) und alle nderungen dazu entfernen'
+'Fileout && Delete All for Class'              'Klasse in Datei sichern (fileOut) und alle nderungen dazu entfernen'
+'Fileout & Delete All for Class'               'Klasse in Datei sichern (fileOut) und alle nderungen dazu entfernen'
+'Fileout && Delete all Changes for Class'      'Klasse in Datei sichern (fileOut) und alle nderungen dazu entfernen'
+'Fileout && Delete All Changes for Class'      'Klasse in Datei sichern (fileOut) und alle nderungen dazu entfernen'
+'Fileout & Delete All for Classes'             'Klasse in Datei sichern (fileOut) und alle nderungen dazu entfernen'
+
+'checkIn & delete all for class'               'Klasse in Quellcodeverwaltung sichern (checkIn) und alle nderungen dazu entfernen'
+'CheckIn && Delete All for Class'              'Klasse in Quellcodeverwaltung sichern (checkIn) und alle nderungen dazu entfernen'
+'CheckIn & Delete All for Class'               'Klasse in Quellcodeverwaltung sichern (checkIn) und alle nderungen dazu entfernen'
+'CheckIn && Delete All Changes for Class'      'Klasse in Quellcodeverwaltung sichern (checkIn) und alle nderungen dazu entfernen'
+'CheckIn && Delete all Changes for Class'      'Klasse in Quellcodeverwaltung sichern (checkIn) und alle nderungen dazu entfernen'
+'CheckIn & Delete All Changes for Class'       'Klasse in Quellcodeverwaltung sichern (checkIn) und alle nderungen dazu entfernen'
+
+'The modified changelist has not been written back to the change file.\\Write change file before closing ?' 'Modifizierte Change-Liste wurde nicht in die Changedatei zurckgeschrieben.\\ChangeDatei aktualisieren ?'
+'The modified changelist has not been written back to the change file.\\Write change file before exiting ?' 'Modifizierte Change-Liste wurde nicht in die Changedatei zurckgeschrieben.\\ChangeDatei aktualisieren ?'
+
+'Write'                                'Zurckschreiben'
+'Don''t Write'                         'Nicht Zurckschreiben'
+'don''t write'                         'Nicht Zurckschreiben'
 'Continue'                             'Fortfahren'
 
-'%1 is an autoloaded class.\I can only compare the methods source if its loaded first.\\Shall the class be loaded now ?'  '%1 ist noch nicht geladen.\Vergleich ist nur nach dem Laden möglich.\\Soll die Klasse jetzt geladen werden ?'
+'%1 is an autoloaded class.\I can only compare the methods source if its loaded first.\\Shall the class be loaded now ?'  '%1 ist noch nicht geladen.\Vergleich ist nur nach dem Laden mglich.\\Soll die Klasse jetzt geladen werden ?'
 
 'ChangesBrowser Documentation'  'Dokumentation'
-'About ChangesBrowser'          'Ãœber den ChangesBrowser'
+'About ChangesBrowser'          'ber den ChangesBrowser'
 
 ;--------------------------------------------------------------------------------------------
 ;
@@ -1938,17 +1938,17 @@
 
 'Scavenge'                      'Scavenge (Speicher f. junge Objekte)'
 'Tenure'                        'Tenure (Objekte altern)'
-'hi prio incremental collect'   'inkrementell bereinigen (hohe Priorität)'
-'Hi Prio Incremental Collect'   'Inkrementell bereinigen (hohe Priorität)'
-'flush method history'          'Methodenhistorie löschen'
-'Flush Method History'          'Methodenhistorie löschen'
+'hi prio incremental collect'   'inkrementell bereinigen (hohe Prioritt)'
+'Hi Prio Incremental Collect'   'Inkrementell bereinigen (hohe Prioritt)'
+'flush method history'          'Methodenhistorie lschen'
+'Flush Method History'          'Methodenhistorie lschen'
 'cleanup memory'                'alles bereinigen'
 'Cleanup Memory'                'Alles bereinigen'
 'unload autoloaded classes'     'Automatisch geladene Klassen wieder entladen'
 'Unload Autoloaded Classes'     'Automatisch geladene Klassen wieder entladen'
 
-'reset statistic values'        'Messwerte zurücksetzen'
-'Reset Statistic Values'        'Messwerte zurücksetzen'
+'reset statistic values'        'Messwerte zurcksetzen'
+'Reset Statistic Values'        'Messwerte zurcksetzen'
 
 'Collect Garbage'               'Speicher bereinigen'
 'Collect Garbage && Symbols'    'Speicher && Symbole bereinigen'
@@ -1959,13 +1959,13 @@
 ; Inspector resources
 ;
 'Follow'                 'Referenz folgen'
-'add key'                'index einfügen'
+'add key'                'index einfgen'
 'remove key'             'index entfernen'
-'Add Key'                'Schlüssel einfügen'
-'Remove Key'             'Schlüssel entfernen'
-'Copy Key'               'Schlüssel kopieren'
-'Copy Name or Key'       'Name oder Schlüssel kopieren'
-'Inspect Key'            'Schlüssel inspizieren'
+'Add Key'                'Schlssel einfgen'
+'Remove Key'             'Schlssel entfernen'
+'Copy Key'               'Schlssel kopieren'
+'Copy Name or Key'       'Name oder Schlssel kopieren'
+'Inspect Key'            'Schlssel inspizieren'
 'BasicInspect'           'Inspizieren (Basic)'
 'Inspect Hierarchical'   'Inspizieren (Hierarchisch)'
 'References to Global'   'Referenzen auf Globale'
@@ -1996,7 +1996,7 @@
 'Trace Message'          'Methodenaufruf protokollieren'
 'Untrace/Untrap'         'Protokollierung / Fangen beenden'
 'Hex Integers'           'Integerwerte hexadezimal anzeigen'
-'Binary Integers'        'Integerwerte binär anzeigen'
+'Binary Integers'        'Integerwerte binr anzeigen'
 'Decimal Integers'       'Integerwerte dezimal anzeigen'
 
 ;--------------------------------------------------------------------------------------------
@@ -2006,7 +2006,7 @@
 
 'Reload'                    'Neu Laden'
 'home'                      'Home'
-'back'                      'zurück'
+'back'                      'zurck'
 'hardcopy'                  'Abzug'
 'source'                    'Quelle'
 
@@ -2017,12 +2017,12 @@
 ; FileBrowser
 ;
 
-ENCODING_MSG       'Angabe der Zeichenkodierung.\\Die Voreinstellung (1-zu-1 unkodiert) sollte für 7Bit Ascii und\iso8859 (= ANSI) kodierte Textdateien verwendet werden.\'
+ENCODING_MSG       'Angabe der Zeichenkodierung.\\Die Voreinstellung (1-zu-1 unkodiert) sollte fr 7Bit Ascii und\iso8859 (= ANSI) kodierte Textdateien verwendet werden.\'
 
 'FileBrowser'      'DateiBrowser'
 
-'About Smalltalk/X'          'Ãœber Smalltalk/X'
-'About FileBrowser'          'Ãœber den DateiBrowser'
+'About Smalltalk/X'          'ber Smalltalk/X'
+'About FileBrowser'          'ber den DateiBrowser'
 'FileBrowser Documentation'  'DateiBrowser Dokumentation'
 
 'Directory'     'Verzeichnis'
@@ -2030,44 +2030,44 @@
 'Tools'         'Hilfsmittel'
 'Help'          'Hilfe'
 
-'Remove'        'Löschen'
+'Remove'        'Lschen'
 'Properties'    'Eigenschaften'
 
 'Rename each to Include Directory in Name'  'Umbenennen, mit Verzeichnis im Namen'
 
-'Make Selected Directory new Root'          'Ausgewähltes Verzeichnis als Stamm im Baum anzeigen'
-
-; 'Back'                  'Zurück'
-'Forward'               'Vorwärts'
+'Make Selected Directory new Root'          'Ausgewhltes Verzeichnis als Stamm im Baum anzeigen'
+
+; 'Back'                  'Zurck'
+'Forward'               'Vorwrts'
 'Home'                  'Heimatverzeichnis'
 ; 'Default'               'Startverzeichnis'
 ; 'Visited Files'         'Datei Historie'
 ; 'Visited Directories'   'Ordner Historie'
 
-'Hard Link'             'Harte Verknüpfung'
-'Symbolic Link'         'Symbolische Verknüpfung'
+'Hard Link'             'Harte Verknpfung'
+'Symbolic Link'         'Symbolische Verknpfung'
 
 'New Directory'         'Neuer Ordner'
 'New File'              'Neue Datei'
 
 'get contents'          'Datei lesen'
-'insert contents'       'Datei einfügen'
-'Insert URL Contents'   'Webdokument (URL-Inhalt) einfügen'
-; 'insert contents'       'Dateiinhalt einfügen'
+'insert contents'       'Datei einfgen'
+'Insert URL Contents'   'Webdokument (URL-Inhalt) einfgen'
+; 'insert contents'       'Dateiinhalt einfgen'
 'Copy File List'        'Dateiliste ins Clipboard kopieren'
 ; 'Copy File List'        'Kopiere Dateiliste'
 'copy Path'             'Pfad ins Clipboard kopieren'
 ; 'copy path'                 'Pfad kopieren'
-'Copy Selected Filename'                    'Ausgewählten Namen ins Clipboard kopieren'
-'Copy Selected Filenames to Clipboard'      'Ausgewählte Dateinamen ins Clipboard kopieren'
-; 'Copy Selected Filenames'                 'Kopiere ausgewählte Dateien'
+'Copy Selected Filename'                    'Ausgewhlten Namen ins Clipboard kopieren'
+'Copy Selected Filenames to Clipboard'      'Ausgewhlte Dateinamen ins Clipboard kopieren'
+; 'Copy Selected Filenames'                 'Kopiere ausgewhlte Dateien'
 'Copy All Filenames to Clipboard'           'Alle Dateinamen ins Clipboard kopieren'
 ; 'Copy All Filenames'                        'Kopiere alle Dateien'
-'Copy Selected Pathname'                    'Ausgewählten Pfad ins Clipboard kopieren'
+'Copy Selected Pathname'                    'Ausgewhlten Pfad ins Clipboard kopieren'
 'Copy Command History'                      'Befehlshistorie ins Clipboard kopieren'
 
 'Show Hidden Files'     'Versteckte Dateien Zeigen'
-'Big Image Preview'     'Bildvorschau mit großen Bildern'
+'Big Image Preview'     'Bildvorschau mit groen Bildern'
 'Sort by Type'          'Sortieren nach Typ'
 'Sort by Time'          'Sortieren nach Zeit'
 'Encoding'              'Zeichenkodierung'
@@ -2084,17 +2084,17 @@
 
 'spawn Filebrowser'         'neuer Dateibrowser'
 'show info'                 'Info anzeigen'
-'show full info'            'ausführliche Info anzeigen'
+'show full info'            'ausfhrliche Info anzeigen'
 'show all files'            'alle Dateien anzeigen'
-'hide hidden files'         'versteckte Dateien unterdrücken'
+'hide hidden files'         'versteckte Dateien unterdrcken'
 fileIn                      'laden (fileIn)'
 'fileIn (into ''%1'')'      'laden (fileIn nach ''%1'')'
-'execute unix command'      'Unix Kommando ausführen'
+'execute unix command'      'Unix Kommando ausfhren'
 'st/x tools'                'st/x Hilfsmittel'
-delete                      'löschen'
+delete                      'lschen'
 erase                       'ausradieren'
 DISPLAY_MODE                'Anzeigemodus'
-'display long list'         'ausführliche Liste'
+'display long list'         'ausfhrliche Liste'
 'display short list'        'kurze Liste'
 'encoding'                  'Zeichenkodierung'
 
@@ -2104,10 +2104,10 @@
 'create file'                   'Neue Datei anlegen'
 'Create File'                   'Datei anlegen'
 'create new file:'              'neue Datei anlegen:'
-'Create hard link from:'        'Harte Verknüpfung erzeugen von:'
-'Create Hard Link from:'        'Harte Verknüpfung (Link) anlegen von:'
-'Create symbolic link from:'    'Symbolische Verknüpfung erzeugen von:'
-'Create Symbolic Link from:'    'Symbolische Verknüpfung (Link) anlegen von:'
+'Create hard link from:'        'Harte Verknpfung erzeugen von:'
+'Create Hard Link from:'        'Harte Verknpfung (Link) anlegen von:'
+'Create symbolic link from:'    'Symbolische Verknpfung erzeugen von:'
+'Create Symbolic Link from:'    'Symbolische Verknpfung (Link) anlegen von:'
 
 'to:'                           'nach:'
 
@@ -2129,23 +2129,23 @@
 'Find a File'                   'Datei suchen'
 'terminal'                      'Terminal'
 
-'Update selected files/directories'     'Ausgewählte Dateien/Ordner Aktualisieren'
-'Update selected Files/Directories'     'Ausgewählte Dateien/Ordner aktualisieren (CVS)'
+'Update selected files/directories'     'Ausgewhlte Dateien/Ordner Aktualisieren'
+'Update selected Files/Directories'     'Ausgewhlte Dateien/Ordner aktualisieren (CVS)'
 'Update directory local'                'Ordner lokal Aktualisieren'
 'Update Directory Local'                'Ordner lokal aktualisieren (CVS)'
 'Update directory recursive'            'Ordner rekursiv Aktualisieren'
 'Update Directory Recursive'            'Ordner rekursiv aktualisieren (CVS)'
-'Remove file && CVS Container'          'Datei && CVS Container Löschen'
-'Remove File && CVS Container'          'Datei && Container löschen (CVS)'
+'Remove file && CVS Container'          'Datei && CVS Container Lschen'
+'Remove File && CVS Container'          'Datei && Container lschen (CVS)'
 ; 'Add'                            'CVS Container Anlegen'
 ; 'Add'                            'Container anlegen (CVS)'
 ; 'Commit'                         'In Source Repository Container Einchecken'
 'Commit'                         'Einchecken (Source Repository)'
 'Add && Commit'                  'Container anlegen und einchecken'
-'Add as Binary && Commit'        'Container für Binärdatei anlegen und einchecken'
+'Add as Binary && Commit'        'Container fr Binrdatei anlegen und einchecken'
 'Commit (CVS)'                         'Einchecken (CVS)'
 'Add && Commit (CVS)'                  'Container anlegen und einchecken (CVS)'
-'Add as Binary && Commit (CVS)'        'Container für Binärdatei anlegen und einchecken (CVS)'
+'Add as Binary && Commit (CVS)'        'Container fr Binrdatei anlegen und einchecken (CVS)'
 
 
 'symbolic link to: %1'  'Symbolische Referenz auf: %1'
@@ -2154,7 +2154,7 @@
 'type:   '              'Typ:      '
 'owner:  %1'            'Besitzer: %1'
 'group:  %1'            'Gruppe:   %1'
-'size:   %1'            'Grösse:   %1'
+'size:   %1'            'Grsse:   %1'
 'last access:       %1 %2'   'letzter Zugriff: %1 %2'
 'last modification: %1 %2'   'letzte Anderung: %1 %2'
 'owner: '               'Besitzer: '
@@ -2169,11 +2169,11 @@
 'cannot create file ''%1'' !'                           'kann Datei ''%1'' nicht anlegen !'
 'cannot read directory %1 !'                            'kann Verzeichnis %1 nicht lesen !'
 '''%1'' is not a directory !'                           '''%1'' ist kein Verzeichnis !'
-'''%1'' is not a regular file'                          '''%1'' ist keine reguläre Datei !'
-'''%1'' seems to be a binary file - continue anyway ?'  '''%1'' scheint eine Binärdatei zu sein - dennoch lesen ?'
-'''%1'' seems to be a binary file - show anyway ?'      '''%1'' scheint eine Binärdatei zu sein - dennoch anzeigen ?'
+'''%1'' is not a regular file'                          '''%1'' ist keine regulre Datei !'
+'''%1'' seems to be a binary file - continue anyway ?'  '''%1'' scheint eine Binrdatei zu sein - dennoch lesen ?'
+'''%1'' seems to be a binary file - show anyway ?'      '''%1'' scheint eine Binrdatei zu sein - dennoch anzeigen ?'
 '''%1'' seems to be %2 encoded.'                        '''%1'' scheint %2-kodiert zu sein.'
-'''%1'' seems to require a %2 font.'                    '''%1'' scheint einen %2 Zeichensatz zu benötigen'
+'''%1'' seems to require a %2 font.'                    '''%1'' scheint einen %2 Zeichensatz zu bentigen'
 
 'Save changed file "%1" ?'                              'Modifizierten Text in "%1" sichern ?'
 'Show Diffs'                                            'Unterschiede zeigen'
@@ -2181,34 +2181,34 @@
 'Change Font'                                           'Zeichensatz Umschalten'
 'Don''t Ask Again'                                      'Nicht mehr fragen'
 'switch to a %1 encoded font ?'                         'Umschalten auf einen %1-kodierten Zeichensatz ?'
-'Individual characters may be invisible/wrong in this font.' 'Einzelne Zeichen können in diesem Zeichensatz unsichtbar oder falsch dargestellt werden.'
+'Individual characters may be invisible/wrong in this font.' 'Einzelne Zeichen knnen in diesem Zeichensatz unsichtbar oder falsch dargestellt werden.'
 
 'cannot read %1 !'                                      'kann Datei %1 nicht lesen !'
-'cannot remove ''%1'' !'                                'kann ''%1'' nicht löschen !'
-'exactly one file must be selected !'                   'genau eine Datei muß selektiert sein !'
-'directory ''%1'' is not empty\remove anyway ?'         'Verzeichnis ''%1'' ist nicht leer - dennoch löschen ?'
-
-'execute %1 command:'      '%1- Befehl ausführen:'
-'execute unix command'    'Unix Kommando ausführen'
-'Execute'                  'Ausführen'
-
-'remove selected files ?'    'wirklich löschen ?'
-'remove all'                 'alle löschen'
-'remove ''%1'' ?'            '''%1'' wirklich löschen ?'
-'remove %1 selected files ?' 'Die %1 Dateien wirklich löschen ?'
-'Remove ''%1'' and its CVS container ?' '''%1'' und den dazugehörenden CVS Container wirklich löschen ?'
-'Remove %1 selected files and their CVS containers ?' '%1 ausgewählte Dateien und die dazugehörenden CVS Container wirklich löschen ?'
+'cannot remove ''%1'' !'                                'kann ''%1'' nicht lschen !'
+'exactly one file must be selected !'                   'genau eine Datei mu selektiert sein !'
+'directory ''%1'' is not empty\remove anyway ?'         'Verzeichnis ''%1'' ist nicht leer - dennoch lschen ?'
+
+'execute %1 command:'      '%1- Befehl ausfhren:'
+'execute unix command'    'Unix Kommando ausfhren'
+'Execute'                  'Ausfhren'
+
+'remove selected files ?'    'wirklich lschen ?'
+'remove all'                 'alle lschen'
+'remove ''%1'' ?'            '''%1'' wirklich lschen ?'
+'remove %1 selected files ?' 'Die %1 Dateien wirklich lschen ?'
+'Remove ''%1'' and its CVS container ?' '''%1'' und den dazugehrenden CVS Container wirklich lschen ?'
+'Remove %1 selected files and their CVS containers ?' '%1 ausgewhlte Dateien und die dazugehrenden CVS Container wirklich lschen ?'
 
 'rename ''%1'' to:'        '''%1'' umbenennen in:'
 
 'Change'                   'Wechseln'
 
-'contents has not been saved.\\Modifications will be lost when directory is changed.' 'Inhalt wurde nicht gesichert.\\Änderungen gehen verloren wenn in anderes Verzeichnis gewechselt wird.'
-'contents has not been saved.\\Modifications will be lost when directory is changed.' 'Inhalt wurde nicht gesichert.\\Änderungen gehen verloren wenn in anderes Verzeichnis gewechselt wird.'
-'contents has not been saved.\\Modifications will be lost when command is executed.'  'Inhalt wurde nicht gesichert.\\Änderungen gehen verloren wenn Kommando ausgeführt wird.'
-'contents has not been saved.\\Modifications will be lost when new file is read.' 'Inhalt wurde nicht gesichert.\\Änderungen gehen verloren wenn neue Datei gelesen wird.'
-'contents has not been saved.\\Modifications will be lost when FileBrowser is closed.' 'Inhalt wurde nicht gesichert.\\Änderungen gehen verloren wenn der Dateibrowser beendet wird.'
-'Contents has not been saved.\\Modifications will be lost when hex dump is shown.'    'Inhalt wurde nicht gesichert.\\Änderungen gehen verloren wenn HexDump angezeigt wird.'
+'contents has not been saved.\\Modifications will be lost when directory is changed.' 'Inhalt wurde nicht gesichert.\\nderungen gehen verloren wenn in anderes Verzeichnis gewechselt wird.'
+'contents has not been saved.\\Modifications will be lost when directory is changed.' 'Inhalt wurde nicht gesichert.\\nderungen gehen verloren wenn in anderes Verzeichnis gewechselt wird.'
+'contents has not been saved.\\Modifications will be lost when command is executed.'  'Inhalt wurde nicht gesichert.\\nderungen gehen verloren wenn Kommando ausgefhrt wird.'
+'contents has not been saved.\\Modifications will be lost when new file is read.' 'Inhalt wurde nicht gesichert.\\nderungen gehen verloren wenn neue Datei gelesen wird.'
+'contents has not been saved.\\Modifications will be lost when FileBrowser is closed.' 'Inhalt wurde nicht gesichert.\\nderungen gehen verloren wenn der Dateibrowser beendet wird.'
+'Contents has not been saved.\\Modifications will be lost when hex dump is shown.'    'Inhalt wurde nicht gesichert.\\nderungen gehen verloren wenn HexDump angezeigt wird.'
 
 'Get'    'Lesen'
 
@@ -2220,15 +2220,15 @@
 
 'File Browser V2'               'DateiBrowser V2'
 
-'About FileBrowser'             'Ãœber den DateiBrowser'
+'About FileBrowser'             'ber den DateiBrowser'
 'FileBrowser Documentation'     'DateiBrowser Dokumentation'
 
-'Open selected Filename'    'Ausgewählte Datei Öffnen'
+'Open selected Filename'    'Ausgewhlte Datei ffnen'
 'FileIn'                    'Laden (fileIn)'
 'File In'                   'Laden (fileIn)'
 'File in'                   'Laden (fileIn)'
-'Move To'                   'Ãœbertragen nach'
-'Move to'                   'Ãœbertragen nach'
+'Move To'                   'bertragen nach'
+'Move to'                   'bertragen nach'
 'Copy To'                   'Kopieren nach'
 'Search Files'              'Dateien suchen'
 ; 'Add Search Tile'           'Neues Such-Fenster'
@@ -2251,22 +2251,22 @@
 ; 'Add Text Editor'               'Neues Texteditor-Fenster'
 'Add Text Editor Page'          'Neue Texteditor-Seite'
 'File Operations'               'Dateioperationen'
-'Truncate'                      'Inhalt kürzen (Truncate)'
+'Truncate'                      'Inhalt krzen (Truncate)'
 'Split'                         'Inhalt aufteilen'
 'Join'                          'Inhalte zusammenfassen'
-'Copy Corrupted File To'        'Beschädigte Datei kopieren nach'
+'Copy Corrupted File To'        'Beschdigte Datei kopieren nach'
 'Generate Signed Files'                             'Signierte Dateien erzeugen'
 'Generate Detached Signature Files (use for dll)'   'Separate Signaturdateien erzeugen'
 
 'Add Text Editor'               'Neuer Texteditor'
-'Select in Filelist'            'In der Dateiliste auswählen'
+'Select in Filelist'            'In der Dateiliste auswhlen'
 'Rename Tab'                    'Tab umbenennen'
-'Close Tab'                     'Tab schließen'
-'Close all Tabs'                'Alle Tabs schließen'
-'Close all but this Tab'        'Alle außer diesem Tab schließen'
+'Close Tab'                     'Tab schlieen'
+'Close all Tabs'                'Alle Tabs schlieen'
+'Close all but this Tab'        'Alle auer diesem Tab schlieen'
 
 'Up'                    'Nach oben'
-; 'Forward'               'Vorwärts'
+; 'Forward'               'Vorwrts'
 'Down '                 'Nach unten'
 'Home Directory'        'Homeverzeichnis'
 'Default Directory'     'Startverzeichnis'
@@ -2279,18 +2279,18 @@
 'Visited Files'         'Historie besuchter Dateien'
 'Visited Directories'   'Historie besuchter Ordner'
 'Save Bookmarks In'     'Lesezeichen sichern in'
-'Open in Text Editor'   'In Texteditor öffnen'
-'Select All'            'Alles auswählen'
-'Clear File History'    'Dateihistorie löschen'
+'Open in Text Editor'   'In Texteditor ffnen'
+'Select All'            'Alles auswhlen'
+'Clear File History'    'Dateihistorie lschen'
 
 'Hidden Files'          'Versteckte Dateien'
 'Sort by Name'                                          'Sortieren nach Name'
 'Sort by Name ignoring case'                            'Sortieren nach Name (gross/klein ignorieren)'
 'Sort by Name Ignoring Case'                            'Sortieren nach Name (gross/klein ignorieren)'
-'Sort by Name (ignore leading underscores)'             'Sortieren nach Name (führende Unterstriche ignorieren)'
-'Sort by Name (Ignore Leading Underscores)'             'Sortieren nach Name (führende Unterstriche ignorieren)'
-'Sort by Name (ignore leading underscores and case)'    'Sortieren nach Name (führende Unterstriche und gross/klein ignorieren)'
-'Sort by Name (Ignore Leading Underscores and Case)'    'Sortieren nach Name (führende Unterstriche und gross/klein ignorieren)'
+'Sort by Name (ignore leading underscores)'             'Sortieren nach Name (fhrende Unterstriche ignorieren)'
+'Sort by Name (Ignore Leading Underscores)'             'Sortieren nach Name (fhrende Unterstriche ignorieren)'
+'Sort by Name (ignore leading underscores and case)'    'Sortieren nach Name (fhrende Unterstriche und gross/klein ignorieren)'
+'Sort by Name (Ignore Leading Underscores and Case)'    'Sortieren nach Name (fhrende Unterstriche und gross/klein ignorieren)'
 'Sort by Type'                                          'Sortieren nach Typ'
 'Sort by Time'                                          'Sortieren nach Zeit'
 'Sort by Linenumber'                                    'Sortieren nach Zeilennummer'
@@ -2316,17 +2316,17 @@
 'Compare with Each Other'   'Miteinander vergleichen'
 'quick fileIn (lazy)'       'schnell laden (lazy fileIn)'
 DISPLAY_MODE                'Anzeigemodus'
-'display long list'         'ausführliche Liste'
+'display long list'         'ausfhrliche Liste'
 'display short list'        'kurze Liste'
 
 'Directories'               'Verzeichnisse'
 'Copy Filenames'            'Dateinamen kopieren'
 
-'Open (Win32-Shell)'        'Öffnen (Win32-Shell Aktion)'
-'Execute Command'           'Kommando ausführen'
-'Execute UNIX Command'      'UNIX-Kommando ausführen'
-'Execute DOS Command'       'DOS-Kommando ausführen'
-'Execute Script'            'Script ausführen'
+'Open (Win32-Shell)'        'ffnen (Win32-Shell Aktion)'
+'Execute Command'           'Kommando ausfhren'
+'Execute UNIX Command'      'UNIX-Kommando ausfhren'
+'Execute DOS Command'       'DOS-Kommando ausfhren'
+'Execute Script'            'Script ausfhren'
 'Create Smalltalk Project'  'Neues Smalltalk Projekt anlegen'
 'Install Autoloaded'                            'Installiere als Autoloaded'
 'Install all as Autoloaded'                     'Installiere alle als Autoloaded'
@@ -2356,20 +2356,20 @@
 'Directories in ContentsView (Right)'   'Ordner in DateiListe (Rechts)'
 'File Applications'                     'Datei-Editoren'
 'DiskUsage'                             'Plattenbelegung'
-'Open Multiple Applications'            'Öffnen mehrerer Editoren'
+'Open Multiple Applications'            'ffnen mehrerer Editoren'
 
 'Sort'                      'Sortieren'
 'By Filename'               'Nach Name'
 'By Extension'              'Nach Suffix'
 'By Type'                   'Nach Typ'
 'By Permissions'            'Nach Zugriffsrechten'
-'By Owner'                  'Nach Eigentümer'
+'By Owner'                  'Nach Eigentmer'
 'By Group'                  'Nach Gruppe'
-'By Size'                   'Nach Grösse'
+'By Size'                   'Nach Grsse'
 'By Date && Time'           'Nach Datum && Zeit'
 'By Group'                  'Nach Gruppe'
-; 'Ignore Case in Sort'       'Groß/Klein ignorieren'
-'Ignore Case in Sort'       'Groß/Klein beim Sortieren ignorieren'
+; 'Ignore Case in Sort'       'Gro/Klein ignorieren'
+'Ignore Case in Sort'       'Gro/Klein beim Sortieren ignorieren'
 'Directories before Files'  'Ordner vor Dateien'
 
 'Show Details'          'Details anzeigen'
@@ -2401,54 +2401,54 @@
 'Hide Filename Field'           'Datei Eingabefeld ausblenden'
 'Hide Filename & Filter Fields' 'Dateiname und Filter ausblenden'
 
-'Directory Up'          'Zu übergeordnetem Ordner gehen'
-'Directory up'          'Zu übergeordnetem Ordner gehen'
-'Directory Back'        'Zurück gehen'
-'Directory back'        'Zurück gehen'
-'Directory Forward'     'Vorwärts gehen'
-'Directory forward'     'Vorwärts gehen'
+'Directory Up'          'Zu bergeordnetem Ordner gehen'
+'Directory up'          'Zu bergeordnetem Ordner gehen'
+'Directory Back'        'Zurck gehen'
+'Directory back'        'Zurck gehen'
+'Directory Forward'     'Vorwrts gehen'
+'Directory forward'     'Vorwrts gehen'
 'File History'          'Historie besuchter Dateien'
 'File history'          'Historie besuchter Dateien'
 'Copy File'             'Datei kopieren'
 'Copy file'             'Datei kopieren'
 'Cut File'              'Datei auschneiden'
 'Cut file'              'Datei auschneiden'
-'Paste File'            'Datei einfügen'
-'Paste file'            'Datei einfügen'
-'Delete File'           'Datei löschen'
-'Delete file'           'Datei löschen'
+'Paste File'            'Datei einfgen'
+'Paste file'            'Datei einfgen'
+'Delete File'           'Datei lschen'
+'Delete file'           'Datei lschen'
 'Search a File'         'Datei suchen'
 'Search a file'         'Datei suchen'
 'Show/Hide File Details'   'Details ein-/ausblenden'
 'Show/hide file details'   'Details ein-/ausblenden'
-'Back to: %1'              'Zurück nach %1'
+'Back to: %1'              'Zurck nach %1'
 'Forward to: %1'           'Nochmal nach %1'
 
-'Cut the Selected File(s)'      'Ausgewählte Datei(en) auschneiden'
-'Cut the selected file(s)'      'Ausgewählte Datei(en) auschneiden'
-'Copy the Selected File(s)'     'Ausgewählte Datei(en) kopieren'
-'Copy the selected file(s)'     'Ausgewählte Datei(en) kopieren'
-'Delete the Selected File(s)'   'Ausgewählte Datei(en) entfernen'
-'Delete the selected file(s)'   'Ausgewählte Datei(en) entfernen'
-'Paste File(s)'                 'Datei(en) einfügen'
-'Paste file(s)'                 'Datei(en) einfügen'
-'Open a ChangeBrowser on File'  'ChangeBrowser auf Datei öffnen'
-'Open a ChangeBrowser on file'  'ChangeBrowser auf Datei öffnen'
-'Edit the Selected File'        'Ausgewählte Datei bearbeiten'
-'Edit the selected file'        'Ausgewählte Datei bearbeiten'
+'Cut the Selected File(s)'      'Ausgewhlte Datei(en) auschneiden'
+'Cut the selected file(s)'      'Ausgewhlte Datei(en) auschneiden'
+'Copy the Selected File(s)'     'Ausgewhlte Datei(en) kopieren'
+'Copy the selected file(s)'     'Ausgewhlte Datei(en) kopieren'
+'Delete the Selected File(s)'   'Ausgewhlte Datei(en) entfernen'
+'Delete the selected file(s)'   'Ausgewhlte Datei(en) entfernen'
+'Paste File(s)'                 'Datei(en) einfgen'
+'Paste file(s)'                 'Datei(en) einfgen'
+'Open a ChangeBrowser on File'  'ChangeBrowser auf Datei ffnen'
+'Open a ChangeBrowser on file'  'ChangeBrowser auf Datei ffnen'
+'Edit the Selected File'        'Ausgewhlte Datei bearbeiten'
+'Edit the selected file'        'Ausgewhlte Datei bearbeiten'
 'Goto Default Directory (ST/X Start Directory)'        'Gehe zum ST/X Startverzechnis'
 'Goto default directory (ST/X start directory)'        'Gehe zum ST/X Startverzechnis'
 'Save the editor''s contents into the file'            'Inhalt des Editors in Originaldatei sichern'
 'Save the editor''s contents into another file'        'Inhalt des Editors in einer anderen Datei sichern'
 'Save the complete state of ST/X into the current snapshot file ("%1")'   'Sichert den Zustand von ST/X in der aktuellen Snapshot-Datei ("%1")'
-'Open a FileBrowser to edit or load files and folders'  'Öffnet einen Dateibrowser zum Bearbeiten und Laden von Dateien und Ordnern'
-'Open a Workspace for evaluating Smalltalk expressions.\The first click opens the customizable MyWorkspace' 'Öffnet einen Workspace zum Ausführen von Smalltalk Ausdrücken.\Der erste Klick öffnet den persönlichen MyWorkspace'
-'Open a System Browser or revisit a class'             'Öffnet einen Systembrowser oder besucht eine Klasse erneut'
-'Open a Changes Browser or navigate to a recent change'  'Öffnet einen Changebrowser bzw. Navigation zu einer der letzten Änderungen'
-'Open a GUI Painter for graphical user interface construction' 'Öffnet einen GUI Painter zum graphischen und interaktiven Erstellen von Benutzeroberflächen'
-'Open a Menu Editor for building menus and toolbars' 'Öffnet einen Menu Editor zum Erstellen von Menüs und Toolbars'
-'Open a Bitmap Image Editor for editing small images for toolbars and buttons' 'Öffnet einen Bitmap Editor zum Erstellen und Bearbeiten von kleinen Bildern für Toolbars und Schaltflächen'
-'Open the SUnit test runner for executing unit tests'   'Öffnet den SUnit Testassistent zur Ausführung von Unit Tests'
+'Open a FileBrowser to edit or load files and folders'  'ffnet einen Dateibrowser zum Bearbeiten und Laden von Dateien und Ordnern'
+'Open a Workspace for evaluating Smalltalk expressions.\The first click opens the customizable MyWorkspace' 'ffnet einen Workspace zum Ausfhren von Smalltalk Ausdrcken.\Der erste Klick ffnet den persnlichen MyWorkspace'
+'Open a System Browser or revisit a class'             'ffnet einen Systembrowser oder besucht eine Klasse erneut'
+'Open a Changes Browser or navigate to a recent change'  'ffnet einen Changebrowser bzw. Navigation zu einer der letzten nderungen'
+'Open a GUI Painter for graphical user interface construction' 'ffnet einen GUI Painter zum graphischen und interaktiven Erstellen von Benutzeroberflchen'
+'Open a Menu Editor for building menus and toolbars' 'ffnet einen Menu Editor zum Erstellen von Mens und Toolbars'
+'Open a Bitmap Image Editor for editing small images for toolbars and buttons' 'ffnet einen Bitmap Editor zum Erstellen und Bearbeiten von kleinen Bildern fr Toolbars und Schaltflchen'
+'Open the SUnit test runner for executing unit tests'   'ffnet den SUnit Testassistent zur Ausfhrung von Unit Tests'
 'Show the ST/X online documentation'                    'Zeigt die ST/X Online Dokumentation'
 'Reload from the file'                                 'Datei erneut lesen'
 'Navigate the browser''s file list to the edited file' 'Bearbeitete Datei in der Dateiliste selektieren'
@@ -2456,9 +2456,9 @@
 'Show differences between file and editor versions'      'Unterschiede zwischen Datei- und Editorinhalt zeigen'
 'Close this tab'                                        'Diesen Tab schliessen'
 'Update (regenerate) the tag list'                      'Tagliste aktualisieren'
-'Sort by name (ignoring case and leading underscores)'  'Alphabetisch sortieren (gross/klein und führende Unterstriche werden ignoriert)'
+'Sort by name (ignoring case and leading underscores)'  'Alphabetisch sortieren (gross/klein und fhrende Unterstriche werden ignoriert)'
 'Sort by line number'                                   'Nach Zeilennummer sortieren'
-'Show only Functions (see Popup Menu for more Options)' 'Nur Funktionen anzeigen (siehe Popup-Menü für weitere Optionen)'
+'Show only Functions (see Popup Menu for more Options)' 'Nur Funktionen anzeigen (siehe Popup-Men fr weitere Optionen)'
 'Toggle Tag Filter'                                     'Filter auf Tagliste an- bzw. abschalten'
 'Pattern to Filter Tags'                                'Muster angezeigter Tags'
 
@@ -2472,25 +2472,25 @@
 '%1 files shown (out of %2)'    '%1 Dateien angezeigt (aus %2) '
 
 'Number of files shown (Total number of files in directory)'                'Anzahl gezeigter Dateien (Anzahl aller Dateien im Verzeichnis)'
-'The file''s encoding (Menu to change)'                                     'Kodierung der Datei (Menu zum Ändern)'
-'The file''s encoding (Right-Click to change)'                              'Kodierung der Datei  (Rechtsklick zum Ändern)'
+'The file''s encoding (Menu to change)'                                     'Kodierung der Datei (Menu zum ndern)'
+'The file''s encoding (Right-Click to change)'                              'Kodierung der Datei  (Rechtsklick zum ndern)'
 'Lock the file-encoding (do not try to guess from the file''s contents)'    'Kodierung festlegen (nicht aus dem Inhalt erkennen)'
 'locked'                                                                    'gesperrt'
-'The text-cursor''s column number'                                          'Spalte der Einfügemarke'
-'The text-cursor''s line number'                                            'Zeile der Einfügemarke'
-'The text-cursor''s line number. Double-Click to change'                    'Zeile der Einfügemarke. Doppelklick zum Positionieren'
-; 'The editing mode (insert vs. overwrite)'                                   'Editiermodus (Einfügen vs. Überschreiben)'
-'The editing mode (Insert vs. Overwrite)'                                   'Editiermodus (Einfügen vs. Überschreiben)'
-'The editing mode (Insert vs. Overwrite). Right-Click to change'            'Editiermodus (Einfügen vs. Überschreiben). Rechtsklick zum Ändern'
+'The text-cursor''s column number'                                          'Spalte der Einfgemarke'
+'The text-cursor''s line number'                                            'Zeile der Einfgemarke'
+'The text-cursor''s line number. Double-Click to change'                    'Zeile der Einfgemarke. Doppelklick zum Positionieren'
+; 'The editing mode (insert vs. overwrite)'                                   'Editiermodus (Einfgen vs. berschreiben)'
+'The editing mode (Insert vs. Overwrite)'                                   'Editiermodus (Einfgen vs. berschreiben)'
+'The editing mode (Insert vs. Overwrite). Right-Click to change'            'Editiermodus (Einfgen vs. berschreiben). Rechtsklick zum ndern'
 'Package and revision info (for class or method)'                           'Paket- und Versionsinfo (von Klasse oder Methode)'
 
 'Suffix'        'Dateityp'
 'Permissions'   'Zugriffsrechte'
 'Owner'         'Besitzer'
 'Group'         'Gruppe des Besitzers'
-'Size'          'Grösse'
-'Size (KByte)'  'Grösse (KByte)'
-'Size (Byte)'   'Grösse (Byte)'
+'Size'          'Grsse'
+'Size (KByte)'  'Grsse (KByte)'
+'Size (Byte)'   'Grsse (Byte)'
 'Date && Time'  'Datum && Zeit'
 'Date & Time'   'Datum & Zeit'
 
@@ -2504,23 +2504,23 @@
 'Not Containing'            'Ohne Inhalt'
 'Same Contents As'          'Gleicher Inhalt wie'
 'Recursive'                 'Rekursiv'
-'File Size'                 'Dateigrösse'
+'File Size'                 'Dateigrsse'
 'Use ''locate'' Cmd'        'Verwende ''locate'''
 'Use ''grep'' Cmd'          'Verwende ''grep'''
-'Clear Cache'               'Cache löschen'
+'Clear Cache'               'Cache lschen'
 'Stop other Task and Proceed'                           'Andere Suche beenden und fortfahren'
-'There is already another find-file task running'       'Es läuft bereits eine andere Dateisuche'
-
-
-'Really delete\\  %1%2 ?'     'Wirklich löschen \\  %1%2 ?'
+'There is already another find-file task running'       'Es luft bereits eine andere Dateisuche'
+
+
+'Really delete\\  %1%2 ?'     'Wirklich lschen \\  %1%2 ?'
 'Really erase\\  %1%2 ?'      'Wirklich ausradieren \\  %1%2 ?'
 
-'Really delete\\%1%2 ?'                         '%1%2\\wirklich löschen ?'
-'Really delete\\%1%2 ?\\(%3 files alltogether)' '%1%2\\wirklich löschen ?\\(insgesamt %3 Dateien)'
+'Really delete\\%1%2 ?'                         '%1%2\\wirklich lschen ?'
+'Really delete\\%1%2 ?\\(%3 files alltogether)' '%1%2\\wirklich lschen ?\\(insgesamt %3 Dateien)'
 'Really erase\\%1%2 ?'                          '%1%2\\wirklich ausradieren ?'
 'Really erase\\%1%2 ?\\(%3 files alltogether)'  '%1%2\\wirklich ausradieren ?\\(insgesamt %3 Dateien)'
-'Directory ''%1'' is not empty\remove anyway ?' 'Verzeichnis ''%1'' ist nicht leer\dennoch löschen ?'
-'Keep'                                          'Nicht Löschen'
+'Directory ''%1'' is not empty\remove anyway ?' 'Verzeichnis ''%1'' ist nicht leer\dennoch lschen ?'
+'Keep'                                          'Nicht Lschen'
 
 'Goto Home Directory'                           'Zum Heimatverzeichnis gehen'
 'Goto home directory'                           'Zum Heimatverzeichnis gehen'
@@ -2533,27 +2533,27 @@
 
 'Diff to Current'                               'Unterschiede zwischen Datei und Editor'
 'Close this Tab'                                'Diese Seite entfernen'
-'Open a Changebrowser on file'                  'Changebrowser auf Datei öffnen'
-'Select file details to be shown'               'Anzuzeigende Dateieigenschaften auswählen'
-'Open a FileBrowser on the selected directory'  'Dateibrowser auf ausgewähltes Verzeichnis öffnen'
+'Open a Changebrowser on file'                  'Changebrowser auf Datei ffnen'
+'Select file details to be shown'               'Anzuzeigende Dateieigenschaften auswhlen'
+'Open a FileBrowser on the selected directory'  'Dateibrowser auf ausgewhltes Verzeichnis ffnen'
 
 'unnamed'                           'unbenannt'
 '<unnamed>'                         '<unbenannt>'
 'Find in %1'                        'Suche in %1'
-'Open in New File Browser'          'In neuem Dateibrowser öffnen'
+'Open in New File Browser'          'In neuem Dateibrowser ffnen'
 'FileIn'                            'Laden (FileIn)'
-'Select in Browser'                 'Im Browser auswählen'
-'Autoselect in Browser'             'Im Browser automatisch auswählen'
-'Delete all Files'                  'Alle Dateien löschen'
-'Delete Selected Files'             'Ausgewählte Dateien löschen'
-'Remove Selected from Resultlist'   'Ausgewählte von der Resultatliste nehmen'
-'Clear Resultlist'                  'Resultatliste löschen'
+'Select in Browser'                 'Im Browser auswhlen'
+'Autoselect in Browser'             'Im Browser automatisch auswhlen'
+'Delete all Files'                  'Alle Dateien lschen'
+'Delete Selected Files'             'Ausgewhlte Dateien lschen'
+'Remove Selected from Resultlist'   'Ausgewhlte von der Resultatliste nehmen'
+'Clear Resultlist'                  'Resultatliste lschen'
 'Show Matched Files (After SameContents-Search)'    'Gefundene Originale zeigen (Nach Gleicher-Inhaltsuche)'
 'Show Matching Files (After SameContents-Search)'   'Gefundene Kopien zeigen (Nach Gleicher-Inhaltsuche)'
 
-'Copy or Move'                                'Kopieren oder übertragen'
-'Copy or move\\%1:\    %2\to:\    %3'         'Kopieren oder übertragen\\%1:\    %2\nach:\    %3 ?'
-'Copy or move\\    %1 objects\to:\    %2'     'Kopieren oder übertragen\\%1 Objekte\nach:\    %2 ?'
+'Copy or Move'                                'Kopieren oder bertragen'
+'Copy or move\\%1:\    %2\to:\    %3'         'Kopieren oder bertragen\\%1:\    %2\nach:\    %3 ?'
+'Copy or move\\    %1 objects\to:\    %2'     'Kopieren oder bertragen\\%1 Objekte\nach:\    %2 ?'
 'Copy As'                                     'Kopieren als'
 
 'Enter log message for checkIn of "%1"'       'Log-Eintrag zum CheckIn von "%1"'
@@ -2565,23 +2565,23 @@
 ; DebugView
 ;
 
-; HELP_ABORT      'Abbruch der Bearbeitung (Abort-Exception wird gemeldet).\Der betroffene Prozess fährt an einer `sicheren Stelle'''' mit der Ausführung fort.'
-; HELP_TERMINATE  'Prozess beenden.\Falls es sich um einen Fensterprozess handelt,\werden die zugehörigen Fenster geschlossen.'
+; HELP_ABORT      'Abbruch der Bearbeitung (Abort-Exception wird gemeldet).\Der betroffene Prozess fhrt an einer `sicheren Stelle'''' mit der Ausfhrung fort.'
+; HELP_TERMINATE  'Prozess beenden.\Falls es sich um einen Fensterprozess handelt,\werden die zugehrigen Fenster geschlossen.'
 ; HELP_STOP       'Prozess anhalten.'
 ; HELP_CONTINUE   'mit der Abarbeitung fortfahren.'
-; HELP_SEND       'bis zum nächsten Message-Send fortfahren.\Dann anhalten.'
-; HELP_NEXT       'fortfahren bis die aktuelle Zeile\im ausgewählten Kontext verlassen wird. Geht in Blöcke.'
-; HELP_NEXTOVER   'fortfahren bis die aktuelle Zeile\im ausgewählten Kontext verlassen wird. Überspringt Blöcke.'
-; HELP_NEXTOUT    'fortfahren bis die aktuelle Zeile\im ausgewählten Kontext verlassen wird. Springt aus dem aktiven Block.'
-; HELP_STEP       'fortfahren bis zum nächsten Message-Send im ausgewählten Kontext.'
-; HELP_RETURN     'Beendigung des ausgewählten Kontexts erzwingen.'
-; HELP_RESTART    'Neustart vom Anfang im ausgewählten Kontext.'
+; HELP_SEND       'bis zum nchsten Message-Send fortfahren.\Dann anhalten.'
+; HELP_NEXT       'fortfahren bis die aktuelle Zeile\im ausgewhlten Kontext verlassen wird. Geht in Blcke.'
+; HELP_NEXTOVER   'fortfahren bis die aktuelle Zeile\im ausgewhlten Kontext verlassen wird. berspringt Blcke.'
+; HELP_NEXTOUT    'fortfahren bis die aktuelle Zeile\im ausgewhlten Kontext verlassen wird. Springt aus dem aktiven Block.'
+; HELP_STEP       'fortfahren bis zum nchsten Message-Send im ausgewhlten Kontext.'
+; HELP_RETURN     'Beendigung des ausgewhlten Kontexts erzwingen.'
+; HELP_RESTART    'Neustart vom Anfang im ausgewhlten Kontext.'
 ; HELP_UPDATE     'Anzeige der Aufrufkette aktualisieren.'
 ; HELP_MONITOR    'Ein/Aus der automatischen Aktualisierung der Aufrufanzeige.'
 ; HELP_WALKBACK   'zeigt die Aufrufkette.\(wird auch "stack backtrace" oder "walkback" genannt)'
-; HELP_CODEVIEW   'zeigt den Quelltext der zum ausgewählten Kontext gehörenden Methode.'
-; HELP_REC_INSP   'Inspektor auf den Empfänger der ausgewählten Nachricht.'
-; HELP_CON_INSP   'Inspektor auf Variable im ausgewählten Kontext.'
+; HELP_CODEVIEW   'zeigt den Quelltext der zum ausgewhlten Kontext gehrenden Methode.'
+; HELP_REC_INSP   'Inspektor auf den Empfnger der ausgewhlten Nachricht.'
+; HELP_CON_INSP   'Inspektor auf Variable im ausgewhlten Kontext.'
 
 ; terminate                           'beenden'
 quickTerminate                      'Prozess beenden (ohne cleanup)'
@@ -2593,20 +2593,20 @@
 Step                                'Schritt'
 'Step out'                          'Einzelschritt bis Kontextende'
 send                                'Send'
-skip                                'überspringen'
+skip                                'berspringen'
 'Next (Line-Step)'                  'Zeilenschritt'
-'Change Priority'                   'Priorität ändern'
+'Change Priority'                   'Prioritt ndern'
 'Context'                           'Kontext (Stackframe)'
 resume                              'verlassen'
 restart                             'wiederholen'
-'Return'                            'Zurückkehren'
+'Return'                            'Zurckkehren'
 Breakpoints                         'Haltepunkte'
 'Manage Breakpoints'                'Haltepunkte verwalten'
-'Remember Callchain && Highlight on Next Entry'             'Aufrufkette merken und beim nächsten mal hervorheben'
+'Remember Callchain && Highlight on Next Entry'             'Aufrufkette merken und beim nchsten mal hervorheben'
 'Clear Remembered Callchain'                                'Aufrufkette vergessen'
 'Abort Testplan'                    'Testplan abbrechen'
 'Debugger''s Documentation'         'Dokumentation zun Debugger'
-'About DebugView'                   'Ãœber den Debugger'
+'About DebugView'                   'ber den Debugger'
 implementors                        'Implementierungen'
 'implementors of'                   'Implementierungen von'
 senders                             'Sender'
@@ -2614,11 +2614,11 @@
 browse                              'Browser'
 ; 'browse class'                      'Klassenbrowser'
 'browse (implementing class)'       'Browser (implementierende Klasse)'
-'browse (receivers class)'          'Browser (Empfängerklasse)'
+'browse (receivers class)'          'Browser (Empfngerklasse)'
 'browse class hierarchy'            'Hierarchiebrowser'
-'browse full class protocol'        'Browser für gesamtes Protokoll'
+'browse full class protocol'        'Browser fr gesamtes Protokoll'
 'remove all trace & breakpoints'    'alle Trace- und Haltepunkte entfernen'
-'exit smalltalk (no confirmation)'  'Smalltalk beenden (ohne Bestätigung)'
+'exit smalltalk (no confirmation)'  'Smalltalk beenden (ohne Besttigung)'
 'show more'                         'mehr anzeigen'
 'show verbose backtrace'            'Gesamte Aufrufkette anzeigen'
 'inspect context'                   'Kontext inspizieren'
@@ -2644,12 +2644,12 @@
 
 'Show More WalkBack'            'Mehr von der Aufrufkette zeigen'
 'Show Full WalkBack'            'Gesamte Aufrufkette zeigen'
-'Show Verbose WalkBack'         'Aufrufkette ausführlich zeigen'
+'Show Verbose WalkBack'         'Aufrufkette ausfhrlich zeigen'
 'Show Dense WalkBack'           'Aufrufkette komprimiert zeigen'
 'Show Support Code (Implementation of Enumerations, Exceptions etc.)'           'Helfercode anzeigen (Implementierung von Enumerations, Exceptions etc.)'
 'Hide Support Code (Implementation of Enumerations, Exceptions etc.)'           'Helfercode nicht zeigen (Implementierung von Enumerations, Exceptions etc.)'
-'Close Debugger and Abort'      'Debugger schließen und abbrechen'
-'Close all Debuggers'           'Alle Debugger schließen'
+'Close Debugger and Abort'      'Debugger schlieen und abbrechen'
+'Close all Debuggers'           'Alle Debugger schlieen'
 'Raise Debugger when Entering'  'Debugger bei Bedarf nach vorne bringen'
 'Define Missing Method'         'Fehlende Methode definieren'
 
@@ -2661,11 +2661,11 @@
 'Ignore this Halt/BreakPoint'               'Diesen Halt/Haltepunkt ignorieren'
 'Ignore all Halts/BreakPoints'                  'Alle Halts/Haltepunkte ignorieren'
 'Ignore all BreakPoints with this Parameter'    'Alle Haltepunkte mit diesem Parameter ignorieren'
-'For Some Time'                                 'Für einen Zeitraum'
-'For the Next N Times'                          'Die nächsten N Aufrufe'
-'Until Shift-Key is Pressed'                    'Bis Shift-Taste gedrückt'
-'Forever (Until Ignoring is Stopped)'           'Immer (Bis Ignorieren zurückgenommen wird)'
-'Forever (Reenable in BreakPoint-Browser)'      'Immer (Im BreakPoint-Browser zurücknehmen)'
+'For Some Time'                                 'Fr einen Zeitraum'
+'For the Next N Times'                          'Die nchsten N Aufrufe'
+'Until Shift-Key is Pressed'                    'Bis Shift-Taste gedrckt'
+'Forever (Until Ignoring is Stopped)'           'Immer (Bis Ignorieren zurckgenommen wird)'
+'Forever (Reenable in BreakPoint-Browser)'      'Immer (Im BreakPoint-Browser zurcknehmen)'
 'Stop Ignoring'                             'Nicht ignorieren'
 'Stop Ignoring Halts/Breakpoints'           'Halts/Haltepunkte nicht mehr ignorieren'
 'Halt when Text is Sent to Transcript'      'Halt wenn Text an Transcript geschickt wird'
@@ -2674,14 +2674,14 @@
 'Browse Senders'                    'Browser auf Sender'
 'Browse Implementors'               'Browser auf Implementierungen'
 'Browse Implementing Class'         'Browser auf implementierende Klasse'
-'Browse Receivers Class'            'Browser auf Empfängerklasse'
-'Browse Receivers Class Hierarchy'  'Browser auf Hierarchie der Empfängerklasse'
-'Browse Receivers Full Protocol'    'Browser auf Gesamtprotokoll des Empfängers'
+'Browse Receivers Class'            'Browser auf Empfngerklasse'
+'Browse Receivers Class Hierarchy'  'Browser auf Hierarchie der Empfngerklasse'
+'Browse Receivers Full Protocol'    'Browser auf Gesamtprotokoll des Empfngers'
 'Copy WalkBack Text'                'Text der Aufrufkette ins Clipboard kopieren'
-'Bookmark Method in SystemBrowser'  'Lesezeichen für Methode im Browser anlegen'
-'Exit Smalltalk (No Confirmation)'  'Smalltalk beenden (ohne Bestätigung)'
+'Bookmark Method in SystemBrowser'  'Lesezeichen fr Methode im Browser anlegen'
+'Exit Smalltalk (No Confirmation)'  'Smalltalk beenden (ohne Besttigung)'
 'Inspect Context'                   'Kontext inspizieren'
-'Enable Coverage Analysis in all Processes' 'Ãœberdeckungsanalyse in allen Prozessen einschalten'
+'Enable Coverage Analysis in all Processes' 'berdeckungsanalyse in allen Prozessen einschalten'
 'Report by Mail'                    'Fehlerbericht via eMail'
 'Report a Bug via eMail'            'Fehlerbericht via eMail schicken'
 
@@ -2695,7 +2695,7 @@
 'Distributor'           'Lieferant'
 'Configuration'         'Konfiguration'
 'Release ID'            'Versionskennung'
-'Running on'            'Ausgeführt auf'
+'Running on'            'Ausgefhrt auf'
 
 ;--------------------------------------------------------------------------------------------
 ;
@@ -2726,8 +2726,8 @@
 'Chinese (traditional)'         'Chinesisch (traditional)'
 'Croatian'          'Kroatisch'
 'Czech'             'Tschechisch'
-'Danish'            'Dänisch'
-'Dutch'             'Niederländisch'
+'Danish'            'Dnisch'
+'Dutch'             'Niederlndisch'
 'English (US)'      'Englisch (US)'
 'English (UK)'      'Englisch (UK)'
 ; 'Esperanto'         'Esperanto'
@@ -2735,7 +2735,7 @@
 'Greek'             'Griechisch'
 ; 'Hindi'             'Hindi'
 'Finnish'           'Finnisch'
-'French'            'Französisch'
+'French'            'Franzsisch'
 'Italian'           'Italienisch'
 'Japanese'          'Japanisch'
 'Korean'            'Koreanisch'
@@ -2751,52 +2751,52 @@
 'Slovenian'         'Slowenisch'
 'Swahili'           'Suaheli'
 'Thai'              'Thai'
-'Turkish'           'Türkisch'
+'Turkish'           'Trkisch'
 'Ukrainian'         'Ukrainisch'
 
-LANG_MSG        'Sprache wählen.\\Dazu müssen die resource-Dateien die entsprechenden\Texte enthalten. In der aktuellen Version ist dies\möglicherweise nicht bei allen Sprachen/Texten der Fall.\Außerdem sollte der Zeichensatz entsprechend gewählt werden,\damit sprachspezifische Zeichen dargestellt werden können.\\Die Änderung wirkt NICHT auf bereits geöffnete Fenster.\'
-STYLE_MSG       'Aussehen der Fenster wählen.\\Einige der nicht-Standard-Einstellungen sind experimentell, oder als Beispiel\bzw. Demonstration mitgeliefert und werden daher nicht unterstützt.\Viele entsprechen nicht den üblichen ergonomischen Anforderungen.\Bitte lesen Sie dazu auch die Dokumentation.\\Die Änderung wirkt nicht auf bereits geöffnete Fenster,\Sie sollten daher nach dem Umschalten die anderen\ST/X Fenster schließen und neu öffnen.\'
-KEY_MSG         'Zur Zeit kann dieser Dialog die Tastenfunktionen\und Makros nur anzeigen.\Zukünftige Versionen werden auch Änderungen erlauben.\\Bis dahin sollten Sie in der Dokumentation\das Kapitel über Tastenfunktionen und Makros nachschlagen.\'
-KEY_MSG2        'Zur Zeit kann dieser Dialog die Tastenfunktionen und Makros nur anzeigen.\Zukünftige Versionen werden auch Änderungen erlauben.\Bis dahin sollten Sie in der Dokumentation\das Kapitel über Tastenfunktionen und Makros nachschlagen.\'
+LANG_MSG        'Sprache whlen.\\Dazu mssen die resource-Dateien die entsprechenden\Texte enthalten. In der aktuellen Version ist dies\mglicherweise nicht bei allen Sprachen/Texten der Fall.\Auerdem sollte der Zeichensatz entsprechend gewhlt werden,\damit sprachspezifische Zeichen dargestellt werden knnen.\\Die nderung wirkt NICHT auf bereits geffnete Fenster.\'
+STYLE_MSG       'Aussehen der Fenster whlen.\\Einige der nicht-Standard-Einstellungen sind experimentell, oder als Beispiel\bzw. Demonstration mitgeliefert und werden daher nicht untersttzt.\Viele entsprechen nicht den blichen ergonomischen Anforderungen.\Bitte lesen Sie dazu auch die Dokumentation.\\Die nderung wirkt nicht auf bereits geffnete Fenster,\Sie sollten daher nach dem Umschalten die anderen\ST/X Fenster schlieen und neu ffnen.\'
+KEY_MSG         'Zur Zeit kann dieser Dialog die Tastenfunktionen\und Makros nur anzeigen.\Zuknftige Versionen werden auch nderungen erlauben.\\Bis dahin sollten Sie in der Dokumentation\das Kapitel ber Tastenfunktionen und Makros nachschlagen.\'
+KEY_MSG2        'Zur Zeit kann dieser Dialog die Tastenfunktionen und Makros nur anzeigen.\Zuknftige Versionen werden auch nderungen erlauben.\Bis dahin sollten Sie in der Dokumentation\das Kapitel ber Tastenfunktionen und Makros nachschlagen.\'
 
 ; TRANSCRIPT_HELP 'dies ist das Transcript-Fenster.\Benutzermeldungen werden auf ihm dargestellt.'
 ; INFOVIEW_HELP   'hier wird der Name des aktuellen Projekts\und das fileOut-Verzeichnis angezeigt.'
-SBROWSER_BUTTON_HELP   'öffnet einen SystemBrowser'
-FBROWSER_BUTTON_HELP   'öffnet einen FileBrowser'
-CBROWSER_BUTTON_HELP   'öffnet einen Browser auf Änderungen'
-; 'open a\SystemBrowser'  'öffnet einen\SystemBrowser'
-; 'open a\FileBrowser'    'öffnet einen\DateiBrowser'
+SBROWSER_BUTTON_HELP   'ffnet einen SystemBrowser'
+FBROWSER_BUTTON_HELP   'ffnet einen FileBrowser'
+CBROWSER_BUTTON_HELP   'ffnet einen Browser auf nderungen'
+; 'open a\SystemBrowser'  'ffnet einen\SystemBrowser'
+; 'open a\FileBrowser'    'ffnet einen\DateiBrowser'
 
 'Project: ''%1'' Package: ''%2'''                   'Projekt: ''%1'' Paket: ''%2'''
 'Project: ''%1'' Package: ''%2'' NameSpace: %4'     'Projekt: ''%1'' Paket: ''%2'' NameSpace: %4'
 
-'filename for image'                               'Dateiname für Image'
-'save state before exiting ?\\filename for image:' 'Zustand in Image sichern ?\\Dateiname für Image:'
-
-'change browser'         'Browser für Änderungen'
-
-'Remote Image Browser'   'Browser für entferntes Smalltalk'
+'filename for image'                               'Dateiname fr Image'
+'save state before exiting ?\\filename for image:' 'Zustand in Image sichern ?\\Dateiname fr Image:'
+
+'change browser'         'Browser fr nderungen'
+
+'Remote Image Browser'   'Browser fr entferntes Smalltalk'
 ; 'GUI Painter'            'GUI Painter'
 ; 'Terminal'               'Terminal'
 'Goodies'                'Extras'
 
 'event'                 'Eventmonitor'
 
-'find & raise'      'auswählen & nach vorne bringen'
-'find & destroy'    'auswählen & schließen'
-'select a view to raise deiconified:'  'Wählen Sie das Fenster,\welches sichtbar gemacht werden soll:\'
+'find & raise'      'auswhlen & nach vorne bringen'
+'find & destroy'    'auswhlen & schlieen'
+'select a view to raise deiconified:'  'Whlen Sie das Fenster,\welches sichtbar gemacht werden soll:\'
 
 'source & debugger'      'Quellcode & Debugger'
 
-'Compiler'                          'Ãœbersetzung'
-'Compiler settings'                 'Einstellungen des Ãœbersetzers'
+'Compiler'                          'bersetzung'
+'Compiler settings'                 'Einstellungen des bersetzers'
 
 'CVS repository:'                   'CVS Quellcode Repository:'
 'repository:'                       'Quellcode Repository:'
 'configure'                         'Einstellen'
 'setup'                             'Einstellen'
 
-'Processor & Scheduler'                             'Prozessausführung'
+'Processor & Scheduler'                             'Prozessausfhrung'
 
 ; 'show keyboard mappings' 'Tastenfunktionen anzeigen'
 'Keyboard Mappings'                 'Tastaturbelegung'
@@ -2804,20 +2804,20 @@
 
 'Syntax Colors'                     'Syntaxfarben'
 'Emphasis'                          'Hervorhebung'
-'Reset To'                          'Rücksetzen auf'
+'Reset To'                          'Rcksetzen auf'
 'Sample Output'                     'Beispielausgabe'
-'Syntax Coloring'                   'Einfärbung'
-'Immediate Selector Check'          'Selektoren bei der Eingabe prüfen'
+'Syntax Coloring'                   'Einfrbung'
+'Immediate Selector Check'          'Selektoren bei der Eingabe prfen'
 'Argument Identifier Color'         'Farbe von Argumentnamen'
-'Boolean Constant Color'            'Bezeichner für Boolsche Konstanten'
+'Boolean Constant Color'            'Bezeichner fr Boolsche Konstanten'
 'Bracket Color'                     'Eckige Klammern'
 'Constant Color'                    'Sonstige Konstanten'
 'Comment Color'                     'Kommentare'
-'Global Identifier Color'           'Bezeichner für Globale Variable'
+'Global Identifier Color'           'Bezeichner fr Globale Variable'
 'Here Color'                        '''here'' Bezeichner'
 'Identifier Color'                  'Sonstige Bezeichner'
-'InstVar Identifier Color'          'Bezeichner für Instanzvariable'
-'Local Identifier Color'            'Bezeichner für Lokale Variable'
+'InstVar Identifier Color'          'Bezeichner fr Instanzvariable'
+'Local Identifier Color'            'Bezeichner fr Lokale Variable'
 'Selector Color'                    'Selektoren'
 'Self Color'                        '''self'' Bezeichner'
 'String Color'                      'String Konstanten'
@@ -2833,23 +2833,23 @@
 
 'all'                   'alle'
 'Labels'                'Labels'
-'Buttons'               'Schaltflächen'
+'Buttons'               'Schaltflchen'
 'Lists'                 'Listen'
-'Menus'                 'Menüs'
+'Menus'                 'Mens'
 'Input Fields'          'Eingabefelder'
 'edit text'             'Text'
-'Font for %1'           'Zeichensatz für %1'
+'Font for %1'           'Zeichensatz fr %1'
 'Change'                'Auswahl'
 'Defaults'              'Voreinstellung'
 
 'Memory manager settings' 'Einstellung der Speicherverwaltung'
 
 'unload'                'entfernen'
-'close'                 'schließen'
-'dismiss'               'schließen'
-
-'menu font is not %1-encoded.\\Change it ?'  'Der Menu-Zeichensatz ist nicht %1-kodiert.\\Zeichensatz auswählen ?'
-'your display does not offer any %1-encoded font.\\Change the language anyway ?\ (texts will probably be unreadable then)' 'Ihr System stellt keinen %1-kodierten Zeichensatz zur Verfügung.\\Dennoch ändern ?\(Texte werden dann vermutlich nicht lesbar sein)'
+'close'                 'schlieen'
+'dismiss'               'schlieen'
+
+'menu font is not %1-encoded.\\Change it ?'  'Der Menu-Zeichensatz ist nicht %1-kodiert.\\Zeichensatz auswhlen ?'
+'your display does not offer any %1-encoded font.\\Change the language anyway ?\ (texts will probably be unreadable then)' 'Ihr System stellt keinen %1-kodierten Zeichensatz zur Verfgung.\\Dennoch ndern ?\(Texte werden dann vermutlich nicht lesbar sein)'
 
 'sorry, the %1 class is not available.'  'Pardon, die %1 Klasse ist nicht geladen'
 
@@ -2858,15 +2858,15 @@
 'Project: ''%1''  fileOut to: ''%3''  package: ''%2'''    'Projekt: ''%1''  fileOut in: ''%3''  Paket: ''%2'''
 'Project: ''%1'' fileOut to: ''%3'' package: ''%2'''    'Projekt: ''%1''  FileOut: ''%3''  Paket: ''%2'''
 
-'Close %1 only or Exit Smalltalk (Close all) ?'    'Nur %1 schließen oder Smalltalk beenden (alle schließen) ?'
+'Close %1 only or Exit Smalltalk (Close all) ?'    'Nur %1 schlieen oder Smalltalk beenden (alle schlieen) ?'
 
 '&File'                 '&Datei'
 'Windows'               'Fenster'
 'Demos'                 'Beispiele'
 '&Help'                 '&Hilfe'
 
-'About Smalltalk/X'          'Ãœber Smalltalk/X'
-'About This Application'     'Ãœber diese Anwendung'
+'About Smalltalk/X'          'ber Smalltalk/X'
+'About This Application'     'ber diese Anwendung'
 'Licence Conditions'            'Lizenzbedingungen'
 LICENCEFILE                     'german/LICENCE_STX.html'
 
@@ -2877,7 +2877,7 @@
 
 'System Browser on Class'       'Systembrowser auf Klasse'
 ; 'System Browser In Class'       'Systembrowser in Klasse'
-'Recent Changes'                'Letzte Änderungen'
+'Recent Changes'                'Letzte nderungen'
 'Special Browsers'              'Spezielle Browser'
 'Snapshot Image Browser'     'Imagedatei-Browser'
 ; 'Remote Smalltalk Browser'
@@ -2927,14 +2927,14 @@
 'Remove all Workspace Variables'   'Alle Workspace Variable entfernen'
 
 ; Workspace                       'Workspace'
-'Changes Browser'               'Browser für Änderungen'
-'Change File Browser'           'Browser für Änderungen'
+'Changes Browser'               'Browser fr nderungen'
+'Change File Browser'           'Browser fr nderungen'
 'Old Launcher'                  'Alter Launcher'
-'Old Changes Browser'           'Alter Browser für Änderungen'
-'New Changes Browser'           'Neuer Browser für Änderungen'
+'Old Changes Browser'           'Alter Browser fr nderungen'
+'New Changes Browser'           'Neuer Browser fr nderungen'
 'New Launcher'                  'Neuer Launcher'
-'Reopen Launcher'               'Launcher neu öffnen'
-'Recently Opened'               'Vor kurzem geöffnet'
+'Reopen Launcher'               'Launcher neu ffnen'
+'Recently Opened'               'Vor kurzem geffnet'
 
 'Monitors'                      'Monitore'
 'Semaphores'                    'Semaphormonitor'
@@ -2951,13 +2951,13 @@
 'Window Tree'                             'Fensterhierarchie'
 'Window Tree (All on All Screens)'        'Fensterhierarchie (alle Bildschirme)'
 'Inspect view'                          'Fenster inspizieren'
-'Destroy view'                          'Fenster schließen'
-'Select And Inspect View'               'Auswählen und inspizieren'
-'Select and Inspect'                    'Auswählen und inspizieren'
-'Select And Destroy View'               'Auswählen und schließen'
-'Select and Destroy'                    'Auswählen und schließen'
-'Select and Migrate To'                 'Auswählen und migrieren nach'
-'Select and Browse'                     'Auswählen und browsen'
+'Destroy view'                          'Fenster schlieen'
+'Select And Inspect View'               'Auswhlen und inspizieren'
+'Select and Inspect'                    'Auswhlen und inspizieren'
+'Select And Destroy View'               'Auswhlen und schlieen'
+'Select and Destroy'                    'Auswhlen und schlieen'
+'Select and Migrate To'                 'Auswhlen und migrieren nach'
+'Select and Browse'                     'Auswhlen und browsen'
 'Iconify All'                           'Alle Fenster minimieren'
 'Iconify all'                           'Alle Fenster minimieren'
 'De-iconify All'                        'Alle Fenster zeigen'
@@ -2965,12 +2965,12 @@
 'Redraw All'                            'Alle Fenster neu zeichnen'
 'Migrate All To'                     'Alle Fenster migrieren nach'
 
-'Find and Raise'                     'Auswählen und nach vorne bringen'
-'Find and Destroy'                   'Auswählen und schließen'
-'Find and Migrate To'                'Auswählen und migrieren nach'
-'Find and Migrate Back'              'Auswählen und zurückholen'
+'Find and Raise'                     'Auswhlen und nach vorne bringen'
+'Find and Destroy'                   'Auswhlen und schlieen'
+'Find and Migrate To'                'Auswhlen und migrieren nach'
+'Find and Migrate Back'              'Auswhlen und zurckholen'
 'View selection'                        'Fensterauswahl'
-'Select view to raise deiconified:'     'Wählen Sie das Fenster,\welches sichtbar gemacht werden soll:\'
+'Select view to raise deiconified:'     'Whlen Sie das Fenster,\welches sichtbar gemacht werden soll:\'
 
 'Hardcopy'                      'Bildschirmabzug'
 ; 'Screen'                        'Gesamter Bildschirm'
@@ -2985,7 +2985,7 @@
 'Grab Screen'                   'Bitmap-Abzug vom Schirm'
 'Grab Screen Area'              'Bitmap-Abzug von Schirmbereich'
 'Grab from Screen Area'             'Bitmap-Abzug von Schirmbereich'
-'Grab Screen Area with Delay'       'Bitmap-Abzug von Schirmbereich mit Verzögerung'
+'Grab Screen Area with Delay'       'Bitmap-Abzug von Schirmbereich mit Verzgerung'
 'Grab again from same Screen Area'  'Bitmap-Abzug vom gleichen Schirmbereich'
 'Grab'                          'Bildschirm auslesen'
 
@@ -2996,16 +2996,16 @@
 'Reload Resources'              'Sprachressourcen neu laden'
 
 'New Project'                   'Neues Projekt anlegen'
-'Select Project'                'Projekt auswählen'
-'select a project'              'Projekt auswählen'
-
-'Language selection'     'Sprache wählen'
+'Select Project'                'Projekt auswhlen'
+'select a project'              'Projekt auswhlen'
+
+'Language selection'     'Sprache whlen'
 'Language'               'Sprache'
-'Style selection'        'Aussehen der Fenster wählen'
+'Style selection'        'Aussehen der Fenster whlen'
 'View Style'             'Fensterstil'
 'ViewStyle'              'Fensterstil'
-'Compilation'            'Ãœbersetzung'
-'Fonts'                  'Zeichensätze'
+'Compilation'            'bersetzung'
+'Fonts'                  'Zeichenstze'
 'Mouse Settings'         'Maus'
 'Object Memory'          'Speicher'
 'Source and Debugger'    'Quellcode und Debugger'
@@ -3025,28 +3025,28 @@
 
 'Mail Tool'             'Post lesen (mail)'
 'News Tool'             'Zeitung lesen (news)'
-'FTP Tool'              'FTP Ãœbertragung'
+'FTP Tool'              'FTP bertragung'
 'Clock'                 'Uhr'
 'Digital Clock'         'Digitaluhr'
 'Round Clock'           'Runde Uhr'
 'Calendar'              'Kalender'
 'Calculator'            'Rechner'
 'Remote Launcher'    'Launcher auf entferntem Rechner'
-'Remote Launcher on which display:'    'Displayname für entfernten Launcher:'
+'Remote Launcher on which display:'    'Displayname fr entfernten Launcher:'
 
 'Games'                     'Spiele'
-; 'Tic Tac Toe'               'Tic Tac Toe (Käsekästchen)'
+; 'Tic Tac Toe'               'Tic Tac Toe (Ksekstchen)'
 'Tic Tac Toe (2 players)'   'Tic Tac Toe - (2 Spieler)'
 'PingPong - (2 players)'    'PingPong - (2 Spieler)'
 
 'Geometric Designs'     'Geometrische Figuren'
 
 'Simple Animations'     'Einfache Animationen'
-'Walking Man'           'Spaziergänger'
+'Walking Man'           'Spaziergnger'
 'Globe Demo'            'Globus'
 'Pen Demo'              'Pen Figurenbeispiele'
 'Commander Demo'        'Commander Figurenbeispiele'
-'Towers of Hanoi (Prolog)' 'Türme von Hanoi (Prolog)'
+'Towers of Hanoi (Prolog)' 'Trme von Hanoi (Prolog)'
 
 'Fractal Plants Demo'        'Fraktale Pflanzen'
 'Fractal Patterns Demo'      'Fraktale Muster'
@@ -3056,18 +3056,18 @@
 '3D Graphics'           '3D Grafik'
 '3D GL Graphics'        '3D GL Grafik'
 
-'Plane'                 'Fläche'
+'Plane'                 'Flche'
 'Tetra'                 'Tetraeder'
-'Cube (wireframe)'      'Würfel (Drahtmodell)'
-'Cube (solid)'          'Würfel (Seitenflächen)'
-'Cube (light)'          'Würfel (mit Lichtquelle)'
-'Cube (light & texture)' 'Würfel (Lichtquelle & Textur)'
+'Cube (wireframe)'      'Wrfel (Drahtmodell)'
+'Cube (solid)'          'Wrfel (Seitenflchen)'
+'Cube (light)'          'Wrfel (mit Lichtquelle)'
+'Cube (light & texture)' 'Wrfel (Lichtquelle & Textur)'
 'Doughnut (wireframe)'   'Torus (Drahtmodell)'
 'Sphere (wireframe)'    'Kugel (Drahtmodell)'
 'Sphere (light)'        'Kugel (mit Lichtquelle)'
 'Planet'                'Sonne & Erde'
 'Teapot'                'Teekanne'
-'Rubics cube'           'Magischer Würfel'
+'Rubics cube'           'Magischer Wrfel'
 'Logo'                  'ST/X Logo'
 'X/Y graph'             'Funktion von x und y'
 'Colored Octahedron'    'Achtkant mit Farbverlauf'
@@ -3083,7 +3083,7 @@
 'active help \c'            'aktive Hilfe \c'
 'ST/X Documentation'        'ST/X Dokumentation'
 'ST/X Online Documentation' 'ST/X Dokumentation'
-'Smalltalk Tutorial for Beginners'        'Smalltalk Tutorial für Einsteiger'
+'Smalltalk Tutorial for Beginners'        'Smalltalk Tutorial fr Einsteiger'
 'Class Documentation'       'Klassendokumentation'
 'Browser Documentation'     'Dokumentation zum Browser'
 'Tool Documentation'        'Tooldokumentation'
@@ -3102,7 +3102,7 @@
 'Web-Documents'             'Webdokumente'
 'Credits'                   'Danksagungen'
 
-'close Launcher ?'      'Launcher schließen ?'
+'close Launcher ?'      'Launcher schlieen ?'
 
 'Module dialog'         'Modul Dialog'
 'show:'                 'zeigen:'
@@ -3126,10 +3126,10 @@
 
 'Failed to save snapshot image (disk full or not writable)' 'Imagedatei konnten nicht geschrieben werden (Platte voll oder fehlende Berechtigung)'
 
-'Font Settings'         'Zeichensätze auswählen'
+'Font Settings'         'Zeichenstze auswhlen'
 'Edited Text'           'Text'
 
-'change '               'ändern '
+'change '               'ndern '
 
 ;
 ; active help:
@@ -3147,11 +3147,11 @@
 'Help functions.'        'Hilfe'
 
 'Change the national language.'                       'Sprache einstellen.'
-'Change the current view style.'                      'Aussehen der Fenster ändern.'
-'Change of the font defaults.'                        'Zeichensätze einstellen.'
+'Change the current view style.'                      'Aussehen der Fenster ndern.'
+'Change of the font defaults.'                        'Zeichenstze einstellen.'
 'Change the settings for info- / error-messagess.'    'Systemmeldungen an/abschalten'
 
-'Select schema:'        'Schema auswählen:'
+'Select schema:'        'Schema auswhlen:'
 
 'New FileBrowser'       'Dateibrowser'
 'New SystemBrowser'     'Klassenbrowser'
@@ -3165,7 +3165,7 @@
 
 'Utilities'             'Hilfsmittel'
 'View inspect'          'Fenster inspizieren'
-'View destroy'          'Fenster schließen'
+'View destroy'          'Fenster schlieen'
 'Process Monitor'       'Prozessmonitor'
 'Memory Monitor'        'Speichermonitor'
 'full screen hardcopy'  'Bildschirmabzug'
@@ -3190,9 +3190,9 @@
 'snapshot'              'Zustand sichern'
 'snapshot & exit'       'Zustand sichern & beenden'
 
-'About'                 'über Smalltalk/X'
-'Overview'              'Ãœbersicht'
-'Getting started'       'Einführung'
+'About'                 'ber Smalltalk/X'
+'Overview'              'bersicht'
+'Getting started'       'Einfhrung'
 'Customizing'           'Einstellungen'
 'programming'           'Programmierung'
 'other topics'          'weitere Texte'
@@ -3204,19 +3204,19 @@
 'stc manual page'       'Manualseite zu stc'
 'smalltalk manual page' 'Manualseite zu Smalltalk'
 
-'useful selectors'      'nützliche Selektoren'
+'useful selectors'      'ntzliche Selektoren'
 'breakpoints & tracing' 'Haltepunkte & Ablauf mitverfolgen'
 'Processes'             'Prozesse'
 'timers & delays'       'Zeitgeber und Pausen'
 'exceptions & signals'  'Ausnahmen & Signale'
 'GL 3D graphics'        'GL 3D Graphik'
-'views - quick intro'   'Views - kurze Einführung'
+'views - quick intro'   'Views - kurze Einfhrung'
 
 ; Settings Dialog
 
 'Settings Dialog'                                       'Einstellungen'
 
-'Apply changes made in %1 ?'                            'Geänderte Einstellungen aus %1 übernehmen ?'
+'Apply changes made in %1 ?'                            'Genderte Einstellungen aus %1 bernehmen ?'
 
 'Use the New System Browser'                            'Verwende den neuen Systembrowser'
 'Use the New File Browser'                              'Verwende den neuen Dateibrowser'
@@ -3226,40 +3226,40 @@
 'Use the New Process Monitor'                           'Verwende den neuen Prozessmonitor'
 'Use the New TestRunner2'                               'Verwende den neuen TestRunner2'
 'Use the new Changes Browser'                           'Verwende den neuen ChangesBrowser'
-'Use the New Changes Browser (not yet recommended)'     'Verwende den neuen Änderungsbrowser (noch nicht empfohlen)'
-'Use the New Changes Browser for Changefiles (not yet recommended)' 'Verwende den neuen Änderungsbrowser für Dateien mit Changes (noch nicht empfohlen)'
-'Use the New ChangeSet Browser for Internal ChangeSets'             'Verwende den neuen Änderungsbrowser für interne ChangeSets'
+'Use the New Changes Browser (not yet recommended)'     'Verwende den neuen nderungsbrowser (noch nicht empfohlen)'
+'Use the New Changes Browser for Changefiles (not yet recommended)' 'Verwende den neuen nderungsbrowser fr Dateien mit Changes (noch nicht empfohlen)'
+'Use the New ChangeSet Browser for Internal ChangeSets'             'Verwende den neuen nderungsbrowser fr interne ChangeSets'
 'Use the New Code Editor 2 (experimental)'              'Verwende den neuen Code Editor 2 (experimentell)'
 'Use Hierarchical Inspector (not yet recommended)'      'Verwende den hierarchischen Inspektor (noch nicht empfohlen)'
 'Use Hierarchical Inspector'                            'Hierarchischen Inspektor verwenden'
 'Use the Smalltalk Document Viewer'                     'Verwende das eingebaute Tool zur Anzeige von Hilfe-Dokumenten'
 'Eclipse Style Menus (where implemented)'               'Menus im Stil von Eclipse (soweit implementiert)'
 
-'Transcript''s Buffer Size:'                            'Größe des Zeilenpuffers im Transcript:'
+'Transcript''s Buffer Size:'                            'Gre des Zeilenpuffers im Transcript:'
 'Show "Tip Of The Day" at Startup'                      '"Tipp des Tages" beim Start zeigen'
 'Autoraise Transcript'                                  'Transcript automatisch nach vorne bringen'
 'Syntax Coloring'                                       'Syntax farblich hervorheben'
-; 'Immediate Selector Check'                              'Selektor unmittelbar prüfen'
-'immediate Selector Check'                              'Selektor bei der Eingabe prüfen'
+; 'Immediate Selector Check'                              'Selektor unmittelbar prfen'
+'immediate Selector Check'                              'Selektor bei der Eingabe prfen'
 'Emphasis:'                                             'Hervorhebung'
 'Text Color:'                                           'Farbe von Text:'
-'Reset To:'                                             'Rücksetzen nach:'
+'Reset To:'                                             'Rcksetzen nach:'
 'Auto Format'                                           'Automatische Formatierung'
 'Sample Output:'                                        'Beispielausgabe'
 'Space around Temporaries'                              'Leerzeichen um Variablennamen'
 'Space after ''^'''                                     'Leezeichen nach ''^'''
 'Space after ''['''                                     'Leerzeichen nach ''['''
-'C-Style Blocks'                                        'Blöcke im C-Stil (K&&R)'
+'C-Style Blocks'                                        'Blcke im C-Stil (K&&R)'
 'Blank line after local Var Declaration'                'Leerzeile nach lokaler Var.Deklaration'
-'Space after '':'' in Keywords'                         'Leerzeichen nach '':'' in Schlüsselwörtern'
+'Space after '':'' in Keywords'                         'Leerzeichen nach '':'' in Schlsselwrtern'
 'Space before '']'''                                    'Leerzeichen vor '']'''
 'Block Args on new Line'                                'Blockargumente in neuer Zeile'
-'Indent'                                                'Einrückung'
-'Max Length for single line Blocks'                     'Maximale Länge für einzeilige Blöcke'
-'Max Length for Single Line Blocks'                     'Maximale Länge für einzeilige Blöcke'
-'Reset to ST/X Default'                                 'Zurücksetzen zu ST/X Standardwerten'
-'Reset to RB Default'                                   'Zurücksetzen zu RB Standardwerten'
-'Reset to RefactoryBrowser Default'                     'Zurücksetzen zu RefactoryBrowser Standard'
+'Indent'                                                'Einrckung'
+'Max Length for single line Blocks'                     'Maximale Lnge fr einzeilige Blcke'
+'Max Length for Single Line Blocks'                     'Maximale Lnge fr einzeilige Blcke'
+'Reset to ST/X Default'                                 'Zurcksetzen zu ST/X Standardwerten'
+'Reset to RB Default'                                   'Zurcksetzen zu RB Standardwerten'
+'Reset to RefactoryBrowser Default'                     'Zurcksetzen zu RefactoryBrowser Standard'
 'Generate Comments'                                     'Kommentare generieren'
 'Generate Comments in Getters'                          'Kommentare in Gettern generieren'
 'Generate Comments in Setters'                          'Kommentare in Settern generieren'
@@ -3268,22 +3268,22 @@
 'Save as'                                               'Sichern als'
 'Save Text As'                                          'Text Sichern als'
 'Load from'                                             'Laden von'
-; 'show error notifier before opening debugger'       'Fehlerdialog vor Öffnen eines Debuggers'
-'Show Error Notifier before Opening Debugger'           'Zeige Fehlerdialog vor Öffnen des Debuggers'
-; 'verbose backtrace by default in debugger'          'Ausführliche Aufrufliste im Debuggers'
-'Verbose Backtrace by Default in Debugger'              'Standardmäßig ausführliche Aufrufkette im Debugger anzeigen'
+; 'show error notifier before opening debugger'       'Fehlerdialog vor ffnen eines Debuggers'
+'Show Error Notifier before Opening Debugger'           'Zeige Fehlerdialog vor ffnen des Debuggers'
+; 'verbose backtrace by default in debugger'          'Ausfhrliche Aufrufliste im Debuggers'
+'Verbose Backtrace by Default in Debugger'              'Standardmig ausfhrliche Aufrufkette im Debugger anzeigen'
 'Hide Support Code (Implementation of Enumerations, Exceptions, etc.)'  'Support Code nicht anzeigen (Implementierung von Enumerations, Exceptions, etc.)'
 ; 'Allow Send Error Report from Debugger'                 'Erlaube das Senden von Fehlerberichten aus dem Debugger'
 'Allow Sending Error Report from Debugger'              'Erlaube das Senden von Fehlerberichten aus dem Debugger'
 'Allow Sending of Error Reports from Debugger'          'Erlaube das Senden von Fehlerberichten aus dem Debugger'
 'Use New Layout'                                        'Neues Layout verwenden'
-'Text Editor for all Types'                             'Texteditor für alle Dateitypen'
+'Text Editor for all Types'                             'Texteditor fr alle Dateitypen'
 'standard styles only'                                  'nur Standard-Stile'
 'Define the Format of Window Labels:'                   'Format von Fensterbezeichnungen:'
 
 'Show Accept/Cancel Bar in Editor'                      'Accept/Cancel Balken im Editor darstellen'
 'Show Search Bar in Browser'                            'Suchleiste im Editor immer zeigen'
-'Show Method Template'                                  'Vorlage für Methodenquellcode anzeigen'
+'Show Method Template'                                  'Vorlage fr Methodenquellcode anzeigen'
 'Use the Embedded Test Runner (experimental)'                           'Den eingebetteten Test Runner verwenden (experimentell)'
 'Show Bookmarks Bar (experimental)'                                     'Lesezeichen-Menu anzeigen (experimentell)'
 'Web Browser Like Layout (Toolbars are Part of the Tab - experimental)' 'Web Browser Layout (Toolbars sind Teil des Tabs - experimentell)'
@@ -3305,21 +3305,21 @@
 'Beep for Error Dialogs'                                'Signal bei Fehlerboxen'
 'Audible Bell'                                          'Akustische Signale'
 
-'Change File'                                           'Änderungsdatei'
-'Log compiles in Changefile'                            'Methodenänderungen im Changefile protokollieren'
+'Change File'                                           'nderungsdatei'
+'Log compiles in Changefile'                            'Methodennderungen im Changefile protokollieren'
 'Log doIts in Changefile'                               '''DoIts'' im Changefile protokollieren'
-'Changefile Name'                                       'Name der Änderungsdatei'
+'Changefile Name'                                       'Name der nderungsdatei'
 'Catch Method Redefinitions'                            'Redefinition einer Methode melden'
 'Catch Class Redefinitions'                             'Redefinition einer Klasse melden'
-'Keep History Line in Methods'                          'Historie in Methoden führen'
+'Keep History Line in Methods'                          'Historie in Methoden fhren'
 'Keep Full Class History'                               'Gesamte Historie halten'
 'FileIn Source Mode'                                    'Quellcode Modus bei FileIn'
-'If Present, Load Binary Objects when Autoloading'      'Bei Autoload, binäre Datei-Objekte laden, falls vorhanden'
+'If Present, Load Binary Objects when Autoloading'      'Bei Autoload, binre Datei-Objekte laden, falls vorhanden'
 'Keep as String'                                        'Als String halten'
 'Reference to Filename'                                 'Als Referenz auf die Datei halten (Relativer Pfad)'
 'Reference to Full Path'                                'Als Referenz auf die Datei halten (Absoluter Pfad)'
-'Append and Ref in ''st.src'' '                         'Anfügen an ''st.src'' und Referenz darauf'
-'Just in Time Compilation to Machine Code'              '''Just In time'' Ãœbersetzung zu Maschinencode'
+'Append and Ref in ''st.src'' '                         'Anfgen an ''st.src'' und Referenz darauf'
+'Just in Time Compilation to Machine Code'              '''Just In time'' bersetzung zu Maschinencode'
 'Allow Underscore in Identifiers'                       'Unterstrich in Variablennamen erlauben'
 'Allow Dollar in Identifiers'                           'Dollarzeichen in Variablennamen erlauben'
 'Allow VW3 QualifiedNames'                              'VW3 QualifiedNames erlauben'
@@ -3327,12 +3327,12 @@
 ; 'Allow Squeak Syntax Extensions'                        'Syntaktische Erweiterungen von Squeak erlauben'
 'Allow Dolphin Extensions'                              'Dolphin-Erweiterungen erlauben'
 'Allow OldStyle Assignment (_)'                         'Alte Zuweisungs-Syntax (_) erlauben'
-'Allow Reserved Words as Selector (self)'               'Reservierte Wörter (self) als Selektor erlauben'
+'Allow Reserved Words as Selector (self)'               'Reservierte Wrter (self) als Selektor erlauben'
 'Allow ST/V Primitives'                                 'ST/V Primitive erlauben'
 'Allow VisualAge ES-Symbols'                            'VisualAge ES-Symbole erlauben'
 'Allow FixedPoint-Number Literals'                      'FixedPoint Zahlenliterale erlauben'
 'Allow Empty Statements'                                'Leere Anweisungen erlauben'
-'Allow Extended Binary Selectors'                       'Erweiterte binäre Selektoren erlauben'
+'Allow Extended Binary Selectors'                       'Erweiterte binre Selektoren erlauben'
 'Allow Assignment to Pool Variable'                     'Zuweisung an Pool Variable erlauben'
 'ST/X Extensions'                                       'ST/X Erweiterungen'
 'Underscores in Identifiers'                            'Unterstrich in Variablennamen'
@@ -3340,25 +3340,25 @@
 'Unused Method Variables'                               'Ungenutzte Methodenvariablen'
 'OldStyle Assignment'                                   'Alte Zuweisungs-Syntax'
 'Common Mistakes'                                       'Typische Fehler'
-'Possible Incompatibilities'                            'Mögliche Inkompatibilitäten'
-'Possible STC Compilation Problems'                     'Mögliche Probleme bei STC-Übersetzung'
+'Possible Incompatibilities'                            'Mgliche Inkompatibilitten'
+'Possible STC Compilation Problems'                     'Mgliche Probleme bei STC-bersetzung'
 'References to Provate Classes'                         'Referenz auf Private Klasse'
-'Possibly Unimplemented Selectors'                      'Möglicherweise nicht-implementierte Nachricht'
+'Possibly Unimplemented Selectors'                      'Mglicherweise nicht-implementierte Nachricht'
 'Bad (non-Lowercase) Local Variable Names'              'Schlechte (nicht-kleingeschriebene) lokale Variablennamen'
 'Bad (Non-Lowercase) Local Variable Names'              'Schlechte (nicht-kleingeschriebene) lokale Variablennamen'
 'Bad (Short) Local Variable Names'                      'Schlechte (kurze) lokale Variablennamen'
 'Bad (non-English) Variable Names'                      'Schlechte (nicht-englische) Variablennamen'
 'Bad (empty) Comments'                                  'Schlechte (leere) Kommentare'
-'Bad (Uppercase) Local Variable Names'                  'Schlechte (großgeschriebene) lokale Variablennamen'
-'Inconsistent Return Values'                            'Nichtkonsistente Rückgabewerte'
+'Bad (Uppercase) Local Variable Names'                  'Schlechte (grogeschriebene) lokale Variablennamen'
+'Inconsistent Return Values'                            'Nichtkonsistente Rckgabewerte'
 'Reference to Private Class'                            'Referenz auf private Klasse'
 'Method-Comment Missing'                                'Methodenkommentar fehlt'
-'Plausibility Checks'                                   'Plausibilitätsprüfungen'
+'Plausibility Checks'                                   'Plausibilittsprfungen'
 
 'Literal Arrays are Immutable'                          'Literale Arrays sind ''readOnly'''
 'Full Debug Info'                                       'Komplette Debuginformation'
-'Constant Folding'                                      'Konstanten zur Ãœbersetzungszeit berechnen'
-'STC Compilation to Machine Code'                       'STC Ãœbersetzung zu Maschinencode'
+'Constant Folding'                                      'Konstanten zur bersetzungszeit berechnen'
+'STC Compilation to Machine Code'                       'STC bersetzung zu Maschinencode'
 'STC Command'                                           'STC Kommando'
 'STC Options'                                           'STC Optionen'
 'CC Command'                                            'CC Kommando'
@@ -3369,34 +3369,34 @@
 'Link Arguments'                                        'Binder (Linker) Argumente'
 'C-Libraries'                                           'C-Bibliotheken'
 'STC Library Path'                                      'STC Bibiliothekspfad'
-'Warning - invalid settings may result in failures or poor performance'  'Achtung - ungültige Einstellungen können Fehler und schlechte Leistung verursachen'
+'Warning - invalid settings may result in failures or poor performance'  'Achtung - ungltige Einstellungen knnen Fehler und schlechte Leistung verursachen'
 'You have been warned'                                  'Sie wurden gewarnt'
-'Size of NewSpace'                                      'Größe des ''newSpace'''
-'Size of newSpace where objects are created'            'Größe des Speichers in dem neue Objekte erzeugt werden'
+'Size of NewSpace'                                      'Gre des ''newSpace'''
+'Size of newSpace where objects are created'            'Gre des Speichers in dem neue Objekte erzeugt werden'
 'Never allocate more than this amount of memory'        'Niemals mehr als diese Menge Speicher belegen'
 'Maximum Memory Limit'                                  'Maximales Speicherlimit'
-'Quick Allocation Lmit'                                 'Limit für schnelle Belegung'
-'Quickly allocate more memory (suppress GC) up to this limit'   'Bis zu diesem Limit schnell belegen (GC unterdrücken)'
-'Incremental GC Allocation Trigger'                     'Belegungs-Trigger für incrementellen GC (IGC)'
-'Start IGC whenever this amount has been allocated'     'IGC starten, sobald belegter Speicher über diesen Wert wächst'
-'Incremental GC Freespace Trigger'                      'Freispeicher-Trigger für incrementellen GC (IGC)'
-'Start IGC whenever freespace drops below this'         'IGC starten, sobald Freispeicher unter diesen Wert fällt'
-'Incremental GC Amount'                                 'Reserve für incrementellen GC'
-'Try to keep this amount for peak requests'             'Versuche diese Menge für kurzfristige Speicheranforderungen zu halten'
+'Quick Allocation Lmit'                                 'Limit fr schnelle Belegung'
+'Quickly allocate more memory (suppress GC) up to this limit'   'Bis zu diesem Limit schnell belegen (GC unterdrcken)'
+'Incremental GC Allocation Trigger'                     'Belegungs-Trigger fr incrementellen GC (IGC)'
+'Start IGC whenever this amount has been allocated'     'IGC starten, sobald belegter Speicher ber diesen Wert wchst'
+'Incremental GC Freespace Trigger'                      'Freispeicher-Trigger fr incrementellen GC (IGC)'
+'Start IGC whenever freespace drops below this'         'IGC starten, sobald Freispeicher unter diesen Wert fllt'
+'Incremental GC Amount'                                 'Reserve fr incrementellen GC'
+'Try to keep this amount for peak requests'             'Versuche diese Menge fr kurzfristige Speicheranforderungen zu halten'
 'Oldspace Increment'                                    'Inkrement im ''Oldspace'''
-'Increase oldSpace in chunks of this size'              'OldSpace wird in Blöcken dieser Größe erweitert'
+'Increase oldSpace in chunks of this size'              'OldSpace wird in Blcken dieser Gre erweitert'
 ; 'Oldspace Compress Limit'                                       'Oldspace Compress Limit'
 'Use 2-pass compressing GC if > 0 and more memory is in use'    'Benutze 2-Phasen-Komprimierung, falls > 0 und mehr Speicher belegt ist'
 ; 'Stack Limit'                                                   'Stack Limit'
-'Trigger recursionInterrupt if more stack is used by a process'  'RecursionInterrupt auslösen, sobald mehr Stack von einem Prozess reserviert wurde'
+'Trigger recursionInterrupt if more stack is used by a process'  'RecursionInterrupt auslsen, sobald mehr Stack von einem Prozess reserviert wurde'
 'Dynamic code Limit'                                             'Dynamisches Codelimit'
-'Flush dynamic compiled code to stay within this limit'          'Dynamisch übersetzten Code verwerfen, um unter dieser Grenze zu bleiben'
+'Flush dynamic compiled code to stay within this limit'          'Dynamisch bersetzten Code verwerfen, um unter dieser Grenze zu bleiben'
 'Start incremental CG whenever this amount of code has been allocated'  'Starte incrementellen GC, sobald diese Menge neu alloziert wurde'
 'Sourcecode Management'                                 'Quellcode-Verwaltung'
 'Source Code Management'                                'Quellcode-Verwaltung'
 'Source Code Manager Setup'                             'Quellcode Mangager Einstellungen'
 'CVS SourceCodeManager setup'                           'CVS Quellcodemanager konfigurieren'
-'CVS BinDirectory'                                      'CVS Binärverzeichnis (falls nicht im Pfad)'
+'CVS BinDirectory'                                      'CVS Binrverzeichnis (falls nicht im Pfad)'
 ; 'CVSRoot default'                                       'CVSRoot default'
 ; 'CVSRoot per Modul'                                     'CVSRoot per Modul'
 ; 'Modul'                                                 'Modul'
@@ -3404,15 +3404,15 @@
 'CVSRoot per Module'                                    'CVSRoot per Modul'
 'Module'                                                'Modul'
 'Add/Apply'                                             'Eintragen'
-'Remove'                                                'Löschen'
-'Source Cache Dir'                                      'Cache-Verzeichnis für Quellcode'
+'Remove'                                                'Lschen'
+'Source Cache Dir'                                      'Cache-Verzeichnis fr Quellcode'
 'Flush Cache now'                                       'Cache jetzt leeren'
-'Condense Cache now'                                    'Cache jetzt bereinigen' "/ (alte Quellen löschen)'
+'Condense Cache now'                                    'Cache jetzt bereinigen' "/ (alte Quellen lschen)'
 'Browse Cache'                                          'Cache browsen'
-'If Present, Use Local Source (Suppress Checkout)'      'Lokale Quelle benutzen, falls vorhanden (Checkout unterdrücken)'
+'If Present, Use Local Source (Suppress Checkout)'      'Lokale Quelle benutzen, falls vorhanden (Checkout unterdrcken)'
 'Keep Method Source (In Image)'                         'Sourcecode im Image merken'
 'Verbose (Trace Operations on Transcript)'              'Verbose (Trace von Operationen auf dem Transcript)'
-'Check for halt/error-Sends when Checking in'           'Halt/Error-Sends beim Einchecken überprüfen'
+'Check for halt/error-Sends when Checking in'           'Halt/Error-Sends beim Einchecken berprfen'
 'Printer Command'                                       'Druckerkommando'
 'Print to File'                                         'Drucke in Datei'
 'dumb printer (or print filter)'                        'Einfacher Drucker (oder Filterprogramm)'
@@ -3423,11 +3423,11 @@
 'PDF Printer'                                           'PDF Drucker (Datei erzeugen)'
 'windows printer'                                       'Windows Drucker'
 'Windows Printer'                                       'Windows Drucker'
-'Max. CopyBuffer Size'                                  'Maximale Text-Größe im clipboard'
+'Max. CopyBuffer Size'                                  'Maximale Text-Gre im clipboard'
 
 'Communication'                                             'Kommunikation'
 'Port/Path:'                                                'Port/Pfad:'
-'Port-number for tcp, path-string for unix domain socket.'  'Port-Nummer für tcp, Pfadangabe für unix domain socket.'
+'Port-number for tcp, path-string for unix domain socket.'  'Port-Nummer fr tcp, Pfadangabe fr unix domain socket.'
 'Log Errors'                                                'Fehler protokollieren'
 'Log Connections'                                           'Verbindungen protokollieren'
 'Log Data Xfer'                                             'Datentransfer protokollieren'
@@ -3445,25 +3445,25 @@
 
 'PREFERRED_FONT_ENCODINGS'          #('unicode' 'iso8859-1' 'ascii')
 
-'literal arrays are immutable'      'Array-Konstanten nicht änderbar'
-'stc compilation to machine code'   'Ãœbersetzung mit stc in Maschinencode'
+'literal arrays are immutable'      'Array-Konstanten nicht nderbar'
+'stc compilation to machine code'   'bersetzung mit stc in Maschinencode'
 'always'                            'immer'
 'never'                             'nie'
 'primitive code only'               'nur Primitive'
-'just in time compilation to machine code'       'Dynamische Ãœbersetzung in Maschinencode'
-'detailed single step support'                   'volle Einzelschritt Unterstützung'
+'just in time compilation to machine code'       'Dynamische bersetzung in Maschinencode'
+'detailed single step support'                   'volle Einzelschritt Untersttzung'
 'warnings'                          'Warnungen'
 'ST/X language extensions'          'ST/X Spracherweiterungen'
 'ST/X extensions'                   'ST/X Erweiterungen'
-'possible incompatibilities'        'Potentielle Unverträglichkeit'
+'possible incompatibilities'        'Potentielle Unvertrglichkeit'
 'unused method vars'                'Nicht verwendete Methodenvariable'
 'underscores in identifiers'        'Unterstrich in Variablenname'
 'dollars in identifiers'            'Dollar-Zeichen in Variablenname'
-'full lineNumber info'              'Ausführliche Zeilennummerninformation'
-'full debug info'                   'Ausführliche Debuginformation'
+'full lineNumber info'              'Ausfhrliche Zeilennummerninformation'
+'full debug info'                   'Ausfhrliche Debuginformation'
 'oldStyle assignment'               '"oldStyle" Zuweisungen'
 'common mistakes'                   'Typische Fehler'
-'stc compilation parameters'     'stc Ãœbersetzungsparameter'
+'stc compilation parameters'     'stc bersetzungsparameter'
 'stc command:'                      'stc Kommandopfad:'
 'cc command:'                       'cc Kommandopfad:'
 'link command:'                     'linker Kommandopfad:'
@@ -3480,7 +3480,7 @@
 'keep as string'                    'als String behalten'
 'reference to filename'             'Referenz auf Datei'
 'reference to full path'            'Referenz auf Datei mit vollem Pfad'
-'append and ref in `st.src'''       'anfügen und Referenz auf `st.src'''
+'append and ref in `st.src'''       'anfgen und Referenz auf `st.src'''
 'discard'                           'verwerfen'
 
 'constant folding:'                 'Zusammenfassen von Konstanten:'
@@ -3493,25 +3493,25 @@
 'Transcript Buffer Size:'           'Anzahl Zeilen im Transcript:'
 
 'Other settings'                    'andere Einstellungen '
-'remember changed methods (for previous method in browser)'  'Methodenhistorie mitführen'
-'log compiles in changes file'      'Änderungen in changes-Datei eintragen'
+'remember changed methods (for previous method in browser)'  'Methodenhistorie mitfhren'
+'log compiles in changes file'      'nderungen in changes-Datei eintragen'
 'log doIts in changes file'         'DoIts in changes-Datei eintragen'
 'change file name:'                 'Name der Change-Datei:'
-'lazy compilation when autoloading' '"lazy" Ãœbersetzung bei Autoload'
+'lazy compilation when autoloading' '"lazy" bersetzung bei Autoload'
 'catch method redefinitions'        'Meldung falls existierende Methode redefiniert wird'
 'catch class redefinitions'         'Meldung falls existierende Klasse redefiniert wird'
-'keep history line in methods'      'History-Zeile im Quelltext von Methoden mitführen'
-'keep full class history'           'Alle History-Einträge in history-Methode mitführen'
-'load binary objects, if present'   'Binäre Klassen werden geladen, falls vorhanden'
-'if present, load binary objects when autoloading'   'Falls vorhanden, lade Binärobjekte bei Autoload'
+'keep history line in methods'      'History-Zeile im Quelltext von Methoden mitfhren'
+'keep full class history'           'Alle History-Eintrge in history-Methode mitfhren'
+'load binary objects, if present'   'Binre Klassen werden geladen, falls vorhanden'
+'if present, load binary objects when autoloading'   'Falls vorhanden, lade Binrobjekte bei Autoload'
 'Source Cache Dir:'                 'Cacheverzeichnis:'
 'sourcecode from sourcecode management'  'Quellcode vom Versions-Management'
 
 
 'Shadows under PopUp Views'                         'Schatten unter PopUp Fenstern'
 'Beeper enabled'                                    'Akustische Signale eingeschaltet'
-'Boxes Return Focus to Previously Active View'      'Dialoge geben Fokus an vorherigens Fenster zurück'
-'Views Catch Focus when Mapped'                     'Fenster nehmen Fokus beim Öffnen'
+'Boxes Return Focus to Previously Active View'      'Dialoge geben Fokus an vorherigens Fenster zurck'
+'Views Catch Focus when Mapped'                     'Fenster nehmen Fokus beim ffnen'
 'Hostname in Window Labels'                         'Hostname im Fenstertitel anzeigen'
 'Show Accelerator Keys in Menus'                    'Funktionstasten im Menu anzeigen'
 'Raise & Activate Windows on Click'                 'Fenster bei Klick nach vorne bringen'
@@ -3519,11 +3519,11 @@
 'Keyboard Focus Follows Mouse'                      'Tastaturfokus folgt Mauszeiger'
 'Mousewheel Focus Follows Mouse'                    'Scrollrad-Fokus folgt Mauszeiger'
 'MouseWheel Focus Follows Mouse'                    'Scrollrad-Fokus folgt Mauszeiger'
-'Opaque Variable Panel Resizing'                    'Verändern der Grösse im VariablePanel animieren'
-'Opaque Table Column Resizing'                      'Verändern der Grösse einer Tabellenspalte animieren'
-'Select on Right-Button-Press'                      'Auswahl durch Drücken der rechten Maustaste'
+'Opaque Variable Panel Resizing'                    'Verndern der Grsse im VariablePanel animieren'
+'Opaque Table Column Resizing'                      'Verndern der Grsse einer Tabellenspalte animieren'
+'Select on Right-Button-Press'                      'Auswahl durch Drcken der rechten Maustaste'
 'Menu on Right-Button-Release'                      'Menu durch Loslassen der rechten Maustaste'
-'Define the Format of Window Labels:\\  %1 - Label\  %2 - Hostname\  %3 - Username\  %4 - ProcessId\' 'Format für Fenstertitel: \\  %1 - Label\  %2 - Hostname\  %3 - Benutzername\  %4 - ProzessId\'
+'Define the Format of Window Labels:\\  %1 - Label\  %2 - Hostname\  %3 - Username\  %4 - ProcessId\' 'Format fr Fenstertitel: \\  %1 - Label\  %2 - Hostname\  %3 - Benutzername\  %4 - ProzessId\'
 'Use Native Widgets (Experimental & Unfinished Feature)'        'Native Widgets verwenden (experimentell)'
 'Use Native Dialogs (Experimental & Unfinished Feature)'        'Native Dialoge verwenden (experimentell)'
 'Use Native File Dialogs (Experimental & Unfinished Feature)'   'Native Filedialoge verwenden (experimentell)'
@@ -3532,8 +3532,8 @@
 
 
 
-'Preemptive Scheduling'                             'Prozessausführung mit Zeitscheiben'
-'Dynamic Priorities'                                'Dynamische Prozessprioritäten'
+'Preemptive Scheduling'                             'Prozessausfhrung mit Zeitscheiben'
+'Dynamic Priorities'                                'Dynamische Prozessprioritten'
 
 'Cursor has ST80/VW Line-end Behavior'              'Schreibmarke mit ST80/VW Verhalten am Zeilenende'
 'Cursor has ST80 Line-end Behavior'                 'Schreibmarke mit ST80 Verhalten am Zeilenende'
@@ -3541,35 +3541,35 @@
 'Double Click Select Behavior as in ST80'           'Doppelklick-Selektion wie in ST80'
 'Tab Stops in Multiples of 4'                       '4-er Tabs'
 'SearchBox is Modal'                                'Textsuchdialog ist Modal'
-'CTRL-Key to Start TextDrag'                        'CTRL-Taste für Drag & Drop von Text'
+'CTRL-Key to Start TextDrag'                        'CTRL-Taste fr Drag & Drop von Text'
 'Extended Character-Set for Word-Select (Underline, Dollar)' 'Erweiterter Zeichensatz bei Wortselektion (Unterstrich, Dollar)'
 'Delete-Key sets Clipboard'                         'Delete-Taste (Entfernen) aktualisiert das Clipboard'
 'Treat Underscore as Letter in Word-Select'         'Unterstrich wie Buchstaben bei Wort-Selektion behandeln'
 'Any non-Whitespace in Word-Select'                 'Alle nicht-Leerzeichen bei Wort-Selektion'
-'Always Paste the Contents when Dropping a File (Do not Ask)' 'Bei Drop einer Datei immer den Dateiinhalt einfügen (nicht nachfragen)'
+'Always Paste the Contents when Dropping a File (Do not Ask)' 'Bei Drop einer Datei immer den Dateiinhalt einfgen (nicht nachfragen)'
 'Select all when Clicking beyond the Text''s End'   'Bei Klick hinter dem Textende alles selektieren'
 
-'Use Advanced Code Editor in All Tools (where supported)' 'Verbesserter Code-Editor in allen Tools verwenden (soweit unterstützt)'
+'Use Advanced Code Editor in All Tools (where supported)' 'Verbesserter Code-Editor in allen Tools verwenden (soweit untersttzt)'
 'Use Advanced Code Editor in Class Browser'               'Verbesserter Code-Editor im Klassenbrowser verwenden'
 'Use Advanced Code Editor in Debugger (experimental)'     'Verbesserter Code-Editor im Debugger verwenden (experimentell)'
 'Use Advanced Code Editor in Workspace'                   'Verbesserter Code-Editor im Workspace verwenden'
 'Show Accept/Cancel Buttons in Gutter'                    'Accept/Cancel Balken im Randbereich anzeigen'
-'Auto Indent (experimental, not yet recommended)'         'Automatisch einrücken (experimentell, noch nicht empfohlen)'
+'Auto Indent (experimental, not yet recommended)'         'Automatisch einrcken (experimentell, noch nicht empfohlen)'
 'Use the Embedded Test Runner'                            'Verwende den eingebetteten TestRunner'
 'Show Bookmarks Bar'                                      'Lesezeichenleiste anzeigen'
-'Sort and Indent Classes by Inheritance'                  'Klassen nach Vererbung sortieren und einrücken'
-'Show Local Navigation History (Separate History per Browser Tab)'  'Lokalen Verlauf zeigen (getrennt für jeden Tab)'                                     'Lesezeichenleiste anzeigen'
-'Show Global Navigation History (Global History for all Browsers)'  'Globalen Verlauf zeigen (global für alle Browser)'                                     'Lesezeichenleiste anzeigen'
+'Sort and Indent Classes by Inheritance'                  'Klassen nach Vererbung sortieren und einrcken'
+'Show Local Navigation History (Separate History per Browser Tab)'  'Lokalen Verlauf zeigen (getrennt fr jeden Tab)'                                     'Lesezeichenleiste anzeigen'
+'Show Global Navigation History (Global History for all Browsers)'  'Globalen Verlauf zeigen (global fr alle Browser)'                                     'Lesezeichenleiste anzeigen'
 'Use in-place Search in Browser Lists (experimental)'               'Schnellsuche innnerhalb der Browserliste (experimentell)'                                     'Lesezeichenleiste anzeigen'
 
-'Syntax Color'                                      'Syntaktische Einfärbung'
+'Syntax Color'                                      'Syntaktische Einfrbung'
 
 'Communication settings'                            'Kommunikation'
 'Communications'                                    'Kommunikation'
 
 'Window migration'                                  'Migrieren von Fenstern'
 'Window migration enabled'                          'Migrieren von Fenstern erlaubt'
-'Password check'                                    'Passwort prüfen'
+'Password check'                                    'Passwort prfen'
 
 'Remote doits enabled'                              'RDOIT Anweisungen erlaubt'
 'Log Data'                                          'Daten anzeigen'
@@ -3595,7 +3595,7 @@
 'OSI Protocols (addOn package)'                     'OSI Protokolle (Zusatzpaket)'
 'Log %1 errors'                                     '%1-Fehler melden'
 'Log %1 connection'                                 '%1-Verbindungen melden'
-'Log %1 data xfers'                                 '%1-Datenübertragung melden'
+'Log %1 data xfers'                                 '%1-Datenbertragung melden'
 'Log %1 invokations'                                '%1-Aufrufe melden'
 'Log %1 responses'                                  '%1-Antworten melden'
 'Log %1 messages'                                   '%1-Nachrichten melden'
@@ -3619,13 +3619,13 @@
 'Display screen settings'           'Einstellungen zum Bildschirm'
 
 'Actual Visible Screen Area:'       'Sichtbarer Bereich'
-'Common Sizes:'                     'Typische Größen:'
-'Screen Size:'                      'Größe des Bildschirms:'
+'Common Sizes:'                     'Typische Gren:'
+'Screen Size:'                      'Gre des Bildschirms:'
 'Color Monitor'                     'Farbschirm'
 'Use Fix Color Palette %1'          'Feste Farbpalette %1 verwenden'
-'Use Fix Gray Color Palette %1'     'Feste Farbpalette für Grautöne %1 verwenden'
+'Use Fix Gray Color Palette %1'     'Feste Farbpalette fr Grautne %1 verwenden'
 'Image Display:'                    'Bilder anzeigen mit:'
-'Allow Colored/Grayscale Icons'     'Sinnbilder mit Farben/Grautönen'
+'Allow Colored/Grayscale Icons'     'Sinnbilder mit Farben/Grautnen'
 'ClipBoard Encoding:'               'Kodierung von ClipBoard-Texten:'
 'Screen: Depth: %1 Visual: %2  (%3)' 'Darstellung: Tiefe: %1 Farbe: %2  (%3)'
 
--- a/resources/el.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/el.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf-8
 
-; $Header: /cvs/stx/stx/libtool/resources/el.rs,v 1.3 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/el.rs,v 1.3 2008/11/28 16:41:56 cg Exp $
 ;
 ; Launcher: Greek
 ;
--- a/resources/en.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/en.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf8
 
-; $Header: /cvs/stx/stx/libtool/resources/en.rs,v 1.7 2009-10-31 13:03:23 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/en.rs,v 1.7 2009/10/31 13:03:23 cg Exp $
 
 ;--------------------------------------------------------------------------------------------
 ;
--- a/resources/fi.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/fi.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding iso8859-1
 
-; $Header: /cvs/stx/stx/libtool/resources/fi.rs,v 1.1 2006-09-18 14:55:22 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/fi.rs,v 1.1 2006/09/18 14:55:22 cg Exp $
 ;
 ; Launcher: Finish
 ;
--- a/resources/fr.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/fr.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf8
 
-; $Header: /cvs/stx/stx/libtool/resources/fr.rs,v 1.5 2010-09-21 13:08:19 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/fr.rs,v 1.5 2010/09/21 13:08:19 cg Exp $
 ;
 
 ;--------------------------------------------------------------------------------------------
--- a/resources/hr.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/hr.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf-8
 
-; $Header: /cvs/stx/stx/libtool/resources/hr.rs,v 1.1 2006-09-18 14:55:18 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/hr.rs,v 1.1 2006/09/18 14:55:18 cg Exp $
 ;
 ; Launcher: Croatian
 ;
--- a/resources/hu.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/hu.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf-8
 
-; $Header: /cvs/stx/stx/libtool/resources/hu.rs,v 1.3 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/hu.rs,v 1.3 2008/11/28 16:41:56 cg Exp $
 ;
 ; Launcher: Hungarian
 ;
--- a/resources/it.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/it.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding iso8859-1
 
-; $Header: /cvs/stx/stx/libtool/resources/it.rs,v 1.3 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/it.rs,v 1.3 2008/11/28 16:41:56 cg Exp $
 
 ;--------------------------------------------------------------------------------------------
 ;
--- a/resources/ja.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/ja.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -17,23 +17,23 @@
 ; SystemBrowser resources
 ;
 
-search                  'æœã™'
-create                  '生æˆ'
-browse                  'ブラウズ'
-find                    'æœã™'
-accept                  'å¿œã˜ã‚‹'
-continue                '続ã‘ã‚‹'
-copy                    '複写'
+search                  ''
+create                  ''
+browse                  ''
+find                    ''
+accept                  ''
+continue                ''
+copy                    ''
 
-compare                 'åˆã‚ã›ã‚‹'
+compare                 ''
 
 ;--------------------------------------------------------------------------------------------
 ;
 ; AboutBox
 ;
-'Version'              '版'
-'Distributor'          'ディストリビューター'
-'Configuration'        '構æˆ'
+'Version'              ''
+'Distributor'          ''
+'Configuration'        ''
 "/ 'Release ID'            '?'
 "/ 'Running on'            '?'
 
@@ -41,11 +41,11 @@
 ;
 ; DebugView
 ;
-'terminate'             'æžœã¦ã‚‹'
-'return'                '帰る'
-'step'                  'å˜ä¸€æ®µéšŽ'
-'send'                  '言ã¥ã‘ã‚‹'
-'restart'               'å†å‡ºç™º'
+'terminate'             ''
+'return'                ''
+'step'                  ''
+'send'                  ''
+'restart'               ''
 
 ;--------------------------------------------------------------------------------------------
 ;
@@ -58,109 +58,109 @@
 ;
 
 ; 'Afrikaans'
-'Arabic'                    'アラビア語'
-'Chinese'                   '中国語'
-'Chinese (simplified)'                 '中国語 (simplified)'
-'Chinese (traditional)'                '中国語 (traditional)'
+'Arabic'                    ''
+'Chinese'                   ''
+'Chinese (simplified)'                 ' (simplified)'
+'Chinese (traditional)'                ' (traditional)'
 ; 'Croatian'
-'Czech'                     'ãƒã‚§ã‚³'
+'Czech'                     ''
 ; 'Danish'
-'German'                    'ドイツ語'
-'Greek'                     'ギリシャ'
-'English (US)'              '英語 (US)'
-'English (UK)'              '英語 (UK)'
-'Esperanto'                 'エスペラント語'
-'Spanish'                   'スペイン語'
+'German'                    ''
+'Greek'                     ''
+'English (US)'              ' (US)'
+'English (UK)'              ' (UK)'
+'Esperanto'                 ''
+'Spanish'                   ''
 ; 'Finnish'
-'French'                    'フランスã®'
-'Italian'                   'イタリア語'
-'Japanese'                  '日本語'
-'Latin'                     'ラテン語'
+'French'                    ''
+'Italian'                   ''
+'Japanese'                  ''
+'Latin'                     ''
 ; 'Hindi'
-'Dutch'                     'オランダ語'
+'Dutch'                     ''
 ; 'Norwegian'
-'Polish'                    'ãƒãƒ¼ãƒ©ãƒ³ãƒ‰èªž'
-'Portuguese'                'ãƒãƒ«ãƒˆã‚¬ãƒ«èªž'
-'Portuguese (Brazilian)'    'ãƒãƒ«ãƒˆã‚¬ãƒ«èªž (ブラジル)'
-'Russian'                   'ロシア語'
+'Polish'                    ''
+'Portuguese'                ''
+'Portuguese (Brazilian)'    ' ()'
+'Russian'                   ''
 ; 'Swedish'
-'Thai'                      'タイ語'
-'Turkish'                   'トルコ語'
+'Thai'                      ''
+'Turkish'                   ''
 ; 'Ukrainian'
 
-'projects'              '事業'
-'demos'                 '用例'
+'projects'              ''
+'demos'                 ''
 
-'about Smalltalk/X'     'ã¤ã„㦠Smalltalk/X'
+'about Smalltalk/X'     ' Smalltalk/X'
 
-; 'senders'                 'æä¾›å´'
+; 'senders'                 ''
 
-'language'              '言語'
+'language'              ''
 
-'ST/X documentation'        'å–扱説明書 ST/X'
-'ST/X online documentation' 'å–扱説明書 ST/X'
-'class documentation'       'å–扱説明書 é¡ž'
-'index'                     '索引'
-'what''s new'               '特報'
+'ST/X documentation'        ' ST/X'
+'ST/X online documentation' ' ST/X'
+'class documentation'       ' '
+'index'                     ''
+'what''s new'               ''
 
-'version'               '�ジ??'
-'copyright'             '著作権'
+'version'               '???'
+'copyright'             ''
 
-'snapshot...'           'è¦ä¿'
-'snapshot & exit...'    'è¦ä¿ & 済む'
-'exit smalltalk'        '済む Smalltalk/X'
+'snapshot...'           ''
+'snapshot & exit...'    ' & '
+'exit smalltalk'        ' Smalltalk/X'
 
-'hardcopy'              '写真'
+'hardcopy'              ''
 
-'views'                 '表示'
-'destroy view'          '崩㙠表示'
-'select & destroy view' '崩㙠表示'
-'view tree'             '表示階層'
-'view tree (all views)' '表示階層 (ã™ã£ã‹ã‚Š)'
-'find & raise'          'æœã™ & raise'    "/ '見ãˆã‚‹' ???
-'find & destroy'        'æœã™ & å´©ã™'
+'views'                 ''
+'destroy view'          ' '
+'select & destroy view' ' '
+'view tree'             ''
+'view tree (all views)' ' ()'
+'find & raise'          ' & raise'    "/ '' ???
+'find & destroy'        ' & '
 
-'workspace'             '作業表示'
-'semaphores'            'ä¿¡å·æ©Ÿ'
-'memory'                '記憶'
+'workspace'             ''
+'semaphores'            ''
+'memory'                ''
 
-'view'                  '表示'
-'area'                  '地域'
+'view'                  ''
+'area'                  ''
 
-'new project'                '樹立 事業'
-'select project'             'é¸ã¶ 事業'
+'new project'                ' '
+'select project'             ' '
 
-'view style'                 '表示型'
-'misc'                       '雑用'
-'messages'                   'ãŠçŸ¥ã‚‰ã›'
+'view style'                 ''
+'misc'                       ''
+'messages'                   ''
 
-'games'                      '競技'
+'games'                      ''
 
-'geometric designs'          'ç·šç”»'
-'Pen demo'                   'ç™ºæ® Pen'
-'Commander demo'             'ç™ºæ® Commander'
+'geometric designs'          ''
+'Pen demo'                   ' Pen'
+'Commander demo'             ' Commander'
 
-'goodies'                    '馳走'
+'goodies'                    ''
 
-'clock'                      '時計'
-'calendar'                   '時刻表日'
-'calculator'                 '計算機'
+'clock'                      ''
+'calendar'                   ''
+'calculator'                 ''
 
-'Animation'                  'æ­©ç”·'
-'Globe demo'                 'çƒ'
-'3D graphics'                '絵 [三次元]'
-'Paint Demo'                 'çµµ'
-'Tic Tac Toe (2 players)'    'Tic Tac Toe (二 é¸æ‰‹)'
+'Animation'                  ''
+'Globe demo'                 ''
+'3D graphics'                ' []'
+'Paint Demo'                 ''
+'Tic Tac Toe (2 players)'    'Tic Tac Toe ( )'
 
-'plane'                      'å¹³é¢'
-'planet'                     '惑星'
-'sphere (wireframe)'         'çƒ (ç·š)'
-'doughnut (wireframe)'       'doughnut (ç·š)'
-'cube (wireframe)'           'ç«‹æ–¹ (ç·š)'
-'cube (solid)'               '立方 (立体)'
-'rubics cube'                'ç«‹æ–¹ Rubics'
-'teapot'                     '茶é‹'
-'cube (light)'               'ç«‹æ–¹ (ç¯ã‚Š)'
-'cube (light & texture)'     'ç«‹æ–¹ (ç¯ã‚Š & ?)'
-'sphere (light)'             'çƒ (ç¯ã‚Š)'
-'colored octahedron'         'octahedron (仰々ã—)'
+'plane'                      ''
+'planet'                     ''
+'sphere (wireframe)'         ' ()'
+'doughnut (wireframe)'       'doughnut ()'
+'cube (wireframe)'           ' ()'
+'cube (solid)'               ' ()'
+'rubics cube'                ' Rubics'
+'teapot'                     ''
+'cube (light)'               ' ()'
+'cube (light & texture)'     ' ( & ?)'
+'sphere (light)'             ' ()'
+'colored octahedron'         'octahedron ()'
--- a/resources/ko.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/ko.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf-8
 
-; $Header: /cvs/stx/stx/libtool/resources/ko.rs,v 1.1 2006-09-18 14:55:12 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/ko.rs,v 1.1 2006/09/18 14:55:12 cg Exp $
 ;
 ; Launcher: Korean
 ;
--- a/resources/la.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/la.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding iso8859-1
 
-; $Header: /cvs/stx/stx/libtool/resources/la.rs,v 1.1 2006-09-18 14:55:10 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/la.rs,v 1.1 2006/09/18 14:55:10 cg Exp $
 ;
 ; Launcher
 
--- a/resources/nl.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/nl.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding iso8859-1
 
-; $Header: /cvs/stx/stx/libtool/resources/nl.rs,v 1.2 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/nl.rs,v 1.2 2008/11/28 16:41:56 cg Exp $
 ;
 ; Launcher
 ;
--- a/resources/no.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/no.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding iso8859-1
 
-; $Header: /cvs/stx/stx/libtool/resources/no.rs,v 1.2 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/no.rs,v 1.2 2008/11/28 16:41:56 cg Exp $
 ;
 ; Launcher
 ;
--- a/resources/pl.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/pl.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf-8
 
-; $Header: /cvs/stx/stx/libtool/resources/pl.rs,v 1.3 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/pl.rs,v 1.3 2008/11/28 16:41:56 cg Exp $
 ;
 ; Launcher
 
--- a/resources/pt.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/pt.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding iso8859-1
 
-; $Header: /cvs/stx/stx/libtool/resources/pt.rs,v 1.2 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/pt.rs,v 1.2 2008/11/28 16:41:56 cg Exp $
 ;
 ; Launcher
 
--- a/resources/pt_br.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/pt_br.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding iso8859-1
 
-; $Header: /cvs/stx/stx/libtool/resources/pt_br.rs,v 1.1 2006-09-18 14:55:00 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/pt_br.rs,v 1.1 2006/09/18 14:55:00 cg Exp $
 ;
 ; Launcher: Brasilian Portuguese
 ;
--- a/resources/ro.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/ro.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf-8
 
-; $Header: /cvs/stx/stx/libtool/resources/ro.rs,v 1.3 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/ro.rs,v 1.3 2008/11/28 16:41:56 cg Exp $
 ;
 ; Launcher
 ;
--- a/resources/ru.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/ru.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf8
 
-; $Header: /cvs/stx/stx/libtool/resources/ru.rs,v 1.3 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/ru.rs,v 1.3 2008/11/28 16:41:56 cg Exp $
 ;
 'directory'                     'каталог'
 
--- a/resources/sk.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/sk.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf-8
 
-; $Header: /cvs/stx/stx/libtool/resources/sk.rs,v 1.2 2006-09-18 16:02:54 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/sk.rs,v 1.2 2006/09/18 16:02:54 cg Exp $
 ;
 ; Launcher: Slovak
 ;
--- a/resources/sl.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/sl.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf-8
 
-; $Header: /cvs/stx/stx/libtool/resources/sl.rs,v 1.2 2006-09-18 16:29:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/sl.rs,v 1.2 2006/09/18 16:29:56 cg Exp $
 ;
 ; Launcher: Slovenian
 ;
--- a/resources/sv.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/sv.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding iso8859-1
 
-; $Header: /cvs/stx/stx/libtool/resources/sv.rs,v 1.2 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/sv.rs,v 1.2 2008/11/28 16:41:56 cg Exp $
 ;
 ; Launcher: Swedisch
 
--- a/resources/th.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/th.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf-8
 
-; $Header: /cvs/stx/stx/libtool/resources/th.rs,v 1.3 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/th.rs,v 1.3 2008/11/28 16:41:56 cg Exp $
 ;
 ; Launcher: Thai
 ;
--- a/resources/tr.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/tr.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf-8
 
-; $Header: /cvs/stx/stx/libtool/resources/tr.rs,v 1.2 2006-09-18 16:29:34 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/tr.rs,v 1.2 2006/09/18 16:29:34 cg Exp $
 ;
 ; Launcher: Turkish
 ;
--- a/resources/uk.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/uk.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf-8
 
-; $Header: /cvs/stx/stx/libtool/resources/uk.rs,v 1.3 2008-11-28 16:41:56 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/uk.rs,v 1.3 2008/11/28 16:41:56 cg Exp $
 ;
 ; Launcher: Ukrainian
 ;
--- a/resources/zh.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/zh.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf-8
 
-; $Header: /cvs/stx/stx/libtool/resources/zh.rs,v 1.5 2009-02-25 16:56:32 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/zh.rs,v 1.5 2009/02/25 16:56:32 cg Exp $
 ;
 ; Translated by Guo, Peng <peng.guo.cn@gmail.com>
 ;
--- a/resources/zh_trad.rs	Sun Jan 27 02:50:59 2013 +0100
+++ b/resources/zh_trad.rs	Wed Jan 30 11:15:09 2013 +0000
@@ -1,6 +1,6 @@
 #encoding utf-8
 
-; $Header: /cvs/stx/stx/libtool/resources/zh_trad.rs,v 1.3 2008-11-28 23:14:26 cg Exp $
+; $Header: /cvs/stx/stx/libtool/resources/zh_trad.rs,v 1.3 2008/11/28 23:14:26 cg Exp $
 ;
 ; Launcher: Chinese traditional
 ;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/Make.proto	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,187 @@
+# $Header$
+#
+# DO NOT EDIT
+# automagically generated from the projectDefinition: stx_libtool_smallsense.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# The Makefile as generated by this Make.proto supports the following targets:
+#    make         - compile all st-files to a classLib
+#    make clean   - clean all temp files
+#    make clobber - clean all
+#
+# This file contains definitions for Unix based platforms.
+# It shares common definitions with the win32-make in Make.spec.
+
+#
+# position (of this package) in directory hierarchy:
+# (must point to ST/X top directory, for tools and includes)
+TOP=../..
+INCLUDE_TOP=$(TOP)/..
+
+# subdirectories where targets are to be made:
+SUBDIRS=
+
+
+# subdirectories where Makefiles are to be made:
+# (only define if different from SUBDIRS)
+# ALLSUBDIRS=
+
+REQUIRED_SUPPORT_DIRS=
+
+# if your embedded C code requires any system includes,
+# add the path(es) here:,
+# ********** OPTIONAL: MODIFY the next lines ***
+# LOCALINCLUDES=-Ifoo -Ibar
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/roeltyper -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/helpers -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libwidg -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libview2 -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libview -I$(INCLUDE_TOP)/stx/libhtml -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/lint -I$(INCLUDE_TOP)/stx/libtool -I$(INCLUDE_TOP)/stx/libcomp -I$(INCLUDE_TOP)/stx/libwidg2 -I$(INCLUDE_TOP)/stx/libbasic3
+
+
+# if you need any additional defines for embedded C code,
+# add them here:,
+# ********** OPTIONAL: MODIFY the next lines ***
+# LOCALDEFINES=-Dfoo -Dbar -DDEBUG
+LOCALDEFINES=
+
+LIBNAME=libstx_libtool_smallsense
+STCLOCALOPT='-package=$(PACKAGE)' -I. $(LOCALINCLUDES) $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -headerDir=.  -varPrefix=$(LIBNAME)
+
+
+# ********** OPTIONAL: MODIFY the next line ***
+# additional C-libraries that should be pre-linked with the class-objects
+LD_OBJ_LIBS=
+LOCAL_SHARED_LIBS=
+
+
+# ********** OPTIONAL: MODIFY the next line ***
+# additional C targets or libraries should be added below
+LOCAL_EXTRA_TARGETS=
+
+OBJS= $(COMMON_OBJS) $(UNIX_OBJS)
+
+
+
+all:: preMake classLibRule postMake
+
+pre_objs::  
+
+
+
+
+# Update SVN revision in stx_libbasic3.st
+ifneq (,$(findstring .svn,$(wildcard .svn)))
+.svnversion: *.st
+	if [ -d .svn ]; then \
+		rev=$(shell svnversion -n); \
+		echo -n $$rev > .svnversion; \
+	else \
+		echo -n exported > .svnversion; \
+	fi
+
+stx_libtool_smallsense.o: stx_libtool_smallsense.st .svnversion 
+	@if [ -d .svn ]; then \
+		rev2="$(shell printf "%-16s" $$(cat .svnversion))"; \
+		echo "  [SV]  Expanding svnRevisionNo in $1.st"; \
+		sed -e "s/\"\$$SVN\-Revision:\".*\"\$$\"/\"\$$SVN-Revision:\"\'$$rev2\'\"\$$\"/g" $< > .stx_libtool_smallsense.svn.st; \
+	fi
+	$(MAKE) CC="$(CLASSLIB_CC)" OPT="$(OPT)" SEPINITCODE="$(SEPINITCODE)" STC="$(STC)" STFILE=.stx_libtool_smallsense.svn $(C_RULE);
+	sed -i -e "s/\".stx_libtool_smallsense.svn.st\");/\"\stx_libtool_smallsense.st\");/g" .stx_libtool_smallsense.svn.c
+	$(MAKE) .stx_libtool_smallsense.svn.$(O)
+	@mv .stx_libtool_smallsense.svn.$(O) stx_libtool_smallsense.$(O) 
+endif
+
+
+
+
+# add more install actions here
+install::
+
+# add more install actions for aux-files (resources) here
+installAux::
+
+# add more preMake actions here
+preMake::
+
+# add more postMake actions here
+postMake:: cleanjunk
+
+prereq: $(REQUIRED_SUPPORT_DIRS)
+	cd ../../libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../goodies/refactoryBrowser/helpers && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../goodies/refactoryBrowser/parser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libcomp && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libdb && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libboss && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libdb/libodbc && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libdb/libsqlite && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../goodies/sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libui && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libbasic3 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../goodies/refactoryBrowser/changes && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libhtml && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libwidg2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../ && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../goodies/roeltyper && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../libcompat && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../goodies/refactoryBrowser/refactoring && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../goodies/refactoryBrowser/browser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../goodies/refactoryBrowser/lint && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+	cd ../../librun && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+
+
+cleanjunk::
+	-rm -f *.s *.s2
+
+clean::
+	-rm -f *.o *.H
+
+clobber:: clean
+	-rm -f *.so *.dll
+
+
+# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
+$(OUTDIR)SmallSenseChecker.$(O) SmallSenseChecker.$(H): SmallSenseChecker.st $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/lint/SmalllintChecker.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseCompletionWindow.$(O) SmallSenseCompletionWindow.$(H): SmallSenseCompletionWindow.st $(INCLUDE_TOP)/stx/libview2/SimpleDialog.$(H) $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseCriticsWindow.$(O) SmallSenseCriticsWindow.$(H): SmallSenseCriticsWindow.st $(INCLUDE_TOP)/stx/libview2/ApplicationModel.$(H) $(INCLUDE_TOP)/stx/libview2/Model.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseInfo.$(O) SmallSenseInfo.$(H): SmallSenseInfo.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseManager.$(O) SmallSenseManager.$(H): SmallSenseManager.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseParseNodeInspector.$(O) SmallSenseParseNodeInspector.$(H): SmallSenseParseNodeInspector.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)SmallSenseParseNodeVisitor.$(O) SmallSenseParseNodeVisitor.$(H): SmallSenseParseNodeVisitor.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseParser.$(O) SmallSenseParser.$(H): SmallSenseParser.st $(INCLUDE_TOP)/stx/libcomp/SyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/Parser.$(H) $(INCLUDE_TOP)/stx/libcomp/Scanner.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSensePosition.$(O) SmallSensePosition.$(H): SmallSensePosition.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseQuickFixer.$(O) SmallSenseQuickFixer.$(H): SmallSenseQuickFixer.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseRecognizer.$(O) SmallSenseRecognizer.$(H): SmallSenseRecognizer.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseResultItem.$(O) SmallSenseResultItem.$(H): SmallSenseResultItem.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseResultSet.$(O) SmallSenseResultSet.$(H): SmallSenseResultSet.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseSelectorNode.$(O) SmallSenseSelectorNode.$(H): SmallSenseSelectorNode.st $(INCLUDE_TOP)/stx/libcomp/ParseNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseService.$(O) SmallSenseService.$(H): SmallSenseService.st $(INCLUDE_TOP)/stx/libtool/Tools__BackgroundSourceProcessingService.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__CodeViewService.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseSettingsAppl.$(O) SmallSenseSettingsAppl.$(H): SmallSenseSettingsAppl.st $(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)SmallSenseType.$(O) SmallSenseType.$(H): SmallSenseType.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseTypeCollector.$(O) SmallSenseTypeCollector.$(H): SmallSenseTypeCollector.st $(INCLUDE_TOP)/stx/goodies/roeltyper/TypeCollector.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseTypeCollectorCache.$(O) SmallSenseTypeCollectorCache.$(H): SmallSenseTypeCollectorCache.st $(INCLUDE_TOP)/stx/libbasic2/CacheDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseTypeHolder.$(O) SmallSenseTypeHolder.$(H): SmallSenseTypeHolder.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseUnacceptedMethodEnvironment.$(O) SmallSenseUnacceptedMethodEnvironment.$(H): SmallSenseUnacceptedMethodEnvironment.st $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/helpers/BrowserEnvironment.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)stx_libtool_smallsense.$(O) stx_libtool_smallsense.$(H): stx_libtool_smallsense.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseAbstractInstvarInterfaceExtractor.$(O) SmallSenseAbstractInstvarInterfaceExtractor.$(H): SmallSenseAbstractInstvarInterfaceExtractor.st $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseParser.$(H) $(INCLUDE_TOP)/stx/libcomp/SyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/Parser.$(H) $(INCLUDE_TOP)/stx/libcomp/Scanner.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseClass.$(O) SmallSenseClass.$(H): SmallSenseClass.st $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseResultItem.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseClassInfo.$(O) SmallSenseClassInfo.$(H): SmallSenseClassInfo.st $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseInfo.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseClassType.$(O) SmallSenseClassType.$(H): SmallSenseClassType.st $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseType.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseConstant.$(O) SmallSenseConstant.$(H): SmallSenseConstant.st $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseResultItem.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseFinder.$(O) SmallSenseFinder.$(H): SmallSenseFinder.st $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseParseNodeVisitor.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseInferencer.$(O) SmallSenseInferencer.$(H): SmallSenseInferencer.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseParseNodeVisitor.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseMethod.$(O) SmallSenseMethod.$(H): SmallSenseMethod.st $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseResultItem.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseMethodInfo.$(O) SmallSenseMethodInfo.$(H): SmallSenseMethodInfo.st $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseInfo.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseSnippet.$(O) SmallSenseSnippet.$(H): SmallSenseSnippet.st $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseResultItem.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseUnionType.$(O) SmallSenseUnionType.$(H): SmallSenseUnionType.st $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseType.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseUnknownType.$(O) SmallSenseUnknownType.$(H): SmallSenseUnknownType.st $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseType.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseVariable.$(O) SmallSenseVariable.$(H): SmallSenseVariable.st $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseResultItem.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseInstvarInterfaceExtractor.$(O) SmallSenseInstvarInterfaceExtractor.$(H): SmallSenseInstvarInterfaceExtractor.st $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseAbstractInstvarInterfaceExtractor.$(H) $(INCLUDE_TOP)/stx/libtool/smallsense/SmallSenseParser.$(H) $(INCLUDE_TOP)/stx/libcomp/SyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)/stx/libcomp/Parser.$(H) $(INCLUDE_TOP)/stx/libcomp/Scanner.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libcomp/ParseNode.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libcomp/AssignmentNode.$(H) $(INCLUDE_TOP)/stx/libcomp/MessageNode.$(H) $(INCLUDE_TOP)/stx/libcomp/ParseErrorNode.$(H) $(INCLUDE_TOP)/stx/libcomp/PrimaryNode.$(H) $(INCLUDE_TOP)/stx/libcomp/StatementNode.$(H) $(INCLUDE_TOP)/stx/libtool/Tools__NavigationState.$(H) $(INCLUDE_TOP)/stx/libbasic/UserPreferences.$(H) $(INCLUDE_TOP)/stx/libbasic/IdentityDictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Dictionary.$(H) $(INCLUDE_TOP)/stx/libbasic/Set.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libcomp/VariableNode.$(H) $(INCLUDE_TOP)/stx/libbasic/ConfigurableFeatures.$(H) $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/lint/RBLintRule.$(H) $(INCLUDE_TOP)/stx/goodies/refactoryBrowser/lint/RBTransformationRule.$(H) $(INCLUDE_TOP)/stx/libhtml/HTMLDocumentView.$(H) $(INCLUDE_TOP)/stx/libhtml/HTMLDocumentFrame.$(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)
+
+# ENDMAKEDEPEND --- do not remove this line
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/Make.spec	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,133 @@
+# $Header$
+#
+# DO NOT EDIT
+# automagically generated from the projectDefinition: stx_libtool_smallsense.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# This file contains specifications which are common to all platforms.
+#
+
+# Do NOT CHANGE THESE DEFINITIONS
+# (otherwise, ST/X will have a hard time to find out the packages location from its packageID,
+#  to find the source code of a class and to find the library for a package)
+MODULE=stx
+MODULE_DIR=libtool/smallsense
+PACKAGE=$(MODULE):$(MODULE_DIR)
+
+
+# Argument(s) to the stc compiler (stc --usage).
+#  -headerDir=. : create header files locally
+#                (if removed, they will be created as common
+#  -Pxxx       : defines the package
+#  -Zxxx       : a prefix for variables within the classLib
+#  -Dxxx       : defines passed to to CC for inline C-code
+#  -Ixxx       : include path passed to CC for inline C-code
+#  +optspace   : optimized for space
+#  +optspace2  : optimized more for space
+#  +optspace3  : optimized even more for space
+#  +optinline  : generate inline code for some ST constructs
+#  +inlineNew  : additionally inline new
+#  +inlineMath : additionally inline some floatPnt math stuff
+#
+# ********** OPTIONAL: MODIFY the next line(s) ***
+# STCLOCALOPTIMIZATIONS=+optinline +inlineNew
+# STCLOCALOPTIMIZATIONS=+optspace3
+STCLOCALOPTIMIZATIONS=+optspace3
+
+
+# Argument(s) to the stc compiler (stc --usage).
+#  -warn            : no warnings
+#  -warnNonStandard : no warnings about ST/X extensions
+#  -warnEOLComments : no warnings about EOL comment extension
+#  -warnPrivacy     : no warnings about privateClass extension
+#
+# ********** OPTIONAL: MODIFY the next line(s) ***
+# STCWARNINGS=-warn
+# STCWARNINGS=-warnNonStandard
+# STCWARNINGS=-warnEOLComments
+STCWARNINGS=-warnNonStandard
+
+COMMON_CLASSES= \
+	SmallSenseParseNodeVisitor \
+	SmallSenseParser \
+	SmallSenseRecognizer \
+	SmallSenseResultItem \
+	SmallSenseResultSet \
+	SmallSenseSelectorNode \
+	SmallSenseService \
+	SmallSenseTypeCollector \
+	SmallSenseTypeCollectorCache \
+	stx_libtool_smallsense \
+	SmallSenseAbstractInstvarInterfaceExtractor \
+	SmallSenseClass \
+	SmallSenseConstant \
+	SmallSenseMethod \
+	SmallSenseSnippet \
+	SmallSenseVariable \
+	SmallSenseInstvarInterfaceExtractor \
+	SmallSenseParseNodeInspector \
+	SmallSenseFinder \
+	SmallSensePosition \
+	SmallSenseType \
+	SmallSenseInferencer \
+	SmallSenseInfo \
+	SmallSenseManager \
+	SmallSenseMethodInfo \
+	SmallSenseClassInfo \
+	SmallSenseTypeHolder \
+	SmallSenseClassType \
+	SmallSenseUnionType \
+	SmallSenseUnknownType \
+	SmallSenseCompletionWindow \
+	SmallSenseCriticsWindow \
+	SmallSenseUnacceptedMethodEnvironment \
+	SmallSenseQuickFixer \
+	SmallSenseSettingsAppl \
+	SmallSenseChecker \
+
+
+
+
+COMMON_OBJS= \
+    $(OUTDIR)SmallSenseParseNodeVisitor.$(O) \
+    $(OUTDIR)SmallSenseParser.$(O) \
+    $(OUTDIR)SmallSenseRecognizer.$(O) \
+    $(OUTDIR)SmallSenseResultItem.$(O) \
+    $(OUTDIR)SmallSenseResultSet.$(O) \
+    $(OUTDIR)SmallSenseSelectorNode.$(O) \
+    $(OUTDIR)SmallSenseService.$(O) \
+    $(OUTDIR)SmallSenseTypeCollector.$(O) \
+    $(OUTDIR)SmallSenseTypeCollectorCache.$(O) \
+    $(OUTDIR)stx_libtool_smallsense.$(O) \
+    $(OUTDIR)SmallSenseAbstractInstvarInterfaceExtractor.$(O) \
+    $(OUTDIR)SmallSenseClass.$(O) \
+    $(OUTDIR)SmallSenseConstant.$(O) \
+    $(OUTDIR)SmallSenseMethod.$(O) \
+    $(OUTDIR)SmallSenseSnippet.$(O) \
+    $(OUTDIR)SmallSenseVariable.$(O) \
+    $(OUTDIR)SmallSenseInstvarInterfaceExtractor.$(O) \
+    $(OUTDIR)SmallSenseParseNodeInspector.$(O) \
+    $(OUTDIR)SmallSenseFinder.$(O) \
+    $(OUTDIR)SmallSensePosition.$(O) \
+    $(OUTDIR)SmallSenseType.$(O) \
+    $(OUTDIR)SmallSenseInferencer.$(O) \
+    $(OUTDIR)SmallSenseInfo.$(O) \
+    $(OUTDIR)SmallSenseManager.$(O) \
+    $(OUTDIR)SmallSenseMethodInfo.$(O) \
+    $(OUTDIR)SmallSenseClassInfo.$(O) \
+    $(OUTDIR)SmallSenseTypeHolder.$(O) \
+    $(OUTDIR)SmallSenseClassType.$(O) \
+    $(OUTDIR)SmallSenseUnionType.$(O) \
+    $(OUTDIR)SmallSenseUnknownType.$(O) \
+    $(OUTDIR)SmallSenseCompletionWindow.$(O) \
+    $(OUTDIR)SmallSenseCriticsWindow.$(O) \
+    $(OUTDIR)SmallSenseUnacceptedMethodEnvironment.$(O) \
+    $(OUTDIR)SmallSenseQuickFixer.$(O) \
+    $(OUTDIR)SmallSenseSettingsAppl.$(O) \
+    $(OUTDIR)SmallSenseChecker.$(O) \
+    $(OUTDIR)extensions.$(O) \
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/Makefile	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,19 @@
+#
+# DO NOT EDIT
+#
+# make uses this file (Makefile) only, if there is no
+# file named "makefile" (lower-case m) in the same directory.
+# My only task is to generate the real makefile and call make again.
+# Thereafter, I am no longer used and needed.
+#
+
+.PHONY: run
+
+run: makefile
+	$(MAKE) -f makefile
+
+#only needed for the definition of $(TOP)
+include Make.proto
+
+makefile:
+	$(TOP)/rules/stmkmf
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseAbstractInstvarInterfaceExtractor.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,214 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseParser subclass:#SmallSenseAbstractInstvarInterfaceExtractor
+	instanceVariableNames:'stack copied initialStack saveStacks input collector
+		blockTraversal blockArgs'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Roel Typer'
+!
+
+
+!SmallSenseAbstractInstvarInterfaceExtractor methodsFor:'extracting'!
+
+extractInterfacesFrom:m addTo:aTypeCollector 
+    |parser|
+
+    method := m.
+    saveStacks := Dictionary new.
+    stack := OrderedCollection new.
+     "0 to: method numTemps - 1 do: [:i | stack add: #temp -> i ]."
+    initialStack := stack copy.
+    collector := aTypeCollector.
+    parser := SmalltalkXInstvarInterfaceExtractor new.
+    parser setColector:aTypeCollector.
+    input := parser 
+                parseMethod:method source
+                in:method mclass
+                ignoreErrors:false
+                ignoreWarnings:false.
+    blockTraversal := false.
+    blockArgs := 0.
+
+    [ input isNil ] whileFalse:[
+        self unaryExpressionFor:input.
+        input :=input nextStatement.
+    ]
+
+    "Modified: / 24-11-2010 / 22:24:16 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+extractInterfacesFrom:sourc class:class addTo:aTypeCollector 
+    |parser|
+
+    saveStacks := Dictionary new.
+    stack := OrderedCollection new.
+     "0 to: method numTemps - 1 do: [:i | stack add: #temp -> i ]."
+    initialStack := stack copy.
+    collector := aTypeCollector.
+    parser := SmalltalkXInstvarInterfaceExtractor new.
+    parser setColector:aTypeCollector.
+    input := parser 
+                parseMethod: sourc
+                in:class
+                ignoreErrors:false
+                ignoreWarnings:false.
+    blockTraversal := false.
+    blockArgs := 0.
+
+    [ input isNil ] whileFalse:[
+        self unaryExpressionFor:input.
+        input :=input nextStatement.
+    ]
+
+    "Created: / 17-03-2011 / 16:00:31 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseAbstractInstvarInterfaceExtractor methodsFor:'opcodes-control'!
+
+nativeSend: selector numArgs: na 
+        | receiver args |
+        args := stack removeLast: na.
+        receiver := stack removeLast.
+        receiver isInteger 
+                ifTrue: 
+                        [ collector 
+                                addSend: selector
+                                to: receiver ]
+                ifFalse: 
+                        [ receiver isVariableBinding ifTrue: 
+                                [ receiver key = #temp 
+                                        ifTrue: 
+                                                [ collector 
+                                                        addSend: selector
+                                                        toTmp: receiver value ]
+                                        ifFalse: 
+                                                [ receiver key = #return ifTrue: 
+                                                        [ collector 
+                                                                addSend: selector
+                                                                onReturnOfSelfMethod: receiver value ] ] ] ].
+        (receiver = #self and: [ collector theClass methodDictionary includesKey: selector ]) ifTrue: 
+                [ args doWithIndex: 
+                        [ :arg :index | 
+                        collector 
+                                handleAssignment: arg
+                                forTmp: index - 1
+                                in: collector theClass >> selector ] ].
+        stack add: (collector 
+                        pushSendOf: selector
+                        to: receiver
+                        args: args)
+
+    "Modified: / 18-05-2011 / 23:47:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+send: selector numArgs: na 
+	^self 
+		nativeSend: selector
+		numArgs: na
+! !
+
+!SmallSenseAbstractInstvarInterfaceExtractor methodsFor:'opcodes-data movement'!
+
+dupFirst
+	stack add: stack last
+!
+
+pop
+	stack removeLast
+!
+
+pushConstant: value
+	value class == BlockClosure
+		ifTrue:
+			[self
+				readBlock: value method
+				copied: 0]
+		ifFalse: [
+			blockArgs := value.
+			stack addLast: value class]
+!
+
+pushContext
+	stack add: #context
+!
+
+pushInst: index
+	stack add: index
+!
+
+pushReceiver
+	stack addLast: #self
+!
+
+pushStatic: assoc
+	"assoc can be an association OR a variable binding. I just push the complete association, since it does not interest me for the moment."
+
+	stack addLast: assoc
+! !
+
+!SmallSenseAbstractInstvarInterfaceExtractor methodsFor:'private'!
+
+copied: list
+	copied := list
+!
+
+initialize
+        super initialize.
+        blockTraversal := false.
+        blockArgs := 0.
+
+    "Modified: / 03-11-2010 / 21:27:34 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+input
+	^input
+!
+
+method: aMethod
+	method := aMethod.
+	copied := #()
+!
+
+readBlock: block copied: count
+        | newCopied |
+        newCopied := stack removeLast: count.
+        stack add: #block.
+        ^(self class new)
+                copied: newCopied;
+                extractInterfacesFrom: block source class:block mclass
+                        addTo: collector
+
+    "Modified: / 17-03-2011 / 16:01:39 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+reloadStack
+        stack isNil
+                ifTrue:
+                        [stack := self saveStacks
+                                at: self input startPosition
+                                ifAbsent: [initialStack copy].
+                        ^self].
+        stack := self saveStacks
+                at: self input startPosition
+                ifAbsent: [stack]
+
+    "Modified: / 28-10-2010 / 15:04:05 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+saveStacks
+	saveStacks ifNil: [saveStacks := Dictionary new].
+	^saveStacks
+!
+
+setColector:colectorSetter 
+    collector := colectorSetter.
+
+    "Created: / 03-11-2010 / 21:33:42 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseAbstractInstvarInterfaceExtractor class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseAbstractInstvarInterfaceExtractor.st 7823 2011-11-26 16:55:59Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseBaseTestClass.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,46 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+TestCase subclass:#SmallSenseBaseTestClass
+	instanceVariableNames:'u v'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Tests'
+!
+
+
+!SmallSenseBaseTestClass methodsFor:'generate'!
+
+doForSource:src 
+    |parser|
+
+    parser := SmallSenseParser new.
+    parser 
+        parseMethod:'gen' , src
+        in:self class
+        ignoreErrors:false
+        ignoreWarnings:false.
+    ^ parser.
+
+    "Created: / 16-03-2011 / 12:27:38 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 17:45:23 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+processMethod: aCompiledMethod
+        "Fail by default. Needs to be overridden by subclasses to trigger the base testing backbone."
+
+        | collector |
+        collector := TypeCollector onClass: self class.
+        collector currentExtractedMethod: aCompiledMethod.
+        TypeCollector new newExtractor
+                extractInterfacesFrom: aCompiledMethod source class:aCompiledMethod mclass
+                addTo: collector.
+        ^collector
+
+    "Created: / 17-03-2011 / 16:56:07 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseBaseTestClass class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseBaseTestClass.st 7700 2011-04-06 19:18:57Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseChecker.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,104 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmalllintChecker subclass:#SmallSenseChecker
+	instanceVariableNames:''
+	classVariableNames:'Errors'
+	poolDictionaries:''
+	category:'SmallSense-Lint'
+!
+
+!SmallSenseChecker class methodsFor:'documentation'!
+
+documentation
+"
+    SmallSenseChecker is customized SmalllintChecker used
+    by SmallSense's checking services. Do not use it in your
+    code, use SmalllintChecker instead.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+        SmalllintChecker
+        SmallSenseService
+
+"
+! !
+
+!SmallSenseChecker class methodsFor:'initialization'!
+
+initialize
+    "Invoked at system start or when the class is dynamically loaded."
+
+    "/ please change as required (and remove this comment)
+
+    Errors := Dictionary new.
+
+    "Modified: / 06-09-2012 / 14:18:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseChecker class methodsFor:'accessing'!
+
+forceDisabledRules
+    "Return a list of rule class names that
+     are never run by SmallSense's checker - they
+     are either buggy (i.e.. not ready to be run
+     incrementally) or it does not make sense to run them
+     Add with care!!!!!!
+    "
+
+    ^ #(
+        RBLawOfDemeterRule          "/ Too many false positives, hard to fix
+        RBImplementedNotSentRule    "/ Uses Context>>#computeLiterals whichs toooo slow.
+        RBSentNotImplementedRule    "/ Uses Context>>#computeLiterals whichs toooo slow.
+        RBUndeclaredReferenceRule   "/
+    )
+
+    "Created: / 17-02-2012 / 13:10:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseChecker methodsFor:'private'!
+
+checkClass: aClass 
+
+    "Nothing to do, SmallSense checker checks only methods"
+    context selectedClass: aClass.
+
+    "Created: / 16-02-2012 / 16:12:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+checkMethodsForClass: aClass
+
+    environment selectorsForClass: aClass do: [:sel|
+        context selector: sel.
+        context parseTree notNil ifTrue:[
+            rule flattened do:[:each|
+                [
+                    each checkMethod: context.
+                ] on: Error do:[:ex|
+                    SmallSenseService debugging ifTrue:[
+                        SmallSenseService debugging: false.
+                        ex pass.
+                    ] ifFalse:[
+                        Errors at: each class ifAbsentPut:[ context method source ].
+                    ]
+                ]
+            ].
+        ].
+    ]
+
+    "Modified: / 24-08-2010 / 21:32:39 / Jan Vrany <enter your email here>"
+    "Created: / 17-02-2012 / 00:50:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseChecker class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseChecker.st 8046 2012-09-06 16:38:47Z vranyj1 $'
+! !
+
+SmallSenseChecker initialize!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseClass.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,39 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseResultItem subclass:#SmallSenseClass
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core'
+!
+
+
+!SmallSenseClass methodsFor:'accessing'!
+
+icon
+
+    icon ifNil:[icon := SystemBrowser iconForClass: subject].
+    ^icon
+
+    "Created: / 06-04-2011 / 23:36:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+subject: aClass
+
+    super subject: aClass.
+    name := aClass name.
+
+    "Created: / 06-04-2011 / 21:02:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseClass methodsFor:'testing'!
+
+isSmallSenseClass
+    ^ true
+! !
+
+!SmallSenseClass class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseClass.st 7825 2011-11-26 18:32:31Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseClassInfo.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,106 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseInfo subclass:#SmallSenseClassInfo
+	instanceVariableNames:'className methods instvars'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Model'
+!
+
+
+!SmallSenseClassInfo class methodsFor:'instance creation'!
+
+new
+    "return an initialized instance"
+
+    ^ self basicNew initialize.
+! !
+
+!SmallSenseClassInfo methodsFor:'accessing'!
+
+className
+    ^ className
+!
+
+infoForInstvar: ivarName
+
+    ^instvars at: ivarName ifAbsentPut:[
+        SmallSenseType default.
+    ]
+
+    "Created: / 27-11-2011 / 16:44:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+infoForInstvarOrNil: ivarName
+
+    ^instvars at: ivarName ifAbsent: nil
+
+    "Created: / 27-11-2011 / 17:15:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+infoForSelector: selector
+
+    ^methods at: selector ifAbsentPut:[
+        SmallSenseMethodInfo new setManager: manager classInfo: self selector: selector.
+
+    ]
+
+    "Created: / 27-11-2011 / 16:26:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+infoForSelectorOrNil: selector
+
+    ^methods at: selector ifAbsent:nil
+
+    "Created: / 27-11-2011 / 17:15:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+superclassInfo
+
+    | nm meta cls |
+
+    (className endsWith:' class') ifTrue:[
+        nm := (className copyTo: className size - 6) asSymbol.
+        meta := true.
+    ] ifFalse:[
+        nm := className asSymbol.
+        meta := false.
+    ].
+    cls := Smalltalk at: nm.
+    cls isNil ifTrue:[ ^ nil ].
+    meta ifTrue:[cls := cls theMetaclass].
+
+    ^ manager infoForClass: cls superclass
+
+    "Modified: / 29-11-2011 / 16:02:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseClassInfo methodsFor:'initialization'!
+
+initialize
+    "Invoked when a new instance is created."
+
+    "/ please change as required (and remove this comment)
+    "/ superclassInfo := nil.
+    "/ className := nil.
+    methods := Dictionary new.
+    instvars := Dictionary new.
+
+    "/ super initialize.   -- commented since inherited method does nothing
+
+    "Modified: / 27-11-2011 / 16:53:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setManager: mgr className: nm
+
+    manager := mgr.
+    className := nm
+
+    "Created: / 29-11-2011 / 15:57:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseClassInfo class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseClassInfo.st 7840 2011-12-16 08:48:11Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseClassType.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,109 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseType subclass:#SmallSenseClassType
+	instanceVariableNames:'trustfullness klass'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Types'
+!
+
+
+!SmallSenseClassType methodsFor:'accessing'!
+
+klass
+    ^ klass
+!
+
+klass:aClass
+    klass := aClass.
+
+    "Some manual trustfullness tweaks"
+
+    klass == Object ifTrue:[
+        self trustfullnessAdd: -10. 
+    ]
+
+    "Modified: / 17-05-2012 / 19:59:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+trustfullness
+    ^ trustfullness ? 20
+
+    "Modified: / 17-05-2012 / 19:35:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+trustfullness:something
+    trustfullness := something min: 100.
+
+    "Modified: / 17-05-2012 / 19:46:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseClassType methodsFor:'comparing'!
+
+= another
+
+    ^self class == another class 
+        and:[klass == another klass]
+
+    "Modified: / 16-12-2011 / 13:38:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hash
+
+    ^ klass hash
+
+    "Modified: / 16-12-2011 / 13:38:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseClassType methodsFor:'enumerating'!
+
+classesDo:aBlock
+    "Enumerate all classes that this type represents"
+
+    ^ aBlock value: klass
+
+    "Modified: / 16-12-2011 / 13:33:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseClassType methodsFor:'operations'!
+
+classSide
+    "superclass SmallSenseType says that I am responsible to implement this method"
+
+    ^ self class new klass: klass class
+
+    "Modified: / 16-12-2011 / 13:21:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+instanceSide
+    "superclass SmallSenseType says that I am responsible to implement this method"
+
+    ^ self class new klass: klass theNonMetaclass
+
+    "Modified: / 16-12-2011 / 13:23:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseClassType methodsFor:'printing & storing'!
+
+printWithoutAnglesOn:aStream
+    "superclass SmallSenseType says that I am responsible to implement this method"
+
+    klass printOn: aStream
+
+    "Modified: / 16-12-2011 / 01:54:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseClassType methodsFor:'testing'!
+
+isClassType
+
+    ^true
+
+    "Created: / 16-12-2011 / 02:00:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseClassType class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseClassType.st 8000 2012-05-17 23:16:11Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseCompletionWindow.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,333 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SimpleDialog subclass:#SmallSenseCompletionWindow
+	instanceVariableNames:'codeView result position textHolder selectionHolder
+		selectionUnambigous listHolder'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Interface'
+!
+
+
+!SmallSenseCompletionWindow class methodsFor:'interface opening'!
+
+openForView: codeView class: class
+
+    ^self new  
+        initializeForView: codeView class: class;
+        completeOrOpen;
+        yourself
+
+    "Created: / 04-04-2011 / 11:54:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 17-02-2012 / 10:29:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseCompletionWindow 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:SmallSenseCompletionWindow andSelector:#windowSpec
+     SmallSenseCompletionWindow new openInterface:#windowSpec
+     SmallSenseCompletionWindow open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: 'SmallSenseMenu'
+          name: 'SmallSenseMenu'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 400 250)
+          returnIsOKInDialog: false
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (SelectionInListModelViewSpec
+              name: 'Completions'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              model: selectionHolder
+              hasHorizontalScrollBar: true
+              hasVerticalScrollBar: true
+              miniScrollerHorizontal: true
+              backgroundColor: (Color 100.0 100.0 100.0)
+              listModel: listHolder
+              useIndex: false
+              highlightMode: line
+              postBuildCallback: postBuildList:
+            )
+           )
+         
+        )
+      )
+! !
+
+!SmallSenseCompletionWindow methodsFor:'aspects'!
+
+listHolder
+
+    
+    listHolder isNil 
+        ifTrue:
+            [ listHolder := ValueHolder new].
+    ^ listHolder.
+
+    "Modified: / 04-04-2011 / 21:26:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectionHolder
+    <resource: #uiAspect>
+
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    selectionHolder isNil ifTrue:[
+        selectionHolder := ValueHolder new.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       selectionHolder addDependent:self.
+"/       selectionHolder onChangeSend:#selectionHolderChanged to:self.
+    ].
+    ^ selectionHolder.
+!
+
+textHolder
+    "return/create the 'textHolder' value holder (automatically generated)"
+
+    textHolder isNil ifTrue:[
+        textHolder := ValueHolder with:''.
+        textHolder onChangeSend:#updateList to: self.
+    ].
+    ^ textHolder
+
+    "Modified: / 26-11-2011 / 17:25:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseCompletionWindow methodsFor:'change & update'!
+
+updateList
+
+    "Experiments with new UI"
+
+    | t |
+    result items size == 0 ifTrue:[^self].
+
+    t := self textHolder value.
+    self listHolder value isNil ifTrue:
+        [self listHolder value:result items].
+    [ t size > 0 ] whileTrue:[
+        result items withIndexDo: [:e :i| 
+            (e startsWith: t) ifTrue: [
+                self selectionHolder value: e.
+                ^self
+            ]
+        ].
+        t := t allButLast.
+    ]
+
+    "
+    | t list |
+    t := self textHolder value.
+    list := (result objectCollection select:[:e|e stringToComplete startsWith: t]).
+    self listHolder value: list.
+    list size = 1 ifTrue:[self selectionHolder value: list anyOne].
+    "
+
+    "Created: / 04-04-2011 / 15:43:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 26-11-2011 / 19:25:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseCompletionWindow methodsFor:'events'!
+
+complete
+    | selection text lineNo line |
+
+    selection := self selectionHolder value stringToComplete.
+    text := self textHolder value.
+    lineNo := codeView cursorLine.
+    line := codeView list at: (lineNo min: codeView list size).
+    line := ((line size < (codeView cursorCol - text size - 1)) 
+                ifTrue: [line , (String new: (codeView cursorCol - text size - 1 - line size))]
+                ifFalse:[line copyTo: codeView cursorCol - text size - 1])
+                , selection 
+                    , (line copyFrom: codeView cursorCol + 1).
+    codeView list at: lineNo put: line.
+    codeView cursorCol: codeView cursorCol - text size + self selectionHolder value cursorColumnAfterComplete.
+    codeView redrawLine:lineNo.
+
+    "Created: / 26-11-2011 / 19:10:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+handlesKeyPress:key inView:aView
+
+    "/Transcript showCR: 'SmallSenseCompletionWindow handlesKeyPress: ' , key.
+    key isCharacter ifTrue:[^true].
+    ^#(BackSpace Return) includes: key
+
+    "Created: / 04-04-2011 / 15:52:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 05-04-2011 / 00:03:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+keyPress:key x:x y:y view:aView
+
+    "/Transcript showCR: 'SmallSenseCompletionWindow keyPress: ' , key.
+
+    key isCharacter ifTrue:[self keyPressCharacter: key x:x y:y. ^self].
+    key == #BackSpace ifTrue:[self keyPressBackSpaceX:x y:y.^self].
+    key == #Return ifTrue:[self keyPressReturnX:x y:y.^self]
+
+    "Created: / 04-04-2011 / 15:51:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 05-04-2011 / 00:03:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+keyPressBackSpaceX:x y:y
+
+    | text |
+    codeView textView keyPress:#BackSpace x:x y:y.
+    text := self textHolder value.
+    text size == 0 ifTrue:[self close. ^self].
+    self textHolder value: (text copyTo: text size - 1).
+
+    "Created: / 04-04-2011 / 16:56:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 08-04-2011 / 22:49:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+keyPressCharacter: char x:x y:y
+
+    | text |
+    text := self textHolder value.
+    self textHolder value: (text , char).
+    codeView textView keyPress:char x:x y:y.
+
+    "Created: / 04-04-2011 / 16:56:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+keyPressReturnX:x y:y
+
+    self selectionHolder value isNil ifTrue:[self close.^self].
+    self complete.
+    self close.
+
+    "Created: / 04-04-2011 / 16:57:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 26-11-2011 / 19:11:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseCompletionWindow methodsFor:'hooks'!
+
+postBuildList: listView
+
+    listView scrolledView
+        background: codeView background;
+        font: codeView font;
+        delegate: self.
+
+    "Created: / 03-04-2011 / 10:39:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 04-04-2011 / 15:50:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+postBuildWith: builder
+
+    builder window 
+        windowGroup: codeView windowGroup;
+        bePopUpView; 
+        beSlave.
+    builder window sensor setCtrlDown: false.
+
+    "Created: / 03-04-2011 / 10:45:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 02-06-2011 / 21:36:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseCompletionWindow methodsFor:'initialization'!
+
+initializeForView: view class: class
+
+    | p node |
+    
+    codeView := view.
+    p := codeView characterPositionOfCursor.
+    result := SmallSenseRecognizer
+                            resultSetFor: codeView mode
+                            source: codeView contents
+                            class: class
+                            line: codeView cursorLine
+                            column: codeView cursorCol.
+
+    result isEmpty ifFalse:[
+        (p := result position) notNil ifTrue:[
+            node := p node.                    
+            node notNil ifTrue:[
+                (node isVariable and:[p inNode]) ifTrue:[
+                    self textHolder value: node name
+                ] ifFalse:[node isMessage ifTrue:[
+                    self textHolder value: node selector
+                ]].
+            ].            
+        ].
+        self updateList
+    ].
+
+    "Created: / 04-04-2011 / 11:56:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 06-04-2011 / 17:37:25 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 27-11-2011 / 10:06:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseCompletionWindow methodsFor:'interface opening'!
+
+completeOrOpen
+
+    | text matching v|
+
+    result isEmpty ifTrue:[^self].
+
+    (text := textHolder value) notEmptyOrNil ifTrue:[
+        matching := result items select:[:item|item startsWith: text].
+        matching size == 1 ifTrue:[
+            v := matching anElement.
+            (v := selectionHolder value) notNil ifTrue:[
+                (v isSmallSenseVariable or:[v isSmallSenseClass]) ifTrue:[
+                    self complete.
+                    ^self.
+                ]
+            ].        
+       ].
+    ].
+
+    self openModal.
+
+    "Created: / 26-11-2011 / 19:08:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+openModal
+
+    | p textView x y |
+
+    textView := codeView textView.
+    x := (textView xOfCol:textView cursorCol  inVisibleLine:textView cursorLine)
+            - 16"icon" - (textView widthOfString: self textHolder value) - 5"magic constant".
+    y := textView yOfCursor + textView font maxHeight + 3.
+    p := (textView originRelativeTo: nil) + (x @ y).
+
+    self openInterfaceModal:#windowSpec at:p
+
+    "Created: / 04-04-2011 / 21:12:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseCompletionWindow class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseCompletionWindow.st 7911 2012-02-22 09:55:48Z vranyj1 $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseConstant.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,21 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseResultItem subclass:#SmallSenseConstant
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core'
+!
+
+
+!SmallSenseConstant methodsFor:'testing'!
+
+isSmallSenseConstant
+    ^ true
+! !
+
+!SmallSenseConstant class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseConstant.st 7825 2011-11-26 18:32:31Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseCriticsWindow.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,312 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+ApplicationModel subclass:#SmallSenseCriticsWindow
+	instanceVariableNames:'ruleHolder ruleRationaleAndFixesHTMLHolder rationalView fixer
+		entered codeView'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Interface'
+!
+
+
+!SmallSenseCriticsWindow 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:SmallSenseCriticsWindow andSelector:#windowSpec
+     SmallSenseCriticsWindow new openInterface:#windowSpec
+     SmallSenseCriticsWindow open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: 'SmalllintRuleDetail'
+          name: 'SmalllintRuleDetail'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 418 219)
+          backgroundColor: (Color 94.1176470588235 93.7254901960784 59.2156862745098)
+          forceRecursiveBackgroundOfDefaultBackground: true
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LinkButtonSpec
+              name: 'Button1'
+              layout: (LayoutFrame -1 0 -1 0 1 1 30 0)
+              activeHelpKey: ruleName
+              level: 0
+              backgroundColor: (Color 94.1176470588235 93.7254901960784 59.2156862745098)
+              translateLabel: true
+              labelChannel: ruleNameAspect
+              adjust: left
+              model: browseLintRule
+            )
+           (ActionButtonSpec
+              label: 'X'
+              name: 'Button2'
+              layout: (LayoutFrame -30 1 0 0 0 1 30 0)
+              level: 0
+              backgroundColor: (Color 94.1176470588235 93.7254901960784 59.2156862745098)
+              translateLabel: true
+              model: closeRequest
+            )
+           (HTMLViewSpec
+              name: 'Rationale'
+              layout: (LayoutFrame 0 0 28 0 0 1 0 1)
+              level: 0
+              visibilityChannel: rationaleVisibleHolder
+              hasHorizontalScrollBar: true
+              hasVerticalScrollBar: true
+              backgroundColor: (Color 94.1176470588235 93.7254901960784 59.2156862745098)
+              htmlText: ruleRationaleAndFixesHTMLHolder
+              postBuildCallback: setupHTMLView:
+            )
+           )
+         
+        )
+      )
+! !
+
+!SmallSenseCriticsWindow class methodsFor:'plugIn spec'!
+
+aspectSelectors
+    "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."
+
+    "Return a description of exported aspects;
+     these can be connected to aspects of an embedding application
+     (if this app is embedded in a subCanvas)."
+
+    ^ #(
+        #ruleHolder
+      ).
+
+! !
+
+!SmallSenseCriticsWindow methodsFor:'accessing'!
+
+codeView
+    ^ codeView
+!
+
+codeView:aCodeView2
+    codeView := aCodeView2.
+!
+
+rule
+
+    ^self ruleHolder value.
+
+    "Created: / 30-01-2012 / 21:45:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+rule: anRBLintRule
+
+    ^self ruleHolder value: anRBLintRule
+
+    "Created: / 30-01-2012 / 21:45:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseCriticsWindow methodsFor:'actions'!
+
+browseLintRule
+    |rule ruleClass sel|
+
+    rule := self ruleHolder value.
+    rule isNil ifTrue:[^ self].
+    ruleClass := rule class.
+    (ruleClass implements:#rationale) ifTrue:[
+        sel := #rationale.
+    ].
+    self close.
+    UserPreferences current systemBrowserClass
+       openInClass:ruleClass selector:sel.
+
+    "Created: / 07-09-2011 / 04:09:38 / cg"
+    "Modified: / 31-01-2012 / 11:30:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doQuickFix: quickFixNo
+
+    self closeDownViews.
+    [ fixer performFix: quickFixNo ] fork.
+
+    "Created: / 16-02-2012 / 14:19:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseCriticsWindow methodsFor:'aspects'!
+
+ruleHolder
+    "return/create the 'ruleHolder' value holder (automatically generated)"
+
+    ruleHolder isNil ifTrue:[
+        ruleHolder := ValueHolder with: (RBDebuggingCodeLeftInMethodsRule new)
+    ].
+    ^ ruleHolder
+
+    "Modified: / 30-01-2012 / 21:43:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+ruleHolder:something
+    "set the 'ruleHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    ruleHolder notNil ifTrue:[
+	oldValue := ruleHolder value.
+	ruleHolder removeDependent:self.
+    ].
+    ruleHolder := something.
+    ruleHolder notNil ifTrue:[
+	ruleHolder addDependent:self.
+    ].
+    newValue := ruleHolder value.
+    oldValue ~~ newValue ifTrue:[
+	self update:#value with:newValue from:ruleHolder.
+    ].
+!
+
+ruleNameAspect
+    <resource: #uiAspect>
+
+    |holder|
+
+    (holder := builder bindingAt:#ruleNameAspect) isNil ifTrue:[
+        holder := BlockValue
+                    with:[:h | 
+                        "/ h displayString , ' ' , (('[browse]' actionForAll:[ self browseLintRule]) colorizeAllWith:Color blue) 
+                        h displayString actionForAll:[ self browseLintRule] 
+                    ]
+                    argument: self ruleHolder.
+        builder aspectAt:#ruleNameAspect put:holder.
+    ].
+    ^ holder.
+
+    "Modified: / 05-02-2010 / 12:51:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-09-2011 / 04:54:24 / cg"
+!
+
+ruleRationaleAndFixesHTMLHolder
+    "return/create the 'ruleRationaleAndFixesHTMLHolder' value holder (automatically generated)"
+
+    ruleRationaleAndFixesHTMLHolder isNil ifTrue:[
+        ruleRationaleAndFixesHTMLHolder := ValueHolder new.
+    ].
+    ^ ruleRationaleAndFixesHTMLHolder
+
+    "Modified (format): / 01-02-2012 / 10:57:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseCriticsWindow methodsFor:'change & update'!
+
+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 == ruleHolder ifTrue:[
+         self updateRationaleAndFixes.
+         ^ self.
+    ].
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 01-02-2012 / 10:56:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateRationaleAndFixes
+
+    | rule html |
+    rule := self ruleHolder value.
+    rule isNil ifTrue:[
+        fixer := nil.
+        html :=  'No rule...'.
+    ] ifFalse:[
+        fixer := SmallSenseQuickFixer for: rule view: codeView.
+        html := String streamContents:[:s|
+                    s nextPutAll: rule rationale ; cr.
+                    fixer printHtmlOn: s.
+                ]
+    ].
+
+    self ruleRationaleAndFixesHTMLHolder value: html
+
+    "Created: / 01-02-2012 / 10:56:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseCriticsWindow methodsFor:'event processing'!
+
+processEvent: anEvent
+
+"/    entered ifFalse:[
+"/        anEvent isPointerLeaveEvent ifTrue:[
+"/            anEvent view == self window ifTrue:[
+"/                entered := true.
+"/            ]
+"/        ]
+"/    ] ifTrue:[
+        anEvent isPointerLeaveEvent ifTrue:[
+            anEvent view == self window ifTrue:[
+                self closeDownViews.
+                ^true.
+            ]
+        ].
+"/    ].
+
+    ^false
+
+    "Created: / 16-02-2012 / 14:09:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseCriticsWindow methodsFor:'hooks'!
+
+postBuildWith: bldr
+
+    entered := false.
+    self updateRationaleAndFixes.
+    bldr window 
+        "windowGroup: codeView windowGroup;"
+        bePopUpView; 
+        beSlave.
+
+    "Created: / 03-04-2011 / 10:45:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 16-02-2012 / 14:14:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+postOpenWith: bldr
+
+    self windowGroup addPreEventHook: self.
+
+    "Created: / 16-02-2012 / 14:09:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseCriticsWindow methodsFor:'initialization'!
+
+setupHTMLView:aView
+    rationalView := aView.
+    aView painter
+        leftMargin:20;
+        topMargin:5.
+
+    "Created: / 04-08-2011 / 18:00:36 / cg"
+! !
+
+!SmallSenseCriticsWindow class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseCriticsWindow.st 7911 2012-02-22 09:55:48Z vranyj1 $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseFinder.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,70 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseParseNodeVisitor subclass:#SmallSenseFinder
+	instanceVariableNames:'position match previous'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core'
+!
+
+
+!SmallSenseFinder methodsFor:'finding'!
+
+findNodeIn: source tree: tree line: line column: col
+
+    | sourceS |
+    sourceS := source readStream.
+    line - 1 timesRepeat:[
+        (sourceS nextLine) isNil ifTrue:[
+            "No such line"                                
+            ^nil
+        ].        
+    ].
+    ^self findNodeIn: source tree: tree position: sourceS position + col
+
+    "Created: / 26-11-2011 / 15:33:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+findNodeIn: source tree: tree position: pos
+
+    position := pos - 1.
+    self visit: tree.
+    ^SmallSensePosition node: match ? previous position: pos.
+
+    "Created: / 26-11-2011 / 15:37:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseFinder methodsFor:'visiting'!
+
+visit:anObject 
+
+    anObject isNil ifTrue:[^self].
+
+    (position > anObject endPosition) ifTrue:[
+        previous := anObject.
+        anObject acceptVisitor: self.
+        ^self.
+    ].
+
+    (position between: anObject startPosition and: anObject endPosition) ifTrue:[
+        match := anObject.
+        anObject acceptVisitor: self.
+    ].
+
+    "Created: / 26-11-2011 / 15:40:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitStatementNode:anObject 
+
+    self visit: anObject expression.
+    self visit: anObject nextStatement.
+
+    "Modified: / 25-07-2011 / 22:34:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 26-11-2011 / 15:40:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseFinder class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseFinder.st 7823 2011-11-26 16:55:59Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseFinderTests.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,9696 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseTestCase subclass:#SmallSenseFinderTests
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Tests'
+!
+
+
+!SmallSenseFinderTests methodsFor:'BeforeStatementTests'!
+
+testBeforeStatement1
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:2
+                position:21
+                tree:collector tree.
+    self assert:(foundNode beforeStatement isNil).
+
+    "Created: / 02-03-2011 / 20:02:25 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement10
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:21
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isAssignment).
+
+    "Created: / 02-03-2011 / 20:16:47 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement11
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:23
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 21:13:28 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement12
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:24
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 21:13:46 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement13
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:25
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 21:20:04 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement14
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:26
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+    self assert:(foundNode beforeStatement name = 'u').
+
+    "Created: / 02-03-2011 / 21:20:27 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement15
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:31
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+    self assert:(foundNode beforeStatement name = 'u').
+
+    "Created: / 02-03-2011 / 21:37:15 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement16
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:32
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 21:37:39 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement17
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:33
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 21:42:47 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement18
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:35
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 21:44:49 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement19
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:36
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 21:45:11 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement2
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:2
+                position:24
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 20:02:40 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement20
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:38
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 21:59:58 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement21
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:40
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isAssignment).
+
+    "Created: / 02-03-2011 / 22:00:10 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement22
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:5
+                position:21
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isAssignment).
+
+    "Created: / 02-03-2011 / 22:13:33 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement23
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:5
+                position:22
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isAssignment).
+
+    "Created: / 02-03-2011 / 22:13:51 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement24
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:5
+                position:23
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 22:14:12 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement25
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:5
+                position:29
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 22:14:52 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement26
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:5
+                position:30
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 02-03-2011 / 22:18:54 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement27
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:5
+                position:31
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 02-03-2011 / 22:31:14 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement28
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:5
+                position:32
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 02-03-2011 / 22:37:05 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement29
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:5
+                position:33
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 22:37:13 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement3
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:2
+                position:26
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 20:07:16 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement30
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:5
+                position:40
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 22:37:57 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement31
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:21
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 22:43:37 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement32
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:22
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 22:44:37 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement33
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:23
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 22:44:48 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement34
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:24
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 22:51:21 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement35
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:29
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 22:51:33 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement36
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:30
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 02-03-2011 / 22:51:50 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement37
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:31
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 02-03-2011 / 22:52:09 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement38
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:33
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isConstant).
+
+    "Created: / 02-03-2011 / 22:52:39 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement39
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:35
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 02-03-2011 / 22:57:40 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement4
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:2
+                position:27
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 20:07:32 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement40
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:37
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 22:58:16 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement41
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:21
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 22:58:46 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement42
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:26
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelf).
+
+    "Created: / 02-03-2011 / 22:59:09 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement43
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:45
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 02-03-2011 / 23:00:06 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement44
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:49
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 23:01:40 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 00:05:41 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement45
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:51
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 23:02:49 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement46
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:55
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 23:03:14 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement47
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:60
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 02-03-2011 / 23:04:14 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement48
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:63
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 23:04:38 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement49
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:65
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 23:14:59 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement5
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:21
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isAssignment).
+
+    "Created: / 02-03-2011 / 20:07:50 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement50
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:68
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 23:15:18 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement51
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:73
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 02-03-2011 / 23:15:34 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement52
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:75
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 02-03-2011 / 23:16:16 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement53
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:77
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 23:16:32 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement54
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d  .
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:83
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 23:16:56 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement55
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d  .
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:8
+                position:20
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 23:17:32 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement56
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d  .
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:8
+                position:28
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 23:43:04 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement57
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d  .
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:8
+                position:41
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 23:43:29 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement58
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d  .
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:8
+                position:44
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isAssignment).
+
+    "Created: / 02-03-2011 / 23:44:12 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement59
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d  .
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:9
+                position:42
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 23:44:49 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement6
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:22
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isAssignment).
+
+    "Created: / 02-03-2011 / 20:15:09 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement60
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d  .
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:22
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isAssignment).
+
+    "Created: / 02-03-2011 / 23:46:27 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement61
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d  .
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:27
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 02-03-2011 / 23:46:50 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement62
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d  .
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:45
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 23:47:36 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement63
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d  .
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:35
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 23:57:56 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement64
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d  .
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:51
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isBlock).
+
+    "Created: / 02-03-2011 / 23:58:33 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement65
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u .
+                    d  floor: 3 b:u .
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:  c dd:d  .
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:61
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 02-03-2011 / 23:59:03 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement7
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:23
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 20:15:27 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement8
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:24
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 20:15:55 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBeforeStatement9
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:27
+                tree:collector tree.
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isAssignment).
+
+    "Created: / 02-03-2011 / 20:16:10 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseFinderTests methodsFor:'FinderTests'!
+
+testFinder1
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u .
+                    d floor:3 b:u.
+                     self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ]     .
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:1
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode position) = 1).
+    self assert:((foundNode line) = 3).
+    self assert:(foundNode node isNil).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 22-02-2011 / 14:40:34 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 27-02-2011 / 23:36:22 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder10
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3 .
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:5
+                position:24
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 5).
+    self assert:((foundNode position) = 24).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:46:15 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 25-02-2011 / 17:13:25 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder100
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:18
+                position:22
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 18).
+    self assert:((foundNode position) = 22).
+    self assert:((foundNode node) ~= (foundNode statement)).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 18:29:35 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder101
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:18
+                position:23
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 18).
+    self assert:((foundNode position) = 23).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode node line = 18).
+    self assert:(foundNode node charIndex = 23).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 18:44:06 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder102
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:18
+                position:24
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 18).
+    self assert:((foundNode position) = 24).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode node line = 18).
+    self assert:(foundNode node charIndex = 23).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 18:45:17 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder103
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:18
+                position:25
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 18).
+    self assert:((foundNode position) = 25).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node lines size = 1).
+    self assert:(foundNode node lines at:1) = 18.
+    self assert:(foundNode node selectorsPosition = 24).
+    self assert:(foundNode node selectors asString = '==').
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 18:45:32 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder104
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol or: [u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:18
+                position:26
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 18).
+    self assert:((foundNode position) = 26).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node lines size = 1).
+    self assert:(foundNode node lines at:1) = 18.
+    self assert:(foundNode node selectorsPosition = 24).
+    self assert:(foundNode node selectors asString = '==').
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 18:48:13 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder105
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol or: [u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:18
+                position:27
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 18).
+    self assert:((foundNode position) = 27).
+    self assert:(foundNode node isConstant).
+    self assert:(foundNode node value = #Symbol).
+    self assert:(foundNode node line = 18).
+    self assert:(foundNode node charIndex = 27).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 18:48:41 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder106
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:18
+                position:34
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 18).
+    self assert:((foundNode position) = 34).
+    self assert:(foundNode node isConstant).
+    self assert:(foundNode node value = #Symbol).
+    self assert:(foundNode node line = 18).
+    self assert:(foundNode node charIndex = 27).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 18:49:43 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder107
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:18
+                position:35
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 18).
+    self assert:((foundNode position) = 35).
+    self assert:(foundNode node isMessage).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 18:52:10 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder108
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:18
+                position:36
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 18).
+    self assert:((foundNode position) = 36).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node lines size = 1).
+    self assert:(foundNode node lines at:1) = 18.
+    self assert:((foundNode node selectorsPosition at:1) = 36).
+    self assert:(foundNode node selectors asString = 'or:').
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 18:53:20 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder109
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:18
+                position:39
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 18).
+    self assert:((foundNode position) = 39).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node lines size = 1).
+    self assert:(foundNode node lines at:1) = 18.
+    self assert:((foundNode node selectorsPosition at:1) = 36).
+    self assert:(foundNode node selectors asString = 'or:').
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 18:55:26 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder11
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:5
+                position:29
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 5).
+    self assert:((foundNode position) = 29).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:47:36 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 28-02-2011 / 19:52:00 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder110
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [
+                    u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:18
+                position:40
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 18).
+    self assert:((foundNode position) = 40).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node lines size = 1).
+    self assert:(foundNode node lines at:1) = 18.
+    self assert:((foundNode node selectorsPosition at:1) = 36).
+    self assert:(foundNode node selectors asString = 'or:').
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 18:56:26 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder111
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [
+                    u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:19
+                position:20
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 19).
+    self assert:((foundNode position) = 20).
+    self assert:(foundNode node isMessage).
+    self assert:((foundNode node) ~= (foundNode statement)).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 18:57:19 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder112
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [
+                    u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:18
+                position:42
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 18).
+    self assert:((foundNode position) = 42).
+    self assert:(foundNode node isMessage).
+    self assert:((foundNode node) ~= (foundNode statement)).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 19:39:49 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder113
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [
+                    u=3  ]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:19
+                position:25
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 19).
+    self assert:((foundNode position) = 25).
+    self assert:(foundNode node isMessage).
+    self assert:((foundNode node) ~= (foundNode statement)).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 19:46:28 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder114
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [
+                    u=3  ]  ]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:19
+                position:27
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 19).
+    self assert:((foundNode position) = 27).
+    self assert:(foundNode node isBlock).
+    self assert:(foundNode node lineNumber = 18).
+    self assert:(foundNode node endLineNumber = 19).
+    self assert:(foundNode node charStartIndex = 40).
+    self assert:(foundNode node charEndIndex = 26).
+    self assert:((foundNode node) ~= (foundNode statement)).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 19:47:30 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder115
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [
+                    u=3  ]  ]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:19
+                position:29
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 19).
+    self assert:((foundNode position) = 29).
+    self assert:(foundNode node isBlock).
+    self assert:(foundNode node lineNumber = 18).
+    self assert:(foundNode node endLineNumber = 19).
+    self assert:(foundNode node charStartIndex = 40).
+    self assert:(foundNode node charEndIndex = 26).
+    self assert:((foundNode node) ~= (foundNode statement)).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 19:48:17 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder116
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [
+                    u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:19
+                position:30
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 19).
+    self assert:((foundNode position) = 30).
+    self assert:(foundNode node isBlock).
+    self assert:(foundNode node lineNumber = 18).
+    self assert:(foundNode node endLineNumber = 19).
+    self assert:(foundNode node charStartIndex = 21).
+    self assert:(foundNode node charEndIndex = 29).
+    self assert:((foundNode node) ~= (foundNode statement)).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 19:48:46 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder117
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [
+                    u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:23
+                position:23
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 23).
+    self assert:((foundNode position) = 23).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'dd').
+    self assert:(foundNode node line = 23).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 19:54:03 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder118
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [
+                    u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+
+.
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:27
+                position:23
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 27).
+    self assert:((foundNode position) = 23).
+    self assert:(foundNode node isBlock).
+    self assert:(foundNode node lineNumber = 26).
+    self assert:(foundNode node endLineNumber = 27).
+    self assert:(foundNode node charStartIndex = 27).
+    self assert:(foundNode node charEndIndex = 21).
+    self assert:((foundNode node) ~= (foundNode statement)).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 19:56:23 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder119
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [
+                    u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+
+.
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:26
+                position:29
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 26).
+    self assert:((foundNode position) = 29).
+    self assert:(foundNode node isMessage).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 19:59:44 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder12
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:20
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 6).
+    self assert:((foundNode position) = 20).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:48:20 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder13
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:21
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 21).
+    self assert:((foundNode line) = 6).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'b').
+    self assert:(foundNode node line = 6).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:48:29 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder14
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:22
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 22).
+    self assert:((foundNode line) = 6).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'b').
+    self assert:(foundNode node line = 6).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:49:39 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder15
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:23
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 23).
+    self assert:((foundNode line) = 6).
+    self assert:(foundNode node isAssignment).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:49:48 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder16
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:24
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 24).
+    self assert:((foundNode line) = 6).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode node line = 6).
+    self assert:(foundNode node charIndex = 24).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:50:39 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder17
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:25
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 25).
+    self assert:((foundNode line) = 6).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode node line = 6).
+    self assert:(foundNode node charIndex = 24).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:51:19 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder18
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:6
+                position:26
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 6).
+    self assert:((foundNode position) = 26).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:51:45 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 25-02-2011 / 17:31:30 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder19
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:20
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 7).
+    self assert:((foundNode position) = 20).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:52:27 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder2
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:21
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 21).
+    self assert:((foundNode line) = 3).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode node line = 3).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:34:28 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder20
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:21
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 21).
+    self assert:((foundNode line) = 7).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node line = 7).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode node name = 'c').
+    self assert:(foundNode statement isAssignment)
+!
+
+testFinder21
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:22
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 22).
+    self assert:((foundNode line) = 7).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node line = 7).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode node name = 'c').
+    self assert:(foundNode statement isAssignment)
+!
+
+testFinder22
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:23
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 7).
+    self assert:((foundNode position) = 23).
+    self assert:(foundNode node isAssignment).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 14:30:37 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder23
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:24
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 24).
+    self assert:((foundNode line) = 7).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node line = 7).
+    self assert:(foundNode node charIndex = 24).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode statement isAssignment)
+!
+
+testFinder24
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:25
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 25).
+    self assert:((foundNode line) = 7).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node line = 7).
+    self assert:(foundNode node charIndex = 24).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode statement isAssignment)
+!
+
+testFinder26
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:7
+                position:26
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode position) = 26).
+    self assert:((foundNode line) = 7).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node line = 7).
+    self assert:(foundNode node charIndex = 24).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode statement isAssignment)
+!
+
+testFinder27
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:8
+                position:1
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode position) = 1).
+    self assert:((foundNode line) = 8).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node line = 7).
+    self assert:(foundNode node charIndex = 24).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode statement isAssignment)
+!
+
+testFinder28
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:8
+                position:25
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 25).
+    self assert:((foundNode line) = 8).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node lines size = 1).
+    self assert:(foundNode node lines at:1) = 8.
+    self assert:(foundNode node selectorsPosition = 25).
+    self assert:(foundNode node selectors asString = 'floor').
+    self assert:(foundNode statement isAssignment)
+!
+
+testFinder29
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:8
+                position:30
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 30).
+    self assert:((foundNode line) = 8).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node lines size = 1).
+    self assert:(foundNode node lines at:1) = 8.
+    self assert:(foundNode node selectorsPosition = 25).
+    self assert:(foundNode node selectors asString = 'floor').
+    self assert:(foundNode statement isAssignment)
+!
+
+testFinder3
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:22
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 22).
+    self assert:((foundNode line) = 3).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node line = 3).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:36:19 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder30
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:8
+                position:32
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode position) = 32).
+    self assert:((foundNode line) = 8).
+    self assert:(foundNode node isUnaryMessage).
+    self assert:(foundNode statement isAssignment)
+!
+
+testFinder31
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:9
+                position:25
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 25).
+    self assert:((foundNode line) = 9).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node lines size = 1).
+    self assert:(foundNode node lines at:1) = 9.
+    self assert:(foundNode node selectorsPosition = 25).
+    self assert:(foundNode node selectors asString = 'aa').
+    self assert:(foundNode statement isAssignment)
+!
+
+testFinder32
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:9
+                position:28
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 9).
+    self assert:((foundNode position) = 28).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 14:41:23 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 25-02-2011 / 17:40:06 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder33
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:9
+                position:30
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 9).
+    self assert:((foundNode position) = 30).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 14:32:35 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder34
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:9
+                position:31
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 9).
+    self assert:((foundNode position) = 31).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 14:33:08 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder35
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:10
+                position:20
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 10).
+    self assert:((foundNode position) = 20).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 14:34:07 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder36
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:10
+                position:21
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 10).
+    self assert:((foundNode position) = 21).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'd').
+    self assert:(foundNode node line = 10).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 14:34:41 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder37
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:10
+                position:22
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 10).
+    self assert:((foundNode position) = 22).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'd').
+    self assert:(foundNode node line = 10).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 14:36:19 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder38
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:10
+                position:23
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 10).
+    self assert:((foundNode position) = 23).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'd').
+    self assert:(foundNode node line = 10).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 14:37:09 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder39
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:10
+                position:24
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 10).
+    self assert:((foundNode position) = 24).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors asString = 'floor:').
+    self assert:(foundNode node selectorsPosition size = 1).
+    self assert:((foundNode node selectorsPosition at:1) = 24).
+    self assert:(foundNode node lines size = 1).
+    self assert:((foundNode node lines at:1) = 10).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 14:37:53 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:08:24 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder4
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:23
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 23).
+    self assert:((foundNode line) = 3).
+    self assert:(foundNode node isAssignment).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:39:04 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder40
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:10
+                position:27
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 10).
+    self assert:((foundNode position) = 27).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors asString = 'floor:').
+    self assert:(foundNode node selectorsPosition size = 1).
+    self assert:((foundNode node selectorsPosition at:1) = 24).
+    self assert:(foundNode node lines size = 1).
+    self assert:((foundNode node lines at:1) = 10).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 14:43:08 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:08:34 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder41
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:10
+                position:29
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 10).
+    self assert:((foundNode position) = 29).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors asString = 'floor:').
+    self assert:(foundNode node selectorsPosition size = 1).
+    self assert:((foundNode node selectorsPosition at:1) = 24).
+    self assert:(foundNode node lines size = 1).
+    self assert:((foundNode node lines at:1) = 10).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 14:43:42 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:08:39 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder42
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:10
+                position:30
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 10).
+    self assert:((foundNode position) = 30).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors asString = 'floor:').
+    self assert:(foundNode node selectorsPosition size = 1).
+    self assert:((foundNode node selectorsPosition at:1) = 24).
+    self assert:(foundNode node lines size = 1).
+    self assert:((foundNode node lines at:1) = 10).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 14:43:57 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:08:45 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder43
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:10
+                position:31
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 10).
+    self assert:((foundNode position) = 31).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode node line = 10).
+    self assert:(foundNode node charIndex = 31).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 14:44:31 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder44
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:10
+                position:32
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 10).
+    self assert:((foundNode position) = 32).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode node line = 10).
+    self assert:(foundNode node charIndex = 31).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 14:45:35 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder45
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:10
+                position:33
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 10).
+    self assert:((foundNode position) = 33).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 14:45:55 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder46
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:20
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 20).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 14:47:00 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder47
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:21
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 21).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'd').
+    self assert:(foundNode node line = 11).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 15:34:49 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder48
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:22
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 22).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'd').
+    self assert:(foundNode node line = 11).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 15:36:14 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder49
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:23
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 23).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors asString = 'floor:b:').
+    self assert:(foundNode node selectorsPosition size = 2).
+    self assert:((foundNode node selectorsPosition at:1) = 23).
+    self assert:((foundNode node selectorsPosition at:2) = 31).
+    self assert:(foundNode node lines size = 2).
+    self assert:((foundNode node lines at:1) = 11).
+    self assert:((foundNode node lines at:2) = 11).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 15:36:58 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:08:55 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder5
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:1
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode position) = 1).
+    self assert:((foundNode line) = 4).
+    self assert:(foundNode node isAssignment).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:40:43 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder50
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:28
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 28).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors asString = 'floor:b:').
+    self assert:(foundNode node selectorsPosition size = 2).
+    self assert:((foundNode node selectorsPosition at:1) = 23).
+    self assert:((foundNode node selectorsPosition at:2) = 31).
+    self assert:(foundNode node lines size = 2).
+    self assert:((foundNode node lines at:1) = 11).
+    self assert:((foundNode node lines at:2) = 11).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 15:41:42 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:09:01 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder51
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:29
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 29).
+    self assert:(foundNode node isConstant).
+    self assert:(foundNode node value = 3).
+    self assert:(foundNode node line = 11).
+    self assert:(foundNode node charIndex = 29).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 15:42:13 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder52
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:30
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 30).
+    self assert:(foundNode node isConstant).
+    self assert:(foundNode node value = 3).
+    self assert:(foundNode node line = 11).
+    self assert:(foundNode node charIndex = 29).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 15:54:26 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder53
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:31
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 31).
+    self assert:(foundNode node isConstant).
+    self assert:(foundNode node value = 3).
+    self assert:(foundNode node line = 11).
+    self assert:(foundNode node charIndex = 29).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 15:55:13 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder54
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:32
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 32).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors asString = 'floor:b:').
+    self assert:(foundNode node selectorsPosition size = 2).
+    self assert:((foundNode node selectorsPosition at:1) = 23).
+    self assert:((foundNode node selectorsPosition at:2) = 32).
+    self assert:(foundNode node lines size = 2).
+    self assert:((foundNode node lines at:1) = 11).
+    self assert:((foundNode node lines at:2) = 11).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 15:55:30 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:09:06 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder55
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:33
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 33).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors asString = 'floor:b:').
+    self assert:(foundNode node selectorsPosition size = 2).
+    self assert:((foundNode node selectorsPosition at:1) = 23).
+    self assert:((foundNode node selectorsPosition at:2) = 32).
+    self assert:(foundNode node lines size = 2).
+    self assert:((foundNode node lines at:1) = 11).
+    self assert:((foundNode node lines at:2) = 11).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 15:56:34 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:09:12 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder550
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:  3  b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:30
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 30).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors asString = 'floor:b:').
+    self assert:(foundNode node selectorsPosition size = 2).
+    self assert:((foundNode node selectorsPosition at:1) = 23).
+    self assert:((foundNode node selectorsPosition at:2) = 34).
+    self assert:(foundNode node lines size = 2).
+    self assert:((foundNode node lines at:1) = 11).
+    self assert:((foundNode node lines at:2) = 11).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 03-03-2011 / 21:01:09 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:09:17 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder551
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:  3  b:  u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:37
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 37).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors asString = 'floor:b:').
+    self assert:(foundNode node selectorsPosition size = 2).
+    self assert:((foundNode node selectorsPosition at:1) = 23).
+    self assert:((foundNode node selectorsPosition at:2) = 34).
+    self assert:(foundNode node lines size = 2).
+    self assert:((foundNode node lines at:1) = 11).
+    self assert:((foundNode node lines at:2) = 11).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 03-03-2011 / 21:02:22 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:09:22 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder552
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:  3  b:  u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:38
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 38).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 03-03-2011 / 21:02:56 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder553
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:  3  b:  u  .
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:40
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 40).
+    self assert:(foundNode node isMessage).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 03-03-2011 / 21:04:05 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder56
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:34
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 34).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode node line = 11).
+    self assert:(foundNode node charIndex = 34).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 15:56:58 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder57
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:35
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 35).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'u').
+    self assert:(foundNode node line = 11).
+    self assert:(foundNode node charIndex = 34).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 15:57:56 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder58
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:11
+                position:36
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 11).
+    self assert:((foundNode position) = 36).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 15:58:09 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder59
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:20
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 20).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 15:58:52 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder6
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:5
+                position:20
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 5).
+    self assert:((foundNode position) = 20).
+    self assert:(foundNode node isAssignment).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:41:15 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder60
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:21
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 21).
+    self assert:(foundNode node isSelf).
+    self assert:(foundNode node line = 12).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 15:59:49 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder61
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:25
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 25).
+    self assert:(foundNode node isSelf).
+    self assert:(foundNode node line = 12).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 16:04:08 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder62
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:26
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 26).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors isSymbol).
+    self assert:(foundNode node selectors asString = 'rememberSymbolUsed:').
+    self assert:(foundNode node selectorsPosition size = 1).
+    self assert:((foundNode node selectorsPosition at:1) = 26).
+    self assert:(foundNode node lines size = 1).
+    self assert:((foundNode node lines at:1) = 12).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 16:04:35 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder63
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:44
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 44).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors isSymbol).
+    self assert:(foundNode node selectors asString = 'rememberSymbolUsed:').
+    self assert:(foundNode node selectorsPosition size = 1).
+    self assert:((foundNode node selectorsPosition at:1) = 26).
+    self assert:(foundNode node lines size = 1).
+    self assert:((foundNode node lines at:1) = 12).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 16:06:15 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder64
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil. c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:45
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 45).
+    self assert:(foundNode node isConstant).
+    self assert:((foundNode node type) = #Nil).
+    self assert:(foundNode node line = 12).
+    self assert:(foundNode node charIndex = 45).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 16:06:43 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder65
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:48
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 48).
+    self assert:(foundNode node isConstant).
+    self assert:((foundNode node type) = #Nil).
+    self assert:(foundNode node line = 12).
+    self assert:(foundNode node charIndex = 45).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 16:08:29 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder66
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:49
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 49).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 16:09:03 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder67
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:50
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 50).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 16:29:10 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder68
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c call:b. b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:51
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 51).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 16:29:26 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder69
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c call:b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:52
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 52).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'c').
+    self assert:(foundNode node line = 12).
+    self assert:(foundNode node charIndex = 52).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 16:30:18 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder7
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:21
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 4).
+    self assert:((foundNode position) = 21).
+    self assert:(foundNode node isAssignment).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:42:37 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder70
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c call:b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:53
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 53).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'c').
+    self assert:(foundNode node line = 12).
+    self assert:(foundNode node charIndex = 52).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 16:31:33 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder71
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call:b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:54
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 54).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'c').
+    self assert:(foundNode node line = 12).
+    self assert:(foundNode node charIndex = 52).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 16:32:27 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder72
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call:b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:55
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 55).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors asString = 'call:').
+    self assert:(foundNode node selectorsPosition size = 1).
+    self assert:((foundNode node selectorsPosition at:1) = 55).
+    self assert:(foundNode node lines size = 1).
+    self assert:((foundNode node lines at:1) = 12).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 16:32:49 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:09:28 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder73
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:59
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 59).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors asString = 'call:').
+    self assert:(foundNode node selectorsPosition size = 1).
+    self assert:((foundNode node selectorsPosition at:1) = 55).
+    self assert:(foundNode node lines size = 1).
+    self assert:((foundNode node lines at:1) = 12).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 17:28:35 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:09:33 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder74
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:60
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 60).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors asString = 'call:').
+    self assert:(foundNode node selectorsPosition size = 1).
+    self assert:((foundNode node selectorsPosition at:1) = 55).
+    self assert:(foundNode node lines size = 1).
+    self assert:((foundNode node lines at:1) = 12).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 17:29:57 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:09:38 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder75
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:61
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 61).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'b').
+    self assert:(foundNode node line = 12).
+    self assert:(foundNode node charIndex = 61).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 17:30:16 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder76
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:62
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 62).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'b').
+    self assert:(foundNode node line = 12).
+    self assert:(foundNode node charIndex = 61).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 17:31:03 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder77
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:64
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 64).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 17:31:44 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder78
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:65
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 65).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 17:34:50 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder79
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:66
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 66).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'b').
+    self assert:(foundNode node line = 12).
+    self assert:(foundNode node charIndex = 66).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 17:35:28 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder8
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:5
+                position:22
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 5).
+    self assert:((foundNode position) = 22).
+    self assert:(foundNode node isConstant).
+    self assert:(foundNode node value = 3).
+    self assert:(foundNode node line = 5).
+    self assert:(foundNode node charIndex = 22).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:43:50 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder80
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:79
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 79).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'd').
+    self assert:(foundNode node line = 12).
+    self assert:(foundNode node charIndex = 78).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 17:36:26 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder81
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:12
+                position:80
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 12).
+    self assert:((foundNode position) = 80).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 17:36:59 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder82
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:13
+                position:20
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 13).
+    self assert:((foundNode position) = 20).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 17:38:37 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder83
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:13
+                position:21
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 13).
+    self assert:((foundNode position) = 21).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'array').
+    self assert:(foundNode node line = 13).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 17:39:51 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder84
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:13
+                position:26
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 13).
+    self assert:((foundNode position) = 26).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'array').
+    self assert:(foundNode node line = 13).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 17:40:54 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder85
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:13
+                position:30
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 13).
+    self assert:((foundNode position) = 30).
+    self assert:(foundNode node isConstant).
+    self assert:(foundNode node type = #Array).
+    self assert:(foundNode node line = 13).
+    self assert:(foundNode node charIndex = 30).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 17:41:18 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder86
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:14
+                position:30
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 14).
+    self assert:((foundNode position) = 30).
+    self assert:(foundNode node isConstant).
+    self assert:(foundNode node type = #Array).
+    self assert:(foundNode node line = 13).
+    self assert:(foundNode node charIndex = 30).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 17:42:54 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder87
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:15
+                position:22
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 15).
+    self assert:((foundNode position) = 22).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 17:43:20 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder88
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:16
+                position:20
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 16).
+    self assert:((foundNode position) = 20).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 17:44:33 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder89
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:16
+                position:21
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 16).
+    self assert:((foundNode position) = 21).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'val').
+    self assert:(foundNode node line = 16).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 17:51:48 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder9
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:nil. 
+                    array:=#(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:5
+                position:23
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 5).
+    self assert:((foundNode position) = 23).
+    self assert:(foundNode node isConstant).
+    self assert:(foundNode node value = 3).
+    self assert:(foundNode node line = 5).
+    self assert:(foundNode node charIndex = 22).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 25-02-2011 / 13:44:06 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder90
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:16
+                position:24
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 16).
+    self assert:((foundNode position) = 24).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'val').
+    self assert:(foundNode node line = 16).
+    self assert:(foundNode node charIndex = 21).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 18:16:29 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder91
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:16
+                position:25
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 16).
+    self assert:((foundNode position) = 25).
+    self assert:(foundNode node isAssignment).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 18:16:46 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder92
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:16
+                position:27
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 16).
+    self assert:((foundNode position) = 27).
+    self assert:(foundNode node isAssignment).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 18:17:24 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder93
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:16
+                position:28
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 16).
+    self assert:((foundNode position) = 28).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name isSymbol).
+    self assert:(foundNode node name asString = 'ConstantNode').
+    self assert:(foundNode node line = 16).
+    self assert:(foundNode node charIndex = 28).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 18:17:40 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder94
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:16
+                position:40
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 16).
+    self assert:((foundNode position) = 40).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name isSymbol).
+    self assert:(foundNode node name asString = 'ConstantNode').
+    self assert:(foundNode node line = 16).
+    self assert:(foundNode node charIndex = 28).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 18:19:16 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder95
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:17
+                position:41
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 17).
+    self assert:((foundNode position) = 41).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode node selectors isSymbol).
+    self assert:(foundNode node selectors asString = 'type:value:').
+    self assert:(foundNode node selectorsPosition size = 2).
+    self assert:((foundNode node selectorsPosition at:1) = 41).
+    self assert:((foundNode node selectorsPosition at:2) = 41).
+    self assert:(foundNode node lines size = 2).
+    self assert:((foundNode node lines at:1) = 16).
+    self assert:((foundNode node lines at:2) = 17).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 18:19:53 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder96
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:16
+                position:55
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 16).
+    self assert:((foundNode position) = 55).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'tokenType').
+    self assert:(foundNode node line = 16).
+    self assert:(foundNode node charIndex = 46).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 18:23:07 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder97
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:17
+                position:57
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 17).
+    self assert:((foundNode position) = 57).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'tokenValue').
+    self assert:(foundNode node line = 17).
+    self assert:(foundNode node charIndex = 47).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 28-02-2011 / 18:24:30 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder98
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:18
+                position:20
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 18).
+    self assert:((foundNode position) = 20).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 18:25:13 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinder99
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd tokenType array|
+                    u 
+                    := 
+                     3.
+                    b:=u.
+                    c:=u 
+                        floor 
+                        aa   .
+                    d  floor: u.
+                    d floor:3  b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4 
+                    5 6 
+                    ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:18
+                position:21
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 18).
+    self assert:((foundNode position) = 21).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 28-02-2011 / 18:26:31 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseFinderTests methodsFor:'FinderTestsErrorNode'!
+
+testFinderErrorNode1
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+                    
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:2
+                position:1
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 2).
+    self assert:((foundNode position) = 1).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 02-03-2011 / 15:34:00 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode10
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 f
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:9
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 9).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 02-03-2011 / 17:27:59 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode11
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor:
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:14
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 14).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 02-03-2011 / 17:29:25 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode12
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: (
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:16
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 16).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 02-03-2011 / 17:30:13 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode13
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: ( s
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:18
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 18).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 02-03-2011 / 17:31:44 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode14
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: ( self
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:21
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 21).
+    self assert:(foundNode node isSelf).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 02-03-2011 / 17:33:10 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode15
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: ( self
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:22
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 22).
+    self assert:(foundNode node isSelf).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 02-03-2011 / 17:33:20 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode16
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: ( self b
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:23
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 23).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 02-03-2011 / 17:35:09 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode17
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: ( self b b:
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:26
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 26).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 02-03-2011 / 17:36:02 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode18
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: ( self b b:
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:25
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 25).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode statement isAssignment).
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 02-03-2011 / 17:38:35 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 03-03-2011 / 18:22:41 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode19
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: ( self b b:
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:26
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 26).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode statement isAssignment).
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 02-03-2011 / 20:01:58 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 03-03-2011 / 18:23:37 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode2
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|                    
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:2
+                position:2
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 2).
+    self assert:((foundNode position) = 2).
+    self assert:(foundNode statement isErrorNode).
+    self assert:(foundNode statement errorToken = ':=').
+    self assert:(foundNode beforeStatement isNil).
+
+    "Created: / 02-03-2011 / 15:34:12 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode20
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: ( self b b:)
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:27
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 27).
+    self assert:(foundNode node isErrorNode).
+    self assert:(foundNode statement isAssignment).
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 03-03-2011 / 18:24:01 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode21
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: ( self b b:) r
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:28
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 28).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode statement isAssignment).
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isMessage).
+
+    "Created: / 03-03-2011 / 18:26:16 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode22
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: ( self b b:) round:
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:34
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 34).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode statement isAssignment).
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 03-03-2011 / 18:27:16 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode23
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: ( self b b:) round: a
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:36
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 36).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode statement isAssignment).
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 03-03-2011 / 21:05:27 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode24
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: ( self b b:) round: a:
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:37
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 37).
+    self assert:(foundNode node isSelectorNode).
+    self assert:(foundNode statement isAssignment).
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isSelectorNode).
+
+    "Created: / 03-03-2011 / 21:05:49 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode25
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: ( self b b:) round: a:. 
+:
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:2
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 4).
+    self assert:((foundNode position) = 2).
+    self assert:(foundNode node isErrorNode).
+    self assert:(foundNode statement isErrorNode).
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isAssignment).
+
+    "Created: / 03-03-2011 / 21:09:10 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode26
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3 floor: ( self b b:) round: a:. 
+:=
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:4
+                position:3
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 4).
+    self assert:((foundNode position) = 3).
+    self assert:(foundNode node isErrorNode).
+    self assert:(foundNode statement isErrorNode).
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isAssignment).
+
+    "Created: / 03-03-2011 / 21:12:12 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode3
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+||                    
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:2
+                position:3
+                tree:collector tree.
+    self assert:(foundNode beforeNode).
+    self assert:((foundNode line) = 2).
+    self assert:((foundNode position) = 3).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 02-03-2011 / 16:31:36 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode4
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:2
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 2).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'b').
+    self assert:(foundNode node line = 3).
+    self assert:(foundNode node charIndex = 1).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 02-03-2011 / 16:33:15 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode5
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:3
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 3).
+    self assert:(foundNode node isVariable).
+    self assert:(foundNode node name = 'b').
+    self assert:(foundNode node line = 3).
+    self assert:(foundNode node charIndex = 1).
+    self assert:(foundNode statement isMessage).
+
+    "Created: / 02-03-2011 / 16:38:07 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode6
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b :
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:4
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 4).
+    self assert:(foundNode node isErrorNode).
+    self assert:(foundNode node errorToken = ':').
+    self assert:(foundNode node line = 3).
+    self assert:(foundNode node charIndex = 3).
+    self assert:(foundNode statement isErrorNode).
+    self assert:(foundNode beforeStatement notNil).
+    self assert:(foundNode beforeStatement isVariable).
+
+    "Created: / 02-03-2011 / 16:38:34 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode7
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b :=
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:5
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 5).
+    self assert:(foundNode node isAssignment).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 02-03-2011 / 16:41:19 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode8
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:7
+                tree:collector tree.
+    self assert:(foundNode inNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 7).
+    self assert:(foundNode node isConstant).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 02-03-2011 / 17:26:32 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testFinderErrorNode9
+    |collector finder foundNode|
+
+    collector := self 
+                doForSource:'
+|helperNode b c d|
+b := 3
+                    u := 3.
+                    b:=u.
+                    c:=u floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    finder := SmallSenseFinder new.
+    foundNode := finder 
+                find:3
+                position:8
+                tree:collector tree.
+    self assert:(foundNode afterNode).
+    self assert:((foundNode line) = 3).
+    self assert:((foundNode position) = 8).
+    self assert:(foundNode node isConstant).
+    self assert:(foundNode statement isAssignment).
+
+    "Created: / 02-03-2011 / 17:27:33 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseFinderTests class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseFinderTests.st 7705 2011-04-08 09:49:06Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseInferencer.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,426 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+Object subclass:#SmallSenseInferencer
+	instanceVariableNames:'class classInfo source parser parserClass tree'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Inference'
+!
+
+SmallSenseParseNodeVisitor subclass:#Phase1
+	instanceVariableNames:'classInfo sends types'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:SmallSenseInferencer
+!
+
+SmallSenseParseNodeVisitor subclass:#Phase2
+	instanceVariableNames:'classInfo'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:SmallSenseInferencer
+!
+
+!SmallSenseInferencer class methodsFor:'documentation'!
+
+documentation
+"
+    A heart of SmallSense - a type inferencer. For given class
+    and method source, instance of inferences walks the parse tree
+    and annotate each node with inferred type.
+    
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!SmallSenseInferencer class methodsFor:'instance creation'!
+
+forClass: class methodSource: source
+
+    ^self new class: class source: source
+
+    "Created: / 26-11-2011 / 12:45:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+forClass: class selector: selector
+
+    ^self new class: class selector: selector.
+
+    "Created: / 26-11-2011 / 12:44:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+forMethod: method
+
+    ^self new method: method.
+
+    "Created: / 26-11-2011 / 12:45:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseInferencer methodsFor:'accessing'!
+
+klass
+    ^ class
+
+    "Created: / 26-11-2011 / 17:30:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+manager
+
+    ^SmallSenseManager instance
+
+    "Created: / 27-11-2011 / 16:16:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+parser
+    ^ parser
+!
+
+parserClass
+    ^ parserClass
+!
+
+parserClass:aClass
+    parserClass := aClass.
+!
+
+source
+    ^ source
+!
+
+tree
+    ^ tree
+! !
+
+!SmallSenseInferencer methodsFor:'initialization'!
+
+class: cls selector: sel
+
+    | m |
+    m := cls >> sel.
+    m isNil ifTrue:[
+        self error: 'No method found'.
+    ].
+    self method: m.
+
+    "Created: / 26-11-2011 / 12:47:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+class: cls source: src
+
+    class := cls.
+    classInfo := self manager infoForClass: class.
+    source := src.
+
+    "Created: / 26-11-2011 / 14:46:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+method: method
+
+    self class: method mclass source: method source.
+
+    "Created: / 26-11-2011 / 12:48:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseInferencer methodsFor:'private'!
+
+infer
+
+
+    Phase1 process: tree in: class.
+
+    "
+    (SmallSenseParseNodeInspector new node: tree source: source) open
+    "
+
+    "Created: / 26-11-2011 / 12:51:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+parse
+
+    parserClass isNil ifTrue:[
+        parserClass := class parserClass.
+    ].
+    parser := parserClass 
+                parseMethod: source in: class
+                ignoreErrors:true 
+                ignoreWarnings:true.
+    tree := parser tree.
+
+    "Created: / 26-11-2011 / 12:51:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseInferencer methodsFor:'processing'!
+
+process
+
+    "Actually infer types. Returns an annotated method tree.
+     The tree is also stored in an instance variable, so it
+     may be obtained form receiver any time by asking for #tree."
+
+    self parse. 
+    tree notNil ifTrue:[
+        self infer.
+    ].
+    ^tree
+
+    "Created: / 26-11-2011 / 12:50:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseInferencer::Phase1 methodsFor:'initialization'!
+
+initialize
+    "Invoked when a new instance is created."
+
+    "/ please change as required (and remove this comment)
+    sends := Dictionary new.
+    types := Dictionary new.
+
+    "/ super initialize.   -- commented since inherited method does nothing
+
+    "Modified: / 26-11-2011 / 19:31:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseInferencer::Phase1 methodsFor:'private'!
+
+rootsUnderstanding: selectors
+    "When the set of selectors is not empty, answer a set of the highest possible classes in the system that implement all the selectors.
+      When the set of selectors is empty, return the empty set."
+
+    | initialClasses nextClasses traverseStack next |
+    selectors isEmpty ifTrue: [^OrderedCollection new].
+    nextClasses := OrderedCollection with: Object.
+    traverseStack := OrderedCollection new: 1000.
+        
+    selectors
+        do:
+            [:selector | 
+            initialClasses := nextClasses.
+            nextClasses := OrderedCollection new.
+            initialClasses
+                do:
+                    [:initialClass | 
+                    "inline canUnderstand: for performance"
+                    |cl|
+                    cl := initialClass.
+                    [(cl == nil) or: [(cl methodDictionary includesKey: selector)]] whileFalse: [cl := cl superclass].
+                    (cl == nil)
+                        ifFalse: [nextClasses addLast: initialClass]
+                        ifTrue:
+                            [|size|
+                            traverseStack reset.
+                            traverseStack addLast: initialClass.
+                            size := 1.
+                            "(traverseStack isEmpty) removed for performance"
+                            [size = 0]
+                                whileFalse:
+                                    [
+                                    "(traverseStack removeFirst) removed for performance"
+                                    next := traverseStack removeFirst.
+                                    size := size -1.
+                                    next
+                                        subclassesDo:
+                                            [:subcl |
+                                            "(subcl includesSelector: selector) removed for performance"
+                                            (subcl methodDictionary includesKey: selector)
+                                                ifTrue: [nextClasses addLast: subcl]
+                                                ifFalse: [traverseStack addLast: subcl. size := size + 1]]]]]].
+    ^nextClasses
+
+    "Modified: / 24-11-2010 / 14:39:35 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 26-11-2011 / 14:01:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseInferencer::Phase1 methodsFor:'processing'!
+
+process: tree in: cls
+
+    self process: tree in: cls info: (SmallSenseManager instance infoForClass: cls)
+
+    "Created: / 26-11-2011 / 13:48:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+process: tree in: cls info: clsInfo
+
+     | i c |
+
+    class := cls.
+    classInfo := clsInfo.
+
+    "Fill types with cached data..."
+
+    c := class.
+    i := classInfo.
+    [ c notNil and:[i notNil] ] whileTrue:[
+        c instVarNames do:[:nm|
+            types at: nm put: (i infoForInstvar: nm)
+        ].
+        c := c superclass.
+        i := i superclassInfo.
+    ].
+
+    self visit: tree.
+
+
+    "Now, infer variable types based on collected sends"
+    sends keysAndValuesDo:[:varName :sentSelectors|
+        | classes |
+
+        classes := self rootsUnderstanding: sentSelectors.
+        (types at: varName) addClasses: classes.
+    ].
+
+    "Created: / 27-11-2011 / 16:22:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseInferencer::Phase1 methodsFor:'visiting'!
+
+visitAssignmentNode:anObject
+
+    self visit: anObject variable.
+    self visit: anObject expression.
+
+    "Created: / 26-11-2011 / 13:53:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitBlockNode:anObject
+    | type |
+
+    super visitBlockNode:anObject.
+    type := (SmallSenseType withClass: BlockClosure).
+    type trustfullness: 100.
+    anObject inferedType: type.
+
+    "Created: / 26-11-2011 / 14:46:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitConstantNode:anObject
+    "Type of a constant is trivially its value class"
+
+    | type |
+
+    super visitConstantNode: anObject.
+    type := (SmallSenseType withClass: anObject value class).
+    type trustfullness: 100.
+    anObject inferedType: type.
+
+    "Created: / 26-11-2011 / 13:55:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitMessageNode:anObject 
+
+    | rec |
+
+    super visitMessageNode: anObject.
+
+    (rec := anObject receiver) isVariableNode ifTrue:[
+        "We don't have to infer types for global/class variables"
+        (rec isGlobalVariable or:[rec isClassVariable]) ifFalse:[
+            (sends at: rec name ifAbsentPut:[Set new]) add: anObject selector.
+        ].
+    ].
+
+    "Created: / 26-11-2011 / 13:02:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitSelfNode:anObject
+
+    super visitSelfNode:anObject.
+    anObject inferedType:(SmallSenseType withClass: class)
+
+    "Created: / 26-11-2011 / 14:43:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitSuperNode:anObject
+
+
+    super visitSuperNode:anObject.
+    anObject inferedType:(SmallSenseType withClass: class superclass)
+
+    "Created: / 26-11-2011 / 14:44:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitUnaryNode:anObject 
+
+    | type sel rec |
+
+    super visitUnaryNode:anObject.
+
+    sel := anObject selector.
+
+    sel == #class ifTrue:[
+        type := anObject receiver inferedType classSide.
+        anObject inferedType: type.
+        ^self.
+    ].
+    (sel == #new or:[sel == #basicNew]) ifTrue:[
+        rec := anObject receiver.                        
+        (rec isSelf and:[class isMetaclass]) ifTrue:[
+            type := SmallSenseType withClass: class theNonMetaclass.
+            type trustfullnessAdd: 50.
+            anObject inferedType: type.
+            ^self.
+        ].
+
+        type := anObject receiver inferedType instanceSide.
+        anObject inferedType: type.
+        ^self.
+    ].
+
+    "Created: / 27-11-2011 / 15:49:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitVariableNode:anObject
+
+    | t |
+
+    "Following code ensures, that all variable nodes refering same
+     variable shares the inferred type"
+    t := types at: anObject name ifAbsentPut:[SmallSenseType unknown].
+    anObject inferedType: t.
+
+    anObject isGlobalVariable ifTrue:[
+        t addClass: (Smalltalk at: anObject name) class.
+        t trustfullness: 100.
+        ^self.
+    ].
+    anObject isClassVariable ifTrue:[
+        t addClass: (class theNonMetaclass classVarAt: anObject name asSymbol) class.
+        t trustfullness: 100.
+        ^self.
+    ].
+
+    "Created: / 26-11-2011 / 13:31:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseInferencer::Phase2 methodsFor:'processing'!
+
+process: tree in: cls
+
+    self process: tree in: cls info: (SmallSenseManager instance infoForClass: cls)
+
+    "Created: / 26-11-2011 / 13:48:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+process: tree in: cls info: clsInfo
+
+    class := cls.
+    classInfo := clsInfo.
+    self visit: tree.
+
+    "Created: / 27-11-2011 / 16:22:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseInferencer class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseInferencer.st 8000 2012-05-17 23:16:11Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseInfo.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,15 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+Object subclass:#SmallSenseInfo
+	instanceVariableNames:'manager'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Model'
+!
+
+
+!SmallSenseInfo class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseInfo.st 7834 2011-11-29 19:25:06Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseInstvarInterfaceExtractor.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,779 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseAbstractInstvarInterfaceExtractor subclass:#SmallSenseInstvarInterfaceExtractor
+	instanceVariableNames:'assingmentsDictionary assigmentsTypeDictionary'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Roel Typer'
+!
+
+
+!SmallSenseInstvarInterfaceExtractor methodsFor:'assignmentParsing'!
+
+addAssignment:value to:node index:index 
+    |assignments|
+
+    "Test if it is tmp or not tmp. Tmp variable returns nil"
+    (node respondsTo:#variable) ifTrue:[
+        "if we receive node"
+        assignments := self assignmentsTo:node variable asString.
+    ] ifFalse:[
+        "if we receive string"
+        assignments := self assignmentsTo:node asString.
+    ].
+    (assignments notNil) ifTrue:[
+        "not tmp"
+        collector addAssignment:value to:index.
+    ] ifFalse:[
+        "tmp"
+        (node respondsTo:#variable) ifTrue:[
+            "if we receive node"
+            collector addAssignment:value toTmp:node variable asString.
+        ] ifFalse:[
+            "if we receive string"
+            collector addAssignment:value toTmp:node asString.
+        ].
+    ].
+
+    "Created: / 09-11-2010 / 18:32:05 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 15-02-2011 / 13:11:16 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+assignmentsTo:node 
+    |assignments|
+    assignments := collector assignmentsTo:node asString.
+    (assignments isNil)ifTrue:[
+      ^nil.
+    ].
+    ^ assignments.
+
+    "Created: / 01-12-2010 / 15:41:40 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 15:40:37 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+assignmentsToTmp:nodeIndex
+    |assignments|
+
+    assignments:=collector assignmentsTmpTo:nodeIndex.
+    (assignments isNil)ifTrue:[
+      ^nil.
+    ].
+    ^ assignments.
+
+    "Created: / 01-12-2010 / 16:04:10 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+createIndexFromNode:node 
+    "Creates index of node or string for roelTyper"
+    
+    (node respondsTo:#index) ifTrue:[
+        ^ node index.
+    ].
+    (node respondsTo:#variable) ifTrue:[
+        ^ node variable index.
+    ] ifFalse:[
+        ^ collector absoluteIndexForVar:node asString.
+    ].
+
+    "Created: / 14-12-2010 / 22:25:22 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+handleAssignmentToNode:nodeAssignment receiverNode:nodeReceiver 
+    |assignments nodeReceiverIndex nodeAssignmentIndex|
+
+    nodeReceiverIndex := self createIndexFromNode:nodeReceiver.
+    nodeAssignmentIndex := self createIndexFromNode:nodeAssignment.
+     "b:=true. a:=b.
+     nodeAssignment - node which can have some type (b)
+     nodeReceiver - node, which contains nodeAssignment (a) 
+     nodeReceiverIndex - node receiver index
+     nodeAssignmentIndex - node assignmentIndex"
+    assignments := self assignmentsTo:nodeAssignment asString.
+    (assignments isNil) ifTrue:[
+        assignments := self assignmentsToTmp:nodeAssignment asString.
+    ].
+    (assignments size = 0) ifTrue:[
+        assignments := nil.
+    ].
+     "All assgnments to specific node"
+    (assignments isNil) ifTrue:[
+        ^ nil
+    ].
+    assignments do:[:assinment | 
+        self 
+            addAssignment:assinment
+            to:nodeReceiver
+            index:nodeReceiverIndex.
+    ]
+
+    "Created: / 01-12-2010 / 15:53:05 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 15-02-2011 / 13:14:38 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+handleAssignmentToNode:node type:type 
+    |set|
+    (node respondsTo:#variable)ifTrue:[
+    set := assingmentsDictionary at:node variable asString ifAbsent:nil.
+    ]ifFalse:[
+        set := assingmentsDictionary at:node asString ifAbsent:nil.
+     ].
+     "if some variable(a) is initialized(a:=2,a:=true...) then the other variables, which refers b:=a can have similar type."
+    (set isNil) ifTrue:[
+        ^ nil.
+    ].
+    set do:[:refNode | 
+        self 
+            addAssignment:type
+            to:node
+            index:(self createIndexFromNode:refNode).
+    ]
+
+    "Created: / 04-11-2010 / 19:44:46 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 14-12-2010 / 22:29:35 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+parseAssignmentNodeBinaryNode:node nodeExpression:expression 
+    |helperNode|
+
+    "v=3"
+    helperNode := node.
+    ((expression receiver) isKindOf:VariableNode) ifTrue:[
+        ((expression selector) = #'=' 
+            or:[
+                (expression selector) = #'==' 
+                    or:[
+                        (expression selector) = #'>' 
+                            or:[
+                                (expression selector) = #'<' 
+                                    or:[
+                                        (expression selector) = #'<=' 
+                                            or:[
+                                                (expression selector) = #'>=' 
+                                                    or:[ (expression selector) = #'=~' or:[ (expression selector) = #'~~' ] ]
+                                            ]
+                                    ]
+                            ]
+                    ]
+            ]) 
+                ifTrue:[
+                    self 
+                        addAssignment:(#Boolean sunitAsClass)
+                        to:(node)
+                        index:(self createIndexFromNode:node).
+                    self handleAssignmentToNode:node type:(#Boolean sunitAsClass)
+                ].
+    ].
+    ((expression receiver) isKindOf:MessageNode) ifTrue:[
+        self parseAssignmentNodeMessageNode:node
+            nodeExpression:expression receiver
+    ].
+
+    "Created: / 10-11-2010 / 14:51:11 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 31-03-2011 / 19:30:36 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+parseAssignmentNodeConstantNode:node nodeExpression: expression 
+    |helperNode |
+
+    helperNode := node.
+    (expression isKindOf:ConstantNode) ifTrue:[
+
+        "Check if expression has some type"
+        (expression type notNil and:[expression type sunitAsClass notNil]) ifTrue:[
+            "If True or false then superClass(only for to have the type boolean)"
+            ((expression type sunitAsClass superclass) == Boolean) ifTrue:[
+                self 
+                    addAssignment:((expression type sunitAsClass) superclass)
+                    to:(node)
+                    index:(self createIndexFromNode:node).
+                "add assignment to all nodes which refer this node"
+                self handleAssignmentToNode:node
+                    type:(expression type sunitAsClass superclass)
+            ] ifFalse:[
+                self 
+                    addAssignment:(expression type sunitAsClass)
+                    to:node
+                    index:(self createIndexFromNode:node ).
+                "add assignment to all nodes which refer this node"
+                self handleAssignmentToNode:node type:(expression type sunitAsClass)
+            ].
+        ].
+        ^ self.
+    ].
+
+    "Created: / 10-11-2010 / 14:53:09 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 14-12-2010 / 22:30:38 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 28-04-2011 / 23:10:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+parseAssignmentNodeMessageNode:node nodeExpression:expression 
+    |helperNode|
+
+    helperNode := node.
+    (expression respondsTo:#receiver) ifTrue:[
+        ((expression receiver) isKindOf:VariableNode) ifTrue:[
+            ((expression receiver name) respondsTo:#sunitAsClass) ifTrue:[
+                self 
+                    addAssignment:(expression receiver name sunitAsClass)
+                    to:(node)
+                    index:(self createIndexFromNode:node).
+            ]ifFalse:[
+                self parseAssignmentNodeVariableNode:node nodeExpression: expression receiver.    
+            ].
+        ].
+        ((expression receiver) isKindOf:ConstantNode) ifTrue:[
+            self parseAssignmentNodeConstantNode:node
+                nodeExpression:expression receiver.
+        ].
+        ((expression receiver) isKindOf:SelfNode) ifTrue:[
+            self parseAssignmentNodeSelfNode:node
+                nodeExpression:expression receiver.
+        ].
+    ].
+
+    "Created: / 10-11-2010 / 14:55:13 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 14-12-2010 / 22:31:00 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+parseAssignmentNodeSelfNode:node nodeExpression:expression 
+    |helperNode var ret|
+
+    "indirect assignments check"
+    helperNode := node.
+    var := helperNode expression selector asString subString:1
+                to:helperNode expression selector asString size - 1.
+     "Check if selector is class Variable"
+    ret := collector assignmentsTo:var.
+    (ret notNil) ifTrue:[
+        "Check if has only one argument"
+        (helperNode expression argumentCount = 1) ifTrue:[
+            "Check nil"
+            (helperNode expression arg1 notNil) ifTrue:[
+                "Test ConstantNode(u:=3 u:=true...)"
+                (helperNode expression arg1 isKindOf:ConstantNode) ifTrue:[
+                    self parseAssignmentNodeConstantNode:var
+                        nodeExpression:helperNode expression arg1.
+                ].
+                 "Test VariableNode (u:=a)"
+                (helperNode expression arg1 isKindOf:VariableNode) ifTrue:[
+                    self parseAssignmentNodeVariableNode:var
+                        nodeExpression:helperNode expression arg1.
+                ].
+                 "Test UnaryNode"
+                (helperNode expression arg1 isKindOf:UnaryNode) ifTrue:[
+                    self parseAssignmentNodeUnaryNode:var
+                        nodeExpression:helperNode expression arg1.
+                ].
+                 "Test MessageNode"
+                (helperNode expression arg1 isKindOf:MessageNode) ifTrue:[
+                    self parseAssignmentNodeMessageNode:var
+                        nodeExpression:helperNode expression arg1.
+                ].
+                 "Test binary node"
+                (helperNode expression arg1 isKindOf:BinaryNode) ifTrue:[
+                    self parseAssignmentNodeBinaryNode:var
+                        nodeExpression:helperNode expression arg1.
+                ].
+            ].
+        ].
+    ].
+
+    "Created: / 14-12-2010 / 22:04:07 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+parseAssignmentNodeToTypeCollector:node 
+    |helperNode expression nodeName|
+
+    "basic method to handle assignments"
+    helperNode := node.
+    expression := node expression.
+     "Test ConstantNode(u:=3 u:=true...)"
+    (expression isKindOf:ConstantNode) ifTrue:[
+        self parseAssignmentNodeConstantNode:node nodeExpression:expression.
+    ].
+     "Test VariableNode (u:=a)"
+    (expression isKindOf:VariableNode) ifTrue:[
+        self parseAssignmentNodeVariableNode:node nodeExpression:expression.
+    ].
+     "Test AssignmentNode u:=a:=3"
+    (expression isKindOf:AssignmentNode) ifTrue:[
+        nodeName := self parseAssignmentNodeToTypeCollector:expression.
+        self handleAssignmentToNode:nodeName receiverNode:node.
+    ].
+     "Test UnaryNode"
+    (expression isKindOf:UnaryNode) ifTrue:[
+        self parseAssignmentNodeUnaryNode:node nodeExpression:expression.
+    ].
+     "Test MessageNode"
+    (expression isKindOf:MessageNode) ifTrue:[
+        self parseAssignmentNodeMessageNode:node nodeExpression:expression.
+    ].
+     "Test binary node"
+    (expression isKindOf:BinaryNode) ifTrue:[
+        self parseAssignmentNodeBinaryNode:node nodeExpression:expression.
+    ].
+    (node respondsTo:#variable) ifTrue:[
+        ^ node variable.
+    ] ifFalse:[ ^ node. ].
+
+    "Created: / 03-11-2010 / 23:00:17 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 14-12-2010 / 23:45:30 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+parseAssignmentNodeUnaryNode:node nodeExpression:expression 
+    |helperNode|
+
+    helperNode := node.
+    "x asInteger. b floor"
+    (expression respondsTo:#receiver) ifTrue:[
+        ((expression receiver) isKindOf:VariableNode) ifTrue:[
+            ((expression receiver name) respondsTo:#sunitAsClass) ifTrue:[ 
+                self 
+                    addAssignment:(expression receiver name sunitAsClass)
+                    to:(node)
+                    index:(self createIndexFromNode:node).
+            "add assignment to all nodes which refer this node"
+                self handleAssignmentToNode:node
+                    type:(expression receiver name sunitAsClass)
+            ].
+        ].
+    ].
+
+    "Created: / 10-11-2010 / 14:54:26 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 30-03-2011 / 17:57:04 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+parseAssignmentNodeVariableNode:node nodeExpression:expression 
+    |helperNode set|
+
+    "Test VariableNode(u:=a.b:=a.c:=a)
+     AssignMentDictionary will contain set nodes which assignment this node
+       a->Set(u,b,c) if a will get some value we change assignment in all nodes"
+    helperNode := node.
+    ((expression type) = #GlobalVariable) ifTrue:[
+        "checking assignments metaclass"
+        ((expression name) respondsTo:#sunitAsClass) ifTrue:[
+            self 
+                addAssignment:expression name sunitAsClass class
+                to:node variable
+                index:(self createIndexFromNode:node).
+             "add assignment to all nodes which refer this node"
+            self handleAssignmentToNode:node type:(expression type sunitAsClass).
+            ^ self.
+        ].
+    ].
+    set := assingmentsDictionary at:(expression name) ifAbsent:nil.
+    (set isNil) ifTrue:[
+        set := Set new.
+    ].
+    set add:node variable.
+     "Check if this index exists. if exists then remove it(to update dictionary)"
+    (assingmentsDictionary includesKey:expression name) ifTrue:[
+        assingmentsDictionary removeKey:expression name.
+    ].
+     "(updateDictionary"
+    assingmentsDictionary at:(expression name) put:set.
+     "Check if we can update this"
+    self handleAssignmentToNode:expression receiverNode:node.
+    ^ self
+
+    "Created: / 10-11-2010 / 14:53:46 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 30-03-2011 / 18:09:05 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseInstvarInterfaceExtractor methodsFor:'extracting'!
+
+extractInterfacesFrom:m addTo:aTypeCollector 
+    |parser|
+
+    method := m.
+    saveStacks := Dictionary new.
+    stack := OrderedCollection new.
+     "0 to: method numTemps - 1 do: [:i | stack add: #temp -> i ]."
+    initialStack := stack copy.
+    collector := aTypeCollector.
+    parser := SmalltalkXInstvarInterfaceExtractor new.
+    parser setColector:aTypeCollector.
+    input := parser 
+                parseMethod:method source
+                in:method mclass
+                ignoreErrors:false
+                ignoreWarnings:false.
+    blockTraversal := false.
+    blockArgs := 0.
+
+    [ input isNil ] whileFalse:[
+        self unaryExpressionFor:input.
+        input :=input nextStatement.
+    ]
+
+    "Modified: / 24-11-2010 / 22:24:16 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+extractInterfacesFrom:sourc class:class addTo:aTypeCollector 
+    |parser|
+
+    saveStacks := Dictionary new.
+    stack := OrderedCollection new.
+     "0 to: method numTemps - 1 do: [:i | stack add: #temp -> i ]."
+    initialStack := stack copy.
+    collector := aTypeCollector.
+    parser := SmallSenseInstvarInterfaceExtractor new.
+    parser setColector:aTypeCollector.
+    input := parser 
+                parseMethod: sourc
+                in:class
+                ignoreErrors:false
+                ignoreWarnings:false.
+    blockTraversal := false.
+    blockArgs := 0.
+
+    [ input isNil ] whileFalse:[
+        self unaryExpressionFor:input.
+        input :=input nextStatement.
+    ]
+
+    "Created: / 17-03-2011 / 16:00:31 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 04-04-2011 / 22:31:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseInstvarInterfaceExtractor methodsFor:'initialization'!
+
+initialize
+    super initialize.
+    assingmentsDictionary := Dictionary new.
+    assigmentsTypeDictionary:=Dictionary new.
+
+    "Created: / 04-11-2010 / 19:09:04 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 04-11-2010 / 23:46:36 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseInstvarInterfaceExtractor methodsFor:'opcodes-control'!
+
+nativeSend: selector numArgs: na 
+        | receiver args |
+        args := stack removeLast: na.
+        receiver := stack removeLast.
+        receiver isInteger 
+                ifTrue: 
+                        [ collector 
+                                addSend: selector
+                                to: receiver ]
+                ifFalse: 
+                        [ receiver isVariableBinding ifTrue: 
+                                [ receiver key = #temp 
+                                        ifTrue: 
+                                                [ collector 
+                                                        addSend: selector
+                                                        toTmp: receiver value ]
+                                        ifFalse: 
+                                                [ receiver key = #return ifTrue: 
+                                                        [ collector 
+                                                                addSend: selector
+                                                                onReturnOfSelfMethod: receiver value ] ] ] ].
+        (receiver = #self and: [ collector theClass methodDictionary includesKey: selector ]) ifTrue: 
+                [ args doWithIndex: 
+                        [ :arg :index | 
+                        collector 
+                                handleAssignment: arg
+                                forTmp: index - 1
+                                in: collector theClass >> selector ] ].
+        stack add: (collector 
+                        pushSendOf: selector
+                        to: receiver
+                        args: args)
+
+    "Modified: / 18-05-2011 / 23:47:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+send: selector numArgs: na 
+	^self 
+		nativeSend: selector
+		numArgs: na
+! !
+
+!SmallSenseInstvarInterfaceExtractor methodsFor:'opcodes-data movement'!
+
+dupFirst
+	stack add: stack last
+!
+
+pop
+	stack removeLast
+!
+
+pushConstant: value
+	value class == BlockClosure
+		ifTrue:
+			[self
+				readBlock: value method
+				copied: 0]
+		ifFalse: [
+			blockArgs := value.
+			stack addLast: value class]
+!
+
+pushContext
+	stack add: #context
+!
+
+pushInst: index
+	stack add: index
+!
+
+pushReceiver
+	stack addLast: #self
+!
+
+pushStatic: assoc
+	"assoc can be an association OR a variable binding. I just push the complete association, since it does not interest me for the moment."
+
+	stack addLast: assoc
+! !
+
+!SmallSenseInstvarInterfaceExtractor methodsFor:'parsing-expressions'!
+
+binaryExpressionFor:receiverArg 
+    |node|
+
+    node := super binaryExpressionFor:receiverArg.
+   self parseNode:node.
+    ^ node
+
+    "Modified: / 14-12-2010 / 23:50:17 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+parseCascadeNodetypeCollector:node expression:expression 
+    |receiver ret break collectionSends|
+
+    receiver := expression receiver.
+    break := false.
+    collectionSends := Set new.
+     "we add first selector"
+    collectionSends add:expression selector.
+     "we must find receiver"
+    [
+        (receiver isKindOf:VariableNode) or:[ break ]
+    ] whileFalse:[
+        (receiver respondsTo:#receiver) ifTrue:[
+            (receiver respondsTo:#selector) ifTrue:[
+                "we remember all selectors x print;size;all;pro"
+                collectionSends add:receiver selector.
+            ].
+            receiver := receiver receiver.
+        ] ifFalse:[
+            receiver := nil.
+        ].
+        (receiver isNil) ifTrue:[
+            break := true.
+        ].
+    ].
+     "we found first receiver and add represantive ."
+    collectionSends do:[:sendSelector | 
+        (((receiver) respondsTo:#index) and:[ receiver index notNil ]) ifTrue:[
+            ret := collector assignmentsTo:receiver name.
+            (ret notNil) ifTrue:[
+                collector addSend:sendSelector to:receiver index
+            ] ifFalse:[
+                collector addSend:sendSelector selector toTmp:receiver.
+            ].
+        ].
+    ].
+
+    "Created: / 10-11-2010 / 16:05:10 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 15-02-2011 / 13:04:21 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+parseMessageNodeToTypeCollector:node 
+    |helperNode receiver break ret|
+
+    helperNode := node.
+     "Getting receiver"
+    receiver := helperNode receiver.
+    break := false.
+
+(receiver isKindOf:MessageNode)
+     ifTrue:[
+       self parseMessageNodeToTypeCollector:receiver. 
+    ].
+     "Check if receiver is variable. If not then receiver is some kind of node result"
+     (receiver isKindOf:VariableNode)
+     ifFalse:[
+       ^self.
+    ].
+    
+
+    (((receiver) respondsTo:#index) and:[ receiver index notNil ]) ifTrue:[
+        "Check if receiver is tmp"
+        ret := collector assignmentsTo:receiver name.
+        (ret notNil) ifTrue:[
+            "not tmp"
+            collector addSend:helperNode selector to:receiver index
+        ] ifFalse:[
+            "tmp"
+            collector addSend:helperNode selector toTmp:receiver .
+        ].
+    ].
+
+    "Created: / 03-11-2010 / 22:25:23 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 15-02-2011 / 13:04:28 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+parseNode:node
+|helperNode|
+
+helperNode := node.
+ (node isKindOf: StatementNode)ifTrue:[
+        "x printString; size"
+       self parseStatementNodeToTypeCollector:node.
+    ].
+
+   (node isKindOf:UnaryNode)ifTrue:[
+    "(Point new. a new. b floor) -> we must recognize and parse node with single message(easy to parse)"
+       self parseUnaryNodeToTypeCollector:node.
+        ^ node.
+    ].
+
+    (node isKindOf:MessageNode)ifTrue:[
+    "Every node which can send message except unary node ( x point:a. x point:a left....)"
+       self parseMessageNodeToTypeCollector:node.
+    ].
+
+    (node isKindOf: AssignmentNode)ifTrue:[
+       self parseAssignmentNodeToTypeCollector:node.
+        self parseNode:node expression.
+    ].
+
+    "Created: / 14-12-2010 / 23:48:27 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+parseStatementNodeToTypeCollector:node 
+    |helperNode expression|
+
+    helperNode := node.
+
+    ((helperNode) respondsTo:#expression) ifTrue:[
+        expression := helperNode expression.
+        (expression isKindOf:CascadeNode) ifTrue:[
+           self parseCascadeNodetypeCollector:node expression:expression.
+        ].
+        (expression isKindOf:MessageNode)ifTrue:[
+            "Check indirect assignments"
+            (expression receiver isKindOf:SelfNode)ifTrue:[
+                self parseAssignmentNodeToTypeCollector:node.                
+            ].
+            self parseMessageNodeToTypeCollector:expression.
+        ]
+    ].
+
+    "Created: / 10-11-2010 / 15:55:06 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 14-12-2010 / 22:06:17 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+parseUnaryNodeToTypeCollector:node 
+    |helperNode ret|
+"(Point new. a new. b floor) node with single message."
+    helperNode := node.
+
+"Check indirect sends"
+((helperNode receiver) isKindOf:UnaryNode)ifTrue:[
+    "Check if receiver is self"
+    (helperNode receiver receiver isKindOf:SelfNode)ifTrue:[
+       "Check if selector is class Variable"
+        ret := collector assignmentsTo:helperNode receiver selector asString.
+        
+         (ret notNil) ifTrue:[
+            collector addSend:helperNode selector to:( collector absoluteIndexForVar:(helperNode receiver selector asString)).
+        ].
+    ]ifFalse:[
+        self parseUnaryNodeToTypeCollector:node receiver.
+    ].
+].
+
+
+
+    (((helperNode receiver) respondsTo:#index) 
+        and:[ helperNode receiver index notNil ]) 
+            ifTrue:[
+                "we can simple find if receiver is tmp variable or not"    
+                ret := collector assignmentsTo:helperNode receiver name.
+                (ret notNil) ifTrue:[
+                    "it is not tmp variable"
+                    collector addSend:helperNode selector to:helperNode receiver index
+                ] ifFalse:[
+                    "it is tmp variable"
+                    collector addSend:helperNode selector toTmp:helperNode receiver.
+                ].
+            ].
+
+    "Created: / 03-11-2010 / 22:19:09 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 04-03-2011 / 16:58:11 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+unaryExpressionFor:receiverArg 
+    |node|
+    node := super unaryExpressionFor:receiverArg.
+    self parseNode:node.
+    ^ node
+
+    "Created: / 30-10-2010 / 15:45:45 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 16:19:23 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseInstvarInterfaceExtractor methodsFor:'private'!
+
+copied: list
+	copied := list
+!
+
+input
+	^input
+!
+
+method: aMethod
+	method := aMethod.
+	copied := #()
+!
+
+readBlock: block copied: count
+        | newCopied |
+        newCopied := stack removeLast: count.
+        stack add: #block.
+        ^(self class new)
+                copied: newCopied;
+                extractInterfacesFrom: block source class:block mclass
+                        addTo: collector
+
+    "Modified: / 17-03-2011 / 16:01:39 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+reloadStack
+        stack isNil
+                ifTrue:
+                        [stack := self saveStacks
+                                at: self input startPosition
+                                ifAbsent: [initialStack copy].
+                        ^self].
+        stack := self saveStacks
+                at: self input startPosition
+                ifAbsent: [stack]
+
+    "Modified: / 28-10-2010 / 15:04:05 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+saveStacks
+	saveStacks ifNil: [saveStacks := Dictionary new].
+	^saveStacks
+!
+
+setColector:colectorSetter 
+    collector := colectorSetter.
+
+    "Created: / 03-11-2010 / 21:33:42 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseInstvarInterfaceExtractor class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseInstvarInterfaceExtractor.st 7823 2011-11-26 16:55:59Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseManager.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,204 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+Object subclass:#SmallSenseManager
+	instanceVariableNames:'classes accessLock updater'
+	classVariableNames:'Instance'
+	poolDictionaries:''
+	category:'SmallSense-Model'
+!
+
+
+!SmallSenseManager class methodsFor:'instance creation'!
+
+flush
+    "flushes the cached singleton"
+
+    Instance := nil
+
+    "
+     self flushSingleton
+    "
+
+    "Created: / 16-12-2011 / 01:37:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+flushSingleton
+    "flushes the cached singleton"
+
+    Instance := nil
+
+    "
+     self flushSingleton
+    "
+!
+
+instance
+    "returns a singleton"
+
+    Instance isNil ifTrue:[
+        Instance := self basicNew initialize.
+    ].
+    ^ Instance.
+
+    "Created: / 27-11-2011 / 15:30:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+new
+    "returns a singleton"
+
+    ^ self instance.
+
+    "Modified: / 27-11-2011 / 15:30:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseManager methodsFor:'accessing'!
+
+infoForClass: class
+
+    | info |
+
+    accessLock critical:[
+        info := self basicInfoForClass: class.
+    ].
+    ^info
+
+    "Created: / 27-11-2011 / 16:15:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+infoForClassOrNil: class
+
+    ^classes at: class name ifAbsent: nil
+
+    "Created: / 27-11-2011 / 17:15:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseManager methodsFor:'accessing-private'!
+
+basicInfoForClass: class
+
+    class isNil ifTrue:[^nil].
+
+    ^classes at: class name ifAbsentPut:[
+        SmallSenseClassInfo new
+            setManager: self
+            className: class name
+    ].
+
+    "Created: / 27-11-2011 / 16:47:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseManager methodsFor:'change & update'!
+
+update:what with:param from:sender
+    "Invoked when an object that I depend upon sends a change notification."
+
+    UserPreferences current smallSenseBackgroundTypingEnabled ifFalse:[ ^ self ].
+
+    sender ~~ Smalltalk ifTrue:[
+        super update:what with:param from:sender.
+        ^self.
+    ].
+
+    what == #methodInClass ifTrue:[
+        self updateInfoForMethod: (param first >> param second).
+        ^self.
+    ].
+    
+
+"/    Transcript show: 'SmallSense: Smalltalk changed: ', what , ' with: ', param printString.
+
+    "Modified: / 04-02-2012 / 22:30:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseManager methodsFor:'initialization'!
+
+initialize
+    "Invoked when a new instance is created."
+
+    classes := Dictionary new.
+    accessLock := Semaphore forMutualExclusion.
+    updater := BackgroundQueueProcessingJob 
+                    named: 'SmallSense background updater' 
+                    on: [:classOrMethod|self delayedUpdateInfoForClassOrMethod: classOrMethod].
+    updater priority: Processor userBackgroundPriority - 1.
+
+    UserPreferences current smallSenseEnabled ifTrue:[
+        Smalltalk addDependent: self.
+    ].
+
+    "Modified (format): / 28-11-2011 / 19:31:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseManager methodsFor:'updating'!
+
+updateInfoForClass: class
+
+    | info |
+
+    class programmingLanguage isSmalltalk ifFalse:[ ^ self ].
+    info := self infoForClassOrNil: class.
+    info isNil ifTrue:[
+        updater add: class
+    ].
+
+    "Created: / 27-11-2011 / 17:46:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateInfoForMethod: method
+
+    | info |
+
+    method programmingLanguage isSmalltalk ifFalse:[ ^ self ].
+    info := self basicInfoForClass: method mclass.
+    info isNil ifTrue:[
+        updater add: method mclass
+    ] ifFalse:[
+        updater add: method
+    ]
+
+    "Created: / 28-11-2011 / 19:30:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseManager methodsFor:'updating-delayed'!
+
+delayedUpdateInfoForClass: class
+
+    | superclass |
+
+    superclass := class superclass.
+    superclass notNil ifTrue:[self updateInfoForClass: superclass].
+    class methodsDo:[:mthd|updater add:mthd].
+
+    "Created: / 27-11-2011 / 18:04:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+delayedUpdateInfoForClassOrMethod: classOrMethod
+
+    classOrMethod isBehavior ifTrue:[
+       self delayedUpdateInfoForClass: classOrMethod.
+    ].
+    classOrMethod isMethod ifTrue:[
+       self delayedUpdateInfoForMethod: classOrMethod.
+    ]
+
+    "Created: / 27-11-2011 / 18:01:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+delayedUpdateInfoForMethod: method
+
+    | inferencer |
+
+    method mclass isNil ifTrue:["Obsolete method" ^ self ].
+    method mclass programmingLanguage isSmalltalk ifFalse: [ ^ self ].
+"/    Transcript showCR: 'SmallSense: updating info for: ', method printString.
+    inferencer := SmallSenseInferencer forMethod: method.
+    inferencer process.
+
+    "Created: / 27-11-2011 / 18:06:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseManager class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseManager.st 7984 2012-04-21 08:36:11Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseMethod.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,92 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseResultItem subclass:#SmallSenseMethod
+	instanceVariableNames:'class'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core'
+!
+
+
+!SmallSenseMethod class methodsFor:'Instance creation'!
+
+name:name description:description class:class 
+    ^ (self new)
+        name:name;
+        description:description;
+        class:class.
+
+    "Created: / 06-04-2011 / 16:50:05 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseMethod methodsFor:'accessing'!
+
+class:something
+    class := something.
+
+    "Created: / 06-04-2011 / 16:51:42 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+cursorColumnAfterComplete
+
+    | idx |
+    idx := name indexOf: $:.
+    ^idx == 0 ifTrue:[name size + 1] ifFalse:[idx + 1].
+
+    "Created: / 05-04-2011 / 17:08:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+label
+
+    ^super label
+
+"/    label ifNil:
+"/        [label := name asText ,  ((' [' , class name , ']') asText colorizeAllWith: Color gray).
+"/        ].
+"/    ^label
+
+    "Created: / 07-04-2011 / 09:56:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-05-2011 / 10:59:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+stringToComplete
+
+    ^String 
+        fromStringCollection: (name tokensBasedOn: $:)
+        separatedBy: ':  '.
+
+    "Created: / 05-04-2011 / 16:51:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseMethod methodsFor:'displaying'!
+
+displayOn:aGC x:x y:y opaque:opaque
+
+    | lw cn cnw fg |
+
+    super displayOn:aGC x:x y:y opaque:opaque.
+    lw :=  x + 16 + (self label widthOn: aGC).
+    cn := class nameWithoutPrefix.
+    cnw := aGC widthOfString: cn.
+
+    (aGC width > (lw + cnw + 5)) ifTrue:
+        [fg := aGC paint.
+        aGC paint: Color gray .
+        aGC displayString: cn x: aGC width - cnw - 5 y: y.
+        aGC paint: fg.
+        ]
+
+    "Created: / 21-05-2011 / 11:02:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseMethod methodsFor:'testing'!
+
+isSmallSenseMethod
+    ^ true
+! !
+
+!SmallSenseMethod class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseMethod.st 7825 2011-11-26 18:32:31Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseMethodInfo.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,37 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseInfo subclass:#SmallSenseMethodInfo
+	instanceVariableNames:'classInfo selector returnType'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Model'
+!
+
+
+!SmallSenseMethodInfo class methodsFor:'instance creation'!
+
+forClassInfo: clsInfo selector: sel
+
+    ^self new
+        setClassInfo: clsInfo selector: sel;
+        yourself
+
+    "Created: / 27-11-2011 / 16:37:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseMethodInfo methodsFor:'initialization'!
+
+setManager: mgr classInfo: clsInfo selector: sel
+
+    manager := mgr.
+    classInfo := clsInfo.
+    selector := sel.
+
+    "Created: / 29-11-2011 / 15:58:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseMethodInfo class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseMethodInfo.st 7834 2011-11-29 19:25:06Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseParseNodeInspector.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,621 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+ApplicationModel subclass:#SmallSenseParseNodeInspector
+	instanceVariableNames:'classHolder selectorHolder methodHolder nodeHolder sourceHolder
+		sourceView inspectorView'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Interface'
+!
+
+HierarchicalItem subclass:#ParseNodeItem
+	instanceVariableNames:'astNode ivarName'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:SmallSenseParseNodeInspector
+!
+
+
+!SmallSenseParseNodeInspector class methodsFor:'instance creation'!
+
+node: node source: source
+
+    ^self new node: node source: source
+
+    "Created: / 14-09-2011 / 17:25:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseParseNodeInspector class methodsFor:'interface opening'!
+
+openOnClass: class selector: selector
+
+    ^self new
+        class: class selector: selector;
+        open
+
+    "
+        SmallSenseParseNodeInspector 
+            openOnClass: self
+            selector: #openOnClass:selector: 
+    "
+
+    "Created: / 26-11-2011 / 12:30:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseParseNodeInspector class methodsFor:'interface specs'!
+
+inspectorTabSpec
+    "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:Tools::ParseNodeInspector andSelector:#inspectorTabSpec
+     Tools::ParseNodeInspector new openInterface:#inspectorTabSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: inspectorTabSpec
+        window: 
+       (WindowSpec
+          label: 'InspectorTab'
+          name: 'InspectorTab'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (NonScrollableArbitraryComponentSpec
+              name: 'InspectorView'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              component: parseNodeInspectorView
+            )
+           )
+         
+        )
+      )
+!
+
+sourceTabSpec
+    "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:Tools::ParseNodeInspector andSelector:#sourceTabSpec
+     Tools::ParseNodeInspector new openInterface:#sourceTabSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: sourceTabSpec
+        window: 
+       (WindowSpec
+          label: 'SourceTab'
+          name: 'SourceTab'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (TextEditorSpec
+              name: 'SourceView'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              model: sourceHolder
+              hasHorizontalScrollBar: true
+              hasVerticalScrollBar: true
+              hasKeyboardFocusInitially: false
+              postBuildCallback: postBuildSourceView:
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 14-09-2011 / 17:25:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+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:SmallSenseParseNodeInspector andSelector:#windowSpec
+     SmallSenseParseNodeInspector new openInterface:#windowSpec
+     SmallSenseParseNodeInspector open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: 'Parse Tree Inspector'
+          name: 'Parse Tree Inspector'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 630 322)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (VariableHorizontalPanelSpec
+              name: 'QueryTreeAndSourcePanel'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              showHandle: true
+              snapMode: both
+              handlePosition: right
+              component: 
+             (SpecCollection
+                collection: (
+                 (HierarchicalListViewSpec
+                    name: 'QueryTree'
+                    model: selectionHolder
+                    menu: queryTreeMenu
+                    hasHorizontalScrollBar: true
+                    hasVerticalScrollBar: true
+                    listModel: parseTree
+                    useIndex: false
+                    highlightMode: line
+                    useDefaultIcons: false
+                  )
+                 (UISubSpecification
+                    name: 'SourceSoec'
+                    minorKey: sourceTabSpec
+                  )
+                 )
+               
+              )
+              handles: (Any 0.3 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 26-11-2011 / 12:22:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+windowSpecWithInspector
+    "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:Tools::ParseNodeInspector andSelector:#windowSpec
+     Tools::ParseNodeInspector new openInterface:#windowSpec
+     Tools::ParseNodeInspector open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: 'Parse Tree Inspector'
+          name: 'Parse Tree Inspector'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 630 322)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (VariableHorizontalPanelSpec
+              name: 'QueryTreeAndSourcePanel'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              showHandle: true
+              snapMode: both
+              handlePosition: right
+              component: 
+             (SpecCollection
+                collection: (
+                 (HierarchicalListViewSpec
+                    name: 'QueryTree'
+                    model: selectionHolder
+                    menu: queryTreeMenu
+                    hasHorizontalScrollBar: true
+                    hasVerticalScrollBar: true
+                    listModel: parseTree
+                    useIndex: false
+                    highlightMode: line
+                    useDefaultIcons: false
+                  )
+                 (NoteBookViewSpec
+                    name: 'NoteBook'
+                    menu: tabList
+                  )
+                 )
+               
+              )
+              handles: (Any 0.3 1.0)
+            )
+           )
+         
+        )
+      )
+
+    "Created: / 26-11-2011 / 11:41:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseParseNodeInspector class methodsFor:'list specs'!
+
+tabList
+    "This resource specification was automatically generated
+     by the TabListEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the TabListEditor may not be able to read the specification."
+
+    "
+     TabListEditor new openOnClass: self andSelector:#tabList
+    "
+
+    <resource: #tabList>
+
+    ^     #(
+       (TabItem
+	  label: 'Source'
+	  createNewBuilder: false
+	  minorKey: sourceTabSpec
+	)
+       (TabItem
+	  label: 'Object'
+	  createNewBuilder: false
+	  minorKey: inspectorTabSpec
+	)
+       )
+
+      collect:[:aTab| TabItem new fromLiteralArrayEncoding:aTab ]
+
+    "Modified: / 31-10-2007 / 12:21:19 / janfrog"
+! !
+
+!SmallSenseParseNodeInspector class methodsFor:'menu specs'!
+
+queryTreeMenu
+    "This resource specification was automatically generated
+     by the MenuEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the MenuEditor may not be able to read the specification."
+
+    "
+     MenuEditor new openOnClass:XQuery::QueryInspectorUI andSelector:#queryTreeMenu
+     (Menu new fromLiteralArrayEncoding:(XQuery::QueryInspectorUI queryTreeMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^
+     #(Menu
+	(
+	 (MenuItem
+	    label: 'Inspect AST node'
+	    itemValue: queryTreeMenuInspectAstNode
+	    translateLabel: true
+	  )
+	 )
+	nil
+	nil
+      )
+
+    "Created: / 12-04-2007 / 11:46:57 / janfrog"
+! !
+
+!SmallSenseParseNodeInspector class methodsFor:'plugIn spec'!
+
+aspectSelectors
+    "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."
+
+    "Return a description of exported aspects;
+     these can be connected to aspects of an embedding application
+     (if this app is embedded in a subCanvas)."
+
+    ^ #(
+        #model
+      ).
+
+! !
+
+!SmallSenseParseNodeInspector methodsFor:'accessing'!
+
+class: class selector: selector
+    | mth source node parser |
+
+    mth := class >> selector.
+    mth isNil ifTrue:[
+        self error:'No such method'.
+        ^self.
+    ].
+    source := mth source.
+    parser := Parser parseMethod: source.
+    node := parser tree.
+
+    self node: node source: source.
+
+     "
+        SmallSenseParseNodeInspector 
+            openOnClass: SmallSenseParseNodeInspector
+            selector: #class:selector: 
+    "
+
+    "Created: / 15-02-2012 / 12:25:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+node: node source: source
+
+    self nodeHolder value: node.
+    self sourceHolder value: source.
+
+    "Created: / 14-09-2011 / 17:23:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selection
+
+    | item |
+    (item := self selectionHolder value) notNil ifTrue:[
+        ^item
+    ] ifFalse:[
+        ^nil
+    ]
+
+    "Created: / 12-04-2007 / 12:29:08 / janfrog"
+    "Created: / 26-11-2011 / 11:46:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseParseNodeInspector methodsFor:'aspects'!
+
+nodeHolder
+    "return/create the 'nodeHolder' value holder (automatically generated)"
+
+    nodeHolder isNil ifTrue:[
+        nodeHolder := ValueHolder new.
+    ].
+    ^ nodeHolder
+!
+
+nodeHolder:something
+    "set the 'nodeHolder' value holder (automatically generated)"
+
+    nodeHolder := something.
+!
+
+nodeInspectorView
+
+    inspectorView isNil ifTrue:[
+        inspectorView := InspectorView new
+    ].
+    ^ inspectorView
+
+    "Created: / 31-10-2007 / 12:20:02 / janfrog"
+    "Created: / 14-09-2011 / 17:24:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+parseTree
+
+    ^self
+        aspectAt: #parseTree
+        ifAbsentPut:
+            [PluggableAdaptor on: self nodeHolder getter:
+                [:m|
+                | rootAstNodeItem hl |
+                rootAstNodeItem := ParseNodeItem new
+                                        ivarName: 'AST';
+                                        astNode: self nodeHolder value.
+
+                hl := HierarchicalList new
+                        root: rootAstNodeItem;
+                        showRoot: true.
+                rootAstNodeItem expand.
+                hl]]
+
+    "Created: / 28-03-2007 / 15:58:31 / janfrog"
+    "Modified: / 31-10-2007 / 12:11:46 / janfrog"
+    "Created: / 14-09-2011 / 17:24:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectionHolder
+
+    ^self
+        aspectAt: #selectionHolder
+        ifAbsentPut:
+            [nil asValue
+                onChangeSend:#updateSourceViewSelection to:self;
+                onChangeSend:#updateInspectorView to:self;
+                yourself]
+
+    "Created: / 28-03-2007 / 16:46:30 / janfrog"
+    "Modified: / 31-10-2007 / 12:25:54 / janfrog"
+    "Created: / 14-09-2011 / 17:24:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+sourceHolder
+    "return/create the 'sourceHolder' value holder (automatically generated)"
+
+    sourceHolder isNil ifTrue:[
+        sourceHolder := ValueHolder new.
+    ].
+    ^ sourceHolder
+!
+
+sourceHolder:something
+    "set the 'sourceHolder' value holder (automatically generated)"
+
+    sourceHolder := something.
+!
+
+tabList
+    "Generated by the TabListEditor"
+
+    |list|
+
+    (list := builder bindingAt:#tabList) isNil ifTrue:[
+	builder aspectAt:#tabList put:(list := self class tabList).
+    ].
+    ^ list
+
+    "Created: / 31-10-2007 / 12:21:18 / janfrog"
+! !
+
+!SmallSenseParseNodeInspector methodsFor:'callbacks - post build'!
+
+postBuildSourceView: aView
+
+    sourceView := aView scrolledView
+
+    "Created: / 12-04-2007 / 12:28:14 / janfrog"
+! !
+
+!SmallSenseParseNodeInspector methodsFor:'change & update'!
+
+updateInspectorView
+
+    inspectorView notNil ifTrue:[ 
+        inspectorView inspect: self selection node 
+    ]
+
+    "Created: / 31-10-2007 / 12:25:25 / janfrog"
+    "Modified: / 26-11-2011 / 11:48:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateSourceViewSelection
+
+    | astNode startPosition stopPosition |
+    sourceView ifNil:[^self].
+    (astNode := self selection) ifNil:[^self].
+    (startPosition := astNode node startPosition)
+        ifNil:[^sourceView unselect].
+    (stopPosition := astNode node endPosition)
+        ifNil:[^sourceView unselect].
+
+    sourceView
+        selectFromCharacterPosition: startPosition
+        to: stopPosition
+
+    "Created: / 12-04-2007 / 12:29:42 / janfrog"
+    "Modified: / 26-11-2011 / 11:48:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseParseNodeInspector methodsFor:'menu actions'!
+
+queryTreeMenuInspectAstNode
+
+    ^self selection node inspect
+
+    "Created: / 12-04-2007 / 11:47:48 / janfrog"
+    "Modified: / 26-11-2011 / 12:12:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseParseNodeInspector::ParseNodeItem class methodsFor:'documentation'!
+
+version
+    ^'$Id: SmallSenseParseNodeInspector.st 7911 2012-02-22 09:55:48Z vranyj1 $'
+! !
+
+!SmallSenseParseNodeInspector::ParseNodeItem methodsFor:'accessing'!
+
+astNode
+    ^ astNode
+
+    "Created: / 28-03-2007 / 15:51:49 / janfrog"
+!
+
+astNode:anAstNode
+    astNode := anAstNode.
+
+    "Created: / 28-03-2007 / 15:51:49 / janfrog"
+!
+
+astNodeName
+
+    ^astNode class name
+
+    "Created: / 12-04-2007 / 11:29:57 / janfrog"
+    "Modified: / 31-10-2007 / 12:13:34 / janfrog"
+    "Modified: / 26-11-2011 / 10:47:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+children
+
+    children isNil ifTrue:[
+        children := OrderedCollection new.        
+        astNode childNamesAndValuesDo:[:ivarName :astNode|
+            astNode notNil ifTrue:[
+                children add: (self class new
+                                ivarName: ivarName;
+                                astNode: astNode;
+                                parent: self)
+            ]
+        ].
+    ].
+    ^children
+
+    "Created: / 28-03-2007 / 15:55:24 / janfrog"
+    "Modified: / 12-04-2007 / 11:35:24 / janfrog"
+    "Modified: / 26-11-2011 / 10:46:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+icon
+
+    ^nil
+
+    "Created: / 31-10-2007 / 12:14:52 / janfrog"
+    "Modified: / 26-11-2011 / 10:47:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+ivarName
+    ^ ivarName ? '?'
+
+    "Created: / 12-04-2007 / 11:29:28 / janfrog"
+!
+
+ivarName:something
+    ivarName := something.
+
+    "Created: / 12-04-2007 / 11:29:28 / janfrog"
+!
+
+label
+
+    ^self ivarName ,' <', self astNodeName, '>'
+
+    "Created: / 28-03-2007 / 15:53:18 / janfrog"
+    "Modified: / 12-04-2007 / 11:30:23 / janfrog"
+!
+
+node
+    ^ astNode
+
+    "Created: / 28-03-2007 / 15:51:49 / janfrog"
+    "Created: / 26-11-2011 / 11:48:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseParseNodeInspector class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseParseNodeInspector.st 7911 2012-02-22 09:55:48Z vranyj1 $'
+! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseParseNodeVisitor.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,198 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+Object subclass:#SmallSenseParseNodeVisitor
+	instanceVariableNames:'class'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core'
+!
+
+!SmallSenseParseNodeVisitor class methodsFor:'documentation'!
+
+documentation
+"
+    An abstract parse tree visitor. Copied from libcomp
+    as ParseNodeVisitor is autoloaded and we need smallsense
+    to be fully compiled.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!SmallSenseParseNodeVisitor class methodsFor:'instance creation'!
+
+new
+    "return an initialized instance"
+
+    ^ self basicNew initialize.
+! !
+
+!SmallSenseParseNodeVisitor class methodsFor:'processing'!
+
+process: tree in: class
+
+    ^self new process: tree in: class
+
+    "Created: / 26-11-2011 / 13:48:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseParseNodeVisitor methodsFor:'initialization'!
+
+initialize
+    "Invoked when a new instance is created."
+
+    "/ please change as required (and remove this comment)
+
+    "/ super initialize.   -- commented since inherited method does nothing
+! !
+
+!SmallSenseParseNodeVisitor methodsFor:'processing'!
+
+process: tree in: cls
+
+    class := cls.
+    self visit: tree
+
+    "Created: / 26-11-2011 / 13:48:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseParseNodeVisitor methodsFor:'visiting'!
+
+visit:anObject 
+
+    | stmt |
+
+    ^anObject isStatementNode ifTrue:[
+        stmt := anObject.
+        [ stmt isNil ] whileFalse:[
+            stmt acceptVisitor:self.
+            stmt := stmt nextStatement.
+        ]
+    ] ifFalse:[
+        anObject acceptVisitor: self.
+    ]
+
+    "Modified: / 25-07-2011 / 22:33:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitAssignmentNode:anObject
+
+    self visit: anObject variable.
+    self visit: anObject expression.
+
+    "Modified: / 26-11-2011 / 13:20:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitBinaryNode:anObject 
+
+    ^self visitMessageNode: anObject
+
+    "Modified: / 25-07-2011 / 22:30:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitBlockNode:anObject 
+
+    anObject statements ifNotNil:[
+        self visit: anObject statements
+    ].
+
+    "Modified: / 25-07-2011 / 22:45:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitCascadeNode:anObject 
+
+    self visitMessageNode: anObject.
+
+    "Modified: / 25-07-2011 / 22:37:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitConstantNode:anObject
+
+    "Modified: / 25-07-2011 / 22:41:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitECompletionConstantNode:anObject 
+    "dispatched back from the visited eCompletionConstantNode-object (visitor pattern)"
+
+    "fall back to general object-case - please change as required"
+
+    ^ self visitObject:anObject
+!
+
+visitMessageNode:anObject 
+
+    self visit: anObject receiver.
+    anObject arguments do:[:arg|
+        self visit: arg.
+    ]
+
+    "Modified: / 25-07-2011 / 22:37:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitObject:anObject 
+    "dispatched back from the visited objects (visitor pattern)"
+
+    "general fallBack - please change as required"
+
+    self halt:'not yet implemented'
+!
+
+visitParseErrorNode:anObject
+
+    "Modified: / 25-07-2011 / 22:38:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitPrimitiveNode:anObject
+
+    "Modified: / 25-07-2011 / 22:38:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitReturnNode:anObject 
+
+    self visitStatementNode: anObject
+
+    "Modified: / 25-07-2011 / 22:34:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitSelfNode:anObject
+
+    "Modified: / 25-07-2011 / 22:38:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitStatementNode:anObject 
+
+    self visit: anObject expression.
+
+    "Modified: / 25-07-2011 / 22:34:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitSuperNode:anObject
+
+    "Modified: / 25-07-2011 / 22:38:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitUnaryNode:anObject 
+
+    self visitMessageNode: anObject
+
+    "Modified: / 25-07-2011 / 22:38:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visitVariableNode:anObject
+
+    "Modified: / 25-07-2011 / 22:38:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseParseNodeVisitor class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseParseNodeVisitor.st 7823 2011-11-26 16:55:59Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseParser.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,246 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SyntaxHighlighter subclass:#SmallSenseParser
+	instanceVariableNames:'error'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core'
+!
+
+
+!SmallSenseParser methodsFor:'error handling'!
+
+parseError:message position:startPos to:endPos
+
+    error := ParseErrorNode new 
+                errorString: message;
+                errorToken:  token asString;
+                startPosition: startPos endPosition: endPos.
+    ^error
+
+    "Created: / 27-11-2011 / 09:35:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+syntaxError:message position:startPos to:endPos
+
+    ^self parseError:message position:startPos to:endPos
+
+    "Created: / 27-11-2011 / 09:45:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseParser methodsFor:'parsing'!
+
+parseExpressionWithSelf:anObject notifying:someOne ignoreErrors:ignoreErrors ignoreWarnings:ignoreWarnings inNameSpace:aNameSpaceOrNil
+
+    |tree token|
+
+    aNameSpaceOrNil notNil ifTrue:[
+        self currentNameSpace:aNameSpaceOrNil
+    ].
+    self setSelf:anObject.
+    self notifying:someOne.
+    self ignoreErrors:ignoreErrors.
+    self ignoreWarnings:ignoreWarnings.
+    token := self nextToken.
+    (token == $^) ifTrue:[
+        self nextToken.
+    ].
+    (token == #EOF) ifTrue:[
+        ^ nil
+    ].
+    "/tree := self expression.
+    tree := self statementList.    
+    (self errorFlag or:[tree == #Error]) ifTrue:[^ #Error].
+    ^ tree
+
+    "Created: / 14-12-1999 / 15:11:37 / cg"
+    "Created: / 09-07-2011 / 22:23:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseParser methodsFor:'parsing-tweaks'!
+
+blockStatementList
+    "parse a blocks statementlist; return a node-tree, nil or #Error"
+    
+    |thisStatement prevStatement firstStatement eMsg blockStart|
+
+    blockStart := tokenPosition.
+    (tokenType == $]) ifTrue:[
+        ^ nil
+    ].          
+    thisStatement := self statement.
+    (thisStatement == #Error) ifTrue:[
+        ^ #Error
+    ].
+    firstStatement := thisStatement.
+    [
+        tokenType == $] or:[ tokenType == #EOF ]
+    ] whileFalse:[
+        (tokenType == $.) ifFalse:[   
+            (tokenType == #EOF) ifTrue:[
+                "    self syntaxError:'missing '']'' in block' position:blockStart to:(source position1Based).
+                    ^ #Error."
+            ].
+            (tokenType == $)) ifTrue:[
+                eMsg := 'missing '']'' or bad '')'' in block'
+            ] ifFalse:[
+                eMsg := 'missing ''.'' between statements (i.e. ''' 
+                            , tokenType printString , '''-token unexpected)'
+            ].          
+             "self syntaxError:eMsg position:blockStart to:tokenPosition.
+             ^ #Error"
+        ].
+
+        prevStatement := thisStatement.    
+        (eMsg isNil ) ifTrue:[              
+            self nextToken.
+        ].
+        tokenType == $] ifTrue:[
+            "
+             *** I had a warning here (since it was not defined
+             *** in the blue-book; but PD-code contains a lot of
+             *** code with periods at the end so that the warnings
+             *** became annoying
+
+             self warning:'period after last statement in block'."
+            self markBracketAt:tokenPosition.
+            ^ firstStatement
+        ].
+        thisStatement := self statement.
+        (thisStatement == #Error) ifTrue:[
+            ^ #Error
+        ].
+        prevStatement nextStatement:thisStatement.
+        (eMsg notNil) ifTrue:[
+            self nextToken.
+        ].
+        eMsg := nil.
+    ].
+    self markBracketAt:tokenPosition.
+    ^ self statementListRewriteHookFor:firstStatement
+
+    "Modified: / 27-07-2010 / 08:57:02 / cg"
+    "Modified: / 18-02-2011 / 21:40:33 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+primary
+    "parse a primary-expression; return a node-tree, nil or #Error.
+     This also cares for namespace-access-pathes."
+    
+    | node |
+    node := super primary.
+    "/If an error occured, return the error node"
+    node == #Error ifTrue:[
+        self assert: error notNil description: 'Parse error occured but no error node.'.
+        node := error. error := nil.
+    ].
+    ^node
+
+    "Modified: / 18-10-2006 / 19:37:50 / cg"
+    "Created: / 07-02-2011 / 18:09:31 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 06-04-2011 / 22:40:05 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 27-11-2011 / 09:42:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+statementList
+    "parse a statementlist; return a node-tree, nil or #Error.
+     Statements must be separated by periods.
+
+     statementList ::= <statement>
+                       | <statementList> . <statement>"
+    
+    |thisStatement prevStatement firstStatement periodPos prevExpr|
+
+    thisStatement := self statement.
+    (thisStatement == #Error) ifTrue:[
+        self breakPoint: #jv.            
+        ^ #Error
+    ].
+    firstStatement := thisStatement.
+    [ tokenType == #EOF ] whileFalse:[
+        prevExpr := thisStatement expression.
+        (prevExpr notNil 
+            and:[ prevExpr isMessage and:[ thisStatement isReturnNode not ] ]) 
+                ifTrue:[
+                    (#( #'=' #'==' ) includes:prevExpr selector) ifTrue:[
+                        self 
+                            warning:'useless computation - mistyped assignment (i.e. did you mean '':='') ?'
+                            position:prevExpr selectorPosition
+                    ].
+                ].
+        periodPos := tokenPosition.
+
+        (tokenType == $. or:[ firstStatement = thisStatement and:[firstStatement expression isErrorNode] ]) ifTrue:[    
+            self nextToken.
+        ].
+        tokenType == $. ifTrue:[
+            self emptyStatement.
+        ].
+        (tokenType == $]) ifTrue:[
+            currentBlock isNil ifTrue:[
+                
+            ] ifFalse:[
+                ^ self statementListRewriteHookFor:firstStatement
+            ].
+        ].
+        (tokenType == #EOF) ifTrue:[
+            currentBlock notNil ifTrue:[
+                "self parseError:''']'' expected (block nesting error)'."
+            ] ifFalse:[
+                ^ self statementListRewriteHookFor:firstStatement
+            ].
+        ].
+        prevStatement := thisStatement.
+        prevStatement isReturnNode ifTrue:[
+            self warning:'statements after return' position:tokenPosition
+        ].
+        thisStatement := self statement.
+        (thisStatement == #Error) ifTrue:[
+            self breakPoint: #jv.           
+            ^ #Error
+        ].
+        (thisStatement expression isNil or:[thisStatement expression isErrorNode]) ifTrue:[
+            self nextToken.
+        ].
+
+        prevStatement nextStatement:thisStatement
+    ].
+    ^ self statementListRewriteHookFor:firstStatement
+
+    "Modified: / 20-11-2006 / 14:05:52 / cg"
+    "Created: / 07-02-2011 / 17:10:44 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 20:34:56 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 27-11-2011 / 16:11:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseParser methodsFor:'syntax coloring'!
+
+markBracketAt:pos
+
+    sourceText isNil ifTrue:[^self].
+    ^super markBracketAt:pos
+
+    "Created: / 03-04-2011 / 22:39:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+markFrom:pos1 to:pos2 withEmphasis:fontEmp color:clrIn
+
+    sourceText isNil ifTrue:[^self].
+    super markFrom:pos1 to:pos2 withEmphasis:fontEmp color:clrIn
+
+    "Created: / 03-04-2011 / 22:24:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+markFrom:pos1 to:pos2 withEmphasis:fontEmp color:fgClr1 ifNil:fgClr2 backgroundColor:bgClr
+
+    sourceText isNil ifTrue:[^self].
+    super markFrom:pos1 to:pos2 withEmphasis:fontEmp color:fgClr1 ifNil:fgClr2 backgroundColor:bgClr
+
+    "Created: / 14-02-2012 / 11:08:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseParser class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseParser.st 7922 2012-03-09 07:57:34Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseParserTests.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,875 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseTestCase subclass:#SmallSenseParserTests
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Tests'
+!
+
+
+!SmallSenseParserTests methodsFor:'parseTests'!
+
+test1
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |u w b c d tokenValue val uu bb cc dd |
+                   u := 3.
+                    b:=u.
+                    c:=u floor.
+                    d floor:u.
+                    d floor:3 b:u.
+                    self rememberSymbolUsed:tokenValue.
+                    array:=#( 3 4 5 6 ).
+                    val := ConstantNode type:tokenType value:tokenValue.
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ].
+                    ^self.
+                    '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+
+    "Created: / 21-12-2010 / 23:07:13 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 22-02-2011 / 12:35:19 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test10
+    |collector|
+
+    collector := self 
+                doForSource:'  
+                    | b|
+                    u := 3.
+                    b:=u.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:(collector tree nextStatement nextStatement) isNil.
+    self assert:(collector tree expression) isAssignment.
+    self assert:(collector tree expression variable) isVariable.
+    self assert:(collector tree expression expression) isConstant.
+    self assert:(collector tree nextStatement expression) isAssignment.
+    self assert:(collector tree nextStatement expression variable) isVariable.
+    self 
+        assert:(collector tree nextStatement expression expression) isVariable.
+
+    "Created: / 15-02-2011 / 15:23:50 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 16:49:19 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test11
+    |collector|
+    collector := self 
+                doForSource:'  
+                    | b|
+                    u := 3
+                    b:=u.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:(collector tree nextStatement nextStatement nextStatement) isNil.
+    self assert:(collector tree expression) isAssignment.
+    self assert:(collector tree expression variable) isVariable.
+    self assert:(collector tree expression variable name= 'u').
+    self assert:(collector tree expression expression) isUnaryMessage.
+    self assert:(collector tree expression expression receiver) isConstant.
+    self assert:(collector tree expression expression receiver value=3) .
+    self assert:(collector tree expression expression selector asString)='b'.
+    self assert:(collector tree expression expression args isNil ).
+    self assert:(collector tree nextStatement expression) isErrorNode.
+    self assert:(collector tree nextStatement expression errorToken)= ':='.
+    self assert:(collector tree nextStatement nextStatement expression) isVariable.
+    self assert:(collector tree nextStatement nextStatement expression name)='u'.
+
+    "Created: / 15-02-2011 / 15:24:01 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 16:58:56 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test12
+    |collector|
+    collector := self 
+                doForSource:'  
+                    | b|
+                     : 3
+                    '.
+self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:(collector tree nextStatement  nextStatement) isNil.
+    self assert:(collector tree expression) isErrorNode.
+    self assert:(collector tree expression errorToken =':').
+    self assert:(collector tree nextStatement expression) isConstant.
+    self assert:(collector tree nextStatement expression value=3).
+
+    "Created: / 15-02-2011 / 15:25:36 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 17:08:54 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test13
+    |collector|
+
+    collector := self 
+                doForSource:'  
+                    | b|
+                    u := 3
+                    :=u.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    self 
+        assert:(collector tree nextStatement nextStatement nextStatement) isNil.
+    self assert:(collector tree expression) isAssignment.
+    self assert:(collector tree expression variable) isVariable.
+    self assert:(collector tree expression variable name = 'u').
+    self assert:(collector tree expression expression) isConstant.
+    self assert:(collector tree expression expression value =3).
+    self assert:(collector tree nextStatement expression) isErrorNode.
+    self assert:(collector tree nextStatement expression errorToken) = ':='.
+    self 
+        assert:(collector tree nextStatement nextStatement expression) isVariable.
+    self 
+        assert:(collector tree nextStatement nextStatement expression name) = 'u'.
+
+    "Created: / 15-02-2011 / 16:48:11 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 17:21:48 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test14
+    |collector|
+    collector := self 
+                doForSource:'  
+                    | b|
+                    u := 3
+                    :u.
+                    '.
+ self assert:collector notNil.
+    self assert:collector tree notNil.
+    self 
+        assert:(collector tree nextStatement nextStatement nextStatement) isNil.
+    self assert:(collector tree expression) isAssignment.
+    self assert:(collector tree expression variable) isVariable.
+    self assert:(collector tree expression variable name = 'u').
+    self assert:(collector tree expression expression) isConstant.
+    self assert:(collector tree expression expression value =3).
+    self assert:(collector tree nextStatement expression) isErrorNode.
+    self assert:(collector tree nextStatement expression errorToken) = ':'.
+    self 
+        assert:(collector tree nextStatement nextStatement expression) isVariable.
+    self 
+        assert:(collector tree nextStatement nextStatement expression name) = 'u'.
+
+    "Created: / 15-02-2011 / 17:03:42 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 19:52:39 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test15
+    |collector|
+    collector := self 
+                doForSource:'  
+                    | b|
+                    u := 3
+                    =u.
+                    '.
+ self assert:collector notNil.
+    self assert:collector tree notNil.
+    self 
+        assert:(collector tree nextStatement ) isNil.
+    self assert:(collector tree expression) isAssignment.
+    self assert:(collector tree expression variable) isVariable.
+    self assert:(collector tree expression variable name = 'u').
+    self assert:(collector tree expression expression) isBinaryMessage.
+    self assert:(collector tree expression expression receiver value =3).
+    self assert:(collector tree expression expression receiver ) isConstant.
+    self assert:(collector tree expression expression selector )= #=.
+    self assert:(collector tree expression expression args size=1 ).
+    self assert:(collector tree expression expression arg ) isVariable.    
+    self assert:(collector tree expression expression arg name='u' ).
+
+    "Created: / 15-02-2011 / 17:04:33 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 19:56:28 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test19
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |b c|
+                   u := 3 u:=
+                    c u floor.
+                    '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+self assert:collector tree expression isAssignment.
+self assert:collector tree nextStatement expression isErrorNode.
+self assert:collector tree nextStatement expression errorToken=':='.
+self assert:collector tree nextStatement nextStatement expression isUnaryMessage.
+
+    "Created: / 15-02-2011 / 18:15:51 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 20:00:13 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test2
+
+    |collector|
+    collector := self 
+                doForSource:'
+                    u :'.
+self assert:collector notNil.
+self assert:collector tree notNil.
+self assert:(collector tree expression name ='u').
+self assert:(collector tree expression) isVariable.
+self assert:(collector tree nextStatement expression isErrorNode).
+self assert: collector tree nextStatement expression errorToken=':'.
+
+    "Created: / 09-02-2011 / 20:54:42 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 15:04:33 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test24
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |u w|
+                   self :                  '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+self assert:collector tree expression isSelf.
+self assert:collector tree nextStatement expression isErrorNode.
+self assert:collector tree nextStatement expression errorToken=':'.
+
+    "Created: / 15-02-2011 / 18:37:23 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 20:02:46 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test25
+    |collector|
+"    collector := self 
+                doForSource:'  
+                    |u w|
+                   self :=5                  '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+self assert:collector tree expression isSelf.
+self assert:collector tree nextStatement expression isErrorNode.
+self assert:collector tree nextStatement expression errorToken=':='.
+self assert:collector tree nextStatement nextStatement expression isConstant."
+
+    "Created: / 15-02-2011 / 18:37:56 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 28-02-2011 / 17:28:20 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test26
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |u w|
+                   false :=5                  '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+self assert:collector tree expression isConstant.
+self assert:collector tree nextStatement expression isErrorNode.
+self assert:collector tree nextStatement expression errorToken=':='.
+self assert:collector tree nextStatement nextStatement expression isConstant.
+
+    "Created: / 15-02-2011 / 19:50:17 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 20:05:19 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test27
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |u w|
+                   nil :=5                  '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+self assert:collector tree expression isConstant.
+self assert:collector tree nextStatement expression isErrorNode.
+self assert:collector tree nextStatement expression errorToken=':='.
+self assert:collector tree nextStatement nextStatement expression isConstant.
+
+    "Created: / 15-02-2011 / 19:51:02 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 20:05:32 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test28
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |d w tokenValue|
+                   d floor:3 b:u
+                    self rememberSymbolUsed:tokenValue.                '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+
+    "Created: / 15-02-2011 / 19:52:23 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 20:06:33 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test29
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |d u w|
+                   d floor:3 b:u
+                    self                 '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+
+    "Created: / 15-02-2011 / 19:53:15 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 20:06:46 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test3
+    |collector|
+
+    collector := self doForSource:'
+                    u ='.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:(collector tree expression) isBinaryMessage.
+    self assert:(collector tree expression receiver name = 'u').
+    self assert:(collector tree expression receiver) isVariable.
+    self assert:(collector tree expression selector) == #=.
+    self assert:(collector tree expression args size) = 1.
+    self assert:(collector tree expression arg) isErrorNode.
+    self assert:(collector tree expression arg errorToken = 'EOF').
+
+    "Created: / 11-02-2011 / 15:32:58 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 15:20:22 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test30
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |array |
+                  self rememberSymbolUsed:tokenValue
+                    array:=#( 3 4 5 6 ).           '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+
+    "Created: / 15-02-2011 / 19:54:10 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test31
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |array tokenValue|
+                  self rememberSymbolUsed:tokenValue
+                    array:=( 3 4 5 6 ).           '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+self assert:collector tree expression isMessage.
+self assert:collector tree nextStatement expression isErrorNode.
+self assert:collector tree nextStatement expression errorToken=':='.
+self assert:collector tree nextStatement nextStatement  expression isUnaryMessage.
+
+    "Created: / 16-02-2011 / 15:51:47 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 20:15:19 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test32
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |uu w|
+                    [u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+
+                    ].
+
+                    '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+
+    "Created: / 16-02-2011 / 15:54:07 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test33
+    |collector|
+
+    collector := self 
+                doForSource:'  
+                    |uu w|
+                    u== #Symbol or:[u=3]]ifTrue:[
+                    uu := 4.
+
+                    ].
+
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:collector tree expression isMessage.
+    self assert:collector tree expression receiver isBinaryMessage.
+    self assert:collector tree expression receiver receiver isVariable.
+    self assert:collector tree expression receiver receiver name = 'u'.
+    self assert:collector tree expression receiver selector = #'=='.
+    self assert:collector tree expression receiver args size = 1.
+    self assert:collector tree expression receiver arg isConstant.
+    self assert:collector tree expression receiver arg value = #Symbol.
+    self assert:collector tree expression selector = #or:.
+    self assert:collector tree expression args size = 1.
+    self assert:collector tree expression arg1 isBlock.
+    self assert:collector tree expression arg1 statements expression 
+                isBinaryMessage.
+    self assert:collector tree nextStatement expression isErrorNode.
+    self assert:collector tree nextStatement expression errorToken = ']'.
+    self 
+        assert:collector tree nextStatement nextStatement expression isMessage.
+    self 
+        assert:collector tree nextStatement nextStatement expression receiver 
+                isErrorNode.
+    self 
+        assert:collector tree nextStatement nextStatement expression receiver 
+                errorToken = 'Keyword'.
+    self 
+        assert:collector tree nextStatement nextStatement expression selector 
+                = #ifTrue:.
+    self 
+        assert:collector tree nextStatement nextStatement expression args size = 1.
+    self 
+        assert:collector tree nextStatement nextStatement expression arg1 
+                statements expression 
+                isAssignment.
+
+    "Created: / 16-02-2011 / 15:55:49 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 20:52:03 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test34
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |array |
+                  self rememberSymbolUsed:tokenValue
+                    array:=#( 3 4 5 6 .           '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+self assert:collector tree expression isMessage.
+self assert:collector tree nextStatement expression isErrorNode.
+self assert:collector tree nextStatement expression errorToken=':='.
+self assert:collector tree nextStatement nextStatement  expression isConstant.
+
+    "Created: / 16-02-2011 / 16:09:35 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 20:16:54 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test35
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |uu w|
+                    [u== #Symbol or:u=3]]ifTrue:[
+                    uu := 4.
+
+                    ].
+
+                    '.
+ self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:collector tree expression isBlock.
+    self assert:collector tree expression statements expression isMessage.
+    self assert:collector tree expression statements expression receiver isBinaryMessage.
+    self assert:collector tree expression statements expression receiver receiver isVariable.
+    self assert:collector tree expression statements expression receiver receiver name = 'u'.
+    self assert:collector tree expression statements expression receiver selector = #'=='.
+    self assert:collector tree expression statements expression receiver args size = 1.
+    self assert:collector tree expression statements expression receiver arg isConstant.
+    self assert:collector tree expression statements expression receiver arg value = #Symbol.
+    self assert:collector tree expression statements expression selector = #or:.
+    self assert:collector tree expression statements expression args size = 1.
+    self assert:collector tree expression statements expression arg1 isBinaryMessage.
+    self assert:collector tree nextStatement expression isErrorNode.
+    self assert:collector tree nextStatement expression errorToken = ']'.
+    self 
+        assert:collector tree nextStatement nextStatement expression isMessage.
+    self 
+        assert:collector tree nextStatement nextStatement expression receiver 
+                isErrorNode.
+    self 
+        assert:collector tree nextStatement nextStatement expression receiver 
+                errorToken = 'Keyword'.
+    self 
+        assert:collector tree nextStatement nextStatement expression selector 
+                = #ifTrue:.
+    self 
+        assert:collector tree nextStatement nextStatement expression args size = 1.
+    self 
+        assert:collector tree nextStatement nextStatement expression arg1 
+                statements expression 
+                isAssignment.
+
+    "Created: / 16-02-2011 / 16:47:18 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 20:56:11 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test36
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |uu w|
+                    [u== #Symbol ifTrue:[
+                    uu := 4.
+
+                    ].
+
+                    '.
+   self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:collector tree expression isBlock.
+    self assert:collector tree expression statements expression isMessage.
+    self assert:collector tree expression statements expression receiver isBinaryMessage.
+    self assert:collector tree expression statements expression receiver receiver isVariable.
+    self assert:collector tree expression statements expression receiver receiver name = 'u'.
+    self assert:collector tree expression statements expression receiver selector = #'=='.
+    self assert:collector tree expression statements expression receiver args size = 1.
+    self assert:collector tree expression statements expression receiver arg isConstant.
+    self assert:collector tree expression statements expression receiver arg value = #Symbol.
+    self assert:collector tree expression statements expression selector = #ifTrue: .
+    self assert:collector tree expression statements expression args size = 1.
+    self assert:collector tree expression statements expression arg1 isBlock.
+    self assert:collector tree expression statements expression arg1 statements expression 
+                isAssignment.
+
+    "Created: / 16-02-2011 / 16:48:07 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 21:13:22 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test37
+    |collector|
+
+    collector := self 
+                doForSource:'  
+                    |uu w|
+                    [u== #Symbol) ifTrue:[
+                    uu := 4.
+
+                    ].
+
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:collector tree expression isBlock.
+    self 
+        assert:collector tree expression statements expression isBinaryMessage.
+    self 
+        assert:collector tree expression statements expression receiver name = 'u'.
+    self 
+        assert:collector tree expression statements expression selector = #'=='.
+    self assert:collector tree expression statements expression args size = 1.
+    self 
+        assert:collector tree expression statements expression arg1 value = #Symbol.
+    self 
+        assert:collector tree expression statements nextStatement expression 
+                isErrorNode.
+    self 
+        assert:collector tree expression statements nextStatement expression 
+                errorToken = ')'.
+    self 
+        assert:collector tree expression statements nextStatement nextStatement 
+                expression isMessage.
+    self 
+        assert:collector tree expression statements nextStatement nextStatement expression 
+                receiver isErrorNode.
+    self 
+        assert:collector tree expression statements nextStatement nextStatement expression 
+                receiver errorToken 
+                = 'Keyword'.
+    self 
+        assert:collector tree expression statements nextStatement nextStatement expression 
+                selector = #ifTrue:.
+    self 
+        assert:collector tree expression statements nextStatement nextStatement expression args 
+                size = 1.
+    self 
+        assert:collector tree expression statements nextStatement nextStatement expression arg1 
+                isBlock.
+    self 
+        assert:collector tree expression statements nextStatement nextStatement expression arg1 
+                statements expression 
+                isAssignment.
+
+    "Created: / 16-02-2011 / 17:21:06 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 21:25:27 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test38
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |uu w|
+                    [:=
+
+                    ].
+
+                    '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+self assert:collector tree expression isBlock.
+self assert:collector tree expression statements expression  isErrorNode.
+self assert:collector tree expression statements expression errorToken=':='.
+
+    "Created: / 18-02-2011 / 11:55:35 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 21:40:40 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test39
+    |collector|                
+    collector := self 
+                doForSource:'  
+                    |uu w|
+                    :=3
+
+                    '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+self assert:collector tree expression isErrorNode.
+self assert:collector tree expression errorToken=':='.
+self assert:collector tree  nextStatement expression isConstant.
+self assert:collector tree  nextStatement expression value=3.
+
+    "Created: / 18-02-2011 / 17:11:24 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test4
+    |collector|
+
+    collector := self doForSource:'
+                    u 3'.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:(collector tree expression) isUnaryMessage.
+    self assert:(collector tree expression receiver name = 'u').
+    self assert:(collector tree expression receiver) isVariable.
+    self assert:(collector tree expression selector asString) = '3'.
+
+    "Created: / 15-02-2011 / 14:13:48 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:10:14 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test40
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |array tokenValue|
+                  self rememberSymbolUsed:tokenValue
+                    array:=( 3 4 5 6.           '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+self assert:collector tree expression isMessage.
+self assert:collector tree nextStatement expression isErrorNode.
+self assert:collector tree nextStatement expression errorToken=':='.
+self assert:collector tree nextStatement nextStatement  expression isUnaryMessage.
+
+    "Created: / 18-02-2011 / 20:17:31 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test41
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |array tokenValue|
+                  self rememberSymbolUsed:tokenValue
+                    array:=( 3 4 5 6 :=u           '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+self assert:collector tree expression isMessage.
+self assert:collector tree nextStatement expression isErrorNode.
+self assert:collector tree nextStatement expression errorToken=':='.
+self assert:collector tree nextStatement nextStatement  expression isUnaryMessage.
+self assert:collector tree nextStatement nextStatement nextStatement  expression isErrorNode.
+self assert:collector tree nextStatement nextStatement nextStatement  expression errorToken=':='.
+self assert:collector tree nextStatement nextStatement nextStatement nextStatement  expression isVariable.
+
+    "Created: / 18-02-2011 / 20:35:35 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test42
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |array tokenValue|
+                  self rememberSymbolUsed:tokenValue
+                    array:= 3 4 5 6 :=u)           '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+self assert:collector tree expression isMessage.
+self assert:collector tree nextStatement expression isErrorNode.
+self assert:collector tree nextStatement expression errorToken=':='.
+self assert:collector tree nextStatement nextStatement  expression isUnaryMessage.
+self assert:collector tree nextStatement nextStatement nextStatement  expression isErrorNode.
+self assert:collector tree nextStatement nextStatement nextStatement  expression errorToken=':='.
+self assert:collector tree nextStatement nextStatement nextStatement nextStatement  expression isVariable.
+self assert:collector tree nextStatement nextStatement nextStatement nextStatement nextStatement expression isErrorNode.
+self assert:collector tree nextStatement nextStatement nextStatement nextStatement nextStatement expression errorToken=')'.
+
+    "Created: / 18-02-2011 / 20:37:17 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test43
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |uu w b|
+                    [u== #Symbol ifTrue:[
+                    uu := 4.
+
+                    ].
+                      b:=3
+                    '.
+   self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:collector tree expression isBlock.
+    self assert:collector tree expression statements expression isMessage.
+    self assert:collector tree expression statements expression receiver isBinaryMessage.
+    self assert:collector tree expression statements expression receiver receiver isVariable.
+    self assert:collector tree expression statements expression receiver receiver name = 'u'.
+    self assert:collector tree expression statements expression receiver selector = #'=='.
+    self assert:collector tree expression statements expression receiver args size = 1.
+    self assert:collector tree expression statements expression receiver arg isConstant.
+    self assert:collector tree expression statements expression receiver arg value = #Symbol.
+    self assert:collector tree expression statements expression selector = #ifTrue: .
+    self assert:collector tree expression statements expression args size = 1.
+    self assert:collector tree expression statements expression arg1 isBlock.
+    self assert:collector tree expression statements expression arg1 statements expression 
+                isAssignment.
+
+    "Created: / 18-02-2011 / 21:16:10 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test44
+    |collector|
+    collector := self 
+                doForSource:'  
+                    |b c|
+                   u :=b b: u:c
+                    '.
+self assert:collector notNil.
+self assert:collector tree notNil.
+self assert:collector tree expression isAssignment.
+
+    "Created: / 20-02-2011 / 18:54:11 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test5
+    |collector|
+
+    collector := self doForSource:'
+                    u +'.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:(collector tree expression) isBinaryMessage.
+    self assert:(collector tree expression receiver name = 'u').
+    self assert:(collector tree expression receiver) isVariable.
+    self assert:(collector tree expression selector) isSymbol.
+    self assert:(collector tree expression selector asString) = '+'.
+    self assert:(collector tree expression args size) = 1.
+    self assert:(collector tree expression arg) isErrorNode.
+    self assert:(collector tree expression arg errorToken = 'EOF').
+
+    "Created: / 15-02-2011 / 15:18:25 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 15:31:37 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test6
+    |collector|
+
+    collector := self doForSource:'
+                    u +.'.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:(collector tree expression) isBinaryMessage.
+    self assert:(collector tree expression receiver name = 'u').
+    self assert:(collector tree expression receiver) isVariable.
+    self assert:(collector tree expression selector) isSymbol.
+    self assert:(collector tree expression selector asString) = '+'.
+    self assert:(collector tree expression args size) = 1.
+    self assert:(collector tree expression arg) isErrorNode.
+    self assert:(collector tree expression arg errorToken = '.').
+
+    "Created: / 15-02-2011 / 15:19:08 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 15:32:56 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test7
+    |collector|
+
+    collector := self doForSource:'
+                    u 3.'.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:(collector tree expression) isUnaryMessage.
+    self assert:(collector tree expression receiver name = 'u').
+    self assert:(collector tree expression receiver) isVariable.
+    self assert:(collector tree expression selector asString) = '3'.
+
+    "Created: / 15-02-2011 / 15:19:22 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 22:10:21 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test8
+    |collector|
+
+    collector := self doForSource:'
+                    u =.'.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:(collector tree expression) isBinaryMessage.
+    self assert:(collector tree expression receiver name = 'u').
+    self assert:(collector tree expression receiver) isVariable.
+    self assert:(collector tree expression selector) == #'='.
+    self assert:(collector tree expression args size) = 1.
+    self assert:(collector tree expression arg) isErrorNode.
+    self assert:(collector tree expression arg errorToken = '.').
+
+    "Created: / 15-02-2011 / 15:19:38 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 15:34:13 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+test9
+    |collector|
+
+    collector := self doForSource:'
+                    u :.'.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:(collector tree expression name = 'u').
+    self assert:(collector tree expression) isVariable.
+    self assert:(collector tree nextStatement expression isErrorNode).
+    self assert:collector tree nextStatement expression errorToken = ':'.
+    self assert:collector tree nextStatement nextStatement isNil.
+
+    "Created: / 15-02-2011 / 15:19:52 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-02-2011 / 15:35:42 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testBadAssignment
+    |collector|
+
+    collector := self doForSource:'
+                    u := '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    self assert:(collector tree expression) isAssignment.
+    self assert:(collector tree expression variable name = 'u').
+    self assert:(collector tree expression variable) isVariable.
+    self assert:(collector tree expression expression) isErrorNode.
+    self assert:(collector tree expression expression errorToken = 'EOF').
+
+    "Modified: / 18-02-2011 / 15:39:33 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseParserTests class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseParserTests.st 7694 2011-04-04 19:53:25Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSensePosition.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,68 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+Object subclass:#SmallSensePosition
+	instanceVariableNames:'node position position1'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core'
+!
+
+
+!SmallSensePosition class methodsFor:'instance creation'!
+
+node: node position: position
+
+    ^self new node: node position: position
+
+    "Created: / 26-11-2011 / 16:22:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSensePosition methodsFor:'accessing'!
+
+node
+    ^ node
+!
+
+position
+    ^ position
+! !
+
+!SmallSensePosition methodsFor:'initialization'!
+
+node:nd position: pos
+
+    node := nd.
+    position := pos.
+    position1 := pos - 1
+
+    "Created: / 26-11-2011 / 16:22:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSensePosition methodsFor:'queries'!
+
+afterNode
+
+    ^node endPosition < position1
+
+    "Created: / 26-11-2011 / 16:24:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+beforeNode
+
+    ^position < node startPosition
+
+    "Created: / 26-11-2011 / 16:24:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+inNode
+
+    ^position1 between: node startPosition and: node endPosition
+
+    "Created: / 26-11-2011 / 16:24:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSensePosition class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSensePosition.st 7823 2011-11-26 16:55:59Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseQuickFixer.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,156 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+Object subclass:#SmallSenseQuickFixer
+	instanceVariableNames:'view rule fixes'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Lint'
+!
+
+Object subclass:#QuickFix
+	instanceVariableNames:'rule label action'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:SmallSenseQuickFixer
+!
+
+
+!SmallSenseQuickFixer class methodsFor:'instance creation'!
+
+for: rule
+
+    ^self new initializeForRule: rule.
+
+    "Created: / 01-02-2012 / 12:06:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+for: rule view: view
+
+    ^self new initializeForRule: rule view: view
+
+    "Created: / 17-02-2012 / 00:21:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseQuickFixer methodsFor:'adding'!
+
+fix
+    "Create and return new quick fix. Caller MUST set its 
+     label and action"
+
+    | fix |
+
+    fix := QuickFix new.
+    fix rule: rule.
+    fixes add: fix.
+    ^fix
+
+    "Created: / 01-02-2012 / 10:51:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseQuickFixer methodsFor:'initialization'!
+
+initializeForRule: anRBLintRule view: aCodeView2
+    rule := anRBLintRule.
+    view := aCodeView2.
+    fixes := OrderedCollection new: 3.
+    rule fixes: self.
+
+    "Created: / 17-02-2012 / 00:20:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseQuickFixer methodsFor:'performing fixes'!
+
+performFix: index
+
+    index <= fixes size ifTrue:[
+        (fixes at: index) performFix.
+    ] ifFalse:[
+        ^ Dialog warn: ('No such fix (%1)' bindWith: index).
+    ]
+
+    "Created: / 16-02-2012 / 14:48:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseQuickFixer methodsFor:'printing & storing'!
+
+printHtmlOn: html
+
+    fixes isEmptyOrNil ifTrue:[ ^ self ].
+    fixes size > 1 ifTrue:[
+        html nextPutAll: '<br>'.
+        html nextPutLine: 'Possible fixes'.
+    ].
+    html nextPutLine:'<ul>'.
+    fixes withIndexDo:[:fix :index|
+        html 
+            nextPutAll:'<li><a action="doit: self doQuickFix:';
+            nextPutAll: index printString;
+            nextPutAll:'">';
+            nextPutAll: fix label;
+            nextPutAll:'</a></li>'.
+    ].
+    html nextPutLine:'</ul>'.
+
+    "Created: / 01-02-2012 / 12:13:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseQuickFixer methodsFor:'utilities'!
+
+apply: allChanges
+    | changes |
+
+    changes := Tools::ChangeSetBrowser2 confirmChanges: allChanges.
+    changes isEmptyOrNil ifTrue:[ ^ self ].
+    (changes size == 1 and:[view reallyModified]) ifTrue:[
+        view contents: changes anElement source clear: false.
+    ] ifFalse:[
+        | browser |
+
+
+        self halt.
+    ]
+
+    "Created: / 16-02-2012 / 14:46:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseQuickFixer::QuickFix methodsFor:'accessing'!
+
+action
+    ^ action
+!
+
+action:aBlock
+    action := aBlock.
+!
+
+label
+    ^ label
+!
+
+label:aString
+    label := aString.
+!
+
+performFix
+
+    ^action value
+
+    "Created: / 16-02-2012 / 14:48:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+rule
+    ^ rule
+!
+
+rule:anRBLintRule
+    rule := anRBLintRule.
+! !
+
+!SmallSenseQuickFixer class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseQuickFixer.st 7911 2012-02-22 09:55:48Z vranyj1 $'
+! !
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseRecognizer.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,756 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+Object subclass:#SmallSenseRecognizer
+	instanceVariableNames:'resultSet collector'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core'
+!
+
+
+!SmallSenseRecognizer class methodsFor:'utilities'!
+
+old_resultSetFor: mode source: source class: class row: row column: col 
+
+    | parser tree |
+
+
+    mode == #method ifTrue:[
+        parser := SmallSenseParser new.
+        parser 
+            parseMethod:source asString
+            in: class
+            ignoreErrors:false
+            ignoreWarnings:false.
+    ] ifFalse:[
+        parser := SmallSenseParser for: (source asString readStream).
+        "JV@2011-06-13: HACK, use polymorphism"
+        tree := parser
+            parseExpressionWithSelf:nil 
+            notifying:nil 
+            ignoreErrors:false 
+            ignoreWarnings:false 
+            inNameSpace:nil.
+        parser tree: tree.
+    ].
+    ^ self new
+        recognize:row
+        position:col
+        collector:parser
+
+    "Modified: / 07-04-2011 / 22:55:58 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 26-11-2011 / 14:40:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+resultSetFor: mode source: source class: class line: line column: col 
+
+    | inferencer tree |
+
+
+    mode == #method ifTrue:[
+        inferencer := SmallSenseInferencer forClass: class methodSource: source asString.
+        inferencer parserClass: SmallSenseParser.
+        inferencer process.
+    ] ifFalse:[
+        self breakPoint: #jv.
+        ^self.
+        inferencer := SmallSenseParser for: (source asString readStream).
+        "JV@2011-06-13: HACK, use polymorphism"
+        tree := inferencer
+            parseExpressionWithSelf:nil 
+            notifying:nil 
+            ignoreErrors:false 
+            ignoreWarnings:false 
+            inNameSpace:nil.
+        inferencer tree: tree.
+    ].
+    ^ self new
+        completeAtLine:line
+        column:col
+        collector:inferencer
+
+    "Modified: / 07-04-2011 / 22:55:58 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 26-11-2011 / 17:53:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseRecognizer methodsFor:'adding'!
+
+addGlobalsStartingWith: prefix
+
+    | class ns cls |
+    class := collector klass.
+    class classVarNames do:[:nm|
+        (nm startsWith: prefix) ifTrue:[
+            resultSet add:(SmallSenseVariable classVariable: nm in: class).
+        ].
+    ].
+    ns := class nameSpace.
+    "nameSpace may return private class, sigh"
+    [ ns isNameSpace ] whileFalse:[ ns := ns nameSpace ].
+    ns keysDo:[:nm|
+        (nm startsWith: prefix) ifTrue:[
+            cls := ns classNamed: nm.
+            cls notNil ifTrue:[
+                cls isBehavior ifTrue:[
+                    resultSet add:(SmallSenseClass new subject: cls; name: nm).
+                ] ifFalse:[
+                    resultSet add:(SmallSenseVariable globalVariable: cls).
+                ]
+            ]
+        ].
+    ].
+    ns ~~ Smalltalk ifTrue:[
+        Smalltalk keysDo:[:nm|
+            (nm startsWith: prefix) ifTrue:[
+                cls := Smalltalk classNamed: nm.
+                cls notNil ifTrue:[
+                    cls isBehavior ifTrue:[
+                        resultSet add:(SmallSenseClass new subject: cls ).
+                    ] ifFalse:[
+                        resultSet add:(SmallSenseVariable globalVariable: cls).
+                    ]
+                ]
+            ]
+        ].
+    ]
+
+    "Created: / 26-11-2011 / 17:29:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+addMethods: type
+
+    type classesDo:[:each|
+        | class |
+
+        class := each.
+        [ class isNil ] whileFalse:[
+            class 
+                selectorsAndMethodsDo:[:selector :met | 
+                    resultSet add:(SmallSenseMethod 
+                                name:selector
+                                description:"met source"nil
+                                class:class).
+                ].
+            class := class superclass.
+        ].
+    ].
+
+    "Created: / 26-11-2011 / 17:03:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+addVariables
+
+    "Add Instance variables"
+    collector klass allInstVarNames do:[:nm|
+        resultSet add: (SmallSenseVariable instanceVariable: nm in: collector klass).
+    ].
+    "Add pseudo variables"
+    #(self super here thisContext) do:[:nm|
+        resultSet add: (SmallSenseVariable new name: nm).
+    ].
+    "Add arguments"
+    collector parser methodArgs ? #() do:[:nm|
+        resultSet add: (SmallSenseVariable argument: nm).
+
+    ].
+    "Add temporaries"
+    collector parser methodVars ? #() do:[:nm|
+        resultSet add: (SmallSenseVariable variable: nm).
+    ].
+
+    "Created: / 26-11-2011 / 17:29:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseRecognizer methodsFor:'completion'!
+
+completeAtLine:line column:col collector:coll 
+    "find most possible codeCompletion object"
+    
+    | position |
+    resultSet := SmallSenseResultSet new.
+    collector := coll.
+
+    (collector tree == #Error) ifTrue:[ ^resultSet ].
+    (collector tree == nil) ifTrue:[ ^resultSet ].
+
+    
+
+    position := SmallSenseFinder new 
+                    findNodeIn: collector source tree: collector tree 
+                    line: line column: col.
+    resultSet position: position.
+
+
+    (position afterNode) ifTrue:[
+        self completeAfter:position node.
+        ^resultSet.
+    ].
+
+    (position inNode) ifTrue:[
+        self completeIn:position node.
+        ^resultSet.
+    ].
+
+    (position beforeNode) ifTrue:[
+        self completeBefore:position node.
+        ^resultSet.
+    ].
+
+    "Created: / 04-03-2011 / 13:01:14 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 10:52:59 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 26-11-2011 / 17:05:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseRecognizer methodsFor:'completion-private'!
+
+completeAfter:node
+    "return collection of completion items after given node"
+
+    self addMethods: node inferedType
+
+    "Created: / 04-03-2011 / 15:45:28 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 10:55:09 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 26-11-2011 / 17:07:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+completeBefore:node
+
+    self breakPoint: #jv. "Not yet implemented"
+
+    "Created: / 04-03-2011 / 15:45:28 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 10:55:09 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 26-11-2011 / 17:07:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+completeIn:node
+    "return collection which can be afterNode"
+    
+    node isVariableNode ifTrue:[
+        node name first isUppercase ifTrue:[
+            self addGlobalsStartingWith: node name
+        ] ifFalse:[
+            self addVariables
+        ].
+        ^self.
+    ].
+
+    node isMessage ifTrue:[
+        self addMethods: node receiver inferedType.
+        ^self.
+    ].
+
+    self breakPoint: #jv.
+
+    "Created: / 07-03-2011 / 18:59:02 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 09:31:51 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 26-11-2011 / 17:07:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseRecognizer methodsFor:'obsolete'!
+
+addSendsAndMethodFromAssignmentsFromRoelTyperResult:result 
+    "we have roelTyperResult for exact node we add all sends and all methods which we can find in assignments"
+    
+    |retCollection class|
+
+    retCollection := SmallSenseResultSet new.
+
+    "
+    (result interface) do:[:send|
+        retCollection add: (SmallSenseMethod name:send description:'Used sender.'). 
+    ].
+    "
+    result assignments do:[:assignment | 
+         class := assignment.
+        [ class isNil ] whileFalse:[
+            class 
+                selectorsAndMethodsDo:[:selector :met | 
+                    retCollection add:(SmallSenseMethod 
+                                name:selector
+                                description:"met source"nil
+                                class:class).
+                ].
+            class := class superclass.
+        ].
+    ].
+    ^ retCollection.
+
+    "Created: / 07-03-2011 / 18:20:15 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 10:15:20 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 18:51:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+before
+    "BasicCollection for allNode which are before "
+    
+    |retCollection|
+
+    retCollection := SmallSenseResultSet new.
+    retCollection join:(self beforeConstant).
+    retCollection join:(self beforeBlock).
+    ^ retCollection.
+
+    "Created: / 04-03-2011 / 12:36:56 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 18:32:38 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+before:foundNode collector:collector 
+    "BasicCollection for allNode which are before node"
+    
+    |retCollection helper receiver node helperNode ret|
+
+    "Check nil node"
+    retCollection := SmallSenseResultSet new.
+    (foundNode isNil) ifTrue:[
+        retCollection join:(self beforeConstant).
+        retCollection join:(self beforeBlock).
+        retCollection join:(self beforeVariable:collector).
+        ^ retCollection.
+    ].
+    (foundNode node isNil) ifTrue:[
+        node := foundNode statement.
+    ] ifFalse:[
+        node := foundNode node.
+    ].
+    helperNode := foundNode node.
+    (node isErrorNode) ifTrue:[
+        helper := foundNode beforeStatement.
+        (helper notNil) ifTrue:[
+            foundNode node:helper.
+            foundNode beforeNode:false.
+            foundNode afterNode:true.
+            ret := self after:foundNode collector:collector.
+            foundNode node:helperNode.
+            ^ ret.
+        ]
+    ].
+    node isSelector ifTrue:[
+        receiver := self getReceiverinNodeForSelector:node
+                    node:foundNode statement.
+        (receiver notNil) ifTrue:[
+            (receiver isMessage 
+                or:[
+                    receiver isAssignment 
+                        or:[ receiver isErrorNode or:[ receiver isSelector ] ]
+                ]) 
+                    ifFalse:[
+                        foundNode node:receiver.
+                        foundNode beforeNode:false.
+                        foundNode afterNode:true.
+                        ret := self after:foundNode collector:collector.
+                        foundNode node:helperNode.
+                        ^ ret.
+                    ]
+        ].
+    ].
+    retCollection join:(self beforeBlockVariable:foundNode).
+    retCollection join:(self beforeConstant).
+    retCollection join:(self beforeBlock).
+    retCollection join:(self beforeVariable:collector).
+    ^ retCollection.
+
+    "Created: / 04-03-2011 / 13:02:42 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 06-04-2011 / 18:48:29 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+beforeBlock
+    "There is some basic blocks which can be before node"
+    
+    |retCollection|
+
+    retCollection := SmallSenseResultSet new.
+    retCollection add:(SmallSenseSnippet name:'()ifTrue:[].'
+                description:'True block
+                     ()ifTrue:[].').
+    retCollection add:(SmallSenseSnippet name:'()ifFalse:[].'
+                description:'False block
+                     ()ifFalse:[].').
+    retCollection add:(SmallSenseSnippet name:'[]whileTrue:[].'
+                description:'WhileTrue block
+                     ()whileTrue:[].').
+    retCollection add:(SmallSenseSnippet name:'[]whileFalse:[].'
+                description:'WhileFalse block
+                     ()whileFalse:[].').
+    retCollection 
+        add:(SmallSenseSnippet name:'[]' description:'Closure to block').
+    retCollection add:(SmallSenseSnippet name:'()' description:'Brackets').
+    ^ retCollection.
+
+    "Created: / 04-03-2011 / 12:46:15 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 17:31:25 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 04-04-2011 / 13:42:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+beforeBlockVariable:foundNode 
+    "Add variables from Block Node"
+    
+    |retCollection|
+
+    retCollection := SmallSenseResultSet new.
+    (foundNode blockVariables notNil) ifTrue:[
+        foundNode blockVariables do:[:each | 
+            retCollection add:(SmallSenseVariable name:each name
+                        description:'Variables in the method. Defined in block  [:val| ]').
+        ].
+    ].
+    ^ retCollection
+
+    "Created: / 06-04-2011 / 18:48:29 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 20-05-2011 / 14:36:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+beforeConstant
+    "There is some basic constant which can be before node"
+    
+    |retCollection|
+    retCollection := SmallSenseResultSet new.
+    retCollection add:(SmallSenseConstant name:'^'
+                description:'Return symbol from method.
+For example: ^ nil').
+    retCollection 
+        add:(SmallSenseConstant name:':=' description:'Assignment to variable').
+    retCollection add:(SmallSenseConstant name:'self'
+                description:'Reference to self class. 
+Access to method from this class. 
+For example: self someMethod.').
+    retCollection add:(SmallSenseConstant name:'super'
+                description:'Reference to super class. 
+Access to method from super class. 
+For example: super someMethod.').
+    retCollection add:(SmallSenseConstant name:'nil'
+                description:'Nil. In c# or java null. Something empty').
+    retCollection add:(SmallSenseConstant name:'true' description:'True.').
+    retCollection add:(SmallSenseConstant name:'false' description:'False').
+    retCollection add:(SmallSenseConstant name:'#'
+                description:'Symbol reference. 
+For example: #Symbol').
+    retCollection add:(SmallSenseConstant name:'$'
+                description:'Character symbol. 
+For example #a').
+    ^retCollection.
+
+    "Created: / 04-03-2011 / 12:40:45 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 04-04-2011 / 13:44:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-04-2011 / 23:01:55 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+beforeVariable:collector 
+    "There is some variables which can be before node"
+    
+    |retCollection roelTyper helper class|
+    retCollection := SmallSenseResultSet new.
+    (collector isNil) ifTrue:[
+        ^ retCollection.
+    ].
+    (collector methodArgs notNil) ifTrue:[
+        collector methodArgs do:[:each | 
+            retCollection add:(SmallSenseVariable name:each
+                        description:'Arguments in the method. Defined in method:val').
+        ].
+    ].
+    roelTyper := self doForSource:collector.
+    roelTyper instVars do:[:var | 
+        retCollection add:(SmallSenseVariable name:var
+                    description:'Instance variables. Variables defined in instanceVariableNames')
+    ].
+    helper := roelTyper localTypingResults 
+                at:roelTyper currentExtractedMethod.
+    helper do:[:each | 
+        (each tempName notNil) ifTrue:[
+            retCollection add:(SmallSenseVariable name:each tempName
+                        description:'Variables in the method. Defined in |val val2|').
+        ].
+    ].
+    class := collector targetClass.
+    [ class notNil ] whileTrue:[
+        class classVarNames do:[:each | 
+            retCollection add:(SmallSenseVariable name:each
+                        description:'Class variables. Variables defined in classVariableNames').
+        ].
+        class := class superclass.
+    ].
+    ^ retCollection.
+
+    "Created: / 04-03-2011 / 13:03:44 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 04-04-2011 / 13:44:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-04-2011 / 22:54:47 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+beforeVariable:collector nodeName:nodeName 
+    "There is some variables which can be before node"
+    
+    |retCollection roelTyper helper class|
+
+    retCollection := SmallSenseResultSet new.
+    (collector isNil) ifTrue:[
+        ^ retCollection.
+    ].
+    (collector methodArgs notNil) ifTrue:[
+        collector methodArgs do:[:each | 
+            (each asLowercase startsWith:nodeName asLowercase) ifTrue:[
+                retCollection add:(SmallSenseVariable name:each
+                            description:'Arguments in the method. Defined in method:val').
+            ].
+        ].
+    ].
+    roelTyper := self doForSource:collector.
+    roelTyper instVars do:[:var | 
+        (var asLowercase startsWith:nodeName asLowercase) ifTrue:[
+            retCollection add:(SmallSenseVariable name:var
+                        description:'Instance variables. Variables defined in instanceVariableNames')
+        ].
+    ].
+    helper := roelTyper localTypingResults 
+                at:roelTyper currentExtractedMethod.
+    helper do:[:each | 
+        (each tempName notNil) ifTrue:[
+            (each tempName asLowercase startsWith:nodeName asLowercase) ifTrue:[
+                retCollection add:(SmallSenseVariable name:each tempName
+                            description:'Variables in the method. Defined in |val val2|').
+            ].
+        ].
+    ].
+    class := collector targetClass.
+    [ class notNil ] whileTrue:[
+        class classVarNames do:[:each | 
+            (each asLowercase startsWith:nodeName asLowercase) ifTrue:[
+                retCollection add:(SmallSenseVariable name:each
+                            description:'Class variables. Variables defined in classVariableNames').
+            ].
+        ].
+        class := class superclass.
+    ].
+    ^ retCollection.
+
+    "Modified: / 04-04-2011 / 13:44:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 06-04-2011 / 16:34:15 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 06-04-2011 / 23:48:55 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+createSelectorFromMessageNode:actualStatement 
+    "Creates selector node from selector in messageNode"
+    
+    |helperNode|
+
+    (actualStatement isNil) ifTrue:[
+        helperNode := SmallSenseSelectorNode new.
+    ] ifFalse:[
+        helperNode := SelectorNode new.
+        helperNode receiver: actualStatement receiver.
+        helperNode selectors:actualStatement selector.
+        helperNode selectorsPosition:actualStatement selectorPosition.
+        helperNode lines:actualStatement lines.
+    ].
+    ^ helperNode.
+
+    "Created: / 07-03-2011 / 17:49:33 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 21:10:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+doForSource: compiller
+       " | parser|
+        parser:=SmallSenseParser new.
+        parser sourceText:(compiller sourceStream collection asString) asText.
+          parser 
+        parseMethod:compiller sourceStream collection asString
+        in:compiller targetClass
+        ignoreErrors:false
+        ignoreWarnings:false."
+^self processMethod: compiller sourceStream collection asString class:compiller targetClass parser:compiller.
+
+    "Created: / 04-03-2011 / 12:54:09 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 06-04-2011 / 14:13:15 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+getReceiverinNodeForSelector:selector node:node 
+    "Gets receiver for selectorNode in node"
+    
+    |helperSelector receiver|
+
+    selector receiver ifNotNil:[^selector receiver]. 
+
+    (node isMessage) ifFalse:[
+        "no reciver"
+        ^ nil.
+    ].
+    receiver := node receiver.
+    helperSelector := self createSelectorFromMessageNode:node.
+    ((selector lines) = (helperSelector lines) 
+        and:[
+            (selector selectors asString) = (helperSelector selectors asString) 
+                and:[ (selector selectorsPosition) = (helperSelector selectorsPosition) ]
+        ]) 
+            ifTrue:[
+                ^ receiver.
+            ]
+            ifFalse:[
+                (receiver isMessage) ifTrue:[
+                    ^ self getReceiverinNodeForSelector:selector node:node receiver.
+                ]
+            ].
+    ^ nil.
+
+    "Created: / 07-03-2011 / 19:01:44 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 18:35:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+inClassName:nodeName 
+    "Find all classes which start this Name"
+    
+    |classes retCollection|
+
+    classes := Smalltalk allClasses 
+                select:[:cls | cls name startsWith:nodeName].
+    retCollection := SmallSenseResultSet new.
+    classes do:[:cls | 
+        retCollection 
+            add:(SmallSenseClass subject: cls)
+    ].
+    ^ retCollection.
+
+    "Created: / 06-04-2011 / 16:21:53 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 18:37:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+inNode:foundNode collector:collector 
+    "return collection which can be afterNode"
+    
+    |retCollection receiver node befStatement|
+
+    (foundNode node isNil) ifTrue:[
+        node := foundNode statement.
+    ] ifFalse:[
+        node := foundNode node.
+    ].
+    retCollection := SmallSenseResultSet new.
+    (node isVariable) ifTrue:[
+        retCollection := self beforeVariable:collector nodeName:node name.
+        retCollection join:(self beforeBlockVariable:foundNode).
+        retCollection join:(self inClassName:node name).
+        ^ retCollection.
+    ].
+    (node isConstant) ifTrue:[
+        ^ nil.
+    ].
+    (node isSelf) ifTrue:[
+        retCollection add:(SmallSenseConstant name:'self'
+                    description:'Reference to self class. 
+Access to method from this class. 
+For example: self someMethod.').
+        ^ retCollection.
+    ].
+    (node isSuper) ifTrue:[
+        retCollection add:(SmallSenseConstant name:'super'
+                    description:'Reference to super class. 
+Access to method from super class. 
+For example: super someMethod.').
+        ^ retCollection.
+    ].
+    (node isAssignment) ifTrue:[
+        ^ self before:foundNode collector:collector.
+    ].
+    (node isMessage) ifTrue:[
+        ^ self before:foundNode collector:collector.
+    ].
+    (node isBlock) ifTrue:[
+        retCollection join:(self before:foundNode collector:collector).
+        ^ retCollection.
+    ].
+    node isSelector ifTrue:[
+        receiver := self getReceiverinNodeForSelector:node
+                    node:foundNode statement.
+        (receiver isNil) ifTrue:[
+            "Try to get receiver from cascadeNode"
+            befStatement := foundNode beforeStatement.
+            [
+                befStatement isMessage
+            ] whileTrue:[
+                receiver := befStatement receiver.
+                befStatement := receiver.
+            ].
+        ].
+        (receiver notNil) ifTrue:[
+            (receiver isMessage 
+                or:[
+                    receiver isAssignment 
+                        or:[ receiver isErrorNode or:[ receiver isSelector ] ]
+                ]) 
+                    ifFalse:[
+                        foundNode node:receiver.
+                        foundNode beforeNode:false.
+                        foundNode afterNode:true.
+                        ^ self after:foundNode collector:collector.
+                    ]
+        ].
+        ^ retCollection.
+    ].
+    (foundNode node isErrorNode) ifTrue:[
+        ^ self before:foundNode collector:collector.
+    ].
+
+    "Created: / 07-03-2011 / 18:59:02 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 09:31:51 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+old_recognize:line position:pos collector:collector 
+    "find most possible codeCompletion object"
+    
+    |node finder position|
+    resultSet := SmallSenseResultSet new.
+    (collector tree ~= #Error) ifTrue:[
+        finder := SmallSenseFinder new.
+        (collector tree isNil) ifTrue:[
+            self breakPoint: #jv. ^nil.
+        ] ifFalse:[
+            position := finder findNodeIn: collector source tree: collector tree 
+                                 line: line column: pos.
+            (position beforeNode) ifTrue:[
+                self before:position node collector:collector.
+            ].
+            (position afterNode) ifTrue:[
+                self after:position node collector:collector.
+            ].
+            (position inNode) ifTrue:[
+                self inNode:position node collector:collector.
+            ].
+        ].
+    ] ifFalse:[
+        self before.
+    ].
+    (resultSet objectNameCollection isNil 
+        or:[ resultSet objectNameCollection size = 0 ]) 
+            ifTrue:[
+                resultSet join:(self afterSelfNode:node collector:collector).
+                resultSet join:(self before:node collector:collector).
+            ].
+    resultSet position:position.
+    ^ resultSet.
+
+    "Created: / 04-03-2011 / 13:01:14 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 10:52:59 / Jakub <zelenja7@fel.cvut.cz>"
+    "Created: / 26-11-2011 / 16:51:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+processMethod:source class:class parser:parser 
+    
+    |collector|
+
+    collector := SmallSenseTypeCollector onClass: class.
+    collector addMethod:parser.
+    SmallSenseTypeCollector new newExtractor   
+        extractInterfacesFrom:source
+        class:class
+        addTo:collector.
+
+    ^ collector
+
+    "Created: / 17-03-2011 / 18:12:26 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 04-04-2011 / 22:29:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 06-04-2011 / 14:18:50 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseRecognizer class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseRecognizer.st 7826 2011-11-27 09:48:43Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseRecognizerTests.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,767 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseTestCase subclass:#SmallSenseRecognizerTests
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Tests'
+!
+
+
+!SmallSenseRecognizerTests methodsFor:'RecognizerTest'!
+
+testRecognizer1
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| ahoj|        
+
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:2
+                position:2
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size > 17).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 04-03-2011 / 12:55:37 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 18:45:41 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer10
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| helper|
+    c
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:3
+                position:7
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size > 18).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 07-03-2011 / 19:27:26 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 18:49:13 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer11
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| helper|
+    c fl
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:3
+                position:7
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size > 18).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 07-03-2011 / 19:34:06 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 18:50:27 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer12
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| helper|
+    c fl:[
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:3
+                position:12
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size > 48).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 07-03-2011 / 19:39:40 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 06-04-2011 / 19:04:40 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer13
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| helper|
+    c fl:[# >
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:3
+                position:14
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size > 48).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 07-03-2011 / 19:40:28 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 06-04-2011 / 19:04:55 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer14
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| helper|
+    c fl:[# >  he
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:3
+                position:18
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size = 3).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 07-03-2011 / 19:43:01 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 06-04-2011 / 19:05:34 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer15
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| helper|
+    c fl:[# >  he   ah
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:3
+                position:23
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size > 48).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 07-03-2011 / 19:55:35 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 06-04-2011 / 19:05:44 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer16
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+self
+
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:2
+                position:6
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size >= self class selectors size).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 04-04-2011 / 14:05:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 06-04-2011 / 19:05:56 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer2
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| ahoj|
+    u
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:3
+                position:7
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size > 92).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 04-03-2011 / 16:23:04 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 18:46:09 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer3
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| helper|
+    helper
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:3
+                position:12
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size =1).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 04-03-2011 / 17:40:05 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 18:47:48 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer4
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| helper|
+    10
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:3
+                position:8
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size >= 142).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 07-03-2011 / 18:14:26 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 18:41:05 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer5
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| helper|
+    self
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:3
+                position:10
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size >= self class selectors size).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 07-03-2011 / 18:33:31 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 04-04-2011 / 14:06:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 06-04-2011 / 19:06:08 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer6
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| helper|
+    super
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:3
+                position:11
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size >= 503).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 07-03-2011 / 18:35:35 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 08-04-2011 / 00:06:23 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer7
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| helper|
+    :
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:3
+                position:11
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size >17).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 07-03-2011 / 18:39:58 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 18:45:29 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer8
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| helper|
+    :
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:3
+                position:6
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size >= 48).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 07-03-2011 / 19:26:53 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 06-04-2011 / 19:07:02 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+testRecognizer9
+    |collector recognizer foundCollection|
+
+    collector := self 
+                doForSource:'
+| helper|
+    :
+                    u := 3.
+                    b:=u.
+                    c:=  u  floor  aa   .
+                    d  floor: u.
+                    d floor: 3 b:u.
+                    self rememberSymbolUsed:nil  . c  call: b  . b call:c dd:d.
+                    array := #(3 4  5 6 ).
+                    val := ConstantNode type:tokenType 
+                                        value:tokenValue.
+                    [ u== #Symbol  or: [u=3  ]  ]  ifTrue:[
+                    uu := 4.
+                    bb:=uu.
+                    cc:=uu floor.
+                    dd floor:uu.
+                    dd floor:3 b:uu.
+                    ].
+                    dd do:[:w|w seduce.
+                    ]   
+                    ^self.
+                    '.
+    self assert:collector notNil.
+    self assert:collector tree notNil.
+    recognizer := SmallSenseRecognizer new.
+    foundCollection := recognizer 
+                recognize:3
+                position:4
+                collector:collector.
+    self assert:(foundCollection ~~ OrderedCollection).
+    self assert:(foundCollection objectNameCollection size >= 48).
+
+    "    self assert:(foundNode beforeNode).
+        self assert:((foundNode line)=2).
+        self assert:((foundNode position)=2).
+        self assert:(foundNode statement isErrorNode).
+        self assert:(foundNode statement errorToken =':=').
+        self assert:(foundNode beforeStatement isNil)."
+
+    "Created: / 07-03-2011 / 19:27:11 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 06-04-2011 / 19:07:13 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseRecognizerTests class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseRecognizerTests.st 7705 2011-04-08 09:49:06Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseResultItem.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,159 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+Object subclass:#SmallSenseResultItem
+	instanceVariableNames:'subject icon label name description'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core'
+!
+
+
+!SmallSenseResultItem class methodsFor:'Instance Creation'!
+
+name: name description:description
+
+    ^ self new name:name; description:description.
+
+    "Created: / 04-04-2011 / 13:46:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseResultItem class methodsFor:'Instance creation'!
+
+subject: anObject
+
+    ^self new subject: anObject
+
+    "Created: / 06-04-2011 / 21:01:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseResultItem methodsFor:'accessing'!
+
+cursorColumnAfterComplete
+
+    "Answers a cursor column after completion. The number returned
+     is relative to the start of the text being replaced"
+
+    ^name size + 1
+
+    "Created: / 05-04-2011 / 17:05:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+description
+    ^ description
+!
+
+description:something
+    description := something.
+!
+
+icon
+
+    ^nil
+
+    "Created: / 04-04-2011 / 17:25:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+label
+
+    label ifNil:[label := name].
+    ^label
+
+    "Created: / 07-04-2011 / 09:55:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+name
+    ^ name
+!
+
+name:something
+    name := something.
+!
+
+stringToComplete
+
+    "Answers a string to complete"
+
+    ^name
+
+    "Created: / 05-04-2011 / 16:48:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+subject
+    ^ subject
+!
+
+subject:something
+    subject := something.
+! !
+
+!SmallSenseResultItem methodsFor:'displaying'!
+
+displayOn:aGc x:x y:y opaque:opaque
+
+    | icon |
+    icon := self icon.
+    icon ifNotNil:[icon displayOn:aGc x:x y:y - icon height opaque:opaque].
+    self label displayOn:aGc x:x + 16 y:y opaque:opaque
+
+    "Created: / 04-04-2011 / 17:25:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 08-04-2011 / 22:36:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseResultItem methodsFor:'new'!
+
+name:nam description:desc 
+    name := nam.
+    description := desc.
+
+    "Created: / 16-03-2011 / 16:31:13 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseResultItem methodsFor:'printing & storing'!
+
+printOn:aStream
+    "append a printed representation if the receiver to the argument, aStream"
+
+    super printOn:aStream.
+    aStream nextPut:$(.
+    name printOn:aStream.
+    aStream nextPut:$).
+
+    "Modified: / 04-04-2011 / 12:02:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseResultItem methodsFor:'queries'!
+
+startsWith: prefix
+
+    ^self stringToComplete startsWith: prefix
+
+    "Created: / 26-11-2011 / 19:25:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseResultItem methodsFor:'testing'!
+
+isSmallSenseClass
+    ^ false
+!
+
+isSmallSenseConstant
+    ^ false
+!
+
+isSmallSenseMethod
+    ^ false
+!
+
+isSmallSenseSnippet
+    ^ false
+!
+
+isSmallSenseVariable
+    ^ false
+! !
+
+!SmallSenseResultItem class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseResultItem.st 7825 2011-11-26 18:32:31Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseResultSet.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,154 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+Object subclass:#SmallSenseResultSet
+	instanceVariableNames:'items position objectNameCollection selectedObjectIndex
+		selectedName'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core'
+!
+
+
+!SmallSenseResultSet methodsFor:'accessing'!
+
+items
+
+    ^items
+
+    "Created: / 26-11-2011 / 19:06:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+objectCollection
+    ^ items
+!
+
+objectCollection:something
+    items := something.
+
+    "Modified: / 16-03-2011 / 16:42:19 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+objectNameCollection
+    ^ objectNameCollection
+
+    "Modified: / 06-04-2011 / 16:31:19 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+objectNameCollection:something
+    objectNameCollection := something.
+!
+
+position
+    ^ position
+!
+
+position:something
+    position := something.
+!
+
+selectedName
+    ^ selectedName
+!
+
+selectedName:something 
+    self findByName:something.
+    selectedName := something.
+
+    "Modified: / 17-03-2011 / 12:10:57 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+selectedObjectDescription
+    ^ (items at:selectedObjectIndex) description.
+
+    "Modified: / 16-03-2011 / 18:17:38 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+selectedObjectIndex
+    ^ selectedObjectIndex
+!
+
+selectedObjectIndex:something
+    selectedObjectIndex := something.
+! !
+
+!SmallSenseResultSet methodsFor:'adding'!
+
+add:object 
+    "Add senseResultObject to objectCollection and objectNameCollection"
+    
+    |helperIndex|
+
+    self checkCollection.
+    (object notNil) ifTrue:[
+        helperIndex := objectNameCollection indexOf:(object name).
+        (helperIndex = 0) ifTrue:[
+            items add:object.
+            objectNameCollection add:(object name).
+        ].
+    ].
+
+    "Created: / 16-03-2011 / 16:43:10 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 04-04-2011 / 13:48:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+join: collection 
+    "joining two SmallSenseResultCollection"
+    
+    (collection objectCollection isNil) ifTrue: [
+        ^ nil.
+    ].
+    collection objectCollection do: [:each | 
+        self add: each.
+    ].
+
+    "Created: / 17-03-2011 / 12:11:39 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 17-03-2011 / 17:56:06 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 04-04-2011 / 13:49:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 27-11-2011 / 10:05:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseResultSet methodsFor:'checking'!
+
+checkCollection
+    (objectNameCollection isNil) 
+        ifTrue:[ objectNameCollection := SortedCollection new. ].
+    (items isNil) 
+        ifTrue:[ items := SortedCollection sortBlock:[:a :b|a name < b name]].
+
+    "Created: / 16-03-2011 / 16:46:39 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 07-04-2011 / 10:01:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseResultSet methodsFor:'finding'!
+
+findByName:name
+|index|
+index:=1.
+items do:[:each|
+(each asString startsWith:name)ifTrue:[
+    selectedObjectIndex:=index.
+    ^index
+].
+index:=index+1.
+].
+selectedObjectIndex:=1.
+^index.
+
+    "Created: / 16-03-2011 / 17:16:24 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 16-03-2011 / 18:16:55 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseResultSet methodsFor:'queries'!
+
+isEmpty
+
+    ^items isEmptyOrNil
+
+    "Created: / 27-11-2011 / 10:03:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseResultSet class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseResultSet.st 7826 2011-11-27 09:48:43Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseSelectorNode.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,91 @@
+"
+ 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/smallsense' }"
+
+ParseNode subclass:#SmallSenseSelectorNode
+	instanceVariableNames:'receiver selectors selectorsPosition lines'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core'
+!
+
+!SmallSenseSelectorNode 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.
+"
+! !
+
+!SmallSenseSelectorNode methodsFor:'accessing'!
+
+lines
+    ^ lines
+!
+
+lines:something
+    lines := something.
+!
+
+receiver
+    ^ receiver
+!
+
+receiver:something
+    receiver := something.
+!
+
+selectors
+    ^ selectors
+!
+
+selectors:something
+    selectors := something.
+!
+
+selectorsPosition
+    ^ selectorsPosition
+!
+
+selectorsPosition:something
+    selectorsPosition := something.
+! !
+
+!SmallSenseSelectorNode methodsFor:'printing & storing'!
+
+printOn:aStream indent:i 
+selectors printString printOn:aStream.
+
+    "Created: / 22-02-2011 / 22:01:05 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseSelectorNode methodsFor:'testing'!
+
+isSelector
+    ^ true
+
+    "Modified: / 08-04-2011 / 21:11:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseSelectorNode class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseSelectorNode.st 7823 2011-11-26 16:55:59Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseService.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,472 @@
+"
+ 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/smallsense' }"
+
+Tools::BackgroundSourceProcessingService subclass:#SmallSenseService
+	instanceVariableNames:'rulesHolder rules highlighter'
+	classVariableNames:'Debugging'
+	poolDictionaries:''
+	category:'SmallSense-Interface'
+!
+
+!SmallSenseService 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.
+"
+! !
+
+!SmallSenseService class methodsFor:'initialization'!
+
+initialize
+
+    "
+    | map |
+    map := Screen current keyboardMap.
+    map bindValue:#CodeCompletion to: #'Ctrl '.
+    map bindValue:#CodeCompletion to: #'Ctrlspace'.
+    "
+
+    Smalltalk addStartBlock:[
+        Screen current notNil ifTrue:[
+            | map |
+            map := Screen current keyboardMap.
+            (map keyAtValue:#CodeCompletion) isNil ifTrue:[
+                map bindValue:#CodeCompletion to: #'Ctrl '.
+                map bindValue:#CodeCompletion to: #'Ctrlspace'.
+            ].
+    ]]
+
+    "Modified: / 30-11-2011 / 12:42:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 30-11-2011 / 22:58:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseService class methodsFor:'accessing'!
+
+debugging
+    ^Debugging == true
+
+    "Created: / 17-02-2012 / 00:48:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+debugging: aBoolean
+
+    Debugging := aBoolean
+
+    "Created: / 16-02-2012 / 16:22:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+label
+
+    "Answers short label - for UI"
+
+    ^'SmallSense'
+
+    "Created: / 07-03-2010 / 14:00:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 03-04-2011 / 23:08:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+priority
+    "Answers a priority of the service. Services with higher priority
+     will get the event notification before ones with lower priority.
+     Therefore, a lower-priority service might not get the event if high
+     priority service processes it"
+
+    ^ 10
+
+    "Created: / 01-02-2012 / 10:29:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseService class methodsFor:'testing'!
+
+isAvailable
+
+    ^UserPreferences current smallSenseEnabled
+
+    "Created: / 04-02-2012 / 22:20:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseService methodsFor:'accessing'!
+
+syntaxHighlighter
+
+    ^highlighter
+
+    "Created: / 05-08-2011 / 10:59:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseService methodsFor:'aspects'!
+
+rulesHolder
+    "return/create the 'rulesHolder' value holder (automatically generated)"
+
+    rulesHolder isNil ifTrue:[
+        rulesHolder := ValueHolder new.
+        rulesHolder addDependent:self.
+    ].
+    ^ rulesHolder
+!
+
+rulesHolder:something
+    "set the 'rulesHolder' value holder (automatically generated)"
+
+    |oldValue newValue|
+
+    rulesHolder notNil ifTrue:[
+        oldValue := rulesHolder value.
+        rulesHolder removeDependent:self.
+    ].
+    rulesHolder := something.
+    rulesHolder notNil ifTrue:[
+        rulesHolder addDependent:self.
+    ].
+    newValue := rulesHolder value.
+    oldValue ~~ newValue ifTrue:[
+        self update:#value with:newValue from:rulesHolder.
+    ].
+! !
+
+!SmallSenseService methodsFor:'change & update'!
+
+sourceChanged:force
+    | lang |
+
+    rules isNil ifTrue:[ ^ self ].
+    ((lang := codeView language) isNil or:[lang isSmalltalk not]) ifTrue:[ ^ self ].
+    rules resetResult.
+    highlighter reset.
+    super sourceChanged:force.
+
+    "Created: / 18-02-2012 / 22:50:05 / 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."
+
+    changedObject == rulesHolder ifTrue:[
+        UserPreferences current smallSenseBackgroundLintEnabled ifTrue:[
+            | ruleList |
+
+            ruleList := rulesHolder value flattened reject:[:each| SmallSenseChecker forceDisabledRules includes: each class name].
+            rules := RBCompositeLintRule rules: ruleList.
+            highlighter rules: ruleList.
+
+            self process.
+        ].
+    ].
+
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 04-04-2012 / 13:38:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseService methodsFor:'event handling'!
+
+buttonPress:button x:x y:y in:view 
+    |lineNr|
+
+    rules isNil ifTrue:[
+        ^ false
+    ].
+    view == gutterView ifTrue:[
+        button == 1 ifTrue:[
+            lineNr := textView yVisibleToLineNr:y.
+            lineNr notNil ifTrue:[ 
+                ^ self showInfoWindowForLine: lineNr 
+            ].
+            ^ false.
+        ].
+    ].
+    ^ false
+
+    "Created: / 30-01-2012 / 21:04:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+keyPress: key x:x y:y in: view
+
+    "Handles an event in given view (a subview of codeView).
+     If the method returns true, the event will not be processed
+     by the view."
+
+    (view == textView and: [ key == #'CodeCompletion' ]) ifTrue: [
+        self complete. ^true
+    ].
+    ^false
+
+    "Created: / 07-03-2010 / 09:36:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+viewRealized
+
+    | browser |
+
+    UserPreferences current smallSenseBackgroundLintEnabled ifFalse:[ ^ self ].
+
+    (browser := codeView browser) notNil ifTrue:[
+        browser navigationState canvasType ~~ #smallLintByRuleResultBrowserSpec ifTrue:[
+            self rulesHolder: browser smalllintRulesOrAllHolder.
+        ].
+    ].
+
+    "Created: / 23-01-2012 / 10:43:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseService methodsFor:'initialization'!
+
+initialize
+
+    super initialize.
+
+    highlighter := Tools::LintHighlighter new.
+
+    "Created: / 05-08-2011 / 11:53:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseService methodsFor:'private'!
+
+annotationAtLine: lineNo
+    | annotations |        
+
+    (annotations := highlighter annotations) isEmptyOrNil ifTrue:[ ^ nil ].
+    annotations do:[:a|
+        | l |
+
+        (l := a line) isNil ifTrue:[
+            l := codeView lineOfCharacterPosition: a startPosition.
+            a line: l.
+        ].
+        l > lineNo ifTrue:[ ^ nil ].
+        l == lineNo ifTrue:[ ^ a ].
+    ].
+    ^nil
+
+    "Created: / 30-01-2012 / 21:06:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+complete
+    |cls 
+"/     crsrPos interval node checkedNode
+"/     char start stop selectorSoFar matchingSelectors
+    |
+
+    codeView languageHolder value == SmalltalkLanguage instance   
+        ifFalse:[^self].
+
+    cls := codeView classHolder value.
+    cls isNil ifTrue:[
+        codeView showInfo:'No class'.
+        ^ self.
+    ].
+    UserInformation handle:[:ex |
+        codeView showInfo:(ex messageText).
+        ex proceed.
+    ] do:[
+        codeView withWaitCursorDo:[
+            textView keyRelease: #Control_L x:0 y:0.
+            SmallSenseCompletionWindow openForView: codeView class: cls.
+        ]
+    ].
+    ^ self.
+
+"/
+"/    interval := self selectedInterval.
+"/    interval isEmpty ifTrue:[
+"/        crsrPos := codeView characterPositionOfCursor - 1.
+"/        char := codeView characterUnderCursor.
+"/        [crsrPos > 1 and:[char isSeparator or:['.' includes:char]]] whileTrue:[
+"/            crsrPos := crsrPos - 1.
+"/            char := codeView characterAtCharacterPosition:crsrPos.
+"/        ].
+"/        interval := crsrPos to:crsrPos.
+"/    ].
+"/
+"/    node := self findNodeForInterval:interval allowErrors:true.
+"/    [node isNil] whileTrue:[
+"/        "/ expand to the left ...
+"/        interval start > 1 ifFalse:[
+"/            self showInfo:'No parseNode found'.
+"/            ^ self.
+"/        ].
+"/        interval start:(interval start - 1).
+"/        node := self findNodeForInterval:interval allowErrors:true.
+"/    ].
+"/
+"/    node isVariable ifTrue:[
+"/        self codeCompletionForVariable:node inClass:cls.
+"/        ^ self.
+"/    ].
+"/
+"/    checkedNode := node.
+"/    [checkedNode notNil] whileTrue:[
+"/        checkedNode isMessage ifTrue:[
+"/            self codeCompletionForMessage:checkedNode inClass:cls.
+"/            ^ self
+"/        ].
+"/        checkedNode isMethod ifTrue:[
+"/            self codeCompletionForMethod:checkedNode inClass:cls.
+"/            ^ self.
+"/        ].
+"/        checkedNode := checkedNode parent.
+"/    ].
+"/
+"/    self showInfo:'Node is neither variable nor message.'.
+
+    "Modified: / 04-07-2006 / 18:48:26 / fm"
+    "Modified: / 20-11-2006 / 12:30:59 / cg"
+    "Created: / 07-03-2010 / 09:37:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 30-01-2012 / 21:18:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+process
+    "(Re)starts the processing job. Should be called whenever a source 
+     must be (re)processed."
+
+    rules isNil ifTrue:[
+        ^self
+    ].
+
+    ^super process.
+
+    "Created: / 24-01-2012 / 12:43:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+process: delayed
+    "Do the real source processing. If delayed is true, actuall data update must
+     be done within the event queue using #pushUserEvent:...
+    "
+    | cls env oldCodeList oldCode |
+
+    rules isNil ifTrue:[ ^ self ].
+
+    Delay waitForMilliseconds: 200."Give user some time to write"
+
+    done := false.
+    modified := false.
+    codeView codeAspect ~~ #method ifTrue:[ ^ self ].
+    codeView language isNil ifTrue: [ ^ self ].
+    codeView language isSmalltalk ifFalse: [ ^ self ].
+    cls := codeView klass.
+    cls isNil ifTrue:[^ self ].
+
+    (cls notNil and:[cls isObsolete]) ifTrue:[
+        cls isMeta ifTrue:[
+            cls := (Smalltalk at:cls theNonMetaclass name) class
+        ] ifFalse:[
+            cls := Smalltalk at:cls name
+        ].
+    ].
+
+    "textView" modified ifFalse:[
+        oldCodeList := textView list copy.
+        oldCodeList isEmptyOrNil ifTrue: [ ^ self ].
+        "textView" modified ifFalse:[
+            oldCodeList isNil ifFalse:[
+                oldCode := oldCodeList asStringWithoutEmphasis.
+                oldCode isEmptyOrNil ifTrue:[ ^ self ].
+                "textView" modified ifFalse:[
+                    Screen currentScreenQuerySignal answer:codeView device
+                    do:[
+                        Error handle:[:ex |
+                            |errMsg|
+
+                            errMsg := ex description asStringCollection first asString.
+
+                            Debugging == true ifTrue:[
+                                Debugging := false.    
+                                ex pass.
+                            ].
+
+                            "/ Transcript topView raiseDeiconified.
+                            "/ Transcript showCR:'ParseError: ', ex description.
+"/ self halt.
+                            "/ self showInfo:(errMsg colorizeAllWith:Color red).
+                        ] do:[
+                            env := (SmallSenseUnacceptedMethodEnvironment onClass:cls methodSource: oldCode).
+                            SmallSenseChecker runRule: rules onEnvironment: env
+                        ].
+                        delayed ifTrue:[
+                            codeView sensor pushUserEvent:#rehighlight: for:self withArgument: true.
+                        ] ifFalse:[
+                            self rehighlight: true.
+                        ]
+                    ]
+                ]
+            ]
+        ]
+    ]
+
+    "Created: / 24-01-2012 / 12:44:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+rehighlight: delayed
+
+    | service |
+    service := self service: #'Tools::CodeHighlightingService'.
+    service notNil ifTrue:[
+        service process
+    ]
+
+    "Created: / 27-01-2012 / 17:06:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showInfoWindowForLine: lineNo
+    | ann |
+
+    ann := self annotationAtLine: lineNo.
+    ann isNil ifTrue:[ ^ false ].
+
+    SmallSenseCriticsWindow new
+        rule: ann rule;
+        codeView: codeView;
+        allButOpen;
+        openWindowAt: (Screen current pointerPosition - (20@20)).
+
+    ^true
+
+    "Created: / 30-01-2012 / 21:04:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseService methodsFor:'redrawing'!
+
+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...)"
+
+    | annotation |        
+
+    annotation :=  self annotationAtLine: lineNo.
+    annotation notNil ifTrue:[
+        self drawAnnotationIcon: (ToolbarIconLibrary smalllintWarning16x16)
+                atX: x y: y  width: w height: h.
+    ].
+
+    "Created: / 30-01-2012 / 15:11:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseService class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseService.st 8039 2012-08-13 22:12:37Z vranyj1 $'
+! !
+
+SmallSenseService initialize!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseSettingsAppl.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,252 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+AbstractSettingsApplication subclass:#SmallSenseSettingsAppl
+	instanceVariableNames:'smallSenseBackgroundTypingEnabled smallSenseBackgroundLintEnabled
+		smallSenseEnabled'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Interface'
+!
+
+
+!SmallSenseSettingsAppl class methodsFor:'class initialization'!
+
+initialize
+
+    Smalltalk addStartBlock:[
+    NewLauncher
+        addSettingsApplicationByClass: self name
+        withName: 'Tools/SmallSense'
+        icon: nil.
+    ]
+
+    "Created: / 04-02-2012 / 21:50:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseSettingsAppl 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:SmallSenseSettingsAppl    
+    "
+
+    <resource: #help>
+
+    ^ super helpSpec addPairsFrom:#(
+
+#smallSenseBackgroundLintEnabled
+'When enabled, a hints on code are shown based on static code analysis (SmallLint)'
+
+#smallSenseBackgroundTypingEnabled
+'When enabled, SmallSense run a type-inferencer on the code to give a more taccurate type hints and completion data'
+
+#smallSenseEnabled
+'Enable/Disable SmallSense support'
+
+)
+! !
+
+!SmallSenseSettingsAppl 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:SmallSenseSettingsAppl andSelector:#windowSpec
+     SmallSenseSettingsAppl new openInterface:#windowSpec
+     SmallSenseSettingsAppl open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: 'SmallSense Settings'
+          name: 'SmallSense Settings'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (CheckBoxSpec
+              label: 'Enable SmallSense '
+              name: 'Enable'
+              layout: (LayoutFrame 0 0 0 0 0 1 30 0)
+              activeHelpKey: smallSenseEnabled
+              model: smallSenseEnabled
+              translateLabel: true
+            )
+           (DividerSpec
+              name: 'Separator'
+              layout: (LayoutFrame 5 0 30 0 -5 1 34 0)
+            )
+           (VerticalPanelViewSpec
+              name: 'Panel'
+              layout: (LayoutFrame 0 0 37 0 0 1 0 1)
+              horizontalLayout: fit
+              verticalLayout: top
+              horizontalSpace: 3
+              verticalSpace: 3
+              component: 
+             (SpecCollection
+                collection: (
+                 (CheckBoxSpec
+                    label: 'Enable Code Analysis (Lint)'
+                    name: 'LintEnabled'
+                    activeHelpKey: smallSenseBackgroundLintEnabled
+                    enableChannel: smallSenseEnabled
+                    model: smallSenseBackgroundLintEnabled
+                    translateLabel: true
+                    extent: (Point 300 22)
+                  )
+                 (CheckBoxSpec
+                    label: 'Enable Background Type Inferencer'
+                    name: 'CheckBox2'
+                    activeHelpKey: smallSenseBackgroundTypingEnabled
+                    enableChannel: smallSenseEnabled
+                    model: smallSenseBackgroundTypingEnabled
+                    translateLabel: true
+                    extent: (Point 300 22)
+                  )
+                 )
+               
+              )
+            )
+           )
+         
+        )
+      )
+! !
+
+!SmallSenseSettingsAppl methodsFor:'aspects'!
+
+smallSenseBackgroundLintEnabled
+    <resource: #uiAspect>
+
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    smallSenseBackgroundLintEnabled isNil ifTrue:[
+        smallSenseBackgroundLintEnabled := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       smallSenseBackgroundLintEnabled addDependent:self.
+       smallSenseBackgroundLintEnabled onChangeSend:#updateModifiedChannel to:self.
+    ].
+    ^ smallSenseBackgroundLintEnabled.
+
+    "Modified: / 04-02-2012 / 21:47:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+smallSenseBackgroundTypingEnabled
+    <resource: #uiAspect>
+
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    smallSenseBackgroundTypingEnabled isNil ifTrue:[
+        smallSenseBackgroundTypingEnabled := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       smallSenseBackgroundTypingEnabled addDependent:self.
+       smallSenseBackgroundTypingEnabled onChangeSend:#updateModifiedChannel to:self.
+    ].
+    ^ smallSenseBackgroundTypingEnabled.
+
+    "Modified: / 04-02-2012 / 21:48:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+smallSenseEnabled
+    <resource: #uiAspect>
+
+    "automatically generated by UIPainter ..."
+
+    "*** the code below creates a default model when invoked."
+    "*** (which may not be the one you wanted)"
+    "*** Please change as required and accept it in the browser."
+    "*** (and replace this comment by something more useful ;-)"
+
+    smallSenseEnabled isNil ifTrue:[
+        smallSenseEnabled := true asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/       smallSenseEnabled addDependent:self.
+       smallSenseEnabled onChangeSend:#updateModifiedChannel to:self.
+    ].
+    ^ smallSenseEnabled.
+
+    "Modified: / 04-02-2012 / 21:48:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseSettingsAppl methodsFor:'protocol'!
+
+basicAspects
+    ^#( 
+       smallSenseEnabled
+
+       smallSenseBackgroundLintEnabled
+       smallSenseBackgroundTypingEnabled
+
+    )
+
+    "Modified: / 04-02-2012 / 21:47:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+basicReadSettings
+    self readAspects:self basicAspects from:currentUserPrefs.
+
+    "Modified: / 19-07-2011 / 17:11:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+basicSaveSettings
+
+    self writeAspects:self basicAspects to:currentUserPrefs.
+
+    "Modified: / 26-07-2011 / 10:43:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+helpFilename
+    "subclasses must return the relative name of a helpFile
+     in the doc/online/<language>/help directory.
+     Or nil, if no help is available."
+
+    ^ self shouldImplement
+! !
+
+!SmallSenseSettingsAppl methodsFor:'queries'!
+
+hasUnsavedChanges
+    ^ self
+        hasChangedAspectIn: self basicAspects
+        asComparedTo:currentUserPrefs
+
+    "Modified: / 19-07-2011 / 17:12:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 25-11-2011 / 15:25:16 / cg"
+! !
+
+!SmallSenseSettingsAppl class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseSettingsAppl.st 7872 2012-02-06 22:35:36Z vranyj1 $'
+! !
+
+SmallSenseSettingsAppl initialize!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseSnippet.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,21 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseResultItem subclass:#SmallSenseSnippet
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core'
+!
+
+
+!SmallSenseSnippet methodsFor:'testing'!
+
+isSmallSenseSnippet
+    ^ true
+! !
+
+!SmallSenseSnippet class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseSnippet.st 7825 2011-11-26 18:32:31Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseTestCase.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,57 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+TestCase subclass:#SmallSenseTestCase
+	instanceVariableNames:'u v'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Tests'
+!
+
+
+!SmallSenseTestCase class methodsFor:'testing'!
+
+isAbstract
+
+    ^self == SmallSenseTestCase
+
+    "Created: / 03-04-2011 / 22:54:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTestCase methodsFor:'generate'!
+
+doForSource:src 
+    |parser|
+
+    parser := SmallSenseParser new.
+    parser sourceText:('gen',src) asText.
+    parser 
+        parseMethod:'gen' , src
+        in:self class
+        ignoreErrors:false
+        ignoreWarnings:false.
+    ^ parser.
+
+    "Created: / 16-03-2011 / 12:27:38 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 18-03-2011 / 21:57:21 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+processMethod: aCompiledMethod
+        "Fail by default. Needs to be overridden by subclasses to trigger the base testing backbone."
+
+        | collector |
+        collector := SmallSenseTypeCollector onClass: self class.
+        collector currentExtractedMethod: aCompiledMethod.
+        SmallSenseTypeCollector new newExtractor
+                extractInterfacesFrom: aCompiledMethod source class:aCompiledMethod mclass
+                addTo: collector.
+        ^collector
+
+    "Created: / 17-03-2011 / 16:56:07 / Jakub <zelenja7@fel.cvut.cz>"
+    "Modified: / 03-04-2011 / 22:53:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTestCase class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseTestCase.st 7840 2011-12-16 08:48:11Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseType.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,205 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+Object subclass:#SmallSenseType
+	instanceVariableNames:''
+	classVariableNames:'ObjectType'
+	poolDictionaries:''
+	category:'SmallSense-Types'
+!
+
+!SmallSenseType class methodsFor:'documentation'!
+
+documentation
+"
+    An object representing an inferred type.
+
+    [author:]
+        Jan Vrany <jan.vrany@fit.cvut.cz>
+
+    [instance variables:]
+
+    [class variables:]
+
+    [see also:]
+
+"
+! !
+
+!SmallSenseType class methodsFor:'initialization'!
+
+initialize
+    "Invoked at system start or when the class is dynamically loaded."
+
+    "/ please change as required (and remove this comment)
+
+    ObjectType := SmallSenseClassType new klass: Object
+
+    "Modified: / 16-12-2011 / 02:23:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseType class methodsFor:'instance creation'!
+
+default
+
+    <resource: #obsolete>
+
+    ^self unknown
+
+    "Created: / 26-11-2011 / 16:40:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+unknown
+
+    ^SmallSenseTypeHolder with: SmallSenseUnknownType new
+
+    "Created: / 16-12-2011 / 09:42:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+withClass: aClass
+
+    ^SmallSenseTypeHolder with: (SmallSenseClassType new klass: aClass)
+
+    "Created: / 26-11-2011 / 14:14:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseType methodsFor:'accessing'!
+
+trustfullness
+    "Return an integer value in <1..100>, higher value
+     means the object is more likely of that type."
+
+    ^self subclassResponsibility
+
+    "Created: / 17-05-2012 / 19:20:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+trustfullness: anInteger
+    "Set the trustfullness"
+
+    ^self subclassResponsibility
+
+    "Created: / 17-05-2012 / 19:43:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+trustfullnessAdd: anInteger 
+    "Advance mu trustfullness by an Integer"
+
+    self trustfullness: self trustfullness + anInteger
+
+    "Created: / 17-05-2012 / 19:46:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseType methodsFor:'comparing'!
+
+= another
+
+    ^self subclassResponsibility
+
+    "Created: / 16-12-2011 / 13:35:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hash
+
+    ^self subclassResponsibility
+
+    "Created: / 16-12-2011 / 13:35:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseType methodsFor:'enumerating'!
+
+classesDo: aBlock
+    "Enumerate all classes that this type represents"
+
+    self subclassResponsibility
+
+    "Created: / 16-12-2011 / 13:33:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+typesDo: aBlock
+
+    aBlock value: self
+
+    "Created: / 16-12-2011 / 02:16:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseType methodsFor:'operations'!
+
+classSide
+
+    ^self subclassResponsibility
+
+    "Created: / 16-12-2011 / 13:20:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+instanceSide
+
+    ^self subclassResponsibility
+
+    "Created: / 16-12-2011 / 13:20:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+union: anotherType
+
+    ^SmallSenseUnionType new
+        addType: self;
+        addType: anotherType;
+        yourself
+
+    "Created: / 16-12-2011 / 02:00:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseType methodsFor:'printing & storing'!
+
+printOn:aStream
+
+    aStream nextPut:$<.
+    self printWithoutAnglesOn: aStream.
+    aStream nextPut:$>.
+
+    "Modified: / 16-12-2011 / 01:45:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+printWithoutAnglesOn: aStream
+
+    self subclassResponsibility
+
+    "Created: / 16-12-2011 / 01:45:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseType methodsFor:'testing'!
+
+isClassType
+
+    ^false
+
+    "Created: / 16-12-2011 / 02:00:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isTypeHolder
+
+    ^false
+
+    "Created: / 16-12-2011 / 02:05:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isUnionType
+
+    ^false
+
+    "Created: / 16-12-2011 / 02:00:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isUnknownType
+
+    ^false
+
+    "Created: / 16-12-2011 / 13:29:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseType class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseType.st 8000 2012-05-17 23:16:11Z vranyj1 $'
+! !
+
+SmallSenseType initialize!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseTypeCollector.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,131 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+TypeCollector subclass:#SmallSenseTypeCollector
+	instanceVariableNames:'master'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Roel Typer'
+!
+
+
+!SmallSenseTypeCollector class methodsFor:'instance creation'!
+
+newForPlatform
+
+    ^SmallSenseTypeCollector basicNew
+
+    "Created: / 04-04-2011 / 22:28:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeCollector methodsFor:'* As yet uncategorized *'!
+
+type
+
+    | extractor |
+
+    extractor := self newExtractor.
+
+    theClass selectorsAndMethodsDo:
+        [:sel :method|
+        currentExtractedMethod := method.
+        extractor
+            extractInterfacesFrom:method source
+            class: method mclass
+            addTo:self.
+        ]
+
+    "
+        (SmallSenseTypeCollector onClass: SmallSenseTypeCollector) type
+    "
+
+    "Created: / 28-04-2011 / 22:10:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeCollector methodsFor:'accessing'!
+
+master
+    ^ master
+!
+
+master:aTypeCollector
+    master := aTypeCollector.
+
+    self typingResults do:[:myType| | masterType |
+        masterType := master typingResults detect:[:r|r ivarName = myType ivarName] ifNone: nil.
+        masterType ifNotNil:[myType addLinkedExtractedType: masterType].
+    ]
+
+    "Modified: / 29-04-2011 / 08:06:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+subCollector
+
+    ^(self class onClass: theClass) master: self
+
+    "Created: / 28-04-2011 / 22:07:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeCollector methodsFor:'heuristics'!
+
+assignmentTypeOf: val
+	val isBehavior ifTrue: [^val].
+	val isVariableBinding
+		ifTrue:
+			[val key == #instcreation
+				ifTrue: [^val value]
+				ifFalse: [^val value class]].
+	^nil
+!
+
+langueSpecificPushSendOf:selector to:rec 
+    selector == #blockCopy: ifTrue:[
+        ^ #block
+    ].
+    (#( #'//' #quo: #rem: #'\\' #ceiling #floor #rounded #roundTo: #truncated #truncateTo: #'/' #'+' #'-' #'*' #abs #negated #reciprocal ) 
+        includes:selector) 
+            ifTrue:[
+                ^ self 
+                    tryUsing:rec
+                    for:selector
+                    ifNotUse:Number
+            ].
+    (selector = #yourself) ifTrue:[
+        ^ rec
+    ].
+    (rec = #self and:[ (theClass methodDict includesKey:selector) ]) ifTrue:[
+        ^ #return -> selector
+    ].
+    ^ nil.
+
+    "Created: / 14-12-2010 / 23:35:55 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+langueSpecificPushSendOf: selector to: rec args: args
+        selector == #blockCopy: ifTrue: [^#block].
+        (#(#// #quo: #rem: #\\ #ceiling #floor #rounded #roundTo: #truncated #truncateTo: #/ #+ #- #* #abs #negated #reciprocal)
+                includes: selector)
+                ifTrue:
+                        [^self
+                                tryUsing: rec
+                                for: selector
+                                ifNotUse: Number].
+        (selector = #yourself) ifTrue: [^rec].
+        (rec = #self and: [(theClass methodDict includesKey: selector)]) ifTrue: [^#return->selector].
+        ^nil
+
+    "Modified: / 14-12-2010 / 23:56:00 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!SmallSenseTypeCollector methodsFor:'private'!
+
+newExtractor
+        ^SmallSenseInstvarInterfaceExtractor new
+
+    "Modified: / 03-04-2011 / 22:50:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeCollector class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseTypeCollector.st 7823 2011-11-26 16:55:59Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseTypeCollectorCache.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,85 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+CacheDictionary subclass:#SmallSenseTypeCollectorCache
+	instanceVariableNames:'typingJob'
+	classVariableNames:'SharedCache'
+	poolDictionaries:''
+	category:'SmallSense-Roel Typer'
+!
+
+
+!SmallSenseTypeCollectorCache class methodsFor:'initialization'!
+
+initialize
+    "Invoked at system start or when the class is dynamically loaded."
+
+    "/ please change as required (and remove this comment)
+
+    SharedCache := self new: 1024.
+    SharedCache startBackgroundTypingJob.
+
+    "Modified: / 28-04-2011 / 22:00:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeCollectorCache class methodsFor:'accessing'!
+
+shared
+
+    ^SharedCache
+
+    "Created: / 28-04-2011 / 19:48:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeCollectorCache methodsFor:'accessing'!
+
+at: class
+
+    self assert: class isBehavior.
+    ^self 
+        at: class 
+        ifAbsentPut:
+        [self newCollectorFor: class].
+    "
+        SmallSenseTypeCollectorCache shared removeAll. 
+        SmallSenseTypeCollectorCache shared at: SmallSenseTypeCollector
+    "
+
+    "Created: / 28-04-2011 / 19:49:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 29-04-2011 / 08:06:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeCollectorCache methodsFor:'private'!
+
+newCollectorFor: class
+
+    | c sc  |
+    c := SmallSenseTypeCollector onClass: class.
+    sc := class superclass 
+            ifNil:[nil]
+            ifNotNil:[self at: class superclass].
+    sc ifNotNil:[c master: sc].            
+    typingJob notNil ifTrue:[typingJob add: c].
+    ^c
+
+    "Created: / 28-04-2011 / 20:42:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-04-2011 / 23:03:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+startBackgroundTypingJob
+
+    typingJob := BackgroundQueueProcessingJob
+        named: 'Typing job'
+        on: [:collector|collector type].
+    "typingJob start"
+
+    "Created: / 28-04-2011 / 21:59:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 18-05-2011 / 23:31:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeCollectorCache class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseTypeCollectorCache.st 7823 2011-11-26 16:55:59Z vranyj1 $'
+! !
+
+SmallSenseTypeCollectorCache initialize!
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseTypeHolder.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,155 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+Object subclass:#SmallSenseTypeHolder
+	instanceVariableNames:'type'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Types'
+!
+
+
+!SmallSenseTypeHolder class methodsFor:'instance creation'!
+
+with: aSmallSenseType
+
+    ^self new type: aSmallSenseType; yourself
+
+    "Created: / 16-12-2011 / 01:42:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeHolder methodsFor:'accessing'!
+
+trustfullness
+    ^type trustfullness
+
+    "Created: / 17-05-2012 / 19:50:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+trustfullness:aSmallInteger
+    type trustfullness:aSmallInteger
+
+    "Created: / 17-05-2012 / 19:50:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+trustfullnessAdd: anInteger
+    type trustfullnessAdd: anInteger
+
+    "Created: / 17-05-2012 / 19:50:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+type
+    ^ type
+!
+
+type:aSmallSenseType
+
+    self assert: aSmallSenseType isTypeHolder not.
+    type := aSmallSenseType.
+
+    "Modified: / 16-12-2011 / 02:12:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeHolder methodsFor:'adding & removing'!
+
+addClass: aClass
+
+    self type: (type union: (SmallSenseClassType new klass: aClass)).
+
+    "Created: / 26-11-2011 / 14:04:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+addClasses: aCollection
+
+    | union |
+    union := SmallSenseUnionType new.
+    union addType: type.
+    union addTypes: (aCollection collect: [:c|SmallSenseClassType new klass:c]).
+    self type: union
+
+    "Created: / 26-11-2011 / 14:04:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeHolder methodsFor:'enumerating'!
+
+classesDo: aBlock
+
+    type classesDo: aBlock
+
+    "Created: / 16-12-2011 / 13:34:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+typesDo: aBlock
+
+    type typesDo: aBlock
+
+    "Created: / 16-12-2011 / 02:17:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeHolder methodsFor:'operations'!
+
+classSide
+
+    ^self class with: type classSide
+
+    "Created: / 16-12-2011 / 13:24:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+instanceSide
+
+    ^self class with: type instanceSide
+
+    "Created: / 16-12-2011 / 13:24:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+union: anotherType
+
+    self type: (type union: anotherType)
+
+    "Created: / 16-12-2011 / 02:18:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeHolder methodsFor:'printing & storing'!
+
+printOn:aStream
+    "append a printed representation if the receiver to the argument, aStream"
+
+    type printOn: aStream
+
+    "Modified: / 16-12-2011 / 01:46:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+printWithoutAnglesOn: aStream
+
+    self subclassResponsibility
+
+    "Created: / 16-12-2011 / 01:45:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeHolder methodsFor:'testing'!
+
+isClassType
+
+    ^false
+
+    "Created: / 16-12-2011 / 02:00:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isTypeHolder
+
+    ^true
+
+    "Created: / 16-12-2011 / 02:05:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+isUnionType
+
+    ^false
+
+    "Created: / 16-12-2011 / 02:00:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseTypeHolder class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseTypeHolder.st 8000 2012-05-17 23:16:11Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseUnacceptedMethodEnvironment.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,93 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+BrowserEnvironment subclass:#SmallSenseUnacceptedMethodEnvironment
+	instanceVariableNames:'class method'
+	classVariableNames:'UnacceptedSelector'
+	poolDictionaries:''
+	category:'SmallSense-Lint'
+!
+
+
+!SmallSenseUnacceptedMethodEnvironment class methodsFor:'initialization'!
+
+initialize
+    "Invoked at system start or when the class is dynamically loaded."
+
+    "/ please change as required (and remove this comment)
+
+    UnacceptedSelector := #'* * UnacceptedSelector * *'
+
+    "Modified: / 27-01-2012 / 16:23:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnacceptedMethodEnvironment class methodsFor:'instance creation'!
+
+onClass: realClass methodSource: source
+
+    ^self new setupForClass: realClass source: source
+
+    "Created: / 27-01-2012 / 15:38:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnacceptedMethodEnvironment methodsFor:'accessing'!
+
+methodsInto:arg
+    "raise an error: must be redefined in concrete subclass(es)"
+
+    ^ self shouldImplement
+!
+
+selectorsForClass: aClass do: aBlock
+
+    self assert: aClass == class.
+    aBlock value: (method selector) ? UnacceptedSelector
+
+    "Created: / 27-01-2012 / 15:50:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnacceptedMethodEnvironment methodsFor:'accessing-classes'!
+
+classesDo: aBlock 
+
+    ^aBlock value: class.
+
+    "Created: / 27-01-2012 / 15:48:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnacceptedMethodEnvironment methodsFor:'initialization'!
+
+setupForClass: realClass source: source
+
+    | ns |
+
+    ns := RBNamespace onEnvironment: BrowserEnvironment new.
+    class := realClass isMetaclass 
+                ifTrue:[RBMetaclass existingNamed: realClass theNonMetaclass name]
+                ifFalse:[RBClass existingNamed: realClass name].
+    class model: ns.
+    method := RBMethod for: class source: source selector: nil.
+    class addMethod: method.
+
+    "Created: / 27-01-2012 / 15:42:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnacceptedMethodEnvironment methodsFor:'testing'!
+
+includesSelector: aSelector in: aClass
+
+    ^aClass == method mclass 
+        and:[aSelector == #'  fake selector  '].
+
+    "Created: / 27-01-2012 / 15:51:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnacceptedMethodEnvironment class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseUnacceptedMethodEnvironment.st 7911 2012-02-22 09:55:48Z vranyj1 $'
+! !
+
+SmallSenseUnacceptedMethodEnvironment initialize!
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseUnionType.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,219 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseType subclass:#SmallSenseUnionType
+	instanceVariableNames:'types trustfullness trustfullnessBonus'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Types'
+!
+
+
+!SmallSenseUnionType methodsFor:'accessing'!
+
+trustfullness
+    "Return an integer value in <1..100>, higher value
+     means the object is more likely of that type."
+
+    ^ self shouldImplement
+!
+
+trustfullness: anInteger
+    "Remember the bonus/malus given by an inferences"
+
+    trustfullnessBonus := anInteger - trustfullness.
+    trustfullness := anInteger min: 100.
+
+    "Created: / 17-05-2012 / 19:43:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+trustfullnessAdd: anInteger
+
+    trustfullnessBonus := (trustfullnessBonus ? 0) + anInteger.
+    trustfullness := trustfullness + anInteger.
+
+    "Created: / 17-05-2012 / 19:47:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+types
+    ^ types ? #()
+
+    "Modified: / 16-12-2011 / 02:01:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+types:something
+    types := something.
+    self updateTrustfullness
+
+    "Modified: / 17-05-2012 / 19:23:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnionType methodsFor:'adding & removing'!
+
+addType: typeOrHolder
+
+   self basicAddType: typeOrHolder.
+   self prune
+
+    "Created: / 16-12-2011 / 01:50:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+addTypes: typeOrHolder
+
+   self basicAddTypes: typeOrHolder.
+   self prune
+
+    "Created: / 16-12-2011 / 01:51:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnionType methodsFor:'adding & removing-private'!
+
+basicAddType: typeOrHolder
+
+    | type |
+    typeOrHolder isTypeHolder ifTrue:[
+        type := typeOrHolder type
+    ] ifFalse:[
+        type := typeOrHolder
+    ].
+
+    types isNil ifTrue:[types := OrderedCollection new].
+    type isUnionType ifTrue:[
+        self basicAddTypes: type types.
+    ] ifFalse:[
+        type isUnknownType ifFalse:[
+            (types includes: type) ifFalse:[
+                types add: type.
+            ]
+        ]
+    ].
+
+    "Created: / 17-05-2012 / 19:27:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+basicAddTypes: someTypes
+
+    someTypes do:[:each|self basicAddType: each ].
+
+    "Created: / 17-05-2012 / 19:28:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnionType methodsFor:'comparing'!
+
+= another
+    "superclass SmallSenseType says that I am responsible to implement this method"
+
+    ^self class == another class 
+        and:[types size == another types size 
+            and:[types = another types]]
+
+    "Modified: / 16-12-2011 / 13:38:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hash
+    "superclass SmallSenseType says that I am responsible to implement this method"
+
+    ^types hash
+
+    "Modified: / 16-12-2011 / 13:39:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnionType methodsFor:'enumerating'!
+
+classesDo:aBlock
+    "Enumerate all classes that this type represents"
+
+    types notNil ifTrue:[
+        ^types do:[:t|t classesDo: aBlock]    
+    ].
+
+    "Modified: / 16-12-2011 / 13:34:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+typesDo: aBlock
+
+    (types ? #()) do:[:each|
+        each typesDo: aBlock
+    ].
+
+    "Created: / 16-12-2011 / 02:17:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnionType methodsFor:'operations'!
+
+classSide
+    "superclass SmallSenseType says that I am responsible to implement this method"
+
+    ^ self class new 
+        types: (types ? #() collect:[:t|t classSide])
+
+    "Modified: / 16-12-2011 / 13:22:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+instanceSide
+    "superclass SmallSenseType says that I am responsible to implement this method"
+
+    ^ self class new 
+        types: (types ? #() collect:[:t|t instanceSide])
+
+    "Modified: / 16-12-2011 / 13:22:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnionType methodsFor:'printing & storing'!
+
+printWithoutAnglesOn:aStream
+    "superclass SmallSenseType says that I am responsible to implement this method"
+
+    types isNil ifTrue:[ 
+        aStream nextPut: $?
+    ] ifFalse:[
+        types 
+            do:[:each|each printWithoutAnglesOn:aStream]
+            separatedBy:[aStream nextPut:$|]
+    ]
+
+    "Modified: / 16-12-2011 / 01:54:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnionType methodsFor:'private'!
+
+prune
+    "Prune the types - remove less likely types."
+
+    self updateTrustfullness.   
+    types size < 1 ifTrue:[ ^ self ].
+
+    "Experimental - remove those with trustfullness less than mine"
+    
+    types := types reject:[:type|type trustfullness < trustfullness ].
+
+    "Created: / 17-05-2012 / 19:38:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateTrustfullness
+    "Recompute the trustfullness, This is subject to tuning"
+
+                    "Average if individual types"
+    types isEmpty ifTrue:[
+        trustfullness := 1
+    ] ifFalse:[
+        trustfullness := (types inject:0 into:[:a :type|a + type trustfullness]) / types size.
+        trustfullness := trustfullness + (trustfullnessBonus ? 0).
+    ].
+
+    "Created: / 17-05-2012 / 19:22:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnionType methodsFor:'testing'!
+
+isUnionType
+
+    ^true
+
+    "Created: / 16-12-2011 / 02:01:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnionType class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseUnionType.st 8000 2012-05-17 23:16:11Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseUnknownType.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,138 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseType subclass:#SmallSenseUnknownType
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Types'
+!
+
+SmallSenseUnknownType class instanceVariableNames:'theOneAndOnlyInstance'
+
+"
+ No other class instance variables are inherited by this class.
+"
+!
+
+
+!SmallSenseUnknownType class methodsFor:'instance creation'!
+
+flushSingleton
+    "flushes the cached singleton"
+
+    theOneAndOnlyInstance := nil
+
+    "
+     self flushSingleton
+    "
+!
+
+new
+    "returns a singleton"
+
+    ^ self theOneAndOnlyInstance.
+!
+
+theOneAndOnlyInstance
+    "returns a singleton"
+
+    theOneAndOnlyInstance isNil ifTrue:[
+        theOneAndOnlyInstance := self basicNew initialize.
+    ].
+    ^ theOneAndOnlyInstance.
+! !
+
+!SmallSenseUnknownType methodsFor:'accessing'!
+
+trustfullness
+    "Return an integer value in <1..100>, higher value
+     means the object is more likely of that type."
+
+    ^ 1
+
+    "Modified: / 17-05-2012 / 19:20:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+trustfullness: anInteger
+    "Nothing to do here"
+
+    "Created: / 17-05-2012 / 19:44:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnknownType methodsFor:'comparing'!
+
+= another
+    "superclass SmallSenseType says that I am responsible to implement this method"
+
+    ^self == another
+
+    "Modified: / 16-12-2011 / 13:37:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hash
+    "superclass SmallSenseType says that I am responsible to implement this method"
+
+    ^ self identityHash
+
+    "Modified: / 16-12-2011 / 13:37:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnknownType methodsFor:'enumerating'!
+
+classesDo:aBlock
+    "Enumerate all classes that this type represents"
+
+    ^ aBlock value: Object
+
+    "Modified: / 16-12-2011 / 13:34:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnknownType methodsFor:'operations'!
+
+classSide
+    "superclass SmallSenseType says that I am responsible to implement this method"
+
+    ^ self class new
+
+    "Modified: / 16-12-2011 / 13:21:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+instanceSide
+    "superclass SmallSenseType says that I am responsible to implement this method"
+
+    ^ self class new
+
+    "Modified: / 16-12-2011 / 13:21:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+union: anotherType
+
+    ^anotherType
+
+    "Created: / 16-12-2011 / 02:20:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnknownType methodsFor:'printing & storing'!
+
+printWithoutAnglesOn:aStream
+    "superclass SmallSenseType says that I am responsible to implement this method"
+
+    ^ aStream nextPut:$?
+
+    "Modified: / 16-12-2011 / 02:19:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnknownType methodsFor:'testing'!
+
+isUnknownType
+
+    ^true
+
+    "Created: / 16-12-2011 / 13:29:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseUnknownType class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseUnknownType.st 8000 2012-05-17 23:16:11Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/SmallSenseVariable.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,103 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+SmallSenseResultItem subclass:#SmallSenseVariable
+	instanceVariableNames:'class type'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'SmallSense-Core'
+!
+
+
+!SmallSenseVariable class methodsFor:'instance creation'!
+
+argument: name
+
+    ^self new name: name; type: #MethodArg
+
+    "Created: / 26-11-2011 / 18:45:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+classVariable: name in: class
+
+    ^self new name: name; type: #ClassVar; class: class
+
+    "Created: / 26-11-2011 / 18:46:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+globalVariable: name
+
+    ^self new name: name; type: #Global
+
+    "Created: / 26-11-2011 / 18:57:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+instanceVariable: name in: class
+
+    ^self new name: name; type: #InstanceVar; class: class
+
+    "Created: / 26-11-2011 / 18:45:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+variable: name
+
+    ^self new name: name; type: #MethodVar
+
+    "Created: / 26-11-2011 / 18:45:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseVariable methodsFor:'accessing'!
+
+class:something
+    class := something.
+
+    "Created: / 06-04-2011 / 16:51:42 / Jakub <zelenja7@fel.cvut.cz>"
+!
+
+stringToComplete
+
+    "Answers a string to complete"
+
+    ^name , ' '
+
+    "Created: / 20-05-2011 / 13:54:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+type:something
+    type := something.
+! !
+
+!SmallSenseVariable methodsFor:'displaying'!
+
+displayOn:aGC x:x y:y opaque:opaque
+
+    | lw cn cnw fg |
+
+    super displayOn:aGC x:x y:y opaque:opaque.
+
+    class isNil ifTrue:[^self].
+
+    lw :=  x + 16 + (self label widthOn: aGC).
+    cn := class nameWithoutPrefix.
+    cnw := aGC widthOfString: cn.
+
+    (aGC width > (lw + cnw + 5)) ifTrue:
+        [fg := aGC paint.
+        aGC paint: Color gray .
+        aGC displayString: cn x: aGC width - cnw - 5 y: y.
+        aGC paint: fg.
+        ]
+
+    "Created: / 21-05-2011 / 11:02:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SmallSenseVariable methodsFor:'testing'!
+
+isSmallSenseVariable
+    ^ true
+! !
+
+!SmallSenseVariable class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: SmallSenseVariable.st 7825 2011-11-26 18:32:31Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/abbrev.stc	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,44 @@
+# automagically generated by the project definition
+# this file is needed for stc to be able to compile modules independently.
+# it provides information about a classes filename, category and especially namespace.
+SmallSenseBaseTestClass SmallSenseBaseTestClass stx:libtool/smallsense 'SmallSense-Tests' 1
+SmallSenseFinder SmallSenseFinder stx:libtool/smallsense 'SmallSense-Core' 0
+SmallSenseFinderTests SmallSenseFinderTests stx:libtool/smallsense 'SmallSense-Tests' 1
+SmallSenseParser SmallSenseParser stx:libtool/smallsense 'SmallSense-Core' 3
+SmallSenseParserTests SmallSenseParserTests stx:libtool/smallsense 'SmallSense-Tests' 1
+SmallSenseRecognizer SmallSenseRecognizer stx:libtool/smallsense 'SmallSense-Core' 0
+SmallSenseRecognizerTests SmallSenseRecognizerTests stx:libtool/smallsense 'SmallSense-Tests' 1
+SmallSenseResultItem SmallSenseResultItem stx:libtool/smallsense 'SmallSense-Core' 0
+SmallSenseResultSet SmallSenseResultSet stx:libtool/smallsense 'SmallSense-Core' 0
+SmallSenseSelectorNode SmallSenseSelectorNode stx:libtool/smallsense 'SmallSense-Core' 0
+SmallSenseService SmallSenseService stx:libtool/smallsense 'SmallSense-Interface' 0
+SmallSenseTestCase SmallSenseTestCase stx:libtool/smallsense 'SmallSense-Tests' 1
+SmallSenseTypeCollector SmallSenseTypeCollector stx:libtool/smallsense 'SmallSense-Roel Typer' 0
+SmallSenseTypeCollectorCache SmallSenseTypeCollectorCache stx:libtool/smallsense 'SmallSense-Roel Typer' 0
+stx_libtool_smallsense stx_libtool_smallsense stx:libtool/smallsense '* Projects & Packages *' 3
+SmallSenseAbstractInstvarInterfaceExtractor SmallSenseAbstractInstvarInterfaceExtractor stx:libtool/smallsense 'SmallSense-Roel Typer' 3
+SmallSenseClass SmallSenseClass stx:libtool/smallsense 'SmallSense-Core' 0
+SmallSenseConstant SmallSenseConstant stx:libtool/smallsense 'SmallSense-Core' 0
+SmallSenseMethod SmallSenseMethod stx:libtool/smallsense 'SmallSense-Core' 0
+SmallSenseSnippet SmallSenseSnippet stx:libtool/smallsense 'SmallSense-Core' 0
+SmallSenseVariable SmallSenseVariable stx:libtool/smallsense 'SmallSense-Core' 0
+SmallSenseInstvarInterfaceExtractor SmallSenseInstvarInterfaceExtractor stx:libtool/smallsense 'SmallSense-Roel Typer' 3
+SmallSenseParseNodeInspector SmallSenseParseNodeInspector stx:libtool/smallsense 'SmallSense-Interface' 1
+SmallSenseParseNodeVisitor SmallSenseParseNodeVisitor stx:libtool/smallsense 'SmallSense-Core' 0
+SmallSensePosition SmallSensePosition stx:libtool/smallsense 'SmallSense-Core' 0
+SmallSenseType SmallSenseType stx:libtool/smallsense 'SmallSense-Types' 0
+SmallSenseInferencer SmallSenseInferencer stx:libtool/smallsense 'SmallSense-Inference' 0
+SmallSenseClassInfo SmallSenseClassInfo stx:libtool/smallsense 'SmallSense-Model' 0
+SmallSenseManager SmallSenseManager stx:libtool/smallsense 'SmallSense-Model' 0
+SmallSenseMethodInfo SmallSenseMethodInfo stx:libtool/smallsense 'SmallSense-Model' 0
+SmallSenseInfo SmallSenseInfo stx:libtool/smallsense 'SmallSense-Model' 0
+SmallSenseTypeHolder SmallSenseTypeHolder stx:libtool/smallsense 'SmallSense-Types' 0
+SmallSenseClassType SmallSenseClassType stx:libtool/smallsense 'SmallSense-Types' 0
+SmallSenseUnionType SmallSenseUnionType stx:libtool/smallsense 'SmallSense-Types' 0
+SmallSenseUnknownType SmallSenseUnknownType stx:libtool/smallsense 'SmallSense-Types' 1
+SmallSenseCompletionWindow SmallSenseCompletionWindow stx:libtool/smallsense 'SmallSense-Interface' 1
+SmallSenseCriticsWindow SmallSenseCriticsWindow stx:libtool/smallsense 'SmallSense-Interface' 1
+SmallSenseUnacceptedMethodEnvironment SmallSenseUnacceptedMethodEnvironment stx:libtool/smallsense 'SmallSense-Lint' 0
+SmallSenseQuickFixer SmallSenseQuickFixer stx:libtool/smallsense 'SmallSense-Lint' 0
+SmallSenseSettingsAppl SmallSenseSettingsAppl stx:libtool/smallsense 'SmallSense-Interface' 1
+SmallSenseChecker SmallSenseChecker stx:libtool/smallsense 'SmallSense-Lint' 0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/autopackage/default.apspec	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,85 @@
+# -*- shell-script -*-
+[Meta]
+ShortName: 
+SoftwareVersion: 6.2.1.1
+DisplayName: Smalltalk/X Class library
+RootName: @exept.de/expecco:$SOFTWAREVERSION
+Summary: Smalltalk/X Class library
+Maintainer: eXept Software AG
+Packager: eXept Software AG
+PackageVersion: 1
+CPUArchitectures: x86
+AutopackageTarget: 1.0
+Type: Library
+License: Commercial
+
+[Description]
+Smalltalk/X Class library
+
+[BuildPrepare]
+# If you're using autotools, the default should be enough.
+# prepareBuild will set up apbuild and run configure for you. If you
+# need to pass arguments to configure, just add them to prepareBuild:
+# prepareBuild --enable-foo --disable-bar
+#prepareBuild
+
+[BuildUnprepare]
+# If you're using prepareBuild above, there is no need to change this!
+#unprepareBuild
+
+[Globals]
+# Variables declared in this section will be available in all other sections
+export APKG_BUILD_SKIP_CONFIGURE=1
+export APKG_BUILD_SKIP_MAKE=1
+export MYPREFIX=/opt/
+
+[Prepare]
+#recommend '@autopackage.org/autopackage-gtk' 1
+
+[Imports]
+import <<EOF
+$source_dir/
+$source_dir/resources
+$source_dir/keyboard.rc
+$source_dir/display.rc
+$source_dir/../doc
+$source_dir/../testsuites/webedition
+$source_dir/../projects/libraries
+$source_dir/../reportGenerator/tools
+$source_dir/../../pdf/afm
+$source_dir/../plugin/selenium/libexept_expecco_plugin_selenium.so
+$source_dir/../externalTools
+EOF
+
+for i in $source_dir/*.so
+do
+    echo $source_dir/$(readlink $i)
+done | import
+
+[Install]
+if [ "$PREFIX" != "/usr" ]
+then
+    export MYPREFIX=$PREFIX
+fi
+
+find . -type d \( -name CVS -or -name 'not_*' \) -print | xargs rm -rf
+mkdir -p $MYPREFIX
+copyFiles expecco *.rc resources        $MYPREFIX/bin
+copyFiles *.so                          $MYPREFIX/lib
+copyFiles doc externalTools             $MYPREFIX/packages/exept/expecco
+copyFiles webedition/projects libraries $MYPREFIX/testsuites
+copyFiles tools                         $MYPREFIX/packages/exept/expecco/reportGenerator
+copyFiles afm                           $MYPREFIX/packages/exept/pdf
+copyFiles libexept_expecco_plugin_selenium.so   $MYPREFIX/plugin
+
+#installExe expecco
+#installLib *.so
+#installData resources
+#installData keyboard.rc
+#installData doc
+
+[Uninstall]
+# Leaving this at the default is safe unless you use custom commands in
+# "Install" to create files. All autopackage API functions
+# that installs files are logged.
+uninstallFromLog
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/bc.mak	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,122 @@
+# $Header$
+#
+# DO NOT EDIT
+# automagically generated from the projectDefinition: stx_libtool_smallsense.
+#
+# Warning: once you modify this file, do not rerun
+# stmkmp or projectDefinition-build again - otherwise, your changes are lost.
+#
+# Notice, that the name bc.mak is historical (from times, when only borland c was supported).
+# This file contains make rules for the win32 platform using either borland-bcc or visual-c.
+# It shares common definitions with the unix-make in Make.spec.
+# The bc.mak supports the following targets:
+#    bmake         - compile all st-files to a classLib (dll)
+#    bmake clean   - clean all temp files
+#    bmake clobber - clean all
+#
+# Historic Note:
+#  this used to contain only rules to make with borland 
+#    (called via bmake, by "make.exe -f bc.mak")
+#  this has changed; it is now also possible to build using microsoft visual c
+#    (called via vcmake, by "make.exe -f bc.mak -DUSEVC")
+#
+TOP=..\..
+INCLUDE_TOP=$(TOP)\..
+
+
+
+!INCLUDE $(TOP)\rules\stdHeader_bc
+
+!INCLUDE Make.spec
+
+LIBNAME=libstx_libtool_smallsense
+RESFILES=smallsense.res
+
+
+
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\roeltyper -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\helpers -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libwidg -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libview2 -I$(INCLUDE_TOP)\stx\libbasic2 -I$(INCLUDE_TOP)\stx\libview -I$(INCLUDE_TOP)\stx\libhtml -I$(INCLUDE_TOP)\stx\goodies\refactoryBrowser\lint -I$(INCLUDE_TOP)\stx\libtool -I$(INCLUDE_TOP)\stx\libcomp -I$(INCLUDE_TOP)\stx\libwidg2 -I$(INCLUDE_TOP)\stx\libbasic3
+LOCALDEFINES=
+
+STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
+LOCALLIBS=
+
+OBJS= $(COMMON_OBJS) $(WIN32_OBJS)
+
+ALL::  classLibRule
+
+classLibRule: $(OUTDIR) $(OUTDIR)$(LIBNAME).dll
+
+!INCLUDE $(TOP)\rules\stdRules_bc
+
+# build all prerequisite packages for this package
+prereq:
+	pushd ..\..\libbasic & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\goodies\refactoryBrowser\helpers & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\goodies\refactoryBrowser\parser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libbasic2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libcomp & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libview & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libdb & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libview2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libboss & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libdb\libodbc & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libdb\libsqlite & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\goodies\sunit & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libui & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libbasic3 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libwidg & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\goodies\refactoryBrowser\changes & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libhtml & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libwidg2 & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd .. & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\goodies\roeltyper & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\libcompat & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\goodies\refactoryBrowser\refactoring & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\goodies\refactoryBrowser\browser & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\goodies\refactoryBrowser\lint & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+	pushd ..\..\librun & $(MAKE_BAT) "CFLAGS_LOCAL=$(GLOBALDEFINES) "
+
+
+
+
+
+# BEGINMAKEDEPEND --- do not remove this line; make depend needs it
+$(OUTDIR)SmallSenseChecker.$(O) SmallSenseChecker.$(H): SmallSenseChecker.st $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\lint\SmalllintChecker.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseCompletionWindow.$(O) SmallSenseCompletionWindow.$(H): SmallSenseCompletionWindow.st $(INCLUDE_TOP)\stx\libview2\SimpleDialog.$(H) $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseCriticsWindow.$(O) SmallSenseCriticsWindow.$(H): SmallSenseCriticsWindow.st $(INCLUDE_TOP)\stx\libview2\ApplicationModel.$(H) $(INCLUDE_TOP)\stx\libview2\Model.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseInfo.$(O) SmallSenseInfo.$(H): SmallSenseInfo.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseManager.$(O) SmallSenseManager.$(H): SmallSenseManager.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseParseNodeInspector.$(O) SmallSenseParseNodeInspector.$(H): SmallSenseParseNodeInspector.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)SmallSenseParseNodeVisitor.$(O) SmallSenseParseNodeVisitor.$(H): SmallSenseParseNodeVisitor.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseParser.$(O) SmallSenseParser.$(H): SmallSenseParser.st $(INCLUDE_TOP)\stx\libcomp\SyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\Parser.$(H) $(INCLUDE_TOP)\stx\libcomp\Scanner.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSensePosition.$(O) SmallSensePosition.$(H): SmallSensePosition.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseQuickFixer.$(O) SmallSenseQuickFixer.$(H): SmallSenseQuickFixer.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseRecognizer.$(O) SmallSenseRecognizer.$(H): SmallSenseRecognizer.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseResultItem.$(O) SmallSenseResultItem.$(H): SmallSenseResultItem.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseResultSet.$(O) SmallSenseResultSet.$(H): SmallSenseResultSet.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseSelectorNode.$(O) SmallSenseSelectorNode.$(H): SmallSenseSelectorNode.st $(INCLUDE_TOP)\stx\libcomp\ParseNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseService.$(O) SmallSenseService.$(H): SmallSenseService.st $(INCLUDE_TOP)\stx\libtool\Tools__BackgroundSourceProcessingService.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__CodeViewService.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseSettingsAppl.$(O) SmallSenseSettingsAppl.$(H): SmallSenseSettingsAppl.st $(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)SmallSenseType.$(O) SmallSenseType.$(H): SmallSenseType.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseTypeCollector.$(O) SmallSenseTypeCollector.$(H): SmallSenseTypeCollector.st $(INCLUDE_TOP)\stx\goodies\roeltyper\TypeCollector.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseTypeCollectorCache.$(O) SmallSenseTypeCollectorCache.$(H): SmallSenseTypeCollectorCache.st $(INCLUDE_TOP)\stx\libbasic2\CacheDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseTypeHolder.$(O) SmallSenseTypeHolder.$(H): SmallSenseTypeHolder.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseUnacceptedMethodEnvironment.$(O) SmallSenseUnacceptedMethodEnvironment.$(H): SmallSenseUnacceptedMethodEnvironment.st $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\helpers\BrowserEnvironment.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)stx_libtool_smallsense.$(O) stx_libtool_smallsense.$(H): stx_libtool_smallsense.st $(INCLUDE_TOP)\stx\libbasic\LibraryDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\ProjectDefinition.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseAbstractInstvarInterfaceExtractor.$(O) SmallSenseAbstractInstvarInterfaceExtractor.$(H): SmallSenseAbstractInstvarInterfaceExtractor.st $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseParser.$(H) $(INCLUDE_TOP)\stx\libcomp\SyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\Parser.$(H) $(INCLUDE_TOP)\stx\libcomp\Scanner.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseClass.$(O) SmallSenseClass.$(H): SmallSenseClass.st $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseResultItem.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseClassInfo.$(O) SmallSenseClassInfo.$(H): SmallSenseClassInfo.st $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseInfo.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseClassType.$(O) SmallSenseClassType.$(H): SmallSenseClassType.st $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseType.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseConstant.$(O) SmallSenseConstant.$(H): SmallSenseConstant.st $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseResultItem.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseFinder.$(O) SmallSenseFinder.$(H): SmallSenseFinder.st $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseParseNodeVisitor.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseInferencer.$(O) SmallSenseInferencer.$(H): SmallSenseInferencer.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseParseNodeVisitor.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseMethod.$(O) SmallSenseMethod.$(H): SmallSenseMethod.st $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseResultItem.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseMethodInfo.$(O) SmallSenseMethodInfo.$(H): SmallSenseMethodInfo.st $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseInfo.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseSnippet.$(O) SmallSenseSnippet.$(H): SmallSenseSnippet.st $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseResultItem.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseUnionType.$(O) SmallSenseUnionType.$(H): SmallSenseUnionType.st $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseType.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseUnknownType.$(O) SmallSenseUnknownType.$(H): SmallSenseUnknownType.st $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseType.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseVariable.$(O) SmallSenseVariable.$(H): SmallSenseVariable.st $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseResultItem.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)SmallSenseInstvarInterfaceExtractor.$(O) SmallSenseInstvarInterfaceExtractor.$(H): SmallSenseInstvarInterfaceExtractor.st $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseAbstractInstvarInterfaceExtractor.$(H) $(INCLUDE_TOP)\stx\libtool\smallsense\SmallSenseParser.$(H) $(INCLUDE_TOP)\stx\libcomp\SyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\AbstractSyntaxHighlighter.$(H) $(INCLUDE_TOP)\stx\libcomp\Parser.$(H) $(INCLUDE_TOP)\stx\libcomp\Scanner.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)\stx\libcomp\ParseNode.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libcomp\AssignmentNode.$(H) $(INCLUDE_TOP)\stx\libcomp\MessageNode.$(H) $(INCLUDE_TOP)\stx\libcomp\ParseErrorNode.$(H) $(INCLUDE_TOP)\stx\libcomp\PrimaryNode.$(H) $(INCLUDE_TOP)\stx\libcomp\StatementNode.$(H) $(INCLUDE_TOP)\stx\libtool\Tools__NavigationState.$(H) $(INCLUDE_TOP)\stx\libbasic\UserPreferences.$(H) $(INCLUDE_TOP)\stx\libbasic\IdentityDictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Dictionary.$(H) $(INCLUDE_TOP)\stx\libbasic\Set.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libcomp\VariableNode.$(H) $(INCLUDE_TOP)\stx\libbasic\ConfigurableFeatures.$(H) $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\lint\RBLintRule.$(H) $(INCLUDE_TOP)\stx\goodies\refactoryBrowser\lint\RBTransformationRule.$(H) $(INCLUDE_TOP)\stx\libhtml\HTMLDocumentView.$(H) $(INCLUDE_TOP)\stx\libhtml\HTMLDocumentFrame.$(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)
+
+# ENDMAKEDEPEND --- do not remove this line
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/bmake.bat	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,8 @@
+@REM -------
+@REM make using borland bcc
+@REM type bmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+make.exe -N -f bc.mak %*
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/extensions.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,305 @@
+"{ Package: 'stx:libtool/smallsense' }"!
+
+!AssignmentNode methodsFor:'enumeration'!
+
+childNamesAndValuesDo:aBlock
+
+    aBlock value: #variable   value: variable.
+    aBlock value: #expression value: expression.
+
+    "Modified: / 26-11-2011 / 10:39:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AssignmentNode methodsFor:'accessing-SmallSense'!
+
+inferedType
+
+    ^ expression inferedType
+
+    "Created: / 26-11-2011 / 12:38:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!AssignmentNode methodsFor:'accessing-SmallSense'!
+
+inferedType: aSmallSenseType
+
+    ^ self shouldNotImplement
+
+    "Created: / 26-11-2011 / 12:37:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ConfigurableFeatures class methodsFor:'queries-features'!
+
+hasSmallSenseEnabled
+
+    ^UserPreferences current smallSenseEnabled
+
+
+    "
+     ConfigurableFeatures hasSmallSenseEnabled
+     ConfigurableFeatures includesFeature:'SmallSenseEnabled'
+    "
+
+    "Created: / 27-11-2011 / 17:22:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!HTMLDocumentView methodsFor:'actions'!
+
+doQuickFix: quickFixNo
+    | app |
+
+    app := self application.
+    app notNil ifTrue:[
+	app doQuickFix: quickFixNo
+    ].
+
+    "Created: / 16-02-2012 / 14:18:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!MessageNode methodsFor:'enumeration'!
+
+childNamesAndValuesDo:aBlock
+
+    aBlock value: #receiver value: receiver.
+    argArray notNil ifTrue:[
+	argArray withIndexDo:[:node :idx|
+	    aBlock value: 'arg[' , idx printString , ']' value: node
+	]
+    ]
+
+    "Modified: / 26-11-2011 / 12:10:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ParseErrorNode methodsFor:'enumeration'!
+
+childNamesAndValuesDo:aBlock
+    "superclass ParseNode says that I am responsible to implement this method"
+
+    ^ self shouldImplement
+! !
+
+!ParseNode methodsFor:'enumeration'!
+
+childNamesAndValuesDo: aBlock
+
+    "Enumerates all direct children and evaluates a block
+     with its name (usually instVar name) and the node itself"
+
+    ^self subclassResponsibility
+
+    "Created: / 26-11-2011 / 10:38:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ParseNode methodsFor:'accessing-SmallSense'!
+
+inferedType
+
+    | t |
+    t := self objectAttributeAt:#inferedType.
+    t isNil ifTrue:[t := SmallSenseType default].
+    ^t
+
+    "Created: / 26-11-2011 / 12:38:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ParseNode methodsFor:'accessing-SmallSense'!
+
+inferedType: aSmallSenseType
+
+    ^ self objectAttributeAt:#inferedType put: aSmallSenseType
+
+    "Created: / 26-11-2011 / 12:37:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ParseNode methodsFor:'testing'!
+
+isSelector
+    "return true, if this is a node for an selctors"
+
+    ^ false
+
+    "Created: / 22-02-2011 / 21:44:45 / Jakub <zelenja7@fel.cvut.cz>"
+! !
+
+!PrimaryNode methodsFor:'enumeration'!
+
+childNamesAndValuesDo:aBlock
+
+    "Initionally left blank, primary nodes have no children"
+
+    "Modified: / 26-11-2011 / 11:49:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!RBLintRule methodsFor:'accessing'!
+
+fixes: aSmallSenseQuickFixer
+    "Adds all possible code fixes to given quick fixer.
+     Default is to do nothing, meaning that there are
+     no quickfixes available"
+
+    "Created: / 01-02-2012 / 12:09:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!RBTransformationRule methodsFor:'accessing'!
+
+fixes: fixer
+    | changes |
+
+    changes := self changes.
+    changes notEmptyOrNil ifTrue:[
+	fixer fix
+	    label:'Rewrite the code';
+	    action: [ fixer apply:
+		((ChangeSet withAll:self changes) name: self name)
+	    ].
+    ]
+
+    "Created: / 01-02-2012 / 12:11:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!StatementNode methodsFor:'enumeration'!
+
+childNamesAndValuesDo:aBlock
+    | stmt index |
+    stmt := self.
+    index := 1.
+    [ stmt notNil ] whileTrue:[
+	aBlock value: ('statement[%1]' bindWith: index) value: stmt expression.
+	stmt := stmt nextStatement.
+	index := index + 1.
+    ]
+
+    "Modified: / 15-02-2012 / 12:50:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!StatementNode methodsFor:'accessing-SmallSense'!
+
+inferedType
+
+    ^ expression inferedType
+
+    "Created: / 26-11-2011 / 12:38:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!StatementNode methodsFor:'accessing-SmallSense'!
+
+inferedType: aSmallSenseType
+
+    ^ self shouldNotImplement
+
+    "Created: / 26-11-2011 / 12:37:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!Tools::NavigationState methodsFor:'aspects'!
+
+selectedClasses
+    "WARNING WARNING:
+    This is overwriten method from SmallSense!!!!!!
+    "
+    selectedClasses isNil ifTrue:[
+	selectedClasses := "SpecialValueHolder with:nil." nil asValue.
+	(ConfigurableFeatures includesFeature:'SmallSenseEnabled') ifTrue:[
+	    selectedClasses onChangeEvaluate:[
+		selectedClasses value ? #() do:[:cls|
+		    SmallSenseManager instance updateInfoForClass: cls.
+		].
+	    ]
+	]
+    ].
+    ^ selectedClasses
+
+    "Modified: / 27-11-2011 / 17:50:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!UserPreferences methodsFor:'accessing-SmallSense'!
+
+smallSenseBackgroundLintEnabled
+    "Return true if SmallSense background source checking is enabled"
+
+    ^self at:#smallSenseBackgroundLintEnabled ifAbsent:[false]
+
+    "Created: / 30-01-2012 / 19:59:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!UserPreferences methodsFor:'accessing-SmallSense'!
+
+smallSenseBackgroundLintEnabled: aBoolean
+    "Return true if SmallSense background source checking is enabled"
+
+    ^self at:#smallSenseBackgroundLintEnabled put: aBoolean
+
+    "
+	UserPreferences current smallSenseBackgroundLintEnabled
+	UserPreferences current smallSenseBackgroundLintEnabled: true
+	UserPreferences current smallSenseBackgroundLintEnabled: false
+    "
+
+    "Created: / 30-01-2012 / 20:00:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!UserPreferences methodsFor:'accessing-SmallSense'!
+
+smallSenseBackgroundTypingEnabled
+    "Return true if SmallSense background source checking is enabled"
+
+    ^self at:#smallSenseBackgroundTypingEnabled ifAbsent:[false]
+
+    "Created: / 04-02-2012 / 21:41:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!UserPreferences methodsFor:'accessing-SmallSense'!
+
+smallSenseBackgroundTypingEnabled: aBoolean
+    "Return true if SmallSense background source checking is enabled"
+
+    ^self at:#smallSenseBackgroundTypingEnabled put: aBoolean
+
+    "
+	UserPreferences current smallSenseBackgroundTypingEnabled
+	UserPreferences current smallSenseBackgroundTypingEnabled: true
+	UserPreferences current smallSenseBackgroundTypingEnabled: false
+    "
+
+    "Created: / 04-02-2012 / 21:41:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!UserPreferences methodsFor:'accessing-SmallSense'!
+
+smallSenseEnabled
+    "Return true if SmallSense is enabled"
+
+    ^self at:#smallSenseEnabled ifAbsent:[false]
+
+    "Created: / 27-11-2011 / 17:20:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!UserPreferences methodsFor:'accessing-SmallSense'!
+
+smallSenseEnabled: aBoolean
+    "enable/disable SmallSense"
+
+    ^self at:#smallSenseEnabled put: aBoolean.
+
+    "
+    UserPreferences current smallSenseEnabled.
+    UserPreferences current smallSenseEnabled: true.
+    UserPreferences current smallSenseEnabled: false.
+    "
+
+    "Created: / 02-04-2012 / 11:37:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!VariableNode methodsFor:'queries'!
+
+isGlobalOrPrivateClass
+
+    ^ type == #GlobalVariable or:[type == #PrivateClass]
+
+    "Created: / 27-11-2011 / 16:31:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!stx_libtool_smallsense class methodsFor:'documentation'!
+
+extensionsVersion_SVN
+    ^ '$Id:: extensions.st 7983 2012-04-19 08:02:50Z vranyj1                                                                        $'
+! !
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/lcmake.bat	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,8 @@
+@REM -------
+@REM make using lcc compiler
+@REM type lcmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+make.exe -N -f bc.mak USELCC=1 %1 %2
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/libInit.cc	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,69 @@
+/*
+ * $Header$
+ *
+ * DO NOT EDIT
+ * automagically generated from the projectDefinition: stx_libtool_smallsense.
+ */
+#define __INDIRECTVMINITCALLS__
+#include <stc.h>
+
+#ifdef WIN32
+# pragma codeseg INITCODE "INITCODE"
+#endif
+
+#if defined(INIT_TEXT_SECTION) || defined(DLL_EXPORT)
+DLL_EXPORT void _libstx_libtool_smallsense_Init() INIT_TEXT_SECTION;
+// DLL_EXPORT void _libstx_libtool_smallsense_InitDefinition() INIT_TEXT_SECTION;
+#endif
+
+// void _libstx_libtool_smallsense_InitDefinition(pass, __pRT__, snd)
+// OBJ snd; struct __vmData__ *__pRT__; {
+// __BEGIN_PACKAGE2__("libstx_libtool_smallsense__DFN", _libstx_libtool_smallsense_InitDefinition, "stx:libtool/smallsense");
+// _stx_137libtool_137smallsense_Init(pass,__pRT__,snd);
+
+// __END_PACKAGE__();
+// }
+
+void _libstx_libtool_smallsense_Init(pass, __pRT__, snd)
+OBJ snd; struct __vmData__ *__pRT__; {
+__BEGIN_PACKAGE2__("libstx_libtool_smallsense", _libstx_libtool_smallsense_Init, "stx:libtool/smallsense");
+_SmallSenseChecker_Init(pass,__pRT__,snd);
+_SmallSenseCompletionWindow_Init(pass,__pRT__,snd);
+_SmallSenseCriticsWindow_Init(pass,__pRT__,snd);
+_SmallSenseInfo_Init(pass,__pRT__,snd);
+_SmallSenseManager_Init(pass,__pRT__,snd);
+_SmallSenseParseNodeInspector_Init(pass,__pRT__,snd);
+_SmallSenseParseNodeVisitor_Init(pass,__pRT__,snd);
+_SmallSenseParser_Init(pass,__pRT__,snd);
+_SmallSensePosition_Init(pass,__pRT__,snd);
+_SmallSenseQuickFixer_Init(pass,__pRT__,snd);
+_SmallSenseRecognizer_Init(pass,__pRT__,snd);
+_SmallSenseResultItem_Init(pass,__pRT__,snd);
+_SmallSenseResultSet_Init(pass,__pRT__,snd);
+_SmallSenseSelectorNode_Init(pass,__pRT__,snd);
+_SmallSenseService_Init(pass,__pRT__,snd);
+_SmallSenseSettingsAppl_Init(pass,__pRT__,snd);
+_SmallSenseType_Init(pass,__pRT__,snd);
+_SmallSenseTypeCollector_Init(pass,__pRT__,snd);
+_SmallSenseTypeCollectorCache_Init(pass,__pRT__,snd);
+_SmallSenseTypeHolder_Init(pass,__pRT__,snd);
+_SmallSenseUnacceptedMethodEnvironment_Init(pass,__pRT__,snd);
+_stx_137libtool_137smallsense_Init(pass,__pRT__,snd);
+_SmallSenseAbstractInstvarInterfaceExtractor_Init(pass,__pRT__,snd);
+_SmallSenseClass_Init(pass,__pRT__,snd);
+_SmallSenseClassInfo_Init(pass,__pRT__,snd);
+_SmallSenseClassType_Init(pass,__pRT__,snd);
+_SmallSenseConstant_Init(pass,__pRT__,snd);
+_SmallSenseFinder_Init(pass,__pRT__,snd);
+_SmallSenseInferencer_Init(pass,__pRT__,snd);
+_SmallSenseMethod_Init(pass,__pRT__,snd);
+_SmallSenseMethodInfo_Init(pass,__pRT__,snd);
+_SmallSenseSnippet_Init(pass,__pRT__,snd);
+_SmallSenseUnionType_Init(pass,__pRT__,snd);
+_SmallSenseUnknownType_Init(pass,__pRT__,snd);
+_SmallSenseVariable_Init(pass,__pRT__,snd);
+_SmallSenseInstvarInterfaceExtractor_Init(pass,__pRT__,snd);
+
+_stx_137libtool_137smallsense_extensions_Init(pass,__pRT__,snd);
+__END_PACKAGE__();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/smallsense.rc	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,37 @@
+//
+// DO NOT EDIT
+// automagically generated from the projectDefinition: stx_libtool_smallsense.
+//
+VS_VERSION_INFO VERSIONINFO
+  FILEVERSION     6,2,7967,7967
+  PRODUCTVERSION  6,2,3,1
+#if (__BORLANDC__)
+  FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
+  FILEFLAGS       VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
+  FILEOS          VOS_NT_WINDOWS32
+  FILETYPE        VFT_DLL
+  FILESUBTYPE     VS_USER_DEFINED
+#endif
+
+BEGIN
+  BLOCK "StringFileInfo"
+  BEGIN
+    BLOCK "040904E4"
+    BEGIN
+      VALUE "CompanyName", "eXept Software AG\0"
+      VALUE "FileDescription", "Smalltalk/X Class library (LIB)\0"
+      VALUE "FileVersion", "6.2.7967.7967\0"
+      VALUE "InternalName", "stx:libtool/smallsense\0"
+      VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\0"
+      VALUE "ProductName", "Smalltalk/X\0"
+      VALUE "ProductVersion", "6.2.3.1\0"
+      VALUE "ProductDate", "Thu, 06 Sep 2012 16:39:15 GMT\0"
+    END
+
+  END
+
+  BLOCK "VarFileInfo"
+  BEGIN                               //  Language   |    Translation
+    VALUE "Translation", 0x409, 0x4E4 // U.S. English, Windows Multilingual
+  END
+END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/stx_libtool_smallsense.st	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,190 @@
+"{ Package: 'stx:libtool/smallsense' }"
+
+LibraryDefinition subclass:#stx_libtool_smallsense
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'* Projects & Packages *'
+!
+
+
+!stx_libtool_smallsense class methodsFor:'description'!
+
+excludedFromPreRequisites
+    "list all packages which should be ignored in the automatic
+     preRequisites scan. See #preRequisites for more."
+
+    ^ #(
+    )
+!
+
+preRequisites
+    "list all required packages.
+     This list can be maintained manually or (better) generated and
+     updated by scanning the superclass hierarchies and looking for
+     global variable accesses. (the browser has a menu function for that)
+     Howevery, often too much is found, and you may want to explicitely
+     exclude individual packages in the #excludedFromPrerequisites method."
+
+    ^ #(
+        #'stx:goodies/refactoryBrowser/helpers'    "BrowserEnvironment - superclass of SmallSenseUnacceptedMethodEnvironment "
+        #'stx:goodies/refactoryBrowser/lint'    "RBLintRule - superclass of extended RBTransformationRule "
+        #'stx:goodies/roeltyper'    "TypeCollector - superclass of SmallSenseTypeCollector "
+        #'stx:goodies/sunit'
+        #'stx:libbasic'    "Collection - superclass of SmallSenseTypeCollectorCache "
+        #'stx:libbasic2'    "CacheDictionary - superclass of SmallSenseTypeCollectorCache "
+        #'stx:libbasic3'    "ChangeSet - referenced by RBTransformationRule>>fixes: "
+        #'stx:libcomp'    "Parser - superclass of SmallSenseAbstractInstvarInterfaceExtractor "
+        #'stx:libhtml'    "HTMLDocumentFrame - superclass of extended HTMLDocumentView "
+        #'stx:libtool'    "Tools::BackgroundSourceProcessingService - superclass of SmallSenseService "
+        #'stx:libview'    "DeviceGraphicsContext - superclass of extended HTMLDocumentFrame "
+        #'stx:libview2'    "SimpleDialog - superclass of SmallSenseCompletionWindow "
+        #'stx:libwidg'
+        #'stx:libwidg2'    "HierarchicalItem - superclass of SmallSenseParseNodeInspector::ParseNodeItem "
+    )
+! !
+
+!stx_libtool_smallsense class methodsFor:'description - contents'!
+
+classNamesAndAttributes
+    "lists the classes which are to be included in the project.
+     Each entry in the list may be: a single class-name (symbol),
+     or an array-literal consisting of class name and attributes.
+     Attributes are: #autoload or #<os> where os is one of win32, unix,..."
+
+    ^ #(
+        "<className> or (<className> attributes...) in load order"
+        (SmallSenseBaseTestClass autoload)
+        SmallSenseFinder
+        (SmallSenseFinderTests autoload)
+        SmallSenseParser
+        (SmallSenseParserTests autoload)
+        SmallSenseRecognizer
+        (SmallSenseRecognizerTests autoload)
+        SmallSenseResultItem
+        SmallSenseResultSet
+        SmallSenseSelectorNode
+        SmallSenseService
+        (SmallSenseTestCase autoload)
+        SmallSenseTypeCollector
+        SmallSenseTypeCollectorCache
+        #'stx_libtool_smallsense'
+        SmallSenseAbstractInstvarInterfaceExtractor
+        SmallSenseClass
+        SmallSenseConstant
+        SmallSenseMethod
+        SmallSenseSnippet
+        SmallSenseVariable
+        SmallSenseInstvarInterfaceExtractor
+        SmallSenseParseNodeInspector
+        SmallSenseParseNodeVisitor
+        SmallSensePosition
+        SmallSenseType
+        SmallSenseInferencer
+        SmallSenseClassInfo
+        SmallSenseManager
+        SmallSenseMethodInfo
+        SmallSenseInfo
+        SmallSenseTypeHolder
+        SmallSenseClassType
+        SmallSenseUnionType
+        SmallSenseUnknownType
+        SmallSenseCompletionWindow
+        SmallSenseCriticsWindow
+        SmallSenseUnacceptedMethodEnvironment
+        SmallSenseQuickFixer
+        SmallSenseSettingsAppl
+        SmallSenseChecker
+    )
+!
+
+extensionMethodNames
+    "lists the extension methods which are to be included in the project.
+     Entries are 2-element array literals, consisting of class-name and selector."
+
+    ^ #(
+        ParseNode isSelector
+        AssignmentNode childNamesAndValuesDo:
+        AssignmentNode inferedType
+        AssignmentNode inferedType:
+        MessageNode childNamesAndValuesDo:
+        ParseErrorNode childNamesAndValuesDo:
+        ParseNode childNamesAndValuesDo:
+        ParseNode inferedType
+        ParseNode inferedType:
+        PrimaryNode childNamesAndValuesDo:
+        StatementNode childNamesAndValuesDo:
+        StatementNode inferedType
+        StatementNode inferedType:
+        #'Tools::NavigationState' selectedClasses
+        UserPreferences smallSenseEnabled
+        UserPreferences smallSenseEnabled:
+        VariableNode isGlobalOrPrivateClass
+        'ConfigurableFeatures class' hasSmallSenseEnabled
+        UserPreferences smallSenseBackgroundLintEnabled
+        UserPreferences smallSenseBackgroundLintEnabled:
+        RBLintRule fixes:
+        RBTransformationRule fixes:
+        UserPreferences smallSenseBackgroundTypingEnabled
+        UserPreferences smallSenseBackgroundTypingEnabled:
+        HTMLDocumentView doQuickFix:
+    )
+
+    "Modified: / 04-04-2012 / 12:12:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!stx_libtool_smallsense class methodsFor:'description - project information'!
+
+applicationIconFileName
+    "Return the name (without suffix) of an icon-file (the app's icon); will be included in the rc-resource file"
+
+    ^ nil
+    "/ ^ self applicationName
+!
+
+companyName
+    "Return a companyname which will appear in <lib>.rc"
+
+    ^ 'eXept Software AG'
+!
+
+description
+    "Return a description string which will appear in vc.def / bc.def"
+
+    ^ 'Smalltalk/X Class library'
+!
+
+legalCopyright
+    "Return a copyright string which will appear in <lib>.rc"
+
+    ^ 'Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011'
+!
+
+productName
+    "Return a product name which will appear in <lib>.rc"
+
+    ^ 'Smalltalk/X'
+! !
+
+!stx_libtool_smallsense class methodsFor:'description - svn'!
+
+svnRepositoryUrlString
+    "Return a SVN repository URL of myself.
+     (Generated since 2011-04-08)
+    "        
+
+    ^ '$URL: https://vranyj1@swing.fit.cvut.cz/svn/stx/libtool/branches/jv/smallsense/stx_libtool_smallsense.st $'
+!
+
+svnRevisionNr
+    "Return a SVN revision number of myself.
+     This number is updated after a commit"
+
+    ^ "$SVN-Revision:"'7962            '"$"
+! !
+
+!stx_libtool_smallsense class methodsFor:'documentation'!
+
+version_SVN
+    ^ '$Id: stx_libtool_smallsense.st 7967 2012-04-04 11:12:00Z vranyj1 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smallsense/vcmake.bat	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,12 @@
+@REM -------
+@REM make using microsoft visual c
+@REM type vcmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+
+@if not defined VSINSTALLDIR (
+	call "C:\Program Files\Microsoft Visual Studio 10.0"\VC\bin\vcvars32.bat
+)
+make.exe -N -f bc.mak -DUSEVC %*
+
+
--- a/stx_libtool.st	Sun Jan 27 02:50:59 2013 +0100
+++ b/stx_libtool.st	Wed Jan 30 11:15:09 2013 +0000
@@ -11,7 +11,7 @@
 "
 "{ Package: 'stx:libtool' }"
 
-LibraryDefinition subclass:#stx_libtool
+LibraryDefinition subclass:#'stx_libtool'
 	instanceVariableNames:''
 	classVariableNames:''
 	poolDictionaries:''
@@ -41,9 +41,12 @@
 "
 !
 
-extensionsVersion_SVN
-    ^ 'Id:'
-! !
+extensionsVersion_CVS
+    ^ '$Header: /cvs/stx/stx/libtool/extensions.st,v 1.81 2012/09/09 20:44:34 cg Exp $'
+!
+
+ !
+
 
 !stx_libtool class methodsFor:'description'!
 
@@ -52,16 +55,40 @@
      preRequisites scan. See #preRequisites for more."
 
     ^ #(
+        #'stx:libdb'    "SQL::SQLError - referenced by StoreSourceCodeManagementSettingsAppl>>tryToConnectTo: "
+        #'stx:goodies/simpleServices'    "WindowMigrationServer - referenced by AbstractSettingsApplication::MiscCommunicationSettingsAppl>>hasWindowMigrationServer "
+        #'stx:goodies/soap'    "SOAP::SoapHttpModule - referenced by AbstractLauncherApplication::LauncherDialogs class>>communicationsSettings "      
+        #'stx:goodies/webServer'    "HTTPService - referenced by Tools::NewSystemBrowser>>classMenuNewWebService "
+        #'stx:goodies/webServer/ui'    "HTTPServerSettingsAppl - referenced by AbstractSettingsApplication::HTTPStartServerSettingsApplication>>hasCreatedServer "
+        #'stx:goodies/xml/stx'    "XMLCoder - referenced by Tools::NewSystemBrowser>>selectorMenuFileOutXMLAs "
+        #'stx:goodies/xml/vw'    "XML::SourceScannerNodeBuilder - referenced by ChangesBrowser class>>readXMLChangesFrom:inBackground: "     
+        #'stx:libwidg3'    "ClockView - referenced by WorkspaceApplication>>addStopWatch "
+        #'stx:libjava'    "JavaMethod - referenced by AbstractLauncherApplication::LauncherDialogs class>>javaSettings "
+        #'stx:libjavascript'    "JavaScriptCompiler - referenced by WorkspaceApplication>>compilerClassForSyntaxName: "
+        #'stx:libtool2'    "Tools::InternationalLanguageTranslationEditor - referenced by AbstractFileBrowser>>openResourceFileEditor "
+        #'stx:goodies/refactoryBrowser/refactoring'    "RenameClassVariableRefactoring - referenced by Tools::NewSystemBrowser>>codeMenuRenameClassVariable:inClass: "
+        #'stx:goodies/refactoryBrowser/parser'    "ParseTreeRewriter - superclass of extended ParseTreeSourceRewriter "
+
+
         #'exept:expecco'    "Expecco::ExpeccoNetAPI - referenced by AbstractLauncherApplication>>bugReporterAvailable "
         #'exept:httpPortal'    "WebApplicationModel - referenced by Tools::NewSystemBrowser>>classMenuNewWebApplication "
         #'exept:osi/asn1'    "OSI::ASN1Browser - referenced by FileBrowser>>openASN1Browser "
         #'stx:libwebkit'    "WebKitView - referenced by Tools::WebBrowserPage>>webKitView "
         #'stx:libsvn'
+        #'exept:vncViewer'    "VNCRenderer - referenced by FileApplicationNoteBook::XViewApplication>>setupView "
+        #'exept:xml/inspector'    "XML::XMLInspector - referenced by AbstractFileBrowser>>inspectXmlFile "
+        #'stx:goodies/communication'    "SmalltalkShareServer - referenced by AbstractLauncherApplication::LauncherDialogs class>>communicationsSettings "
+        #'stx:goodies/monticello'    "MCRepositoryBrowser - referenced by Tools::NewSystemBrowser>>projectMenuMonticelloBrowseRepositories "
+        #'stx:goodies/refactoryBrowser/browser'    "ProtocolEnvironment - referenced by Tools::NewSystemBrowser>>selectedProtocolsAsEnvironment "
+        #'stx:goodies/refactoryBrowser/changes'    "RemoveInstanceVariableChange - referenced by Tools::NewSystemBrowser>>codeMenuRemoveInstanceVariable:inClass: "
+        #'stx:goodies/refactoryBrowser/helpers'    "RBMethod - referenced by Tools::NewSystemBrowser>>handlingRefactoringErrorDo: "
+        #'stx:goodies/refactoryBrowser/lint'    "RBCompositeLintRule - referenced by Tools::NewSystemBrowser>>smalllintRulesAll "
+
 
     )
 
     "Modified: / 06-07-2011 / 16:16:13 / jv"
-    "Modified: / 26-07-2011 / 10:59:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 26-03-2012 / 16:30:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 preRequisites
@@ -73,22 +100,21 @@
      exclude individual packages in the #excludedFromPrerequisites method."
 
     ^ #(
-        #'stx:goodies/refactoryBrowser/parser'    "RBProgramNodeVisitor - superclass of Tools::BreakpointBrowser::MessageArgumentExtractor "
-        #'stx:libbasic'    "Object - superclass of VersionDiffBrowser::ClassChangeSet "
-        #'stx:libbasic2'    "List - superclass of AbstractFileBrowser::DirectoryHistory "
+        #'stx:goodies/sunit'    "TestResult - referenced by Tools::MethodList>>listEntryForMethod:selector:class:showClass:showCategory:classFirst:suppressInheritanceInfo: "
+        #'stx:libbasic'    "Magnitude - superclass of SyntaxElement "
+        #'stx:libbasic2'    "List - superclass of BookmarkList "
         #'stx:libbasic3'    "MessageTally - superclass of Tools::Profiler "
         #'stx:libboss'    "BinaryOutputManager - referenced by Tools::Profiler>>storeStatisticsOn: "
-        #'stx:libcomp'    "AbstractSyntaxHighlighter - superclass of SyntaxHighlighter2 "
+        #'stx:libcomp'    "SyntaxHighlighter - superclass of SyntaxHighlighter2 "
+        #'stx:libhtml'    "HTMLDocumentView - referenced by Tools::NewSystemBrowser>>openDocumentation "
         #'stx:libui'    "MenuComponentSpec - superclass of EditFieldWithCompletionSpec "
-        #'stx:libview'    "SimpleView - superclass of InspectorView "
-        #'stx:libview2'    "SimpleDialog - superclass of FileDialog "
-        #'stx:libwidg'    "DialogBox - superclass of AboutBox "
-        #'stx:libwidg2'    "SelectionInListModelView - superclass of Tools::CodeCompletionMenu "
-        #'stx:libwidg3'    "ClockView - referenced by WorkspaceApplication>>addStopWatch "
+        #'stx:libview'    "XEmbedContainerView - superclass of XTermView "
+        #'stx:libview2'    "Model - superclass of Tools::ChangeSetDiffTool::OpenDialog "
+        #'stx:libwidg'    "Button - superclass of ViewWithAcceptAndCancelBar::AcceptAndCancelBar::ButtonWithHelpText "
+        #'stx:libwidg2'    "SelectionInListModelView - superclass of Tools::TagsBrowser::TagView "
     )
+! !
 
-    "Modified: / 06-07-2011 / 16:15:46 / jv"
-! !
 
 !stx_libtool class methodsFor:'description - compilation'!
 
@@ -102,6 +128,7 @@
 '
 ! !
 
+
 !stx_libtool class methodsFor:'description - contents'!
 
 classNamesAndAttributes
@@ -116,9 +143,9 @@
         AbstractFileApplicationNoteBookComponent
         AbstractFileBrowser
         AbstractLauncherApplication
+        (AbstractVersionDiffBrowserItem autoload)
         (AbstractRevisionItem autoload)
         AbstractSettingsApplication
-        (AbstractVersionDiffBrowserItem autoload)
         (ApplicationBuilder autoload)
         Bookmark
         BookmarkBar
@@ -263,6 +290,7 @@
         SmalltalkCodeGeneratorTool
         #'Tools::BreakpointService'
         #'Tools::BrowserList'
+        #'Tools::BrowserListWithFilter'
         #'Tools::CodeCompletionService'
         #'Tools::CodeHighlightingService'
         #'Tools::CodeNavigationService'
@@ -308,15 +336,30 @@
         #'Tools::LintHighlighter'
         #'Tools::LintService'
         #'Tools::SourceCodeManagerConfigurationTestTool'
-        #'Tools::BrowserListWithFilter'
         FileBasedSourceCodeManagementSettingsAppl
         DataBaseSourceCodeManagementSettingsAppl
         DirectoryDifferenceViewApplication
         MercurialSourceCodeManagementSettingsAppl
         GitSourceCodeManagementSettingsAppl
-        PerforceSourceCodeManagerUtilities
+        #'Tools::LintAnnotation'
         #'Tools::ProjectCheckerBrowser'
+        ParseTreeIndex
+        #'Tools::Diff2CodeView2'
+        #'Tools::Diff3CodeView2'
+        #'Tools::TextDiff2Tool'
+        #'Tools::TextDiff3Tool'
+        Diff2
+        Diff3
+        Diff3Hunk
+        Diff3InclusiveVisitor
+        Diff3ExclusiveVisitor
+        #'Tools::TextMergeInfo'
+        FileBrowserV3
+        #'Tools::ChangeSetDiffInfo'
+        PerforceSourceCodeManagerUtilities
     )
+
+    "Modified: / 16-01-2013 / 11:58:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 extensionMethodNames
@@ -424,10 +467,43 @@
         'GenericToolbarIconLibrary class' lint24x24Icon
         'GenericToolbarIconLibrary class' lint32x32Icon
         'NameSpace class' inspectorClass
-        'Smalltalk class' inspectorClass
+        Block inspectorExtraAttributes
+        CharacterArray inspector2TabHTML
+        Image inspector2TabImage
+        Image inspector2Tabs
+        UserPreferences codeView2AutoIndent
+        UserPreferences codeView2AutoIndent:
+        UserPreferences codeView2ShowAcceptCancel
+        UserPreferences codeView2ShowAcceptCancel:
+        UserPreferences sourceCodeManagementMenuLayout
+        UserPreferences sourceCodeManagementMenuLayout:
+        UserPreferences useInPlaceSearchInBrowserLists
+        UserPreferences useInPlaceSearchInBrowserLists:
+        'GenericToolbarIconLibrary class' smalllintWarning16x16
+        'GenericToolbarIconLibrary class' versionMerged24x24
+        ArrayedCollection inspector2TabForHexDump
+        LimitedPrecisionReal inspectorExtraAttributes
+        UninterpretedBytes inspector2Tabs
+        UserPreferences changesBrowserClassName
+        UserPreferences fileBrowserClass
+        UserPreferences fileBrowserClass:
+        UserPreferences fileBrowserClassName
+        UserPreferences confirmRefactorings
+        UserPreferences confirmRefactorings:
+        Character inspectorValueStringInListFor:
+        CharacterArray inspectorValueStringInListFor:
+        Color inspectorValueStringInListFor:
+        Object inspectorValueStringInListFor:
+        Symbol inspectorValueStringInListFor:
+        UndefinedObject inspectorValueStringInListFor:
+        Behavior inspectorExtraAttributes
+        Behavior inspectorValueStringInListFor:
+        Collection inspectorValueStringInListFor:
+        Iterator inspectorValueStringInListFor:
     )
 ! !
 
+
 !stx_libtool class methodsFor:'description - project information'!
 
 applicationIconFileName
@@ -463,23 +539,26 @@
     ^ 'Smalltalk/X'
 ! !
 
+
 !stx_libtool class methodsFor:'description - svn'!
 
 svnRepositoryUrlString
     "Return a SVN repository URL of myself.
      (Generated since 2011-04-08)
-    "
+     Do not make the string shorter!!!!!! We have to use fixed-length keyword!!!!!!
+    "        
 
-    ^ '$URL$'
+    ^ '$URL:: https://vranyj1@swing.fit.cvut.cz/svn/stx/libtool/branches/jv/stx_libtool.st                                           $'
 !
 
 svnRevisionNr
     "Return a SVN revision number of myself.
      This number is updated after a commit"
 
-    ^ "$SVN-Revision:"'exported'"$"
+    ^ "$SVN-Revision:"'8088            '"$"
 ! !
 
+
 !stx_libtool class methodsFor:'documentation'!
 
 version
@@ -488,4 +567,9 @@
 
 version_CVS
     ^ '$Header: /cvs/stx/stx/libtool/stx_libtool.st,v 1.85 2012-10-23 13:59:10 cg Exp $'
+!
+
+version_SVN
+    ^ '$Id: stx_libtool.st 8090 2013-01-17 21:52:18Z vranyj1 $'
 ! !
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tccmake.bat	Wed Jan 30 11:15:09 2013 +0000
@@ -0,0 +1,8 @@
+@REM -------
+@REM make using tcc compiler
+@REM type tccmake, and wait...
+@REM do not edit - automatically generated from ProjectDefinition
+@REM -------
+make.exe -N -f bc.mak USETCC=1 %1 %2
+
+
--- a/vcmake.bat	Sun Jan 27 02:50:59 2013 +0100
+++ b/vcmake.bat	Wed Jan 30 11:15:09 2013 +0000
@@ -1,5 +1,5 @@
 @REM -------
-@REM make using microsoft visual c
+@REM make using Microsoft Visual C compiler
 @REM type vcmake, and wait...
 @REM do not edit - automatically generated from ProjectDefinition
 @REM -------
@@ -7,4 +7,10 @@
 @if not defined VSINSTALLDIR (
 	call ..\rules\vcsetup.bat
 )
-make.exe -N -f bc.mak -DUSEVC %*
+@SET DEFINES=
+@REM Kludge got Mercurial, cannot be implemented in Borland make
+@FOR /F "tokens=*" %%i in ('hg root') do SET HGROOT=%%i
+@IF "%HGROOT%" NEQ "" SET DEFINES=%DEFINES% "-DHGROOT=%HGROOT%"
+make.exe -N -f bc.mak -DUSEVC=1 %DEFINES% %*
+
+
--- a/vms.mak	Sun Jan 27 02:50:59 2013 +0100
+++ b/vms.mak	Wed Jan 30 11:15:09 2013 +0000
@@ -2,7 +2,7 @@
 # DO NOT EDIT 
 # automatically generated from Make.proto
 #
-# $Header: /cvs/stx/stx/libtool/vms.mak,v 1.3 1999-09-18 14:34:21 cg Exp $
+# $Header: /cvs/stx/stx/libtool/vms.mak,v 1.3 1999/09/18 14:34:21 cg Exp $
 #
 TOP=..
 LIBNAME=libtool