first merge of Jan's add ons;
authorClaus Gittinger <cg@exept.de>
Sun, 03 Jul 2011 16:26:37 +0200
changeset 10050 dad59ec79a80
parent 10049 8b6c0289ff0a
child 10051 5b7e30460ea4
first merge of Jan's add ons; added separate global- and local histories (gui might be a first try; we will see if it turns out to be too confusing)
Tools__NewSystemBrowser.st
--- a/Tools__NewSystemBrowser.st	Sun Jul 03 16:23:22 2011 +0200
+++ b/Tools__NewSystemBrowser.st	Sun Jul 03 16:26:37 2011 +0200
@@ -18,7 +18,7 @@
 		bufferUsageOrder browserCanvas immediateUpdate showClassPackages
 		lastMethodCategory lastMethodMoveClass browserCanvasType
 		syntaxColoringProcessRunning syntaxColoringProcess
-		methodInfoProcess'
+		methodInfoProcess browsletShowHideLabelHolder browserPageCanvas'
 	classVariableNames:'LastNewProtocols LastProtocolRenames LastCategoryRenames
 		LastCategoryRenameOld LastCategoryRenameNew LastProjectMoves
 		LastNameSpaceMove LastMethodMoveOrCopyTargetClass
@@ -41,7 +41,7 @@
 		DefaultShortAllClassesInNameSpaceOrganisation LastTag
 		LastBaseVersionTag DefaultShowPseudoProtocols
 		DefaultShowMultitabMode LastRenamedOld LastRenamedNew
-		LastImportedPackage'
+		LastImportedPackage LastLintRules NewNavigationHistory'
 	poolDictionaries:''
 	category:'Interface-Browsers-New'
 !
@@ -221,21 +221,66 @@
 
 !NewSystemBrowser class methodsFor:'accessing-history'!
 
-addToBookMarks:aClass selector:aSelectorOrNil
+addToBookMarks:aClass selector:aSelectorOrNil 
+    |newEntry|
+
+    (newEntry := self bookmarkForClass:aClass selector:aSelectorOrNil) isNil 
+        ifTrue:[ ^ self ].
+    (self bookmarks contains:[:entry | entry = newEntry ]) 
+        ifFalse:
+            [self bookmarks add:newEntry]
+
+    "Modified: / 02-06-2011 / 12:01:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+addToFindHistory: class selector: selector
     |newEntry|
 
-    (newEntry := self historyEntryForClass:aClass selector:aSelectorOrNil) isNil ifTrue:[^ self].
-
-    ((BookMarks ? #()) contains:[:entry | entry className = newEntry className
-                                 and:[entry meta = newEntry meta
-                                 and:[aSelectorOrNil isNil or:[entry selector = newEntry selector]]]])
-    ifFalse:[
-        BookMarks isNil ifTrue:[
-            BookMarks := OrderedCollection new
-        ].
-        BookMarks remove:newEntry ifAbsent:nil.
-        BookMarks addFirst:newEntry
-    ]
+    newEntry := self historyEntryForClass:class selector:selector.
+    newEntry isNil ifTrue:[^ self].
+
+    FindHistory isNil ifTrue:[
+        FindHistory := OrderedCollection new.
+    ].
+
+    FindHistory := FindHistory select:[:entry | entry className ~= newEntry className
+                                                or:[entry selector ~= newEntry selector
+                                                or:[entry meta ~= newEntry meta]]].
+
+    FindHistory addFirst:newEntry.
+    FindHistory size > 30 ifTrue:[
+        FindHistory removeLast.
+    ].
+
+    "Created: / 02-07-2011 / 18:12:31 / cg"
+!
+
+bookmarkForClass:aClass selector:aSelectorOrNil
+
+    ^aSelectorOrNil
+        ifNil:[Bookmark forClass: aClass ]
+        ifNotNil:[Bookmark forClass: aClass selector: aSelectorOrNil ]
+
+    "Created: / 05-05-2011 / 23:36:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 02-06-2011 / 23:21:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+bookmarks
+
+    ^BookmarkList forSystemBrowser
+
+    "Created: / 23-05-2011 / 10:13:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 02-06-2011 / 11:36:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+classHistory
+    NewNavigationHistory isNil ifTrue:[
+        NewNavigationHistory := NavigationHistory new.
+        NewNavigationHistory beGlobalHistory.
+    ].
+    ^ NewNavigationHistory
+
+    "Created: / 03-07-2011 / 13:21:53 / cg"
 !
 
 lastSearchPatterns
@@ -519,6 +564,129 @@
 
 !NewSystemBrowser class methodsFor:'interface specs'!
 
+browserPageSpec
+    "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::NewSystemBrowser andSelector:#browserPageSpec
+     Tools::NewSystemBrowser new openInterface:#browserPageSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: browserPageSpec
+        window: 
+       (WindowSpec
+          label: 'NewSystemBrowser'
+          name: 'NewSystemBrowser'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 800 700)
+          menu: mainMenu
+          icon: defaultIcon
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (NoteBookViewSpec
+              name: 'BrowserPageContents'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              canvas: browserCanvas
+              keepCanvasAlive: true
+            )
+           (ViewSpec
+              name: 'ToolBar'
+              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 0 1)
+                    activeHelpKey: hideToolBar
+                    level: 0
+                    hasCharacterOrientedLabel: false
+                    translateLabel: true
+                    model: hideToolbar
+                    postBuildCallback: hideToolBarButtonCreated:
+                  )
+                 (MenuPanelSpec
+                    name: 'ToolBarMenu'
+                    layout: (LayoutFrame 13 0.0 0 0.0 -250 1.0 0 1.0)
+                    level: 0
+                    visibilityChannel: toolBarVisibleHolder
+                    menu: toolBarMenu
+                    textDefault: true
+                  )
+                 (UISubSpecification
+                    name: 'SubSpecification1'
+                    layout: (LayoutFrame -250 1 0 0 0 1 0 1)
+                    level: 0
+                    minorKey: #'searchSpec_live_level0'
+                  )
+                 )
+               
+              )
+            )
+           (ViewSpec
+              name: 'BookmarkBar'
+              layout: (LayoutFrame 0 0 40 0 0 1 65 0)
+              visibilityChannel: bookmarkBarVisibleHolder
+              component: 
+             (SpecCollection
+                collection: (
+                 (ActionButtonSpec
+                    label: 'hideToolBarIcon'
+                    name: 'Button1'
+                    layout: (LayoutFrame 0 0 0 0 13 0 0 1)
+                    activeHelpKey: hideToolBar
+                    level: 0
+                    hasCharacterOrientedLabel: false
+                    translateLabel: true
+                    model: hideBookmarkBar
+                    postBuildCallback: hideToolBarButtonCreated:
+                  )
+                 (SubCanvasSpec
+                    name: 'Bookmarks'
+                    layout: (LayoutFrame 13 0 2 0 0 1 -1 1)
+                    level: 0
+                    hasHorizontalScrollBar: false
+                    hasVerticalScrollBar: false
+                    miniScrollerHorizontal: false
+                    majorKey: BookmarkBar
+                    subAspectHolders: 
+                   (Array
+                      
+                     (SubChannelInfoSpec
+                        subAspect: bookmarkHolder
+                        aspect: bookmarkHolder
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: bookmarksHolder
+                        aspect: bookmarkListHolder
+                      )
+                    )
+                    createNewApplication: true
+                    createNewBuilder: true
+                  )
+                 )
+               
+              )
+            )
+           )
+         
+        )
+      )
+!
+
 chainBrowserSpec
     "This resource specification was automatically generated
      by the UIPainter of ST/X."
@@ -546,6 +714,16 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -834,6 +1012,8 @@
 
               )
               #handles: #(#Any 0.5 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
@@ -841,6 +1021,7 @@
       )
 
     "Modified: / 27-04-2010 / 16:29:54 / cg"
+    "Modified: / 28-08-2010 / 11:59:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 classDocumentationBrowserSpec
@@ -909,15 +1090,15 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:Tools::NewSystemBrowser andSelector:#codePaneSpec
-     Tools::NewSystemBrowser new openInterface:#codePaneSpec
+     UIPainter new openOnClass:Tools::NewSystemBrowser andSelector:#codePaneSpec_withBrowslet
+     Tools::NewSystemBrowser new openInterface:#codePaneSpec_withBrowslet
     "
 
     <resource: #canvas>
 
     ^ 
      #(FullSpec
-        name: codePaneSpec
+        name: #'codePaneSpec_withBrowslet'
         window: 
        (WindowSpec
           label: 'SystemBrowser'
@@ -929,30 +1110,48 @@
         component: 
        (SpecCollection
           collection: (
-           (NoteBookViewSpec
-              name: 'EditorNoteBook'
-              layout: (LayoutFrame 0 0 0 0 0 1 -50 1)
-              level: 0
-              model: selectedEditorNoteBookTabIndexHolder
-              menu: editorNoteBookListHolder
-              "/ direction: right
-              "/ direction: left
-              direction: top
-              "/ direction: bottom
-              useIndex: true
-              canvas: editorNoteBookCanvasHolder
-              keepCanvasAlive: true
-              postBuildCallback: postBuildEditorNoteBook:
-            )
-           (SubCanvasSpec
-              name: 'StringSearchToolCanvas'
-              layout: (LayoutFrame 0 0 -49 1 0 1 -25 1)
-              visibilityChannel: stringSearchToolVisibleHolder
-              hasHorizontalScrollBar: false
-              hasVerticalScrollBar: false
-              majorKey: StringSearchToolForTextView
-              createNewApplication: true
-              postBuildCallback: postBuildStringSearchTool:
+           (VariableHorizontalPanelSpec
+              name: 'EditorAndBrowsletBox'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              component: 
+             (SpecCollection
+                collection: (
+                 (ViewSpec
+                    name: 'EditorBox'
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (NoteBookViewSpec
+                          name: 'EditorNoteBook'
+                          layout: (LayoutFrame 0 0 0 0 0 1 -26 1)
+                          level: 0
+                          model: selectedEditorNoteBookTabIndexHolder
+                          menu: editorNoteBookListHolder
+                          useIndex: true
+                          canvas: editorNoteBookCanvasHolder
+                          keepCanvasAlive: true
+                          postBuildCallback: postBuildEditorNoteBook:
+                        )
+                       (SubCanvasSpec
+                          name: 'StringSearchToolCanvas'
+                          layout: (LayoutFrame 0 0 -24 1 0 1 0 1)
+                          visibilityChannel: stringSearchToolVisibleHolder
+                          hasHorizontalScrollBar: false
+                          hasVerticalScrollBar: false
+                          majorKey: StringSearchToolForTextView
+                          createNewApplication: true
+                          createNewBuilder: false
+                          postBuildCallback: postBuildStringSearchTool:
+                        )
+                       )
+                     
+                    )
+                  )
+                 )
+               
+              )
+              handles: (Any 1.0)
+              postBuildCallback: postBuildCodePaneAndPluginView:
             )
            (ViewSpec
               name: 'InfoBox'
@@ -1025,6 +1224,8 @@
          
         )
       )
+
+    "Modified: / 11-10-2010 / 20:23:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 fullBrowserSpec
@@ -1035,55 +1236,68 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:NewSystemBrowser andSelector:#fullBrowserSpec
-     NewSystemBrowser new openInterface:#fullBrowserSpec
+     UIPainter new openOnClass:Tools::NewSystemBrowser andSelector:#fullBrowserSpec
+     Tools::NewSystemBrowser new openInterface:#fullBrowserSpec
     "
 
     <resource: #canvas>
 
-    ^
-     #(#FullSpec
-        #name: #fullBrowserSpec
-        #window:
-       #(#WindowSpec
-          #label: 'SystemBrowser'
-          #name: 'SystemBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 7 0 469 300)
-          #icon: #defaultIcon
-        )
-        #component:
-       #(#SpecCollection
-          #collection: #(
-           #(#VariableVerticalPanelSpec
-              #name: 'VariableVerticalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
-              #barWidth: 2
-              #showHandle: false
-              #snapMode: #both
-              #handlePosition: #left
-              #component:
-             #(#SpecCollection
-                #collection: #(
-                 #(#SubCanvasSpec
-                    #name: 'Navigator'
-                    #autoHideScrollBars: false
-                    #majorKey: #'NavigatorCanvas'
-                    #minorKey: #windowSpec
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'CodePane'
-                    #autoHideScrollBars: false
-                    #majorKey: #'NewSystemBrowser'
-                    #minorKey: #codePaneSpec
+    ^ 
+     #(FullSpec
+        name: fullBrowserSpec
+        window: 
+       (WindowSpec
+          label: 'SystemBrowser'
+          name: 'SystemBrowser'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 462 300)
+          icon: defaultIcon
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )
+           (VariableVerticalPanelSpec
+              name: 'VariableVerticalPanel1'
+              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              barWidth: 2
+              showHandle: false
+              snapMode: both
+              handlePosition: left
+              component: 
+             (SpecCollection
+                collection: (
+                 (SubCanvasSpec
+                    name: 'Navigator'
+                    autoHideScrollBars: false
+                    majorKey: NavigatorCanvas
+                    minorKey: windowSpec
+                    createNewBuilder: false
+                  )
+                 (SubCanvasSpec
+                    name: 'CodePane'
+                    autoHideScrollBars: false
+                    majorKey: NewSystemBrowser
+                    minorKey: codePaneSpec
+                    createNewBuilder: false
                   )
                  )
-
+               
               )
-              #handles: #(#Any 0.5 1.0)
+              handles: (Any 0.5 1.0)
+              postBuildCallback: postBuildTabContentView:
             )
            )
-
+         
         )
       )
 !
@@ -1115,6 +1329,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -1149,13 +1374,16 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
 
-    "Modified: / 24.2.2000 / 23:35:03 / cg"
+    "Modified: / 24-02-2000 / 23:35:03 / cg"
+    "Modified: / 28-08-2010 / 11:59:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 methodListBrowserSpec
@@ -1185,6 +1413,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -1272,6 +1511,8 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
@@ -1279,6 +1520,7 @@
       )
 
     "Modified: / 27-04-2010 / 16:30:00 / cg"
+    "Modified: / 28-08-2010 / 12:00:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 multipleCategoryBrowserSpec
@@ -1308,6 +1550,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -1342,11 +1595,15 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
+
+    "Modified: / 28-08-2010 / 12:00:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 multipleClassBrowserSpec
@@ -1376,6 +1633,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -1410,13 +1678,16 @@
 
               )
               #handles: #(#Any 0.5 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
 
-    "Modified: / 25.2.2000 / 02:08:21 / cg"
+    "Modified: / 25-02-2000 / 02:08:21 / cg"
+    "Modified: / 28-08-2010 / 12:00:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 multipleClassExtensionBrowserSpec
@@ -1446,6 +1717,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -1480,13 +1762,16 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
 
-    "Modified: / 25.2.2000 / 02:08:21 / cg"
+    "Modified: / 25-02-2000 / 02:08:21 / cg"
+    "Modified: / 28-08-2010 / 12:00:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 multipleClassRepositoryDiffBrowserSpec
@@ -1579,6 +1864,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -1717,6 +2013,8 @@
 
               )
               #handles: #(#Any 0.1 0.25 0.5 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
@@ -1724,6 +2022,7 @@
       )
 
     "Modified: / 27-04-2010 / 16:30:07 / cg"
+    "Modified: / 28-08-2010 / 12:00:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 multipleClassWithInfoBrowserSpec
@@ -1753,6 +2052,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -1837,11 +2147,15 @@
 
               )
               #handles: #(#Any 0.25 0.5 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
+
+    "Modified: / 28-08-2010 / 12:00:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 multipleFullProtocolBrowserSpec
@@ -1871,6 +2185,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -1905,13 +2230,16 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
 
-    "Modified: / 1.3.2000 / 20:45:30 / cg"
+    "Modified: / 01-03-2000 / 20:45:30 / cg"
+    "Modified: / 28-08-2010 / 12:00:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 multipleMethodBrowserSpec
@@ -1941,6 +2269,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -2035,6 +2374,8 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
@@ -2042,6 +2383,7 @@
       )
 
     "Modified: / 27-04-2010 / 16:30:12 / cg"
+    "Modified: / 28-08-2010 / 12:00:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 multipleMethodWithInfoBrowserSpec
@@ -2071,6 +2413,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -2173,6 +2526,8 @@
 
               )
               #handles: #(#Any 0.25 0.5 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
@@ -2180,6 +2535,7 @@
       )
 
     "Modified: / 27-04-2010 / 16:30:16 / cg"
+    "Modified: / 28-08-2010 / 12:00:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 multipleNameSpaceBrowserSpec
@@ -2209,6 +2565,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -2243,13 +2610,16 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
 
-    "Modified: / 18.8.2000 / 15:01:15 / cg"
+    "Modified: / 18-08-2000 / 15:01:15 / cg"
+    "Modified: / 28-08-2010 / 12:01:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 multipleNameSpaceFullBrowserSpec
@@ -2279,6 +2649,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -2313,14 +2694,16 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
 
-    "Modified: / 18.8.2000 / 13:53:10 / cg"
-    "Created: / 18.8.2000 / 15:01:00 / cg"
+    "Created: / 18-08-2000 / 15:01:00 / cg"
+    "Modified: / 28-08-2010 / 12:01:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 multipleProjectBrowserSpec
@@ -2350,6 +2733,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -2384,11 +2778,15 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
+
+    "Modified: / 28-08-2010 / 12:01:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 multipleProjectFullBrowserSpec
@@ -2418,6 +2816,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -2452,13 +2861,16 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
 
-    "Created: / 18.8.2000 / 18:42:38 / cg"
+    "Created: / 18-08-2000 / 18:42:38 / cg"
+    "Modified: / 28-08-2010 / 12:01:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 multipleProtocolBrowserSpec
@@ -2488,6 +2900,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -2522,13 +2945,16 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
 
-    "Modified: / 1.3.2000 / 20:45:30 / cg"
+    "Modified: / 01-03-2000 / 20:45:30 / cg"
+    "Modified: / 28-08-2010 / 12:01:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 noteBookWindowSpec
@@ -2600,33 +3026,54 @@
                     menu: toolBarMenu
                     textDefault: true
                   )
-                 (HorizontalPanelViewSpec
-                    name: 'HorizontalPanel1'
+                 (UISubSpecification
+                    name: 'SubSpecification1'
                     layout: (LayoutFrame -250 1 0 0 0 1 0 1)
-                    level: 1
-                    horizontalLayout: fitSpace
-                    verticalLayout: center
-                    horizontalSpace: 2
-                    verticalSpace: 2
-                    component: 
-                   (SpecCollection
-                      collection: (
-                       (ComboBoxSpec
-                          name: 'SearchedClassNameComboBox'
-                          activeHelpKey: gotoClassEntryField
-                          model: searchedClassNameOrSelectorHolder
-                          acceptOnLeave: false
-                          acceptOnReturn: true
-                          acceptOnPointerLeave: false
-                          acceptIfUnchanged: true
-                          comboList: visitedClassesHistory
-                          extent: (Point 244 24)
-                          postBuildCallback: searchFieldCreated:
-                        )
-                       )
-                     
+                    minorKey: searchSpec
+                  )
+                 )
+               
+              )
+            )
+           (ViewSpec
+              name: 'BookmarkBar'
+              layout: (LayoutFrame 0 0 40 0 0 1 65 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
+                    postBuildCallback: hideToolBarButtonCreated:
+                  )
+                 (SubCanvasSpec
+                    name: 'Bookmarks'
+                    layout: (LayoutFrame 13 0 2 0 0 1 -1 1)
+                    level: 0
+                    hasHorizontalScrollBar: false
+                    hasVerticalScrollBar: false
+                    miniScrollerHorizontal: false
+                    majorKey: BookmarkBar
+                    subAspectHolders: 
+                   (Array
+                      
+                     (SubChannelInfoSpec
+                        subAspect: bookmarkHolder
+                        aspect: bookmarkHolder
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: bookmarksHolder
+                        aspect: bookmarkListHolder
+                      )
                     )
-                    postBuildCallback: searchFieldPanelCreated:
+                    createNewApplication: true
+                    createNewBuilder: true
                   )
                  )
                
@@ -2636,6 +3083,217 @@
          
         )
       )
+
+    "Modified: / 03-06-2011 / 13:47:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+pagedWindowSpec
+    <resource: #canvas>
+    "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::NewSystemBrowser andSelector:#webBrowserLayoutWindowSpec
+     Tools::NewSystemBrowser new openInterface:#webBrowserLayoutWindowSpec"
+    
+    ^ #( #FullSpec
+  #name: #pagedWindowSpec
+  #window:
+ #(WindowSpec label: 'NewSystemBrowser' name: 'NewSystemBrowser' min: (Point 0 0) bounds: (Rectangle 0 0 800 700) menu: mainMenu icon: defaultIcon)
+  #component:
+ #(SpecCollection collection: ((NoteBookViewSpec name: 'NoteBook' layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0) level: 0 model: selectedBuffer menu: bufferNameList useIndex: true valueChangeSelector: bufferSelectionChanged accessTabMenuAction: tabMenu: hasScrollButtons: true destroyTabAction: destroyTab: canvas: browserPageCanvas canvasInset: 0 keepCanvasAlive: true tabLevel: 1))) )
+!
+
+searchSpec
+
+    ^self searchSpec_live
+
+    "Created: / 09-02-2010 / 21:28:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+searchSpec_classic
+    "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::NewSystemBrowser andSelector:#searchSpec_classic
+     Tools::NewSystemBrowser new openInterface:#searchSpec_classic
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: #'searchSpec_classic'
+        window: 
+       (WindowSpec
+          label: 'Search Spec (classic)'
+          name: 'Search Spec (classic)'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 40)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (HorizontalPanelViewSpec
+              name: 'HorizontalPanel1'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              level: 1
+              horizontalLayout: fitSpace
+              verticalLayout: center
+              horizontalSpace: 2
+              verticalSpace: 2
+              component: 
+             (SpecCollection
+                collection: (
+                 (ComboBoxSpec
+                    name: 'SearchedClassNameComboBox'
+                    activeHelpKey: gotoClassEntryField
+                    model: searchedClassNameOrSelectorHolder
+                    acceptOnLeave: false
+                    acceptOnReturn: true
+                    acceptOnPointerLeave: false
+                    acceptIfUnchanged: true
+                    comboList: visitedClassesHistory
+                    extent: (Point 294 24)
+                    postBuildCallback: searchFieldCreated:
+                  )
+                 )
+               
+              )
+              postBuildCallback: searchFieldPanelCreated:
+            )
+           )
+         
+        )
+      )
+!
+
+searchSpec_live
+    "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::NewSystemBrowser andSelector:#searchSpec_live
+     Tools::NewSystemBrowser new openInterface:#searchSpec_live
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: #'searchSpec_live'
+        window: 
+       (WindowSpec
+          label: 'Search Spec (live)'
+          name: 'Search Spec (live)'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 40)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (HorizontalPanelViewSpec
+              name: 'HorizontalPanel1'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              level: 1
+              horizontalLayout: fitSpace
+              verticalLayout: center
+              horizontalSpace: 2
+              verticalSpace: 2
+              component: 
+             (SpecCollection
+                collection: (
+                 (EditFieldWithCompletionSpec
+                    name: 'SearchedClassNameComboBox'
+                    activeHelpKey: gotoClassEntryField
+                    model: searchedClassNameOrSelectorHolder
+                    acceptOnLeave: false
+                    acceptOnReturn: true
+                    acceptOnPointerLeave: false
+                    acceptIfUnchanged: true
+                    entryCompletionBlock: searchCompletionBlock
+                    extent: (Point 294 24)
+                    postBuildCallback: searchFieldCreated:
+                  )
+                 )
+               
+              )
+              postBuildCallback: searchFieldPanelCreated:
+            )
+           )
+         
+        )
+      )
+!
+
+searchSpec_live_level0
+    "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::NewSystemBrowser andSelector:#searchSpec_live_level0
+     Tools::NewSystemBrowser new openInterface:#searchSpec_live_level0
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: #'searchSpec_live_level0'
+        window: 
+       (WindowSpec
+          label: 'Search Spec (live)'
+          name: 'Search Spec (live)'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 300 40)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (HorizontalPanelViewSpec
+              name: 'HorizontalPanel1'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              level: 0
+              horizontalLayout: fitSpace
+              verticalLayout: center
+              horizontalSpace: 2
+              verticalSpace: 2
+              component: 
+             (SpecCollection
+                collection: (
+                 (EditFieldWithCompletionSpec
+                    name: 'SearchedClassNameComboBox'
+                    activeHelpKey: gotoClassEntryField
+                    level: -1
+                    model: searchedClassNameOrSelectorHolder
+                    acceptOnLeave: false
+                    acceptOnReturn: true
+                    acceptOnPointerLeave: false
+                    acceptIfUnchanged: true
+                    entryCompletionBlock: searchCompletionBlock
+                    extent: (Point 296 24)
+                    postBuildCallback: searchFieldCreated:
+                  )
+                 )
+               
+              )
+              postBuildCallback: searchFieldPanelCreated:
+            )
+           )
+         
+        )
+      )
 !
 
 selectorBrowserSpec
@@ -2665,6 +3323,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -2700,11 +3369,15 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
+
+    "Modified: / 28-08-2010 / 12:01:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 senderChainBrowserSpec
@@ -2734,6 +3407,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -3006,6 +3690,8 @@
 
               )
               #handles: #(#Any 0.5 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
@@ -3013,6 +3699,7 @@
       )
 
     "Modified: / 27-04-2010 / 16:30:26 / cg"
+    "Modified: / 28-08-2010 / 12:01:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 singleCategoryBrowserSpec
@@ -3042,6 +3729,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -3076,11 +3774,15 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
+
+    "Modified: / 28-08-2010 / 12:01:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 singleClassBrowserSpec
@@ -3110,6 +3812,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -3144,11 +3857,15 @@
 
               )
               #handles: #(#Any 0.4 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
+
+    "Modified: / 28-08-2010 / 12:01:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 singleFullProtocolBrowserSpec
@@ -3178,6 +3895,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -3212,13 +3940,16 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
 
-    "Modified: / 1.3.2000 / 11:59:28 / cg"
+    "Modified: / 01-03-2000 / 11:59:28 / cg"
+    "Modified: / 28-08-2010 / 12:01:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 singleMethodBrowserSpec
@@ -3229,81 +3960,95 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:NewSystemBrowser andSelector:#singleMethodBrowserSpec
-     NewSystemBrowser new openInterface:#singleMethodBrowserSpec
+     UIPainter new openOnClass:Tools::NewSystemBrowser andSelector:#singleMethodBrowserSpec
+     Tools::NewSystemBrowser new openInterface:#singleMethodBrowserSpec
     "
 
     <resource: #canvas>
 
-    ^
-     #(#FullSpec
-        #name: #methodBrowserSpec
-        #window:
-       #(#WindowSpec
-          #label: 'MethodBrowser'
-          #name: 'NewBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 13 23 475 323)
-        )
-        #component:
-       #(#SpecCollection
-          #collection: #(
-           #(#SubCanvasSpec
-                                #name: 'PseudoMethodList'
-                                #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
-                                #majorKey: #'MethodList'
-                                #minorKey: #singleMethodWindowSpec
-                                #subAspectHolders:
-                               #(#Array
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #immediateUpdate
-                              #aspect: #immediateUpdate
-                            )
-                           #(#SubChannelInfoSpec
-                              #subAspect: #inGeneratorHolder
-                              #aspect: #selectorListGenerator
-                            )
-
-                           #(#SubChannelInfoSpec
-                              #subAspect: #packageFilter
-                              #aspect: #packageFilter
-                            )
-                           #(#SubChannelInfoSpec
-                              #subAspect: #selectedMethods
-                              #aspect: #selectedProtocolMethods
-                            )
-                           #(#SubChannelInfoSpec
-                              #subAspect: #menuHolder
-                              #aspect: #selectorPopUpMenu
-                            )
-                          )
-                                #createNewApplication: true
-                                #createNewBuilder: true
-                              )
-                 #(#SubCanvasSpec
-                    #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 0 1.0)
-                    #name: 'CodePane'
-                    #autoHideScrollBars: false
-                    #majorKey: #'NewSystemBrowser'
-                    #minorKey: #codePaneSpec
-                  )
-"/           #(#CodeViewSpec
-"/              #name: 'CodeView'
-"/              #layout: #(#LayoutFrame 0 0.0 25 0.0 0 1.0 0 1.0)
-"/              #model: #codeHolder
-"/              #hasHorizontalScrollBar: true
-"/              #hasVerticalScrollBar: true
-"/              #miniScrollerHorizontal: true
-"/              #postBuildCallback: #postBuildCodeView:
-"/              #modifiedChannel: #codeModifiedHolder
-"/            )
+    ^ 
+     #(FullSpec
+        name: singleMethodBrowserSpec
+        window: 
+       (WindowSpec
+          label: 'MethodBrowser'
+          name: 'MethodBrowser'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 462 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )
+           (TransparentBoxSpec
+              name: 'Box1'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              postBuildCallback: postBuildTabContentView:
+
+              component: 
+             (SpecCollection
+                collection: (
+                 (SubCanvasSpec
+                    name: 'PseudoMethodList'
+                    layout: (LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+                    majorKey: MethodList
+                    minorKey: singleMethodWindowSpec
+                    subAspectHolders: 
+                   (Array
+                      
+                     (SubChannelInfoSpec
+                        subAspect: immediateUpdate
+                        aspect: immediateUpdate
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: inGeneratorHolder
+                        aspect: selectorListGenerator
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: packageFilter
+                        aspect: packageFilter
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: selectedMethods
+                        aspect: selectedProtocolMethods
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: menuHolder
+                        aspect: selectorPopUpMenu
+                      )
+                    )
+                    createNewApplication: true
+                    createNewBuilder: true
+                  )
+                 (SubCanvasSpec
+                    name: 'CodePane'
+                    layout: (LayoutFrame 0 0.0 25 0.0 0 1.0 0 1.0)
+                    autoHideScrollBars: false
+                    majorKey: NewSystemBrowser
+                    minorKey: codePaneSpec
+                    createNewBuilder: false
+                  )
+                 )
+               
+              )
+            )
            )
-
-        )
-      )
-
-    "Modified: / 1.3.2000 / 20:47:18 / cg"
+         
+        )
+      )
+
+    "Modified: / 28-08-2010 / 12:01:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 singleMethodWithInfoBrowserSpec
@@ -3314,100 +4059,118 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:NewSystemBrowser andSelector:#singleMethodWithInfoBrowserSpec
-     NewSystemBrowser new openInterface:#singleMethodWithInfoBrowserSpec
+     UIPainter new openOnClass:Tools::NewSystemBrowser andSelector:#singleMethodWithInfoBrowserSpec
+     Tools::NewSystemBrowser new openInterface:#singleMethodWithInfoBrowserSpec
     "
 
     <resource: #canvas>
 
-    ^
-     #(#FullSpec
-        #name: #singleMethodWithInfoBrowserSpec
-        #window:
-       #(#WindowSpec
-          #label: 'MethodBrowser'
-          #name: 'MethodBrowser'
-          #min: #(#Point 0 0)
-          #bounds: #(#Rectangle 18 51 480 351)
-        )
-        #component:
-       #(#SpecCollection
-          #collection: #(
-           #(#SubCanvasSpec
-              #name: 'PseudoMethodList'
-              #layout: #(#LayoutFrame 0 0.0 0 0 0 1.0 25 0)
-              #majorKey: #'MethodList'
-              #minorKey: #singleMethodWindowSpec
-              #subAspectHolders:
-             #(#Array
-
-               #(#SubChannelInfoSpec
-                  #subAspect: #immediateUpdate
-                  #aspect: #immediateUpdate
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #inGeneratorHolder
-                  #aspect: #selectorListGenerator
-                )
-
-               #(#SubChannelInfoSpec
-                  #subAspect: #packageFilter
-                  #aspect: #packageFilter
-                )
-               #(#SubChannelInfoSpec
-                  #subAspect: #selectedMethods
-                  #aspect: #selectedProtocolMethods
-                )
-
-               #(#SubChannelInfoSpec
-                  #subAspect: #menuHolder
-                  #aspect: #methodListPopUpMenu
-                )
+    ^ 
+     #(FullSpec
+        name: singleMethodWithInfoBrowserSpec
+        window: 
+       (WindowSpec
+          label: 'MethodBrowser'
+          name: 'MethodBrowser'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 462 300)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
+           (TransparentBoxSpec
+              name: 'Box'
+              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+              postBuildCallback: postBuildTabContentView:
+
+              component: 
+             (SpecCollection
+                collection: (
+                 (SubCanvasSpec
+                    name: 'SubCanvas1'
+                    layout: (LayoutFrame 0 0.0 0 0 0 1.0 25 0)
+                    majorKey: MethodList
+                    minorKey: singleMethodWindowSpec
+                    subAspectHolders: 
+                   (Array
+                      
+                     (SubChannelInfoSpec
+                        subAspect: immediateUpdate
+                        aspect: immediateUpdate
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: inGeneratorHolder
+                        aspect: selectorListGenerator
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: packageFilter
+                        aspect: packageFilter
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: selectedMethods
+                        aspect: selectedProtocolMethods
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: menuHolder
+                        aspect: methodListPopUpMenu
+                      )
+                    )
+                    createNewApplication: true
+                    createNewBuilder: true
+                  )
+                 (VariableVerticalPanelSpec
+                    name: 'VariableVerticalPanel2'
+                    layout: (LayoutFrame 0 0.0 25 0 0 1.0 0 1.0)
+                    showHandle: false
+                    snapMode: both
+                    handlePosition: left
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (TextEditorSpec
+                          name: 'TextEditor1'
+                          model: methodInfo
+                          hasHorizontalScrollBar: true
+                          hasVerticalScrollBar: true
+                          autoHideScrollBars: true
+                          isReadOnly: true
+                          hasKeyboardFocusInitially: false
+                        )
+                       (SubCanvasSpec
+                          name: 'SubCanvas2'
+                          autoHideScrollBars: false
+                          majorKey: NewSystemBrowser
+                          minorKey: codePaneSpec
+                          createNewBuilder: false
+                        )
+                       )
+                     
+                    )
+                    handles: (Any 0.5 1.0)
+                  )
+                 )
+               
               )
-              #createNewApplication: true
-              #createNewBuilder: true
-            )
-           #(#VariableVerticalPanelSpec
-              #name: 'VariableVerticalPanel1'
-              #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 0 1.0)
-              #showHandle: false
-              #snapMode: #both
-              #handlePosition: #left
-              #component:
-             #(#SpecCollection
-                #collection: #(
-                 #(#TextEditorSpec
-                    #name: 'MethodInfoView'
-                    #model: #methodInfo
-                    #hasHorizontalScrollBar: true
-                    #hasVerticalScrollBar: true
-                    #autoHideScrollBars: true
-                    #isReadOnly: true
-                  )
-                 #(#SubCanvasSpec
-                    #name: 'CodePane'
-                    #autoHideScrollBars: false
-                    #majorKey: #'NewSystemBrowser'
-                    #minorKey: #codePaneSpec
-                  )
-"/                 #(#CodeViewSpec
-"/                    #name: 'CodeView'
-"/                    #model: #codeHolder
-"/                    #hasHorizontalScrollBar: true
-"/                    #hasVerticalScrollBar: true
-"/                    #miniScrollerHorizontal: true
-"/              #postBuildCallback: #postBuildCodeView:
-"/              #modifiedChannel: #codeModifiedHolder
-"/                  )
-                 )
-
-              )
-              #handles: #(#Any 0.5 1.0)
             )
            )
-
-        )
-      )
+         
+        )
+      )
+
+    "Modified: / 28-08-2010 / 12:02:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 singleNameSpaceBrowserSpec
@@ -3437,6 +4200,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -3471,13 +4245,16 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
 
-    "Modified: / 18.8.2000 / 15:01:10 / cg"
+    "Modified: / 18-08-2000 / 15:01:10 / cg"
+    "Modified: / 28-08-2010 / 12:02:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 singleNameSpaceFullBrowserSpec
@@ -3507,6 +4284,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -3541,14 +4329,16 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
 
-    "Modified: / 18.8.2000 / 14:03:27 / cg"
-    "Created: / 18.8.2000 / 15:01:07 / cg"
+    "Created: / 18-08-2000 / 15:01:07 / cg"
+    "Modified: / 28-08-2010 / 12:02:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 singleProjectBrowserSpec
@@ -3578,6 +4368,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -3612,14 +4413,16 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
 
-    "Created: / 25.2.2000 / 02:33:53 / cg"
-    "Modified: / 25.2.2000 / 03:11:11 / cg"
+    "Created: / 25-02-2000 / 02:33:53 / cg"
+    "Modified: / 28-08-2010 / 12:02:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 singleProjectFullBrowserSpec
@@ -3649,6 +4452,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -3683,14 +4497,16 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
 
-    "Modified: / 25.2.2000 / 03:11:11 / cg"
-    "Created: / 18.8.2000 / 18:42:51 / cg"
+    "Created: / 18-08-2000 / 18:42:51 / cg"
+    "Modified: / 28-08-2010 / 12:02:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 singleProtocolBrowserSpec
@@ -3720,6 +4536,17 @@
         #component:
        #(#SpecCollection
           #collection: #(
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
            #(#VariableVerticalPanelSpec
               #name: 'VariableVerticalPanel1'
               #layout: #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
@@ -3754,20 +4581,354 @@
 
               )
               #handles: #(#Any 0.3 1.0)
+              postBuildCallback: postBuildTabContentView:
+
             )
            )
 
         )
       )
 
-    "Modified: / 1.3.2000 / 11:59:28 / cg"
+    "Modified: / 01-03-2000 / 11:59:28 / cg"
+    "Modified: / 28-08-2010 / 12:02:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+smallLintByRuleResultBrowserSpec
+    "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::NewSystemBrowser andSelector:#smallLintByRuleResultBrowserSpec
+     Tools::NewSystemBrowser new openInterface:#smallLintByRuleResultBrowserSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: smallLintByRuleResultBrowserSpec
+        window: 
+       (WindowSpec
+          label: 'SmallLintByClassResultBrowser'
+          name: 'SmallLintByClassResultBrowser'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 775 579)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
+           (VariableVerticalPanelSpec
+              name: 'NavigatorAndCodePane'
+              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              showHandle: false
+              snapMode: both
+              handlePosition: left
+              component: 
+             (SpecCollection
+                collection: (
+                 (VariableHorizontalPanelSpec
+                    name: 'Navigator'
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (VariableVerticalPanelSpec
+                          name: 'RuleListPanel'
+                          component: 
+                         (SpecCollection
+                            collection: (
+                             (SubCanvasSpec
+                                name: 'RuleList'
+                                majorKey: #'Tools::LintRuleList'
+                                subAspectHolders: 
+                               (Array
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: inGeneratorHolder
+                                    aspect: lintRuleListGenerator
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: listSelection
+                                    aspect: selectedLintRules
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: outGeneratorHolder
+                                    aspect: classListGenerator
+                                  )
+                                )
+                                createNewApplication: true
+                                createNewBuilder: true
+                              )
+                             (SubCanvasSpec
+                                name: 'RuleDetails'
+                                hasHorizontalScrollBar: false
+                                hasVerticalScrollBar: false
+                                majorKey: #'Tools::LintRuleDetail'
+                                subAspectHolders: 
+                               (Array
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: ruleHolder
+                                    aspect: theSingleSelectedLintRuleHolder
+                                  )
+                                )
+                                createNewApplication: true
+                                createNewBuilder: true
+                              )
+                             )
+                           
+                          )
+                          handles: (Any 0.5 1.0)
+                        )
+                       (TransparentBoxSpec
+                          name: 'ClassListBox'
+                          component: 
+                         (SpecCollection
+                            collection: (
+                             (SubCanvasSpec
+                                name: 'ClassList'
+                                layout: (LayoutFrame 0 0 0 0 0 1 -25 1)
+                                majorKey: ClassList
+                                subAspectHolders: 
+                               (Array
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: doubleClickChannel
+                                    callBack: classDoubleClicked
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: immediateUpdate
+                                    aspect: immediateUpdate
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: meta
+                                    aspect: meta
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: inGeneratorHolder
+                                    aspect: classListGenerator
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: menuHolder
+                                    aspect: classMenu
+                                  ) 
+                                 (SubChannelInfoSpec
+                                    subAspect: selectedClasses
+                                    aspect: selectedClasses
+                                    callBack: classSelectionChanged
+                                  )
+                                  
+                                 (SubChannelInfoSpec
+                                    subAspect: selectionChangeCondition
+                                    aspect: selectionChangeConditionHolder
+                                  )
+                                )
+                                createNewApplication: true
+                                createNewBuilder: true
+                              )
+                             (SubCanvasSpec
+                                name: 'MetaToggles'
+                                layout: (LayoutFrame 5 0 -25 1 -5 1 0 1)
+                                hasHorizontalScrollBar: false
+                                hasVerticalScrollBar: false
+                                majorKey: #'Tools::ClassList'
+                                minorKey: metaSpec
+                                createNewBuilder: false
+                              )
+                             )
+                           
+                          )
+                        )
+                       (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: methodListPopUpMenu
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: packageFilter
+                              aspect: packageFilter
+                            ) 
+                           (SubChannelInfoSpec
+                              subAspect: selectedMethods
+                              aspect: selectedMethods
+                              callBack: methodsSelectionChanged
+                            )
+                            
+                           (SubChannelInfoSpec
+                              subAspect: selectionChangeCondition
+                              aspect: selectionChangeConditionHolder
+                            )
+                          )
+                          createNewApplication: true
+                          createNewBuilder: true
+                        )
+                       )
+                     
+                    )
+                    handles: (Any 0.33333333333333 0.66666666666667 1.0)
+                  )
+                 (SubCanvasSpec
+                    name: 'CodePane'
+                    autoHideScrollBars: false
+                    majorKey: NewSystemBrowser
+                    minorKey: codePaneSpec
+                    createNewBuilder: false
+                  )
+                 )
+               
+              )
+              handles: (Any 0.5 1.0)
+              postBuildCallback: postBuildTabContentView:
+
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 28-08-2010 / 12:02:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+visualProfilerSpec
+    "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::NewSystemBrowser andSelector:#visualProfilerSpec
+     Tools::NewSystemBrowser new openInterface:#visualProfilerSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: visualProfilerSpec
+        window: 
+       (WindowSpec
+          label: 'SystemBrowser'
+          name: 'SystemBrowser'
+          min: (Point 0 0)
+          bounds: (Rectangle 0 0 462 300)
+          icon: defaultIcon
+        )
+        component: 
+       (SpecCollection
+          collection: (
+            (SubCanvasSpec
+              name: 'MessagePane'
+              layout: (LayoutFrame 0 0 0 0 0 1 40 0)
+              initiallyInvisible: true
+              hasHorizontalScrollBar: false
+              hasVerticalScrollBar: false
+              specHolder: messageSpecHolder
+              createNewBuilder: false
+              postBuildCallback: postBuildMessagePane:
+            )            
+
+           (VariableVerticalPanelSpec
+              name: 'VariableVerticalPanel1'
+              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              barWidth: 2
+              showHandle: false
+              snapMode: both
+              handlePosition: left
+              component: 
+             (SpecCollection
+                collection: (
+                 (SubCanvasSpec
+                    name: 'VisualProfiler'
+                    autoHideScrollBars: false
+                    majorKey: #'Tools::VisualProfilerCanvas'
+                    minorKey: windowSpec
+                    subAspectHolders: 
+                   (Array
+                      
+                     (SubChannelInfoSpec
+                        subAspect: packageFilter
+                        aspect: packageFilter
+                      ) 
+                     (SubChannelInfoSpec
+                        subAspect: profilerStatistics
+                        aspect: profilerStatistics
+                      )
+                      
+                     (SubChannelInfoSpec
+                        subAspect: selectedMethods
+                        aspect: selectedMethods
+                      )
+                    )
+                    createNewApplication: true
+                    createNewBuilder: true
+                  )
+                 (SubCanvasSpec
+                    name: 'CodePane'
+                    autoHideScrollBars: false
+                    majorKey: NewSystemBrowser
+                    minorKey: codePaneSpec
+                  )
+                 )
+               
+              )
+              handles: (Any 0.5 1.0)
+              postBuildCallback: postBuildTabContentView:
+
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 09-10-2007 / 21:54:57 / janfrog"
+    "Modified: / 28-08-2010 / 12:02:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 windowSpec
-"/    ^ self browserWindowSpec
-    ^ self noteBookWindowSpec
-
-    "Modified: / 5.2.2000 / 12:23:55 / cg"
+    "/    ^ self browserWindowSpec
+    
+    ^ UserPreferences current webBrowserLikeLayout 
+        ifTrue:[ self pagedWindowSpec ]
+        ifFalse:[ self noteBookWindowSpec ]
+
+    "Modified: / 05-02-2000 / 12:23:55 / cg"
+    "Modified: / 07-06-2011 / 14:39:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !NewSystemBrowser class methodsFor:'interface specs-dialogs'!
@@ -4027,6 +5188,119 @@
       )
 ! !
 
+!NewSystemBrowser class methodsFor:'interface specs-message pane'!
+
+messageInfoSpec
+    "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::NewSystemBrowser andSelector:#messageInfoSpec
+     Tools::NewSystemBrowser new openInterface:#messageInfoSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: messageInfoSpec
+        window: 
+       (WindowSpec
+          label: 'MessageInfo'
+          name: 'MessageInfo'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 800 40)
+          backgroundColor: (Color 100.0 78.0392156862745 22.7450980392157)
+          forceRecursiveBackgroundOfDefaultBackground: true
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'Label'
+              name: 'Message'
+              layout: (LayoutFrame 10 0 -10 0.5 -90 1 10 0.5)
+              backgroundColor: (Color 100.0 78.0392156862745 22.7450980392157)
+              translateLabel: true
+              labelChannel: messageHolder
+              adjust: left
+            )
+           (ActionButtonSpec
+              label: 'OK'
+              name: 'OK'
+              layout: (LayoutFrame -80 1 -12 0.5 -12 1 12 0.5)
+              translateLabel: true
+              model: hideMessagePane
+            )
+           )
+         
+        )
+      )
+!
+
+progressInfoSpec
+    "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::NewSystemBrowser andSelector:#progressInfoSpec
+     Tools::NewSystemBrowser new openInterface:#progressInfoSpec
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: progressInfoSpec
+        window: 
+       (WindowSpec
+          label: 'ProgressInfo'
+          name: 'ProgressInfo'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 800 40)
+          backgroundColor: (Color 100.0 78.0392156862745 22.7450980392157)
+          forceRecursiveBackgroundOfDefaultBackground: true
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (LabelSpec
+              label: 'Label'
+              name: 'Message'
+              layout: (LayoutFrame 10 0 0 0 -90 1 20 0)
+              backgroundColor: (Color 100.0 78.0392156862745 22.7450980392157)
+              translateLabel: true
+              labelChannel: messageHolder
+              adjust: left
+            )
+           (ProgressIndicatorSpec
+              name: 'ProgressIndicator'
+              layout: (LayoutFrame 10 0 -20 1 -90 1 -3 1)
+              model: progressHolder
+              foregroundColor: (Color 52.156862745098 37.2549019607843 0.0)
+              backgroundColor: (Color 100.0 91.3725490196078 70.1960784313726)
+            )
+           (ActionButtonSpec
+              label: 'Abort'
+              name: 'Abort'
+              layout: (LayoutFrame -80 1 -12 0.5 -12 1 12 0.5)
+              translateLabel: true
+              model: hideMessagePaneAndAbort
+            )
+           )
+         
+        )
+      )
+
+    "Modified: / 28-08-2010 / 20:51:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !NewSystemBrowser class methodsFor:'menu specs'!
 
 browseMenu
@@ -4479,6 +5753,50 @@
     "Modified: / 03-08-2004 / 14:28:02 / stefan"
 !
 
+categoryCheckMenu
+    "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:#categoryCheckMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser categoryCheckMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Check'
+            itemValue: categoryCheckMenuSmalllintCheck:
+            translateLabel: true
+            argument: smalllintRules
+          )
+         (MenuItem
+            label: 'Check (all checks)'
+            itemValue: categoryCheckMenuSmalllintCheck:
+            translateLabel: true
+            argument: smalllintRulesAll
+          )
+         (MenuItem
+            label: 'Check (selected checks)'
+            itemValue: categoryCheckMenuSmalllintCheck:
+            translateLabel: true
+            argument: smalllintRulesFromUser
+          )
+
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 17-04-2010 / 11:14:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 categoryMenu
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
@@ -4493,7 +5811,7 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
         (
          (MenuItem
@@ -4534,6 +5852,12 @@
             label: '-'
           )
          (MenuItem
+            label: 'Static Analysis (Lint)'
+            translateLabel: true
+            submenuChannel: categoryCheckMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary lint16x16Icon 'Static Analysis (Lint)')
+          )
+         (MenuItem
             label: 'Special'
             translateLabel: true
             submenuChannel: categorySpecialMenu
@@ -4864,7 +6188,7 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
         (
          (MenuItem
@@ -4909,6 +6233,11 @@
             label: '-'
           )
          (MenuItem
+            label: 'Static Analysis (Lint)'
+            translateLabel: true
+            submenuChannel: categoryCheckMenu
+          )
+         (MenuItem
             label: 'Special'
             translateLabel: true
             submenuChannel: categorySpecialMenu
@@ -5186,6 +6515,65 @@
     "Created: / 19-04-2011 / 15:24:05 / cg"
 !
 
+classCheckMenu
+    "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:#classCheckMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classCheckMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Check'
+            itemValue: classCheckMenuSmalllintCheck:
+            translateLabel: true
+            argument: smalllintRules
+          )
+         (MenuItem
+            label: 'Check (all checks)'
+            itemValue: classCheckMenuSmalllintCheck:
+            translateLabel: true
+            argument: smalllintRulesAll
+          )
+         (MenuItem
+            label: 'Check (selected checks)'
+            itemValue: classCheckMenuSmalllintCheck:
+            translateLabel: true
+            argument: smalllintRulesFromUser
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Smalltalk/X Checks'
+            translateLabel: true
+            submenuChannel: lintMenu
+            keepLinkedMenu: true
+          )
+         (MenuItem
+            enabled: hasClassSelectedAndInstrumentingCompilerExistsHolder
+            label: 'Recompile all Methods with Instrumentation'
+            itemValue: classMenuRecompileInstrumented
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 17-04-2010 / 11:17:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 classClassVariablesMenu
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
@@ -5626,13 +7014,13 @@
      the MenuEditor may not be able to read the specification."
 
     "
-     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#classGenerateMenu
-     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classGenerateMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^
+     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#classGenerateMenuCommonInstMethodsSlice
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classGenerateMenuCommonInstMethodsSlice)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
      #(Menu
         (
          (MenuItem
@@ -5674,6 +7062,13 @@
           )
          (MenuItem
             enabled: hasClassSelectedHolder
+            label: 'Visitor and Visited Methods (with visitSuper:)'
+            itemValue: classMenuGenerateVisitorMethods2
+            translateLabel: true
+            isVisible: hasNonMetaSelectedHolder
+          )
+         (MenuItem
+            enabled: hasClassSelectedHolder
             label: 'Classtype Test Methods for this Class (isXXX)'
             itemValue: classMenuGenerateClassTypeTestMethodsForThisClass
             translateLabel: true
@@ -5694,8 +7089,6 @@
         nil
         nil
       )
-
-    "Created: / 10-08-2006 / 16:17:43 / cg"
 !
 
 classHierarchyMenu
@@ -6332,6 +7725,11 @@
             translateLabel: true
           )
          (MenuItem
+            label: 'Search / Rewrite'
+            itemValue: classMenuRewrite
+            translateLabel: true
+          )
+         (MenuItem
             label: '-'
           )
          (MenuItem
@@ -6408,6 +7806,12 @@
             keepLinkedMenu: true
           )
          (MenuItem
+            label: 'Static Analysis (Lint)'
+            translateLabel: true
+            submenuChannel: classCheckMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary lint16x16Icon 'Static Analysis (Lint)')
+          )
+         (MenuItem
             label: 'Debug'
             translateLabel: true
             submenuChannel: classDebugMenu
@@ -6435,6 +7839,7 @@
       )
 
     "Modified: / 20-04-2011 / 17:14:10 / cg"
+    "Modified: / 09-06-2011 / 08:41:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 classNewHaskellClassSlice
@@ -6445,21 +7850,25 @@
      the MenuEditor may not be able to read the specification."
 
     "
-     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#classNewSlice
-     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classNewSlice)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(Menu
-        (
+     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#classNewHaskellClassSlice
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classNewHaskellClassSlice)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: '-'
+            isVisible: isHaskellModulePresent
+          )
          (MenuItem
             enabled: isHaskellModulePresent
             label: 'Haskell Module'
             itemValue: classMenuNewHaskellModule
             translateLabel: true
-            isVisible: isHaskellModulePresent                           
+            isVisible: isHaskellModulePresent
           )
          )
         nil
@@ -6475,21 +7884,25 @@
      the MenuEditor may not be able to read the specification."
 
     "
-     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#classNewSlice
-     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classNewSlice)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(Menu
-        (
+     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#classNewJavaScriptClassSlice
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classNewJavaScriptClassSlice)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: '-'
+            isVisible: isJavaScriptMetaclassPresent
+          )
          (MenuItem
             enabled: isJavaScriptMetaclassPresent
             label: 'JavaScript Class'
             itemValue: classMenuNewJavaScriptClass
             translateLabel: true
-         )
+          )
          )
         nil
         nil
@@ -6525,6 +7938,58 @@
       )
 !
 
+classNewRubyClassSlice
+    "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:#classNewRubyClassSlice
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classNewRubyClassSlice)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: '-'
+            isVisible: isRubyMetaclassPresent
+          )
+         (MenuItem
+            label: 'Ruby class'
+            itemValue: classMenuNewRubyClass
+            translateLabel: true
+            isVisible: isRubyMetaclassPresent
+            labelImage: (ResourceRetriever ToolbarIconLibrary rubyClassBrowserIcon 'Ruby class')
+          )
+         (MenuItem
+            label: 'Ruby...'
+            translateLabel: true
+            isVisible: isRubyMetaclassPresent
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'Module'
+                  itemValue: classMenuNewRubyModule
+                  translateLabel: true
+                  isVisible: isRubyMetaclassPresent
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
+      )
+!
+
 classNewSlice
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
@@ -6623,18 +8088,18 @@
     ^ 
      #(Menu
         (
-     #(MenuItem
-            label: 'Smalltalk'
+         (MenuItem
+            label: 'Smalltalk class'
+            itemValue: classMenuNewSmalltalkClass
+            translateLabel: true
+          )
+         (MenuItem
+            label: 'Smalltalk...'
             translateLabel: true
             submenu: 
            (Menu
               (
                (MenuItem
-                  label: 'Class'
-                  itemValue: classMenuNewClass
-                  translateLabel: true
-                )
-               (MenuItem
                   enabled: hasSingleLoadedNonJavascriptClassSelectedHolder
                   label: 'Private Class'
                   itemValue: classMenuNewPrivateClass
@@ -6697,9 +8162,10 @@
               nil
             )
           )
-               )
-              nil
-              nil  )
+         )
+        nil
+        nil
+      )
 !
 
 classSCMMenu
@@ -8054,10 +9520,17 @@
             label: 'SubVersion'
             translateLabel: true
             isVisible: hasSubversionSupport
-            submenuChannel: projectSubversionMenu
+            submenuChannel: projectMenuSubversion
             labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'SubVersion')
           )
          (MenuItem
+            enabled: hasProjectSelectedMonticelloRepositoryExistsHolder
+            label: 'Monticello'
+            translateLabel: true
+            isVisible: hasMonticelloSupport
+            submenuChannel: projectMonticelloMenu
+          )
+         (MenuItem
             label: '-'
           )
          (MenuItem
@@ -8284,6 +9757,7 @@
         nil
       )
 
+    "Modified: / 14-09-2010 / 22:55:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 08-02-2011 / 11:00:43 / cg"
 !
 
@@ -8443,6 +9917,49 @@
             )
 !
 
+protocolCheckMenu
+    "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:#protocolCheckMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser protocolCheckMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Check'
+            itemValue: protocolCheckMenuSmalllintCheck:
+            translateLabel: true
+            argument: smalllintRules
+          )
+         (MenuItem
+            label: 'Check (all checks)'
+            itemValue: protocolCheckMenuSmalllintCheck:
+            translateLabel: true
+            argument: smalllintRulesAll
+          )
+         (MenuItem
+            label: 'Check (selected checks)'
+            itemValue: protocolCheckMenuSmalllintCheck:
+            translateLabel: true
+            argument: smalllintRulesFromUser
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 17-04-2010 / 11:13:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 protocolMenu
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
@@ -8660,6 +10177,12 @@
             label: '-'
           )
          (MenuItem
+            label: 'Static Anlysis (Lint)'
+            translateLabel: true
+            submenuChannel: protocolCheckMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary lint16x16Icon 'Static Anlysis (Lint)')
+          )
+         (MenuItem
             label: 'Generate'
             translateLabel: true
             submenu: 
@@ -8675,25 +10198,6 @@
               nil
             )
           )
-"/        (MenuItem
-"/            label: 'Special'
-"/            translateLabel: true
-"/            submenu: 
-"/           (Menu
-"/              (
-"/               (MenuItem
-"/                  label: 'Auto Assign'
-"/                  itemValue: protocolMenuAutoAssignMethods
-"/                  translateLabel: true
-"/                )
-"/               )
-"/              nil
-"/              nil
-"/            )
-"/          )         (MenuItem
-"/            label: '-'
-"/            isVisible: false
-"/          )
          (MenuItem
             label: 'Update'
             itemValue: protocolMenuUpdate
@@ -8949,6 +10453,50 @@
       )
 !
 
+selectorCheckMenu
+    "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:#categoryCheckMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser categoryCheckMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Check'
+            itemValue: selectorCheckMenuSmalllintCheck:
+            translateLabel: true
+            argument: smalllintRules
+          )
+         (MenuItem
+            label: 'Check (all checks)'
+            itemValue: selectorCheckMenuSmalllintCheck:
+            translateLabel: true
+            argument: smalllintRulesAll
+          )
+         (MenuItem
+            label: 'Check (selected checks)'
+            itemValue: selectorCheckMenuSmalllintCheck:
+            translateLabel: true
+            argument: smalllintRulesFromUser
+          )
+
+         )
+        nil
+        nil
+      )
+
+    "Created: / 17-04-2010 / 10:48:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 selectorMenu
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
@@ -8963,7 +10511,7 @@
 
     <resource: #menu>
 
-    ^
+    ^ 
      #(Menu
         (
          (MenuItem
@@ -8997,7 +10545,7 @@
             enabled: hasClassSelectedHolder
             label: 'New'
             translateLabel: true
-            submenu:
+            submenu: 
            (Menu
               (
                (MenuItem
@@ -9010,6 +10558,15 @@
                   label: '-'
                 )
                (MenuItem
+                  label: 'Smalltak/Ruby/... Method'
+                  translateLabel: true
+                  submenuChannel: selectorMenuNewSlice
+                  isMenuSlice: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
                   enabled: hasClassSelectedHolder
                   label: 'Window Spec'
                   itemValue: selectorMenuNewWindowSpec
@@ -9190,13 +10747,18 @@
               nil
             )
           )
-
          (MenuItem
             label: 'Refactor'
             translateLabel: true
             submenuChannel: methodRefactorMenu
           )
          (MenuItem
+            label: 'Static Anlysis (Lint)'
+            translateLabel: true
+            submenuChannel: selectorCheckMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary lint16x16Icon 'Static Anlysis (Lint)')
+          )
+         (MenuItem
             label: 'Generate'
             translateLabel: true
             submenu: 
@@ -10647,6 +12209,12 @@
             indication: toolBarVisibleHolder
           )
          (MenuItem
+            label: 'Bookmarks'
+            translateLabel: true
+            hideMenuOnActivated: false
+            indication: bookmarkBarVisibleHolder
+          )
+         (MenuItem
             label: 'Searchbar'
             translateLabel: true
             hideMenuOnActivated: false
@@ -10680,6 +12248,13 @@
             indication: showCoverageInformation
           )
          (MenuItem
+            label: 'Browslet'
+            itemValue: showPlugin:
+            translateLabel: true
+            hideMenuOnActivated: false
+            indication: showPlugin
+          )
+         (MenuItem
             label: '-'
           )
          (MenuItem
@@ -10858,8 +12433,6 @@
         nil
         nil
       )
-
-    "Modified: / 27-04-2010 / 16:26:10 / cg"
 !
 
 viewMenuForChainBrowser
@@ -11620,6 +13193,268 @@
     "Created: / 18.2.2000 / 11:58:25 / cg"
 ! !
 
+!NewSystemBrowser class methodsFor:'menu specs-subversion'!
+
+classSubversionMenu
+    "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:#classSubversionMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classSubversionMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasClassesSelectedAndSubversionRepositoryExistsAndBranchSelectedHolder
+            label: 'Commit'
+            itemValue: classMenuSubversionCommit
+            translateLabel: true
+            labelImage: (ResourceRetriever #'SVN::IconLibrary' commit 'Commit')
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndSubversionRepositoryExistsAndBranchSelectedHolder
+            label: 'Update'
+            itemValue: classMenuSubversionUpdate
+            translateLabel: true
+            labelImage: (ResourceRetriever #'SVN::IconLibrary' update 'Update')
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndSubversionRepositoryExistsAndBranchSelectedHolder
+            label: 'Compare'
+            translateLabel: true
+            submenuChannel: classSubversionCompareMenu
+            labelImage: (ResourceRetriever #'SVN::IconLibrary' compare 'Compare')
+          )
+         (MenuItem
+            enabled: false
+            label: 'Merge'
+            translateLabel: true
+            submenuChannel: classSubversionMergeMenu
+            labelImage: (ResourceRetriever #'SVN::IconLibrary' merge 'Merge')
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndSubversionRepositoryExistsAndBranchSelectedHolder
+            label: 'Changeset'
+            translateLabel: true
+            submenuChannel: classSubversionChangesetMenu
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndSubversionRepositoryExistsAndBranchSelectedHolder
+            label: 'Revision log'
+            itemValue: classMenuSubversionShowRevisionLog
+            translateLabel: true
+            labelImage: (ResourceRetriever #'SVN::IconLibrary' log 'Revision log')
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Branch'
+            translateLabel: true
+            submenuChannel: commonSubversionBranchMenu
+          )
+         (MenuItem
+            label: 'Browse working copy'
+            itemValue: commonMenuSubversionBrowseWorkingCopy
+            translateLabel: true
+          )
+         (MenuItem
+            label: 'More'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'Common Slice'
+                  translateLabel: true
+                  submenuChannel: commonSubversionMenuSlice
+                  isMenuSlice: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
+      )
+!
+
+commonSubversionMenuSlice
+    "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:#commonSubversionMenuSlice
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser commonSubversionMenuSlice)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Settings'
+            itemValue: commonMenuSubversionOpenSettings
+            translateLabel: true
+          )
+         (MenuItem
+            label: 'Flush caches'
+            itemValue: commonMenuSubversionFlushCaches
+            translateLabel: true
+          )
+         )
+        nil
+        nil
+      )
+!
+
+projectSubversionMenu
+    "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:#projectSubversionMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser projectSubversionMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasProjectSelectedSubversionRepositoryExistsAndBranchSelectedHolder
+            label: 'Commit'
+            itemValue: projectMenuSubversionCommit
+            translateLabel: true
+            labelImage: (ResourceRetriever #'SVN::IconLibrary' commit 'Commit')
+          )
+         (MenuItem
+            enabled: hasProjectSelectedSubversionRepositoryExistsAndBranchSelectedHolder
+            label: 'Update'
+            itemValue: projectMenuSubversionUpdate
+            translateLabel: true
+            labelImage: (ResourceRetriever #'SVN::IconLibrary' update 'Update')
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasProjectSelectedSubversionRepositoryExistsAndBranchSelectedHolder
+            label: 'Compare'
+            translateLabel: true
+            submenuChannel: projectSubversionCompareMenu
+            labelImage: (ResourceRetriever #'SVN::IconLibrary' compare 'Compare')
+          )
+         (MenuItem
+            enabled: hasProjectSelectedSubversionRepositoryExistsAndBranchSelectedHolder
+            label: 'Merge'
+            translateLabel: true
+            submenuChannel: projectSubversionMergeMenu
+            labelImage: (ResourceRetriever #'SVN::IconLibrary' merge 'Merge')
+          )
+         (MenuItem
+            enabled: hasProjectSelectedSubversionRepositoryExistsAndBranchSelectedHolder
+            label: 'Changeset'
+            translateLabel: true
+            submenuChannel: projectSubversionChangesetMenu
+          )
+         (MenuItem
+            enabled: hasProjectSelectedSubversionRepositoryExistsAndBranchSelectedHolder
+            label: 'Revision log'
+            itemValue: projectMenuSubversionShowRevisionLog
+            translateLabel: true
+            labelImage: (ResourceRetriever #'SVN::IconLibrary' log 'Revision log')
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Branch'
+            translateLabel: true
+            submenuChannel: commonSubversionBranchMenu
+          )
+         (MenuItem
+            label: 'Browse working copy'
+            itemValue: commonMenuSubversionBrowseWorkingCopy
+            translateLabel: true
+          )
+         (MenuItem
+            label: 'More'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  enabled: hasProjectSelectedSubversionRepositoryExistsAndBranchSelectedHolder
+                  label: 'Load revision...'
+                  itemValue: projectMenuSubversionLoadRevision
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Remove working copy'
+                  itemValue: projectMenuSubversionRemoveWorkingCopy
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedSubversionRepositoryExistsAndBranchSelectedHolder
+                  label: 'Fast commit'
+                  translateLabel: true
+                  choice: projectMenuSubversionCommitMode
+                  choiceValue: fast
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedSubversionRepositoryExistsAndBranchSelectedHolder
+                  label: 'Full commit'
+                  translateLabel: true
+                  choice: projectMenuSubversionCommitMode
+                  choiceValue: full
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Common Slice'
+                  translateLabel: true
+                  submenuChannel: commonSubversionMenuSlice
+                  isMenuSlice: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
+      )
+! !
 
 !NewSystemBrowser class methodsFor:'menu specs-toolbar'!
 
@@ -11641,64 +13476,34 @@
      #(Menu
         (
          (MenuItem
-            label: ''
-          )
-         (MenuItem
-            activeHelpKey: recentlyVisitedMethods
-            label: 'Recently Visited Methods'
+            activeHelpKey: goBackInGlobalHistory
+            enabled: canGoBackInGlobalHistoryAspect
+            label: 'Back (Global History)'
+            itemValue: goBackInGlobalHistory
             translateLabel: true
             isButton: true
-            submenuChannel: findHistoryMenu
-            labelImage: (ResourceRetriever ToolbarIconLibrary historyBackIcon)
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            activeHelpKey: recentChanges
-            label: 'Recently Changed'
+            labelImage: (ResourceRetriever XPToolbarIconLibrary historyBackInGlobalListIcon)
+          )
+         (MenuItem
+            activeHelpKey: goBack
+            enabled: canGoBackAspect
+            label: 'Back'
+            itemValue: goBack
             translateLabel: true
             isButton: true
-            submenuChannel: changedMenu
-            labelImage: (ResourceRetriever ToolbarIconLibrary changesBrowserIcon)
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            activeHelpKey: recentClassChanges
-            label: 'Recently Changed Classes'
+            labelImage: (ResourceRetriever XPToolbarIconLibrary historyBackIcon)
+          )
+         (MenuItem
+            activeHelpKey: goForward
+            enabled: canGoForwardAspect
+            label: 'Forward'
+            itemValue: goForward
             translateLabel: true
             isButton: true
-            isVisible: false
-            submenuChannel: changedClassesMenu
-            labelImage: (ResourceRetriever ToolbarIconLibrary empty1x20Icon)
-            showBusyCursorWhilePerforming: true
+            labelImage: (ResourceRetriever XPToolbarIconLibrary historyForwardIcon)
           )
          (MenuItem
             label: ''
-            isVisible: false
-          )
-         (MenuItem
-            activeHelpKey: undoOperation
-            enabled: hasUndoableOperations
-            label: 'Undo'
-            itemValue: operationsMenuUndo
-            translateLabel: true
-            isButton: true
-            isVisible: false
-            labelImage: (ResourceRetriever ToolbarIconLibrary undoIcon)
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            activeHelpKey: redoOperation
-            enabled: hasUndoableOperations
-            label: 'Redo'
-            itemValue: operationsMenuRedo
-            translateLabel: true
-            isButton: true
-            isVisible: false
-            labelImage: (ResourceRetriever ToolbarIconLibrary redoIcon)
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            label: '-'
           )
          (MenuItem
             activeHelpKey: createBuffer
@@ -11734,6 +13539,62 @@
           )
          (MenuItem
             label: '-'
+          )
+         (MenuItem
+            activeHelpKey: recentChanges
+            label: 'Recently Changed'
+            translateLabel: true
+            isButton: true
+            submenuChannel: changedMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary changesBrowserIcon)
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            activeHelpKey: recentClassChanges
+            label: 'Recently Changed Classes'
+            translateLabel: true
+            isButton: true
+            isVisible: false
+            submenuChannel: changedClassesMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary empty1x20Icon)
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            activeHelpKey: bookmarks
+            label: 'Bookmarks'
+            translateLabel: true
+            isVisible: false
+            submenuChannel: boockmarksMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary bookmarks22x22)
+          )
+         (MenuItem
+            label: ''
+            isVisible: false
+          )
+         (MenuItem
+            activeHelpKey: undoOperation
+            enabled: hasUndoableOperations
+            label: 'Undo'
+            itemValue: operationsMenuUndo
+            translateLabel: true
+            isButton: true
+            isVisible: false
+            labelImage: (ResourceRetriever ToolbarIconLibrary undoIcon)
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            activeHelpKey: redoOperation
+            enabled: hasUndoableOperations
+            label: 'Redo'
+            itemValue: operationsMenuRedo
+            translateLabel: true
+            isButton: true
+            isVisible: false
+            labelImage: (ResourceRetriever ToolbarIconLibrary redoIcon)
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
             isVisible: classWizardVisibleHolder
           )
          (MenuItem
@@ -11746,6 +13607,17 @@
           )
          (MenuItem
             label: '-'
+          )
+         (MenuItem
+            label: 'Run Static Analysis (Lint)'
+            itemValue: runLint
+            nameKey: RunLint
+            translateLabel: true
+            isButton: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary lint24x24Icon)
+          )
+         (MenuItem
+            label: '-'
             isVisible: hasAnyTestCaseOrExecutableClassMethodOrStartableApplicationSelectedHolder
           )
          (MenuItem
@@ -11839,6 +13711,9 @@
             labelImage: (ResourceRetriever nil addBreakPointIcon2)
           )
          (MenuItem
+            label: ''
+          )
+         (MenuItem
             activeHelpKey: removeBreakPoint
             enabled: hasMethodWithBreakPointSelectedHolder
             label: 'Remove BreakPoint'
@@ -11847,15 +13722,24 @@
             isButton: true
             labelImage: (ResourceRetriever nil removeBreakPointIcon2)
           )
-         (MenuItem
-            label: ''
-          )
-         )
-        nil
-        nil
-      )
-
-    "Modified: / 13-04-2011 / 19:04:42 / cg"
+         )
+        nil
+        nil
+      )
+! !
+
+!NewSystemBrowser class methodsFor:'queries'!
+
+hasSubversionSupport
+    |subVersionRepository|
+
+    "/ use Smalltalk-at to trick the dependency/prerequisite generator
+    subVersionRepository := Smalltalk at: #'SVN::RepositoryManager'.
+
+    ^ subVersionRepository notNil
+        and:[ subVersionRepository isLoaded 
+            and:[ subVersionRepository enabled ]
+        ] 
 ! !
 
 !NewSystemBrowser class methodsFor:'startup'!
@@ -11934,6 +13818,18 @@
     "
 !
 
+browseProfilerStatistics: statistics
+    "launch a single class browser."
+
+    ^ self basicNew spawnProfilerStatistics: statistics in:#newBrowser.
+
+    "
+     self browseClass:Array 
+    "
+
+    "Created: / 09-10-2007 / 22:03:05 / janfrog"
+!
+
 open
     |lastClass classHistory|
 
@@ -12045,6 +13941,20 @@
 
 !NewSystemBrowser methodsFor:'aspects'!
 
+bookmarkHolder
+
+    ^self navigationState bookmarkHolder
+
+    "Created: / 02-06-2011 / 22:46:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+bookmarkListHolder
+
+    ^self class bookmarks
+
+    "Created: / 02-06-2011 / 22:36:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 bufferNameList
     "the list of buffer-name-labels (model of the notebook)"
 
@@ -12160,6 +14070,22 @@
     ^ self navigationState infoLabelHolder
 !
 
+messageHolder
+    "the current buffers message (in message pane)"
+
+    ^ self navigationState messageHolder
+
+    "Created: / 27-08-2010 / 22:08:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+messageSpecHolder
+    "the current buffers message (in message pane)"
+
+    ^ self navigationState messageSpecHolder
+
+    "Created: / 28-08-2010 / 11:41:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 metaToggleLabelHolder
     ^ self navigationState metaToggleLabelHolder
 !
@@ -12180,13 +14106,13 @@
     navigationState isNil ifTrue:[
         navigationState := NavigationState new.
         "/ the kludge below is required to allow
-        "/ subSpecs to be opened in full-window (without a noteBook) as well
+        "/ subSpecs to be opened in full-window (without a noteBook) as well 
         "/ (without that, we get trouble accessing the codeView later ...)
         browserCanvas isNil ifTrue:[
             "/ opened spec as top-spec (there is no canvas)
 
             ^ navigationState.
-"/            theCanvas := self.
+"/            theCanvas := self. 
 "/            bldr := self builder.
 "/
 "/            bldr notNil ifTrue:[
@@ -12205,11 +14131,15 @@
             theCanvasType := theCanvas spec.
         ].
         navigationState canvasType:theCanvasType.
+        self updateNavigationHistory.
+        self updateBookmarkHolder.
     ].
     ^ navigationState
 
-    "Created: / 4.2.2000 / 16:00:10 / cg"
-    "Modified: / 18.2.2000 / 13:50:27 / cg"
+    "Created: / 04-02-2000 / 16:00:10 / cg"
+    "Modified: / 18-02-2000 / 13:50:27 / cg"
+    "Modified: / 27-02-2008 / 08:50:55 / janfrog"
+    "Modified: / 02-06-2011 / 22:34:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 noAllItem
@@ -12222,6 +14152,14 @@
     ^ self navigationState packageLabelHolder
 !
 
+progressHolder
+    "the current buffers message (in message pane)"
+
+    ^ self navigationState progressHolder
+
+    "Created: / 28-08-2010 / 10:06:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 searchedClassNameHolder
     |holder|
 
@@ -12297,6 +14235,95 @@
     builder aspectAt:#suppressChangeSetUpdate put:aBoolean
 ! !
 
+!NewSystemBrowser methodsFor:'aspects-environment'!
+
+selectedCategoriesAsEnvironment
+    |subjects|
+
+    subjects := self selectedCategoriesValue.
+    ^ (CategoryEnvironment new)
+        categories:subjects;
+        label:(subjects size = 1 
+                    ifTrue:[ 'class category' , subjects anyOne ]
+                    ifFalse:[ subjects size printString , ' class categories' ])
+
+    "Created: / 17-04-2010 / 10:29:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectedClassesAsEnvironment
+    |subjects|
+
+    subjects := self selectedClassesValue.
+    ^ (ClassEnvironment new)
+        classes:subjects;
+        label:(subjects size = 1 
+                    ifTrue:[ 'class ' , subjects anyOne fullName ]
+                    ifFalse:[ subjects size printString , ' classes' ])
+                 "Created: / 24-02-2009 / 11:08:35 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
+selectedCodeComponentsAsEnvironment
+
+    | classes methods components |
+    components := self selectedCodeComponents.
+    classes := ClassEnvironment new.
+    methods := SelectorEnvironment new.
+    components do:
+        [:each|
+        each isMethod ifTrue:[methods addClass: each mclass selector: each selector].
+        each isBehavior ifTrue:[classes addClass: each theNonMetaclass; addClass: each theMetaclass]].
+    "Kludge"
+    ^methods isEmpty
+        ifFalse:[methods]
+        ifTrue:[classes].
+
+    "Created: / 17-04-2010 / 10:09:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectedEnvironment
+
+    | classes methods components |
+    components := self selectedCodeComponents.
+    classes := ClassEnvironment new.
+    methods := SelectorEnvironment new.
+    components do:
+        [:each|
+        each isMethod ifTrue:[methods addClass: each mclass selector: each selector].
+        each isBehavior ifTrue:[classes addClass: each theNonMetaclass; addClass: each theMetaclass]].
+    "Kludge"
+    ^methods isEmpty
+        ifFalse:[methods]
+        ifTrue:[classes].
+!
+
+selectedProtocolsAsEnvironment
+    |classes protocols|
+
+    classes := self selectedClassesValue.
+    classes size ~= 1 ifTrue:[self error:'Multiple selected classes are not yet supported'].
+    protocols := self selectedProtocolsValue.
+
+    ^ ProtocolEnvironment new
+        class: classes anyOne
+        protocols: protocols;
+        label:(protocols size = 1 
+                    ifTrue:[ 'protocol' , protocols anyOne , ' in ' , classes anyOne name ]
+                    ifFalse:[ protocols size printString , ' protocols in ' , classes anyOne name ])
+
+    "Created: / 17-04-2010 / 10:57:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectedSelectorsAsEnvironment
+
+    | methods env |
+    methods := self selectedMethods value.
+    env := SelectorEnvironment onEnvironment: BrowserEnvironment new.
+    methods do:[:mthd|env addClass: mthd mclass selector: mthd selector].
+    ^env
+
+    "Created: / 16-07-2010 / 09:25:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !NewSystemBrowser methodsFor:'aspects-kludges'!
 
 metaToggle
@@ -12480,6 +14507,12 @@
     "Created: / 18.8.2000 / 14:15:07 / cg"
 !
 
+lintRuleListGenerator
+    ^self navigationState lintRuleListGenerator
+
+    "Created: / 22-07-2009 / 15:28:39 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
 meta
     ^ self navigationState meta
 
@@ -12497,12 +14530,25 @@
     "Created: / 18.8.2000 / 14:26:09 / cg"
 !
 
+navigationHistory
+
+    ^self navigationState navigationHistory
+
+    "Created: / 22-02-2008 / 10:19:49 / janfrog"
+!
+
 packageFilter
     ^ self navigationState packageFilter
 
     "Created: / 24.2.2000 / 23:28:06 / cg"
 !
 
+profilerStatistics
+    ^self navigationState profilerStatistics
+
+    "Created: / 09-10-2007 / 21:57:15 / janfrog"
+!
+
 projectListGenerator
     ^ self navigationState projectListGenerator
 
@@ -12530,6 +14576,12 @@
     ^ self selectedClasses value ? #()
 !
 
+selectedLintRules
+    ^ self navigationState selectedLintRules
+
+    "Created: / 22-07-2009 / 15:28:56 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
 selectedMethods
     ^ self navigationState selectedMethods
 
@@ -13045,6 +15097,31 @@
 
 !NewSystemBrowser methodsFor:'aspects-presentation'!
 
+bookmarkBarVisibleHolder
+    |holder|
+
+    (holder := builder bindingAt:#bookmarkBarVisibleHolder) isNil ifTrue:[
+        holder := UserPreferences current showBookmarkBar asValue.
+        builder aspectAt:#bookmarkBarVisibleHolder put: holder.
+        holder addDependent:self.
+    ].
+    ^ holder
+
+    "Modified: / 31-10-2001 / 11:09:32 / cg"
+    "Created: / 18-05-2011 / 17:22:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+browsletShowHideLabelHolder
+    <resource: #uiAspect>
+
+    browsletShowHideLabelHolder isNil ifTrue:[
+        browsletShowHideLabelHolder := self class showBrowsletIcon asValue
+    ].
+    ^ browsletShowHideLabelHolder.
+
+    "Modified: / 22-09-2010 / 22:55:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 codeInfoVisible
     |holder|
 
@@ -13282,14 +15359,14 @@
     |holder|
 
     (holder := builder bindingAt:#showMethodTemplate) isNil ifTrue:[
-        holder := (DefaultShowMethodTemplate ? true) asValue.
+        holder := (AspectAdaptor forAspect: #showMethodTemplate)
+                    subject: UserPreferences current.
         builder aspectAt:#showMethodTemplate put: holder.
-        holder onChangeEvaluate:[ DefaultShowMethodTemplate := holder value ].
-    ].
-    ^ holder
-
-    "Modified: / 18.2.2000 / 17:34:18 / cg"
-    "Created: / 18.2.2000 / 17:44:17 / cg"
+    ].
+    ^ holder
+
+    "Created: / 18-02-2000 / 17:44:17 / cg"
+    "Modified: / 12-02-2010 / 12:08:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 showMethodTypeIcon
@@ -13317,6 +15394,31 @@
     ^ holder
 !
 
+showPlugin
+
+    ^self navigationState pluginVisibleHolder value
+
+    "
+    |holder|
+
+    (holder := builder bindingAt:#showPlugin) isNil ifTrue:[
+        holder := false asValue.
+        builder aspectAt:#showPlugin put: holder.
+    ].
+    ^ holder
+    "
+
+    "Modified: / 04-10-2010 / 08:19:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showPlugin: aBoolean
+
+    self navigationState pluginVisibleHolder value: aBoolean.
+    self updatePluginVisibility
+
+    "Created: / 03-10-2010 / 18:50:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 showPseudoProtocols
     |holder|
 
@@ -13384,6 +15486,12 @@
 
     "Created: / 18.2.2000 / 17:44:17 / cg"
     "Modified: / 31.10.2001 / 11:09:32 / cg"
+!
+
+useGlobalHistory
+    ^ true
+
+    "Created: / 02-07-2011 / 18:27:29 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'aspects-queries'!
@@ -13433,6 +15541,38 @@
     ^ self hasSingleLoadedClassSelectedAndMultipleVariablesSelectedHolder
 !
 
+canGoBackAspect
+
+    | aspect |
+    aspect := self objectAttributeAt: #canGoBackAspect.
+    aspect ifNil:
+        [aspect :=
+            (AspectAdaptor forAspect:#canGoBack)                
+                subjectChannel: self navigationHistory;
+                yourself.
+        self objectAttributeAt: #canGoBackAspect put: aspect].
+    ^aspect
+
+    "Modified: / 21-07-2009 / 22:39:57 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Created: / 01-09-2009 / 22:38:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+canGoForwardAspect
+
+    | aspect |
+    aspect := self objectAttributeAt: #canGoForwardAspect.
+    aspect ifNil:
+        [aspect :=
+            (AspectAdaptor forAspect:#canGoForward)                
+                subjectChannel: self navigationHistory;
+                yourself.
+        self objectAttributeAt: #canGoForwardAspect put: aspect].
+    ^aspect
+
+    "Modified: / 21-07-2009 / 22:39:57 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Created: / 01-09-2009 / 22:39:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 canInsertSuperclass
     |selected|
 
@@ -14445,6 +16585,13 @@
     and:[ app methodList size > 0 ]
 !
 
+hasMonticelloSupport
+
+    ^(Smalltalk at: #MCSourceCodeManager) notNil
+
+    "Created: / 14-09-2010 / 22:34:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 hasMultipleClassesSelected
     ^ self selectedClasses value size > 1
 !
@@ -14785,6 +16932,15 @@
     "Created: / 4.2.2000 / 22:09:02 / cg"
 !
 
+hasProjectSelectedMonticelloRepositoryExistsHolder
+
+    ^[self hasProjectSelected and:
+        [(Smalltalk at: #MCRepositoryGroup) notNil and:
+            [(Smalltalk at: #MCRepositoryGroup) default repositories size > 0]]]
+
+    "Created: / 14-09-2010 / 22:37:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 hasProjectSelectedSubversionRepositoryExistsHolder
     ^ [ self hasProjectSelected
             and:[self selectedProjects value size = 1
@@ -14895,12 +17051,12 @@
     ^ self hasClassSelected
       and:[self selectedClasses value
                 contains:[:cls |    
-                        cls isLoaded 
-                        and:[cls theNonMetaclass isAbstract not
+                        cls isLoaded  
+                        and:[(cls theNonMetaclass askFor:#isAbstract) not
                         and:[ cls inheritsFrom:SharedPool ]]] ]
 
     "Created: / 25-10-2006 / 09:23:07 / cg"
-    "Modified: / 27-04-2010 / 13:01:57 / cg"
+    "Modified: / 29-06-2011 / 21:03:43 / cg"
 !
 
 hasSharedPoolClassSelectedHolder
@@ -15342,19 +17498,7 @@
 !
 
 hasSubversionSupport
-    "is there support for the subversion (svn) source code manager?"
-
-    |subVersionRepository|
-
-    "/ use Smalltalk-at to trick the dependency/prerequisite generator
-    subVersionRepository := Smalltalk at: #'SVN::RepositoryManager'.
-
-    ^ subVersionRepository notNil
-        and:[ subVersionRepository isLoaded 
-            and:[ subVersionRepository enabled ]
-        ]
-
-    "Modified: / 20-04-2011 / 17:14:25 / cg"
+    ^ self class hasSubversionSupport
 !
 
 hasTemporaryVariableSelectedInCodeView
@@ -16319,6 +18463,12 @@
         self toolBarVisibilityChanged.
         ^ self
     ].
+
+    changedObject == self bookmarkBarVisibleHolder ifTrue:[
+        self bookmarkBarVisibilityChanged.
+        ^ self
+    ].
+
     changedObject == self stringSearchToolVisibleHolder ifTrue:[
         self stringSearchToolVisibilityChanged.
         ^ self
@@ -16389,6 +18539,18 @@
     super update:something with:aParameter from:changedObject
 
     "Modified: / 20-11-2006 / 12:29:59 / cg"
+    "Modified: / 18-05-2011 / 17:30:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+updateBookmarkHolder
+
+    | bookmarkBar |
+
+    bookmarkBar := self componentAt:#Bookmarks.
+    bookmarkBar ifNil:[^self].
+    bookmarkBar application bookmarkHolder: self navigationState bookmarkHolder.
+
+    "Created: / 02-06-2011 / 22:34:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 updateCodeInfoAndStringSearchToolVisibility
@@ -16475,6 +18637,89 @@
     "Modified: / 13-10-2006 / 11:56:44 / cg"
 !
 
+updateNavigationHistory
+
+    self canGoBackAspect subjectChannel: self navigationHistory.
+    self canGoForwardAspect subjectChannel: self navigationHistory
+
+    "Created: / 27-02-2008 / 08:42:56 / janfrog"
+!
+
+updatePluginVisibility
+
+    | pluginVisible frame pluginApp pluginView |
+
+    pluginVisible := self navigationState pluginVisibleHolder value.
+    frame := self navigationState codePaneAndPluginView.
+    frame ifNil:[^self].
+    self showPlugin value ifTrue: [
+        pluginApp := BrowsletCanvas new.
+        pluginApp masterApplication: self.
+        pluginView := ApplicationSubView new client: pluginApp.
+        frame addSubView: pluginView.
+        frame relativeCorners: self navigationState codePaneAndPluginViewRelativeCorners.
+    ] ifFalse: [
+        self navigationState codePaneAndPluginViewRelativeCorners: frame relativeCorners.
+        pluginView := frame subViews second.
+        pluginView destroy.
+    ].
+    frame resizeSubviews
+    
+
+
+    "
+
+    stringSearchToolVisible := self stringSearchToolVisibleHolder value.
+    codeInfoVisible := false.
+
+    cFrame := self noteBookView.
+    cFrame isNil ifTrue:[^ self].
+
+    cFrame notNil ifTrue:[
+        (stringSearchToolVisible not and:[codeInfoVisible not]) ifTrue:[
+            cBottomOffset := 0. 
+            sTopOffset := 0.
+            sBottomOffset := 0.
+        ].
+        (stringSearchToolVisible not and:[codeInfoVisible]) ifTrue:[
+            cBottomOffset := -25.    
+            sTopOffset := 0.
+            sBottomOffset := 0.
+        ].
+        (stringSearchToolVisible and:[codeInfoVisible not]) ifTrue:[
+            cBottomOffset := -25.    
+            sTopOffset := -24.
+            sBottomOffset := 0.
+        ].
+        (stringSearchToolVisible and:[codeInfoVisible]) ifTrue:[
+            cBottomOffset := -50.  
+            sTopOffset := -49.
+            sBottomOffset := -25.
+        ].
+        cFrame layout notNil ifTrue:[
+            cFrame layout bottomOffset:cBottomOffset.
+        ].
+        cFrame container notNil ifTrue:[
+            cFrame containerChangedSize.
+        ].
+        sFrame := self stringSearchToolView.
+
+        sFrame notNil ifTrue:[
+            sFrame layout notNil ifTrue:[
+                sTopOffset notNil ifTrue:[sFrame layout topOffset:sTopOffset].
+                sBottomOffset notNil ifTrue:[sFrame layout bottomOffset:sBottomOffset].
+                sFrame container notNil ifTrue:[
+                    sFrame containerChangedSize.
+                ].
+            ].
+        ].
+    ].
+    "
+
+    "Created: / 03-10-2010 / 19:03:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 04-10-2010 / 18:39:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 updateTestRunnerVisibility
     self hasAnyTestCaseSelectedHolder value:(self hasAnyTestCaseSelected)
 
@@ -16522,6 +18767,17 @@
     ^ super flyByHelpTextFor:aComponent
 ! !
 
+!NewSystemBrowser methodsFor:'history'!
+
+addToHistory: class selector: selector
+    self class addToHistory: class selector: selector.
+    ^ self navigationState addToHistory: class selector: selector
+
+    "Created: / 22-02-2008 / 09:00:56 / janfrog"
+    "Modified: / 25-10-2009 / 15:06:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 02-07-2011 / 18:33:22 / cg"
+! !
+
 !NewSystemBrowser methodsFor:'menu actions-browse'!
 
 browseImplementorsOf
@@ -17886,9 +20142,10 @@
 browseMenuRecentChanges
     "launch a changeSet browser"
 
-    ChangeSetBrowser open
-
-    "Created: / 9.11.2001 / 02:22:08 / cg"
+    "/ ChangeSetBrowser open
+    UserPreferences current changeSetBrowserClass open
+
+    "Created: / 09-11-2001 / 02:22:08 / cg"
 !
 
 browseMenuReferencesToGlobal
@@ -18491,7 +20748,9 @@
     nr := selectedBuffer value.
     (nr notNil and:[nr between:1 and:buffers size]) ifTrue:[
         navigationState := buffers at:selectedBuffer value.
-        self browserCanvas value:(navigationState canvas)
+        self browserCanvas value:(navigationState canvas).
+        self updateNavigationHistory.
+        self updateBookmarkHolder.
     ].
 
     "/ force update of the menus orgMode aspect
@@ -18504,7 +20763,9 @@
     bufferUsageOrder removeIdentical:navigationState ifAbsent:nil.
     bufferUsageOrder addFirst:navigationState.
 
-    "Modified: / 24.2.2000 / 18:52:16 / cg"
+    "Modified: / 24-02-2000 / 18:52:16 / cg"
+    "Modified: / 27-02-2008 / 08:43:39 / janfrog"
+    "Modified: / 02-06-2011 / 22:34:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 createBuffer
@@ -18555,9 +20816,14 @@
 
     nr := buffers size.
     self selectedBuffer value:nr.
+    self updateNavigationHistory.
+    self updateBookmarkHolder.
+
     ^ navigationState.
 
-    "Modified: / 29-09-2006 / 22:26:19 / cg"
+    "Modified: / 29-02-2000 / 10:40:04 / cg"
+    "Modified: / 27-02-2008 / 08:43:21 / janfrog"
+    "Modified: / 02-06-2011 / 22:34:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 destroyTab:tabIndex
@@ -18582,6 +20848,18 @@
 
 !NewSystemBrowser methodsFor:'menu actions-category'!
 
+categoryCheckMenuSmalllintCheck: what
+    "perform all checks on the selected class(es)."
+    
+    self 
+        smalllintCheck:self selectedCategoriesAsEnvironment
+        against: what
+
+    "Modified: / 28-12-2008 / 14:42:01 / bazantj <enter your email here>"
+    "Modified: / 13-01-2009 / 13:20:48 / Jiri Bazant <bazanj2@fel.cvut.cz>"
+    "Created: / 17-04-2010 / 10:32:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 categoryMenuCheckInEach
     "check a class into the source repository"
 
@@ -19107,6 +21385,17 @@
     "Modified: / 12-09-2006 / 15:03:50 / cg"
 !
 
+categoryMenuRewrite
+
+    | classes |
+    classes := self selectedClassesInCategories: self selectedCategories value.
+    MethodRewriter new
+        classes: classes;
+        open
+
+    "Created: / 21-07-2007 / 07:06:53 / janfrog"
+!
+
 categoryMenuSpawnBrowser
     "open a browser showing the selected categories only"
 
@@ -19780,20 +22069,24 @@
             Parser warningSignal 
                 handle:[:ex | self halt ]
                 do:[
-                    eachClass compilerClass 
-                        compile:aMethod source
-                        forClass:aMethod mclass
-                        inCategory:'others'
-                        notifying:warningCollector
-                        install:false
-                        skipIfSame:false
-                        silent:false
+                    aMethod source isEmpty ifTrue:[
+                        outStream nextPutAll:'No source for method: ',aMethod whoString
+                    ] ifFalse:[
+                        eachClass compilerClass 
+                            compile:aMethod source
+                            forClass:aMethod mclass
+                            inCategory:'others'
+                            notifying:warningCollector
+                            install:false
+                            skipIfSame:false
+                            silent:false
+                    ]
                 ]
         ].
     ].
 
     "Created: / 02-11-2010 / 13:11:17 / cg"
-    "Modified: / 02-11-2010 / 20:02:53 / cg"
+    "Modified: / 01-07-2011 / 17:33:33 / cg"
 !
 
 checkCompilabilityOfAll:aCollectionOfClasses errorsOnly:errorsOnly
@@ -19821,6 +22114,18 @@
     "Created: / 02-11-2010 / 13:11:47 / cg"
 !
 
+classCheckMenuSmalllintCheck: what
+    "perform all checks on the selected class(es)."
+    
+    self 
+        smalllintCheck:self selectedClassesAsEnvironment
+        against: what
+
+    "Modified: / 28-12-2008 / 14:42:01 / bazantj <enter your email here>"
+    "Modified: / 13-01-2009 / 13:20:48 / Jiri Bazant <bazanj2@fel.cvut.cz>"
+    "Created: / 17-04-2010 / 10:40:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 classClassDefinitionTemplateFor:aClass in:cat asNamespace:isNameSpace private:isPrivate
     "common helper for newClass and newSubclass
      - show a template to define a subclass of aClass in category cat.
@@ -20828,6 +23133,34 @@
     "Created: / 11.10.2001 / 22:26:08 / cg"
 !
 
+classMenuGenerateVisitorMethods2
+    "create visitor and visited methods"
+
+    |visitorClassName visitorClass|
+
+    visitorClassName := Dialog
+                    request:'Name of Visitor class'
+                    initialAnswer:(LastVisitorClassName ? '')
+                    okLabel:(resources string:'Create')
+                    title:'Visitor class'
+                    onCancel:nil
+                    list:#()
+                    entryCompletionBlock:(self classNameEntryCompletionBlock).
+
+    visitorClass := self classIfValidNonMetaClassName:visitorClassName.
+    visitorClass isNil ifTrue:[^ nil].
+
+    LastVisitorClassName := visitorClassName.
+
+    self
+        generateUndoableChangeOverSelectedClasses:'Generate Visitor Pattern'
+        via:[:generator :eachClass |
+            generator createVisitorMethodsIn:eachClass theNonMetaclass andVisitorClass2:visitorClass
+        ].
+
+    "Created: / 07-07-2009 / 20:41:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
+!
+
 classMenuHierarchy
     "show a classes hierarchy"
 
@@ -21464,6 +23797,14 @@
 "/    self codeAspect:#newSharedPool.
 !
 
+classMenuNewSmalltalkClass
+    "create a class-definition template in codeview"
+
+    self classMenuNewClass: Smalltalk::Metaclass
+
+    "Created: / 30-08-2009 / 20:14:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 classMenuNewSubclass
     "create a class-definition template in codeview"
 
@@ -22028,6 +24369,16 @@
     "Modified: / 15-08-2010 / 11:54:23 / cg"
 !
 
+classMenuRewrite
+
+
+    MethodRewriter new
+        classes: self selectedClasses value;
+        open
+
+    "Created: / 21-07-2007 / 07:02:46 / janfrog"
+!
+
 classMenuSaveDocumentationAs
     "write classes documentation to a file"
 
@@ -24552,7 +26903,7 @@
 
     source := self getClassSourceFor:currentClass revision:rev.
     changeSet := ChangeSet fromStream:source readStream.
-    ChangeSetBrowser openOn:changeSet.
+    (UserPreferences current changeSetBrowserClass) openOn:changeSet.
 
     "Created: / 17-02-2011 / 10:29:59 / cg"
 !
@@ -27389,8 +29740,17 @@
 
 runTestCasesWithDebug:withDebug protocols:protocolsOrNil
     "run selected testcases"
-
-    |t|
+    
+    | t |
+
+	UserPreferences current showEmbeddedTestRunnerInBrowser ifTrue:
+        [| embeddedTestRunner |
+        embeddedTestRunner := self navigationState applicationOfComponent: #TestRunnerEmbedded.
+        embeddedTestRunner ifNotNil:
+            [withDebug 
+                ifTrue:[embeddedTestRunner debug]
+                ifFalse:[embeddedTestRunner run].
+            ^self]].
 
     [
         t := Time millisecondsToRun:[
@@ -27535,6 +29895,17 @@
     self updateSpecialCodeEditorVisibility
 ! !
 
+!NewSystemBrowser methodsFor:'menu actions-lint'!
+
+runLint
+
+    self 
+        smalllintCheck: self selectedCodeComponentsAsEnvironment 
+        against: #smalllintRules
+
+    "Modified: / 17-04-2010 / 10:44:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !NewSystemBrowser methodsFor:'menu actions-methodList'!
 
 methodListMenuCheckInClass
@@ -28000,7 +30371,7 @@
     (answer isNil) ifTrue:[ ^ self ].
 
     answer == #browse ifTrue:[
-        ChangeSetBrowser openOn:fullPatchSet.
+        (UserPreferences current changeSetBrowserClass) openOn:fullPatchSet.
         ^ self.
     ].
 
@@ -28017,7 +30388,7 @@
     ].
 
     "Created: / 08-02-2011 / 09:44:36 / cg"
-    "Modified: / 08-02-2011 / 11:33:16 / cg"
+    "Modified: / 01-07-2011 / 16:34:21 / cg"
 !
 
 generateProjectDefinitionsIn:classes
@@ -28266,10 +30637,13 @@
     bindings at:#obsoleteContainersPopupMenu
         put:self class obsoleteContainersPopupMenu.
     bindings at:#dialogMenuPerformer put:menuPerformer.
-    SimpleDialog new openSpec:self class repositoryConsistencyDialogSpec
+
+    SimpleDialog new 
+        openSpec:(self class repositoryConsistencyDialogSpec)
         withBindings:bindings
 
     "Modified: / 23-08-2006 / 14:08:28 / cg"
+    "Modified (format): / 01-07-2011 / 17:16:31 / cg"
 !
 
 projectDefinitionClassesForSelectedProjects
@@ -30510,6 +32884,18 @@
     printStream close
 !
 
+protocolCheckMenuSmalllintCheck: what
+    "perform all checks on the selected class(es)."
+    
+    self 
+        smalllintCheck:self selectedProtocolsAsEnvironment
+        against: what
+
+    "Modified: / 28-12-2008 / 14:42:01 / bazantj <enter your email here>"
+    "Modified: / 13-01-2009 / 13:20:48 / Jiri Bazant <bazanj2@fel.cvut.cz>"
+    "Created: / 17-04-2010 / 10:49:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 protocolMenuCopyToClass
     "copy all methods in the selected protocols to some other class."
 
@@ -31564,8 +33950,10 @@
         sel := mthd selector.
         self class addToBookMarks:cls selector:sel
     ] ifFalse:[
-        self warn:'no method selected'
-    ]
+        self class addToBookMarks:cls selector:nil
+    ]
+
+    "Modified: / 05-05-2011 / 12:20:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 searchMenuFindClass
@@ -31754,9 +34142,9 @@
 searchMenuRemoveFromBookmarks
     "remove the currently selected method/selector"
 
-    |cls mthd sel meta|
-
-    BookMarks size == 0 ifTrue:[^ self].
+    |cls mthd sel meta bookmarks |
+
+    (bookmarks := self class bookmarks) size == 0 ifTrue:[^ self].
 
     cls := self anySelectedClass.
     mthd := self anySelectedMethod.
@@ -31767,7 +34155,7 @@
         sel := mthd selector.
         meta := cls isMetaclass.
         cls := cls theNonMetaclass.
-        BookMarks := BookMarks
+        bookmarks := bookmarks
                         select:[:each |
                                     meta ~~ each meta
                                     or:[each className ~= cls name
@@ -31776,6 +34164,8 @@
     ] ifFalse:[
         self warn:'no method selected'
     ]
+
+    "Modified: / 02-06-2011 / 11:35:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !NewSystemBrowser methodsFor:'menu actions-selector'!
@@ -32639,6 +35029,18 @@
 "/            cancel: [nil]
 !
 
+selectorCheckMenuSmalllintCheck: what
+    "perform all checks on the selected class(es)."
+    
+    self 
+        smalllintCheck:self selectedSelectorsAsEnvironment
+        against: what
+
+    "Modified: / 28-12-2008 / 14:42:01 / bazantj <enter your email here>"
+    "Modified: / 13-01-2009 / 13:20:48 / Jiri Bazant <bazanj2@fel.cvut.cz>"
+    "Created: / 17-04-2010 / 10:49:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 selectorMenuAddParameter
     self codeMenuAddParameter
 !
@@ -32673,10 +35075,13 @@
         ^ self
     ].
 
-    dummyChangeSet := ChangeSet new addAll:previousMethods.
+    dummyChangeSet := ChangeSet new addAll:previousMethods; yourself.
     dummyChangeSet reverse.  "/ youngest first.
-    browser := ChangeSetBrowser openOn:dummyChangeSet.
+    browser := (UserPreferences current changeSetBrowserClass) openOn:dummyChangeSet.
     browser readOnly:true.
+
+    "Modified: / 13-06-2011 / 11:32:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 01-07-2011 / 16:34:25 / cg"
 !
 
 selectorMenuBrowseRepositoryVersions
@@ -32875,12 +35280,12 @@
 "/ Transcript showCR:('it took %1 seconds' bindWith:(t /1000)printString).
 
         self activityNotification:nil.
-        browser := ChangeSetBrowser openOn:previousMethods.
+        browser := (UserPreferences current changeSetBrowserClass) openOn:previousMethods.
         browser window label:('Revisions of ' , mclass name , ' ' , mselector).
         browser readOnly:true.
     ].
 
-    "Modified: / 12-09-2006 / 14:23:24 / cg"
+    "Modified: / 01-07-2011 / 16:34:29 / cg"
 !
 
 selectorMenuChangePrivacyTo:privacySymbol
@@ -33784,6 +36189,16 @@
     "Modified: / 17.2.2000 / 23:14:14 / cg"
 !
 
+selectorMenuNewMethod: language
+    "show a template for a new method"
+
+    self setAcceptActionForMethodUsingLanguage: language.
+    ^ self showCode:(self showMethodTemplate value ifTrue:[self methodTemplate] ifFalse:[''])
+
+    "Modified: / 17-02-2000 / 23:14:14 / cg"
+    "Created: / 30-12-2009 / 19:37:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 selectorMenuNewSpecMethodWithType:specTypeSymbol
     "open a painter for a new specTypeSymbol-spec method.
      specTypeSymbol is one of #image, #canvas or #menu"
@@ -35217,7 +37632,33 @@
     "Modified: / 1.3.2000 / 21:03:34 / cg"
 ! !
 
-
+!NewSystemBrowser methodsFor:'menu actions-subversion'!
+
+commonMenuSubversionOpenSettings
+
+    ^SVN::ConfigurationApp open
+
+    "Modified: / 26-03-2010 / 20:01:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!NewSystemBrowser methodsFor:'menu actions-subversion-class'!
+
+classMenuSubversionShowRevisionLog
+
+    | pkg classes branch path |
+    classes := self selectedClasses value.
+    pkg := self theSingleSelectedProjectFromClasses.
+    path := classes size == 1 
+                ifTrue: [SVN::Repository containerNameForClass: classes anyOne]
+                ifFalse:[''].
+    branch := (self svnRepositoryFor: pkg) branch.
+    SVN::RevisionLogBrowser new
+        branch: branch;
+        path: path;
+        open
+
+    "Modified: / 25-06-2010 / 10:08:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
 
 !NewSystemBrowser methodsFor:'menu actions-variables'!
 
@@ -36466,6 +38907,32 @@
     aBlock value:selectedVariable value:isClassVar
 ! !
 
+!NewSystemBrowser methodsFor:'menu-actions-other'!
+
+goBack
+
+    self switchToHistoryEntry: self navigationHistory goBack
+
+    "Created: / 22-02-2008 / 10:16:30 / janfrog"
+    "Modified: / 22-02-2008 / 17:18:43 / janfrog"
+!
+
+goBackInGlobalHistory
+
+    self switchToHistoryEntry: self class classHistory goBack
+
+    "Modified: / 22-02-2008 / 17:18:43 / janfrog"
+    "Created: / 03-07-2011 / 16:20:18 / cg"
+!
+
+goForward
+
+    self switchToHistoryEntry: self navigationHistory goForward
+
+    "Created: / 22-02-2008 / 10:16:30 / janfrog"
+    "Modified: / 22-02-2008 / 17:18:56 / janfrog"
+! !
+
 !NewSystemBrowser methodsFor:'menus-dynamic'!
 
 boockmarksMenu
@@ -36480,31 +38947,33 @@
         m addItem:item.
         item value:#'searchMenuAddToBookmarks'.
 
-        BookMarks size > 0 ifTrue:[
-            item := MenuItem label:(resources string:'Remove Bookmark').
-            m addItem:item.
-            item value:#'searchMenuRemoveFromBookmarks'.
-
-            m addSeparator.
-
-            BookMarks do:[:entry |
-                |item name sel|
-
-                name := entry className.
-                (sel := entry selector) notNil ifTrue:[
-                    name := name , ' ' , sel.
-                ].
-                item := MenuItem label:name.
-                m addItem:item.
-                item value:#'switchToBookmarkEntry:'.
-                item argument:entry.
-            ].
-        ].
+"/        BookMarks size > 0 ifTrue:[
+"/            item := MenuItem label:(resources string:'Remove Bookmark').
+"/            m addItem:item.
+"/            item value:#'searchMenuRemoveFromBookmarks'.
+"/
+"/            m addSeparator.
+"/
+"/            self bookmarksHolder value do:[:entry |
+"/                |item name icon sel|
+"/
+"/                name := entry label.
+"/                (icon := entry icon) isNil ifFalse:
+"/                    [name := LabelAndIcon label: name icon: icon].
+"/
+"/                item := MenuItem label:name.
+"/
+"/                m addItem:item.
+"/                item value:#'switchToBookmarkEntry:'.
+"/                item argument:entry.
+"/            ].
+"/        ].
         m findGuiResourcesIn:self.
         m
     ].
 
-    "Modified: / 2.11.2001 / 09:33:41 / cg"
+    "Modified: / 02-11-2001 / 09:33:41 / cg"
+    "Modified: / 23-05-2011 / 10:29:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 browseClassExtensionsMenu
@@ -36816,7 +39285,7 @@
 
     <resource: #programMenu>
 
-    |shiftedMenu codeView menu menuOthers sensor|
+    |shiftedMenu codeView menu sensor refactorItem menuOthers|
 
     shiftedMenu := self class shiftedCodeViewPopUpMenu decodeAsLiteralArray.
     shiftedMenu receiver:self.
@@ -36832,25 +39301,25 @@
 
     menu := codeView editMenu.
 
-    sensor ctrlDown ifTrue:[
-        (menu isKindOf:MenuPanel) ifTrue:[
+"/    sensor ctrlDown ifTrue:[
+"/        (menu isKindOf:MenuPanel) ifTrue:[
+"/            "/ a newStyle menuPanel
+"/            self shouldImplement.
+"/        ] ifFalse:[
+"/            "/ an oldStyle popUpMenu
+"/            menuOthers := menu.
+"/        ]
+"/    ] ifFalse:[
+        (menu isKindOf:Menu) ifTrue:[
             "/ a newStyle menuPanel
-            self shouldImplement.
-        ] ifFalse:[
-            "/ an oldStyle popUpMenu
-            menuOthers := menu.
-        ]
-    ] ifFalse:[
-        (menu isKindOf:MenuPanel) ifTrue:[
-            "/ a newStyle menuPanel
-            self shouldImplement.
+            menu atMenuItemLabeled:'Refactor' putSubmenu:shiftedMenu visible:true.
         ] ifFalse:[
             "/ an oldStyle popUpMenu
             "/ this is a kludge...
             shiftedMenu := shiftedMenu asOldStylePopUpMenuFor:self.
             "/ would like to add the shifted-menu here
             menu menuView
-                addLabels:(Array with:'-' with:'Code')
+                addLabels:(Array with:'-' with:'Refactor')
                 selectors:#( nil refactorings)
                 accelerators:#(nil 'Shift')
                 after:#accept.
@@ -36858,24 +39327,27 @@
 
             menuOthers := menu subMenuAt:#others.
         ].
-    ].
-
-    sensor shiftDown ifFalse:[
-        menuOthers notNil ifTrue:[
-            menuOthers menuView
-                addLabels:(Array with:'Response to it')
-                selectors:#( browseResponseToIt)
-                accelerators:#( nil )
-                after:#browseReferencesToIt.
-            menuOthers actionAt:#browseResponseToIt put:[ self browseResponseToIt ].
-"/ hasLocalSelectorSelectedInCodeView takes too long...
-            self hasSelectionInCodeView "hasLocalSelectorSelectedInCodeView" ifFalse:[
-                menuOthers disable:#browseResponseToIt
-            ].
-        ].
-    ].
+"/    ].
+
+"/    sensor shiftDown ifFalse:[
+"/        menuOthers notNil ifTrue:[
+"/            menuOthers menuView
+"/                addLabels:(Array with:'Response to it')
+"/                selectors:#( browseResponseToIt)
+"/                accelerators:#( nil )
+"/                after:#browseReferencesToIt.
+"/            menuOthers actionAt:#browseResponseToIt put:[ self browseResponseToIt ].
+"/"/ hasLocalSelectorSelectedInCodeView takes too long...
+"/            self hasSelectionInCodeView "hasLocalSelectorSelectedInCodeView" ifFalse:[
+"/                menuOthers disable:#browseResponseToIt
+"/            ].
+"/        ].
+"/    ].
 
     ^ menu
+
+    "Modified: / 18-10-2008 / 18:52:50 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 30-06-2011 / 10:47:03 / cg"
 !
 
 compareClassWithSmallTeamVersionMenu
@@ -37004,6 +39476,79 @@
     ].
 !
 
+goBackInGlobalHistoryMenu
+    <resource: #programMenu>
+
+    ^ self goBackMenuFor:self class classHistory
+
+    "Modified: / 27-02-2008 / 11:54:08 / janfrog"
+    "Created: / 02-07-2011 / 18:39:52 / cg"
+!
+
+goBackMenu
+    <resource: #programMenu>
+
+    ^ self goBackMenuFor:self navigationHistory
+
+    "Created: / 22-02-2008 / 16:55:18 / janfrog"
+    "Modified: / 27-02-2008 / 11:54:08 / janfrog"
+    "Modified (format): / 03-07-2011 / 13:53:12 / cg"
+!
+
+goBackMenuFor:aHistory
+    <resource: #programMenu>
+
+    | menu |
+
+    menu := Menu new.
+    aHistory goBackItems do:
+        [:historyEntry|
+        menu addItem:
+            (MenuItem new
+                label: historyEntry displayString;
+                value:[self switchToHistoryEntry: historyEntry])].
+    ^menu
+
+    "Modified: / 27-02-2008 / 11:54:08 / janfrog"
+    "Created: / 02-07-2011 / 18:39:15 / cg"
+!
+
+goForwardInGlobalHistoryMenu
+    <resource: #programMenu>
+
+    ^ self goForwardMenuFor:self class classHistory
+
+    "Created: / 03-07-2011 / 13:52:53 / cg"
+!
+
+goForwardMenu
+    <resource: #programMenu>
+
+    ^ self goForwardMenuFor:self navigationHistory
+
+    "Created: / 22-02-2008 / 16:55:18 / janfrog"
+    "Modified: / 27-02-2008 / 11:54:27 / janfrog"
+    "Modified: / 03-07-2011 / 13:53:29 / cg"
+!
+
+goForwardMenuFor:aHistory
+    <resource: #programMenu>
+
+    | menu |
+
+    menu := Menu new.
+    aHistory goForwardItems do:
+        [:historyEntry|
+        menu addItem:
+            (MenuItem new
+                label: historyEntry displayString;
+                value:[self switchToHistoryEntry: historyEntry])].
+    ^menu
+
+    "Modified: / 27-02-2008 / 11:54:27 / janfrog"
+    "Created: / 03-07-2011 / 13:52:06 / cg"
+!
+
 implementedMessagesMenu
     ^ [
         self
@@ -37331,6 +39876,34 @@
     ].
 !
 
+selectorMenuNewSlice
+
+    |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:'Smalltalk method' 
+                value:[self selectorMenuNewMethod: SmalltalkLanguage instance]).
+
+    allLanguages do:[:eachLanguage |
+            m addItem:(MenuItem 
+                        label:(eachLanguage name) , ' method'
+                        value:[self selectorMenuNewMethod: eachLanguage])
+
+    ].
+    ^ m
+
+    "Created: / 30-12-2009 / 19:43:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 sentMessagesMenu
     ^ [
         self
@@ -37355,6 +39928,27 @@
     "Modified: / 05-09-2006 / 10:33:49 / cg"
 !
 
+toolBarMenu
+
+    <resource: #programMenu>
+
+    | menu |
+    menu := Menu decodeFromLiteralArray: self class toolBarMenu.
+    (menu menuItemWithValue: #goBack)
+        submenuChannel:[self goBackMenu].
+    (menu menuItemWithValue: #goBackInGlobalHistory)
+        submenuChannel:[self goBackInGlobalHistoryMenu].
+    (menu menuItemWithValue: #goForward)
+        submenuChannel:[self goForwardMenu].
+"/ no, I explicitly do not want this
+"/    (menu menuItemWithValue: #goForwardInGlobalHistory)
+"/        submenuChannel:[self goForwardInGlobalHistoryMenu].
+    ^menu
+
+    "Created: / 22-02-2008 / 17:00:05 / janfrog"
+    "Modified: / 03-07-2011 / 14:40:57 / cg"
+!
+
 visitedClassesMenu
     <resource: #programMenu >
 
@@ -37385,6 +39979,36 @@
     "Modified: / 20-11-2006 / 12:23:08 / cg"
 ! !
 
+!NewSystemBrowser methodsFor:'menus-dynamic-subversion'!
+
+commonSubversionBranchMenu
+
+    <resource: #programMenu >
+
+    | menu repository wc branchAspect|
+    menu := Menu new.
+    repository := self selectedProjectSubversionRepository. 
+    repository ifNil:[^nil].
+    wc := repository workingCopy.
+    branchAspect := (AspectAdaptor accessWith: #branchOrNil assignWith: #branch:)
+                        subject: wc.
+    repository branches do:
+        [:branch|
+        menu addItem:
+            (MenuItem new
+                label: branch displayString ;"/icon: branch icon;
+                choiceValue: branch;
+                choice: branchAspect;
+                enabled:(wc hasBranch not or: [(repository workingCopy branch) = branch]);
+                yourself)
+        ].
+
+    ^menu
+
+    "Created: / 19-04-2008 / 11:06:15 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 24-06-2010 / 14:29:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !NewSystemBrowser methodsFor:'navigation'!
 
 askForClassNameMatching:matchStringArg
@@ -37729,7 +40353,14 @@
 switchToBookmarkEntry:entry
     "invoked when switching to a method from the bookmark history"
 
-    self switchToHistoryEntry:entry.
+    (entry isKindOf: Bookmark) 
+        ifTrue:
+            [entry switchToBookmarkIn: self]
+        ifFalse:
+            [self breakPoint: #jv info:'BrowserHistoryEntries should no longet be used'.
+            self switchToHistoryEntry: entry].
+
+    "Modified: / 05-05-2011 / 23:51:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 switchToClass:aClass
@@ -37737,6 +40368,14 @@
 !
 
 switchToClass:aClass selector:aSelector
+
+
+    ^self switchToClass: aClass selector: aSelector updateHistory: true
+
+    "Modified: / 27-02-2008 / 16:34:46 / janfrog"
+!
+
+switchToClass:aClass selector:aSelector updateHistory: updateHistory
     "switch to some class (by the program)"
 
     |orgMode cls namespaces nsName cat pkg holder newValue doSwitchMeta mthd answer
@@ -37749,7 +40388,7 @@
         mthd := aClass compiledMethodAt:aSelector.
     ].
 
-    (navigationState isMethodListBrowser
+    (navigationState isMethodListBrowser 
     or:[navigationState isMethodBrowser]) ifTrue:[
         "/ must check if that method is in the list ...
 
@@ -37795,9 +40434,6 @@
                 ^ self
             ].
         ].
-
-        self meta value:(aClass isMeta).
-
         self selectedClasses value:(OrderedCollection with:aClass).
         ^ self
     ].
@@ -37813,11 +40449,9 @@
 
     "/ if the class is a namespace, ask if mode should be changed
 
-    (aClass isRealNameSpace) ifTrue:[
-        orgMode ~~ OrganizerCanvas organizerModeNamespace ifTrue:[
-            answer := self 
-                        confirmWithCancel:(resources string:'Browser: %1 is a namespace - switch organizers display mode ?' with:aClass name)
-                        defaultAnswer:false.
+    (aClass isNameSpace and:[aClass ~~ Smalltalk]) ifTrue:[
+        orgMode ~~ OrganizerCanvas organizerModeNamespace ifTrue:[      
+            answer := self confirmWithCancel:('Browser: ' , aClass name , ' is a namespace - switch organizers display mode ?').
             answer isNil ifTrue:[
                 AbortOperationRequest raise.
                 ^ self
@@ -37902,10 +40536,10 @@
 
         holder := self classHierarchyTopClass.
         cls := holder value.
-        (cls isNil or:[(cls theNonMetaclass withAllSuperclasses includesIdentical:aClass theNonMetaclass) not]) ifTrue:[
+        (cls isNil or:[(cls withAllSuperclasses includesIdentical:aClass) not]) ifTrue:[
             holder value:aClass.
         ].
-        "/ doSwitchMeta := false.
+        doSwitchMeta := false.
     ]]]].
 
     doSwitchMeta ifTrue:[
@@ -37927,12 +40561,17 @@
 
     self immediateUpdate value:false.
 
-    self class addToHistory:aClass selector:aSelector.
+    updateHistory ifTrue:[
+        self addToHistory:aClass selector:aSelector
+    ].
 
     self normalLabel.
     self enqueueDelayedClassSelectionChange.
 
-    "Modified: / 10-11-2006 / 17:14:41 / cg"
+    "Modified: / 24-02-2000 / 13:25:28 / cg"
+    "Created: / 22-02-2008 / 09:05:51 / janfrog"
+    "Modified: / 27-02-2008 / 16:45:21 / janfrog"
+    "Modified (format): / 02-07-2011 / 18:33:00 / cg"
 !
 
 switchToClassNameMatching:aMatchString
@@ -38076,7 +40715,9 @@
     entry meta ifTrue:[
         cls := cls theMetaclass
     ].
-    self switchToClass:cls selector:entry selector
+    self switchToClass:cls selector:entry selector updateHistory: false
+
+    "Modified: / 22-02-2008 / 17:17:56 / janfrog"
 !
 
 switchToMethod:aMethod
@@ -39022,7 +41663,7 @@
     ].
 
     mthd sourceLineNumber ~~ 1 ifTrue:[
-        doScrollToTop ifTrue:[
+        doScrollToTop "ifTrue:" ifFalse:[
             codeView scrollToLine:mthd sourceLineNumber
         ]
     ].
@@ -39030,8 +41671,8 @@
     self normalLabel.
     self updatePackageInfoForMethod:mthd.
 
-    "Modified: / 13.2.2000 / 22:30:40 / cg"
-    "Created: / 1.3.2000 / 11:38:57 / cg"
+    "Created: / 01-03-2000 / 11:38:57 / cg"
+    "Modified: / 17-12-2010 / 10:32:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 showNothing
@@ -40347,6 +42988,14 @@
     ^ classes
 !
 
+codePaneAndPluginView
+    "the current buffers codePaneAndPluginView"
+
+    ^ self navigationState codePaneAndPluginView
+
+    "Created: / 22-09-2010 / 22:05:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 codeView
     "the current buffers codeView"
 
@@ -40791,6 +43440,41 @@
     ]
 !
 
+selectedCodeComponents
+
+    | mode |
+    mode := self navigationState canvasType.
+    #(
+        fullBrowserSpec 
+            (selectedMethods selectedProtocolMethods selectedClasses selectedCategoryClasses)
+        smallLintByRuleResultBrowserSpec
+            (selectedMethods selectedClasses selectedLintRuleClasses)
+        methodListBrowserSpec
+            (selectedMethods)
+        "Add more"
+
+    ) pairWiseDo:
+        [:key :selectors|mode == key ifTrue:            
+            [^self selectedCodeComponentsUsing:selectors]].
+
+    self breakPoint: #jv.
+    "/Fallback
+    ^self selectedCodeComponentsUsing:#(selectedMethods selectedClasses).
+
+    "Modified: / 05-02-2010 / 13:21:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-08-2010 / 11:22:00 / Jan Vrany <enter your email here>"
+!
+
+selectedCodeComponentsUsing: selectors
+
+    | result |
+    selectors do:
+        [:selector|
+        (result := (self perform: selector) value)
+            isNilOrEmptyCollection ifFalse:[^result]].
+    ^#()
+!
+
 selectedInstanceVariableInCodeView
     |varName|
 
@@ -40884,6 +43568,15 @@
     ^ setOfClasses
 !
 
+selectedProtocolMethods
+
+    | methods |
+    methods := Set new.
+    self selectedProtocolMethodsDo:
+        [:ign1 :ign2 :ign3 :mth|methods add: mth].
+    ^methods
+!
+
 selectedProtocolMethodsDo:aBlock
     "evaluate aBlock for each selected protocols methods.
      (each class-protocol combination)"
@@ -40899,7 +43592,8 @@
     ] ifFalse:[
         targets := self selectedClasses value
     ].
-
+    targets isNilOrEmptyCollection ifTrue:[^self].
+    
     targets do:[:cls |
         allIncluded ifTrue:[
             cls methodDictionary keysAndValuesDo:[:sel :mthd |
@@ -40916,7 +43610,8 @@
         ]
     ].
 
-    "Modified: / 29.2.2000 / 11:18:40 / cg"
+    "Modified: / 29-02-2000 / 11:18:40 / cg"
+    "Modified: / 01-08-2010 / 14:39:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 selectedProtocolsDo:aBlock
@@ -41117,6 +43812,20 @@
     ^ self navigationState theSingleSelectedClass
 !
 
+theSingleSelectedLintRuleHolder
+
+    ^BlockValue
+        with:
+            [:generator| | rule size |
+            rule := nil.
+            size := 0.
+            (generator value ? #()) do:[:each|rule := each.size := size + 1].
+            size == 1 ifTrue:[rule] ifFalse:[nil]]
+        argument: self selectedLintRules
+
+    "Created: / 05-02-2010 / 12:56:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 theSingleSelectedLoadedNonMetaclassOrNil
     |currentClass|
 
@@ -41135,6 +43844,20 @@
     ^ self navigationState theSingleSelectedMethod
 !
 
+theSingleSelectedMethodName
+    "the current buffers single selected method name;
+     nil if no selection or if multiple methods are selected"
+    |mthd name|
+
+    mthd := self theSingleSelectedMethod.
+    mthd notNil ifTrue:[
+        name := mthd name
+    ].
+    ^ name
+
+    "Created: / 25-08-2009 / 16:01:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 theSingleSelectedNamespace
     "the current buffers single selected namespace;
      nil if no selection or if multiple namespaces are selected"
@@ -41187,11 +43910,17 @@
 
     mthd := self theSingleSelectedMethod.
     mthd notNil ifTrue:[
-        sel := mthd name "/ who methodSelector
+        "JV: I changed this to answer the selector (not  name),
+        because for non-smalltalk languages (Ruby for instance) 
+        method selector may differ from method name."
+
+        "/sel := mthd name "/ who methodSelector
+        sel := mthd selector.
     ].
     ^ sel
 
-    "Created: / 5.2.2000 / 23:09:57 / cg"
+    "Created: / 05-02-2000 / 23:09:57 / cg"
+    "Modified: / 30-08-2009 / 17:12:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 theSingleSelectedVariable
@@ -41256,7 +43985,7 @@
 !
 
 rememberLocationInHistory
-    |newEntry mthd cls sel |
+    |mthd cls sel |
 
     mthd := self theSingleSelectedMethod.
     mthd isNil ifTrue:[
@@ -41268,23 +43997,11 @@
     cls isNil ifTrue:[
         ^ self
     ].
-    newEntry := self class historyEntryForClass:cls selector:sel.
-    newEntry isNil ifTrue:[^ self].
-
-    FindHistory isNil ifTrue:[
-        FindHistory := OrderedCollection new.
-    ].
-
-    FindHistory := FindHistory select:[:entry | entry className ~= newEntry className
-                                                or:[entry selector ~= newEntry selector
-                                                or:[entry meta ~= newEntry meta]]].
-
-    FindHistory addFirst:newEntry.
-    FindHistory size > 30 ifTrue:[
-        FindHistory removeLast.
-    ].
-
-    "Modified: / 24-11-2010 / 12:51:22 / cg"
+    self class addToFindHistory: cls selector: sel.
+    self addToHistory: cls selector: sel.
+
+    "Modified: / 27-02-2008 / 16:54:06 / janfrog"
+    "Modified: / 02-07-2011 / 18:29:29 / cg"
 !
 
 rememberSearchPattern:aString
@@ -41991,6 +44708,29 @@
     ]
 ! !
 
+!NewSystemBrowser methodsFor:'private-searching'!
+
+searchCompletionBlock
+
+    ^[:partialName| | env |
+    env := self theSingleSelectedNamespace ? #Smalltalk.
+    env = NavigatorModel nameListEntryForALL 
+        ifTrue:[env := #Smalltalk].
+    env := Smalltalk at: env.
+    partialName isNilOrEmptyCollection
+        ifTrue:
+            [#('' #())]
+        ifFalse:
+            [partialName first isUppercase
+                ifTrue:
+                    [DoWhatIMeanSupport classnameCompletion: partialName inEnvironment: env]
+                ifFalse:
+                    [DoWhatIMeanSupport selectorCompletion: partialName inEnvironment: env]]]
+
+    "Created: / 09-02-2010 / 21:45:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 10-02-2010 / 08:47:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !NewSystemBrowser methodsFor:'private-semantic checks'!
 
 checkAcceptedMethod:aMethod inClass:aClass
@@ -42313,6 +45053,262 @@
     ^ nil.
 ! !
 
+!NewSystemBrowser methodsFor:'private-smalllint'!
+
+loadSmalllint
+    |pkg dlg|
+
+    pkg := Smalltalk at:#'stx_goodies_refactoryBrowser_lint'.
+    (pkg isNil or:[ pkg isFullyLoaded not ]) ifTrue:[
+        Smalltalk loadPackage:#'stx:goodies/refactoryBrowser/lint'
+            asAutoloaded:false
+    ].
+
+    "
+        Tools::NewSystemBrowser basicNew loadSmallLint"
+    "Created: / 17-04-2010 / 09:40:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+smalllintCheck:anEnvironment against:ruleSetSymbol 
+    |rule|
+
+    self 
+        assert:(#( #smalllintRulesAll #smalllintRulesFromUser #smalllintRules ) 
+                includes:ruleSetSymbol).
+    rule := self perform:ruleSetSymbol asSymbol.
+    rule ifNil:[ ^ self ].
+    self showMessage:'Checking code...'
+        while:[
+            self smalllintRunRule:rule onEnvironment:anEnvironment.
+            self 
+                spawnSmalllintBrowserByRuleFor:rule
+                in:#newBuffer
+                label:'SmallLint results for ' , anEnvironment label
+        ].
+
+    "Modified: / 15-12-2008 / 18:51:43 / Josef Grega <gregaj1@fel.cvut.cz>"
+    "Modified: / 28-12-2008 / 14:40:01 / bazantj <enter your email here>"
+    "Created: / 24-02-2009 / 11:02:57 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 22-07-2009 / 14:38:30 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 28-08-2010 / 20:45:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+smalllintRules
+
+   ^LastLintRules 
+        ifNil:[self smalllintRulesFromUser]
+        ifNotNil:[LastLintRules]
+
+
+    "
+        Tools::NewSystemBrowser basicNew smalllintRules
+    "
+
+    "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 name = 'Lint checks' ].
+    checks rules: (checks rules reject: [ :each | each name = 'Squeak bugs' ]).
+    ^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>"
+!
+
+smalllintRulesFromUser
+    |dlg|
+
+    self loadSmalllint.
+    dlg := Tools::LintRuleSelectionDialog new.
+    dlg selection: (LastLintRules ifNil:[nil"self smalllintRulesAll flattened"] ifNotNil:[LastLintRules flattened]).
+    ^(dlg open; accepted) 
+            ifTrue:[ LastLintRules := dlg selectionAsRule ] 
+            ifFalse:[ nil ].
+
+    "
+        LastLintRules := nil.
+        Tools::NewSystemBrowser basicNew smalllintRulesFromUser
+    "
+
+    "Created: / 17-04-2010 / 09:41:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-08-2010 / 15:35:16 / Jan Vrany <enter your email here>"
+!
+
+smalllintRunRule: aLintRule onEnvironment: anEnvironment
+
+    | rules |
+    rules := aLintRule flattened.
+    rules withIndexDo:
+        [:rule :index|
+        ProgressNotification new
+            messageText: ('Checking: ', rule name);
+            parameter: (rules size / 100) * index;
+            raiseRequest.
+       (SmalllintChecker runRule: rule onEnvironment: anEnvironment)]
+
+    "Modified: / 15-12-2008 / 18:51:43 / Josef Grega <gregaj1@fel.cvut.cz>"
+    "Modified: / 28-12-2008 / 14:40:01 / bazantj <enter your email here>"
+    "Modified: / 22-07-2009 / 14:38:30 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Created: / 28-08-2010 / 12:12:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+spawnSmalllintBrowserByRuleFor: result in:where label:labelOrNil
+
+    ^ self
+        newBrowserOrBufferDependingOn:where
+        label:labelOrNil
+        forSpec: #smallLintByRuleResultBrowserSpec
+        setupWith:[:browser | |methodGenerator classGenerator ruleGenerator |
+            ruleGenerator :=
+                Iterator on:
+                    [:whatToDo|
+                    result failedRules do:whatToDo].
+
+            methodGenerator :=
+                Iterator on:
+                    [:whatToDo|
+                    | selectedRules selectedClasses failedMethods |
+                    selectedClasses := browser selectedClasses value.
+                    selectedRules := browser selectedLintRules value.
+                    failedMethods := OrderedCollection new.
+                    selectedClasses isNilOrEmptyCollection ifFalse:
+                        [selectedRules ? #() do:
+                            [:rule|
+                            failedMethods addAll:
+                                (rule failedMethodsInAnyOf: selectedClasses meta: self hasMetaSelected)].
+                    failedMethods do:
+                        [:mth|
+                        whatToDo
+                            value:mth containingClass
+                            value:mth category
+                            value:mth selector
+                            value:mth]]].
+
+            browser lintRuleListGenerator value:ruleGenerator.
+            browser selectorListGenerator value:methodGenerator.
+
+            browser selectedClasses
+                onChangeSend: #changed to: browser selectorListGenerator.
+            browser selectedLintRules
+                onChangeSend: #changed to: browser selectorListGenerator.
+            browser meta
+                onChangeSend: #changed to: browser selectorListGenerator.
+
+
+
+            "/self halt.
+            "
+            theMethodList isNil ifTrue:[
+                methodsOrMethodGeneratorBlock isBlock ifTrue:[
+                    theMethodList := methodsOrMethodGeneratorBlock value.
+                ] ifFalse:[
+                    theMethodList := methodsOrMethodGeneratorBlock copy.
+                ].
+            ].
+            perClassInfo := perClassInfoHolder value.
+            perMethodInfo := perMethodInfoHolder value.
+
+            methodGenerator := Iterator on:[:whatToDo |
+                                            theMethodList isNil ifTrue:[
+                                                methodsOrMethodGeneratorBlock isBlock ifTrue:[
+                                                    theMethodList := methodsOrMethodGeneratorBlock value.
+                                                ] ifFalse:[
+                                                    theMethodList := methodsOrMethodGeneratorBlock copy.
+                                                ].
+                                            ].
+                                            perClassInfo := perClassInfoHolder value.
+                                            perMethodInfo := perMethodInfoHolder value.
+
+                                            theMethodNameList := theMethodList collect:[:eachMethod | eachMethod mclass -> eachMethod selector].
+                                            theMethodNameList do:[:mAssoc |
+                                                |methodClass methodSelector method|
+
+                                                methodClass := mAssoc key.
+                                                methodSelector := mAssoc value.
+                                                methodClass notNil ifTrue:[
+                                                    method := methodClass compiledMethodAt:methodSelector.
+                                                    method notNil ifTrue:[
+                                                        whatToDo
+                                                            value:methodClass
+                                                            value:method category
+                                                            value:methodSelector
+                                                            value:method.
+                                                    ].
+                                                ].
+                                            ].
+                                            methodsOrMethodGeneratorBlock isBlock ifTrue:[
+                                                theMethodList := nil.
+                                            ].
+                                            whatToDo
+                                                value:nil
+                                                value:nil
+                                                value:nil
+                                                value:nil.
+                                      ].
+
+            sortHow notNil ifTrue:[brwsr sortBy value:sortHow].
+
+            brwsr selectorListGenerator value:methodGenerator.
+            perClassInfo notNil ifTrue:[
+                classGenerator := perClassInfo keys.
+                brwsr classListGenerator value:classGenerator.
+                brwsr meta value:false.
+            ].
+
+            perClassInfo notNil ifTrue:[
+                brwsr selectedClasses
+                    onChangeEvaluate:[
+                        |class infoText|
+
+                        brwsr selectedMethods value:nil.
+                        class := brwsr theSingleSelectedClass.
+                        class notNil ifTrue:[
+                            brwsr meta value:false.
+                            infoText := perClassInfoHolder value at:class theNonMetaclass ifAbsent:nil.
+                            infoText isNil ifTrue:[
+                                infoText := perClassInfo at:class theMetaclass ifAbsent:nil
+                            ]
+                        ].
+                        brwsr methodInfo value:infoText.
+                    ]
+            ].
+
+            perMethodInfo notNil ifTrue:[
+                brwsr selectedMethods
+                    onChangeEvaluate:[
+                        |mthd infoText|
+
+                        brwsr selectedClasses value:nil.
+                        mthd := brwsr theSingleSelectedMethod.
+                        mthd notNil ifTrue:[
+                            infoText := perMethodInfo at:mthd ifAbsent:nil
+                        ].
+                        brwsr methodInfo value:infoText.
+                    ]
+            ] ifFalse:[
+                (doSelect and:[theMethodList size == 1]) ifTrue:[
+                    brwsr selectMethods:(Array with:theMethodList first).
+                    brwsr methodsSelectionChanged.
+                ]
+            ].
+
+            methodsOrMethodGeneratorBlock isBlock ifTrue:[
+                theMethodList := nil 
+            ]
+            "
+        ]
+
+    "Modified: / 05-11-2001 / 17:08:45 / cg"
+    "Modified: / 22-07-2009 / 15:51:56 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Created: / 02-02-2010 / 20:05:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 02-02-2010 / 21:46:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 25-08-2010 / 10:30:33 / Jan Vrany <enter your email here>"
+! !
+
 !NewSystemBrowser methodsFor:'private-syntax coloring'!
 
 startSyntaxHighlightProcess
@@ -42324,6 +45320,8 @@
 
     |dontDoIt oldCodeList highlighterClass prio currentMethod methodsClass codeView|
 
+    UserPreferences current useCodeView2InTools ifTrue:[^self].
+
     dontDoIt := (currentMethod := self theSingleSelectedMethod) isNil.
     dontDoIt := dontDoIt
                 or:[self doSyntaxColoring value ~~ true
@@ -42432,6 +45430,7 @@
             ] forkAt:prio
 
     "Modified: / 28-04-2010 / 14:27:53 / cg"
+    "Modified: / 04-05-2010 / 11:30:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 stopSyntaxHighlightProcess
@@ -42571,6 +45570,13 @@
     "Modified: / 24.2.2000 / 15:11:31 / cg"
 !
 
+browserCanvasHolder
+
+    ^self browserCanvas.
+
+    "Created: / 07-06-2011 / 16:36:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 browserCanvasType
     ^ browserCanvasType
 !
@@ -42579,6 +45585,41 @@
     browserCanvasType := aSpecSymbol
 !
 
+browserCanvasTypeForPage
+
+    navigationState ifNil:[^#fullBrowserSpec].
+    navigationState canvasType ifNil:[^#fullBrowserSpec].
+    ^navigationState canvasType
+
+    "Created: / 07-06-2011 / 21:43:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+browserCanvasTypeHolder
+
+    ^(AspectAdaptor forAspect: #spec)
+        subjectChannel: self browserCanvas.
+
+    "Created: / 07-06-2011 / 21:48:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+browserPageCanvas
+    "return a holder on the current canvas"
+
+    | canvas |
+    browserPageCanvas isNil ifTrue:[
+        browserPageCanvas := ValueHolder new.
+        canvas := SubCanvas new.
+        canvas client:self spec:#browserPageSpec builder: builder.
+        canvas level:0.
+        canvas origin:0.0@0.0 corner:1.0@1.0.
+        browserPageCanvas value: canvas.
+    ].
+    ^ browserPageCanvas
+
+    "Modified: / 24-02-2000 / 15:11:31 / cg"
+    "Modified: / 07-06-2011 / 16:34:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 bufferLabel:aString
     navigationState notNil ifTrue:[
         navigationState browserLabel:aString.
@@ -42617,6 +45658,13 @@
     "Modified: / 24.2.2000 / 16:10:59 / cg"
 !
 
+postBuildCodePaneAndPluginView: aView
+
+    self navigationState codePaneAndPluginView: aView
+
+    "Created: / 22-09-2010 / 22:07:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 postBuildCodeView:codeView
     " this is not more called. see #postBuildFixup instead"
 
@@ -42676,52 +45724,57 @@
 !
 
 postBuildFixup
-    |newNavigationState orgModeHolder codeView|
-
+    |newNavigationState orgModeHolder|
     newNavigationState := self navigationState.
     self assert:newNavigationState canvasType notNil.
-
-    newNavigationState isFullClassSourceBrowser ifTrue:[
-        self hidePrivateClasses value:true.
-    ].
-
+    newNavigationState isFullClassSourceBrowser 
+        ifTrue:[self hidePrivateClasses value:true.].
+    
     "/ newNavigationState setUpScrollableCodeView.
-    self editorNoteBookCanvasHolder value:(newNavigationState scrollableCodeView).
-    codeView := self codeView.
-    codeView formatAction:[:code | self formatCode ].
-    codeView menuHolder:self; menuMessage:#codeViewMenu.
-    UserPreferences current useSearchBarInBrowser ifTrue:[
-"/        self stringSearchToolVisibleHolder value:true.          "/ Initially hidden. Show search bar after pressing CTRL+f or clicking view menu
-        codeView searchBarActionBlock: self searchBarActionBlock.
-    ].
+    
+    self editorNoteBookCanvasHolder 
+        value:(newNavigationState scrollableCodeView).
+    self codeView formatAction:[:code | self formatCode].
+    (self codeView)
+        menuHolder:self;
+        menuMessage:#codeViewMenu.
+    UserPreferences current useCodeView2InTools 
+        ifTrue:[self codeView browserHolder value:self].
+    UserPreferences current useSearchBarInBrowser 
+        ifTrue:
+            ["/        self stringSearchToolVisibleHolder value:true.          "/ Initially hidden. Show search bar after pressing CTRL+f or clicking view menu
+            self codeView searchBarActionBlock:self searchBarActionBlock.].
     self normalLabel.
-
     orgModeHolder := self organizerMode.
-    newNavigationState isNameSpaceBrowser ifTrue:[
-        orgModeHolder value:(OrganizerCanvas organizerModeNamespace)
-    ] ifFalse:[
-        newNavigationState isCategoryBrowser ifTrue:[
-            orgModeHolder value:(OrganizerCanvas organizerModeCategory)
-        ] ifFalse:[
-            newNavigationState isProjectBrowser ifTrue:[
-                orgModeHolder value:(OrganizerCanvas organizerModeProject)
-            ].
-        ].
-    ].
-
-    self theSingleSelectedMethod notNil ifTrue:[
-        "/ fetch the initially selected methods code
-        self methodsSelectionChanged.
-    ] ifFalse:[
-        self theSingleSelectedClass notNil ifTrue:[
-            "/ to show the classes definition initially
-            self classSelectionChanged.
-        ].
-    ].
-
+    newNavigationState isNameSpaceBrowser 
+        ifTrue:[orgModeHolder value:(OrganizerCanvas organizerModeNamespace)]
+        ifFalse:
+            [newNavigationState isCategoryBrowser 
+                ifTrue:[orgModeHolder value:(OrganizerCanvas organizerModeCategory)]
+                ifFalse:
+                    [newNavigationState isProjectBrowser 
+                        ifTrue:[orgModeHolder value:(OrganizerCanvas organizerModeProject)].].].
+    self theSingleSelectedMethod notNil 
+        ifTrue:
+            ["/ fetch the initially selected methods code
+            self methodsSelectionChanged.]
+        ifFalse:
+            [self theSingleSelectedClass notNil 
+                ifTrue:
+                    ["/ to show the classes definition initially
+                    self classSelectionChanged.].].
     newNavigationState codeModifiedHolder addDependent:self.
 
-    "Modified: / 07-05-2011 / 15:01:54 / cg"
+    "Modified: / 14-02-2010 / 19:36:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+postBuildMessagePane: messagePaneView
+    <resource: #uiCallback>
+
+    builder componentAt:#MessagePane put:messagePaneView.
+    self navigationState messagePaneView: messagePaneView.
+
+    "Modified: / 28-08-2010 / 10:37:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 postBuildSpecialEditor:specialEditorSubcanvas
@@ -42735,6 +45788,15 @@
     aStringSearchTool client textView: self codeView.
 !
 
+postBuildTabContentView: tabContentView
+    <resource: #uiCallback>
+
+    builder componentAt:#TabContentView put:tabContentView.
+    self navigationState tabContentView: tabContentView.
+
+    "Modified: / 28-08-2010 / 10:37:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 postBuildWith:aBuilder
     "/ no need to fixup here - I am always installed as subcanvas
     "/ (via noteBookView)
@@ -42744,14 +45806,16 @@
     Smalltalk addDependent:self.
 
     self codeInfoVisible value ifTrue:[ self codeInfoVisibilityChanged ].
-    self toolBarVisibleHolder value ifTrue:[ self toolBarVisibilityChanged ].
+    (self toolBarVisibleHolder value or:[self bookmarkBarVisibleHolder value])  
+            ifTrue:[ self toolBarOrBookmarkBarVisibilityChanged ].
 
 
 "/    self editorNoteBookCanvasHolder value:(navigationState scrollableCodeView).
 "/    self codeView formatAction:[:code | self formatCode ].
 "/    self codeView menuHolder:self; menuMessage:#codeViewMenu.
 
-    "Modified: / 24.2.2000 / 16:11:27 / cg"
+    "Modified: / 24-02-2000 / 16:11:27 / cg"
+    "Modified: / 18-05-2011 / 17:30:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 postOpenWith:aBuilder
@@ -42766,7 +45830,11 @@
 !
 
 searchFieldCreated:anInputField
-    anInputField emptyFieldReplacementText:(resources string:'Class Search & History').
+    anInputField emptyFieldReplacementText:
+        "/(resources string:'Class Search & History').
+        (resources string:'Class Search (Ctrl-L)').
+
+    "Modified: / 09-02-2010 / 21:56:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 searchFieldPanelCreated:aPanel
@@ -43193,13 +46261,31 @@
 !
 
 backToLastClass
-        |history entry|
-
-        history := self class classHistory.
-        history size > 0 ifTrue:[
-            entry := history first.
-            self switchToFindHistoryEntry:entry
-        ]
+    |localHistory globalHistory entry|
+
+    "/ try local history
+    localHistory := self navigationHistory.
+    localHistory canGoBack ifTrue:[
+        self goBack.
+        ^ self
+    ].
+
+    "/ try global history
+    globalHistory := self class classHistory.
+    globalHistory size > 0 ifTrue:[
+        entry := globalHistory first.
+        self switchToFindHistoryEntry:entry
+    ]
+
+    "Modified: / 01-11-2010 / 18:17:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 03-07-2011 / 16:13:29 / cg"
+!
+
+bookmarkBarVisibilityChanged
+
+    self toolBarOrBookmarkBarVisibilityChanged
+
+    "Created: / 18-05-2011 / 17:29:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 classCategoryDoubleClicked
@@ -43299,10 +46385,11 @@
 
     codeView := self codeView.
     cls := self classOfSelectedMethodOrSelectedClass.
-    cls isNil ifTrue:[
-        self showInfo:'No class'.
-        ^ self.
-    ].
+"/    cls isNil ifTrue:[
+"/        self showInfo:'No class'.
+"/        ^ self.
+"/    ].
+
     UserInformation handle:[:ex |
         self showInfo:(ex messageText).
         ex proceed.
@@ -43357,7 +46444,7 @@
 "/    self showInfo:'Node is neither variable nor message.'.
 
     "Modified: / 04-07-2006 / 18:48:26 / fm"
-    "Modified: / 20-11-2006 / 12:30:59 / cg"
+    "Modified: / 03-07-2011 / 16:18:31 / cg"
 !
 
 codeCompletionForMessage:node inClass:cls
@@ -43856,6 +46943,12 @@
     self methodVisibilityHolder value:#class.
 !
 
+hideBookmarkBar
+    self bookmarkBarVisibleHolder value:false
+
+    "Created: / 18-05-2011 / 17:33:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 hideToolbar
     self toolBarVisibleHolder value:false
 
@@ -44085,27 +47178,74 @@
     self organizerModeForMenu changed
 !
 
-toolBarVisibilityChanged
-    |visible toolBar noteBook topOffset|
+toolBarOrBookmarkBarVisibilityChanged
+    |toolBarVisible toolBar bookmarkBarVisible bookmarkBar pageContent topOffset h|
 
     toolBar := self componentAt:#ToolBar.
-    toolBar isNil ifTrue:[
-        topOffset := 0.
-    ] ifFalse:[
-        visible := self toolBarVisibleHolder value.
-        DefaultToolBarVisible := visible.
-        visible ifTrue:[
-            topOffset := toolBar height.
-        ]
-    ].
-
-    noteBook := self componentAt:#NoteBook.
-    noteBook notNil ifTrue:[
-        noteBook layout topOffset:topOffset.
-        noteBook container notNil ifTrue:[
-            noteBook containerChangedSize.
-        ].
-    ].
+    bookmarkBar := self componentAt:#BookmarkBar.
+    topOffset := 0.
+    toolBar isNil ifFalse:[
+        toolBarVisible := self toolBarVisibleHolder value.
+        DefaultToolBarVisible := toolBarVisible.
+        toolBarVisible ifTrue:[
+            topOffset := topOffset + toolBar height.
+        ]
+    ].
+    bookmarkBar isNil ifFalse:[    
+        bookmarkBarVisible := self bookmarkBarVisibleHolder value.     
+        UserPreferences current showBookmarkBar:bookmarkBarVisible.
+        bookmarkBarVisible ifTrue:[
+            h := bookmarkBar height.
+            bookmarkBar layout topOffset:topOffset.
+            bookmarkBar layout bottomOffset:topOffset + h.
+            bookmarkBar container notNil ifTrue:[
+                bookmarkBar containerChangedSize.
+            ].
+            topOffset := topOffset + h. 
+        ]
+    ].
+
+
+    pageContent := (browserPageCanvas notNil or:[builder spec name == #browserPageSpec]) 
+                    ifTrue:[(self componentAt: #BrowserPageContents)]
+                    ifFalse:[(self componentAt:#NoteBook)].
+    pageContent notNil ifTrue:[
+        pageContent layout topOffset:topOffset.
+        pageContent container notNil ifTrue:[
+            pageContent containerChangedSize.
+        ].
+    ].
+
+    "Created: / 18-05-2011 / 17:28:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 07-06-2011 / 16:58:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+toolBarVisibilityChanged
+
+    self toolBarOrBookmarkBarVisibilityChanged
+
+"/    |visible toolBar noteBook topOffset|
+"/
+"/    toolBar := self componentAt:#ToolBar.
+"/    toolBar isNil ifTrue:[
+"/        topOffset := 0.
+"/    ] ifFalse:[
+"/        visible := self toolBarVisibleHolder value.
+"/        DefaultToolBarVisible := visible.
+"/        visible ifTrue:[
+"/            topOffset := toolBar height.
+"/        ]
+"/    ].
+"/
+"/    noteBook := self componentAt:#NoteBook.
+"/    noteBook notNil ifTrue:[
+"/        noteBook layout topOffset:topOffset.
+"/        noteBook container notNil ifTrue:[
+"/            noteBook containerChangedSize.
+"/        ].
+"/    ].
+
+    "Modified: / 18-05-2011 / 17:29:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 variableDoubleClicked
@@ -44139,14 +47279,24 @@
 
 !NewSystemBrowser methodsFor:'user actions-accepting'!
 
-acceptMethod:codeArg inClass:cls check:doCheck
+acceptMethod:codeArg inClass:cls language: languageOrNil check:doCheck
     "accept a new method.
+
      Return false, if NOT accepted (i.e. compilation canceled)"
 
-    |code cat returnValue newSelector existingMethod|
+    |code cat returnValue newSelector existingMethod language |
 
     code := codeArg.
     returnValue := false.
+    language := languageOrNil 
+                    ifNotNil:
+                        [languageOrNil]
+                    ifNil:
+                        [self hasMethodSelected
+                            ifTrue:[self selectedMethods value first programmingLanguage]
+                            ifFalse:[cls programmingLanguage]].
+
+
 
     "/ a quick parse for the selector ...
     newSelector := self selectorOfMethodFromCode:code in:cls.
@@ -44316,7 +47466,8 @@
 Class nameSpaceQuerySignal 
 answer:(self currentNamespace)
 do:[
-                            (self canUseRefactoringSupport and:[(Smalltalk at:cls theNonMetaclass name)==cls]) ifTrue:[
+                            ("self canUseRefactoringSupport"
+                            (language isSmalltalk) and:[(Smalltalk at:cls theNonMetaclass name)==cls and:[cls programmingLanguage == language]]) ifTrue:[
                                 "/ cg: Q: is the AddMethodChange prepared for languages ?
                                 change := InteractiveAddMethodChange compile:code in:cls classified:cat.
                                 change controller:codeView.
@@ -44325,9 +47476,9 @@
                                 RefactoryChangeManager performChange: change.
                                 rslt := cls compiledMethodAt:newSelector.
                             ] ifFalse:[
+                                rslt := language compilerClass
                                 "/ cg: I am not sure, if this is correct; shouldn' we ask the old method
                                 "/ for its progLanguage/compilerClass if we accept an old method ???
-                                rslt := cls compilerClass
                                     compile:code
                                     forClass:cls
                                     inCategory:cat
@@ -44396,6 +47547,7 @@
     ^ returnValue.
 
     "Modified: / 17-07-2010 / 14:54:53 / cg"
+    "Created: / 30-12-2009 / 20:01:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 askForInitialApplicationCodeFor:aClass
@@ -44773,8 +47925,8 @@
     ^ false
 !
 
-doAcceptMethod:theCode 
-    "accept a new/modified method"
+doAcceptMethod:theCode language: languageOrNil
+    "accept a new/modified method using given language"
     
     |codeWithoutEmphasis classOrClassCollection|
 
@@ -44799,16 +47951,20 @@
                         self 
                             acceptMethod:codeWithoutEmphasis
                             inClass:eachClass
+                            language: languageOrNil
                             check:false.
                     ].
                 ] ifFalse:[
                     self 
                         acceptMethod:codeWithoutEmphasis
                         inClass:classOrClassCollection
+                        language: languageOrNil
                         check:true.
                 ].
             ]
     ].
+
+    "Created: / 30-12-2009 / 20:02:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 doSaveInSpecialEditors
@@ -44817,8 +47973,9 @@
     self navigationState doSaveInSpecialEditors.
 !
 
-enforceCodeStyle
+enforceCodeStyle   
     ^ UserPreferences current enforceCodeStyle
+
 !
 
 enforceComment
@@ -44827,6 +47984,22 @@
     "Created: / 17-07-2010 / 14:18:26 / cg"
 !
 
+nameOfMethodFromCode:someCode in:aClass
+    |parser|
+
+    parser := aClass parserClass
+                parseMethodSpecification:someCode asString
+                in:aClass
+                ignoreErrors:true ignoreWarnings:true.
+    (parser notNil and:[parser ~~ #Error]) ifTrue:[
+        ^ parser name.
+    ].
+    ^ nil
+
+    "Modified: / 23-04-2009 / 09:32:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Created: / 24-08-2009 / 09:31:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 openDiffViewForText:theCode againstSourceOfMethod:aMethod
     |originalSource changedSource v|
 
@@ -44868,6 +48041,24 @@
     ^ cat
 !
 
+selectorAndNameOfMethodFromCode:someCode in:aClass
+    |parser|
+
+    parser := aClass parserClass
+                parseMethodSpecification:someCode asString
+                in:aClass
+                ignoreErrors:true ignoreWarnings:true.
+    (parser notNil and:[parser ~~ #Error]) ifTrue:[
+        ^Array 
+            with: parser selector asSymbol
+            with: parser name
+    ].
+    ^ nil
+
+    "Modified: / 23-04-2009 / 09:32:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Created: / 24-08-2009 / 09:40:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 selectorOfMethodFromCode:someCode in:aClass
     "a quick parse for the selector - is done BEFORE we actually compile something,
      to be able to get the existing method's category (q: is that really needed - can change
@@ -44892,6 +48083,22 @@
     "Modified: / 23-04-2009 / 09:32:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
 !
 
+selectorOfMethodFromCode:someCode in:aClass language: language
+    |parser|
+
+    parser := language parserClass
+                parseMethodSpecification:someCode asString
+                in:aClass
+                ignoreErrors:true ignoreWarnings:true.
+    (parser notNil and:[parser ~~ #Error]) ifTrue:[
+        ^ parser selector asSymbol.
+    ].
+    ^ nil
+
+    "Modified: / 23-04-2009 / 09:32:05 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Created: / 30-12-2009 / 20:06:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 setAcceptAction:aBlockOrNil
     "tell the codeView what to do on accept"
 
@@ -44989,18 +48196,36 @@
 !
 
 setAcceptActionForMethod
+
+    " means class's own language"
+    self setAcceptActionForMethodUsingLanguage: nil
+
+    "Modified: / 30-12-2009 / 20:04:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setAcceptActionForMethodUsingLanguage: languageOrNil
     "tell the codeView what to do on accept"
 
-    |codeView|
-
-    self setAcceptAction:[:theCode | self doAcceptMethod:theCode].
+    | codeView |
+
+    self setAcceptAction:[:theCode | self doAcceptMethod:theCode language: languageOrNil  ].
 
     (codeView := self codeView) notNil ifTrue:[
         codeView
             explainAction:[:theCode :theSelection |
                 self explain:theSelection inCode:theCode
             ].
-    ]
+        codeView isCodeView2 ifTrue:[
+            languageOrNil ifNotNil:[
+                codeView languageHolder value: languageOrNil.
+            ]
+            
+        ]
+
+    ]
+
+    "Created: / 30-12-2009 / 20:03:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 20-07-2010 / 15:55:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 setAcceptActionForNothing
@@ -45393,13 +48618,16 @@
     "filter keyboard events for Find key (unless typed into the codeView).
      Return true, if I have eaten the event"
 
-    key == #CodeCompletion ifTrue:[
-        "/ complete the word before/under the cursor.
-        self
-            enqueueMessage:#codeCompletion
-            for:self
-            arguments:#().
-        ^ true
+    UserPreferences current useCodeView2InTools ifFalse:[ 
+        "/ old-style codeView
+        key == #CodeCompletion ifTrue:[
+            "/ complete the word before/under the cursor.
+            self
+                enqueueMessage:#codeCompletion
+                for:self
+                arguments:#().
+            ^ true
+        ].
     ].
     key == #Rename ifTrue:[
         self hasLocalVariableSelectedInCodeView ifTrue:[
@@ -45411,6 +48639,9 @@
         ^ true
     ].
     ^ false
+
+    "Modified: / 16-02-2010 / 10:55:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 03-07-2011 / 15:48:44 / cg"
 !
 
 keyInMethodCategoryListView:key rawKey:rawKey
@@ -45548,10 +48779,14 @@
     codeView := self codeView.
     evView := anEvent targetView.
     evView notNil ifTrue:[
-        anEvent isKeyPressEvent ifTrue:[  
+        anEvent isKeyPressEvent ifTrue:[
             key := anEvent key.
             rawKey := anEvent rawKey.
 
+            rawKey == #Ctrll ifTrue:
+                [(self componentAt: #SearchedClassNameComboBox) takeFocus.
+                ^true].
+
             (evView isSameOrComponentOf:codeView) ifTrue:[
                 ^ self keyInCodeView:key rawKey:rawKey
             ].
@@ -45630,17 +48865,139 @@
 
     ^ false
 
-    "Modified: / 10.12.2001 / 21:02:48 / cg"
+    "Modified: / 10-12-2001 / 21:02:48 / cg"
+    "Modified: / 09-08-2009 / 09:40:30 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 09-02-2010 / 19:59:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!NewSystemBrowser methodsFor:'user actions-helpers'!
+
+hideMessagePane
+
+    | messagePaneView tabContentView |
+    messagePaneView := self navigationState messagePaneView.
+    tabContentView := self navigationState tabContentView.
+
+    messagePaneView isVisible ifFalse:[^self]."/already hidden"
+    messagePaneView isVisible: false.
+    tabContentView  layout: 
+        (tabContentView layout topOffset: 0; yourself)
+
+    "Created: / 28-08-2010 / 10:49:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hideMessagePaneAndAbort
+    self navigationState worker terminate.
+    self navigationState worker:nil.
+
+    "Created: / 28-08-2010 / 20:50:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hideMessagePaneIn: givenNavigationState
+
+    | messagePaneView tabContentView |
+    messagePaneView := givenNavigationState messagePaneView.
+    tabContentView := givenNavigationState tabContentView.
+
+    messagePaneView isVisible ifFalse:[^self]."/already hidden"
+    messagePaneView isVisible: false.
+    tabContentView  layout: 
+        (tabContentView layout topOffset: 0; yourself)
+
+    "Created: / 28-08-2010 / 20:39:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showMessage: aString
+
+    self messageHolder value: aString.
+    self showMessagePane: #messageInfoSpec.
+
+    "Created: / 28-08-2010 / 11:47:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showMessage:message while:block 
+    |state workerBlock worker|
+
+    state := self navigationState.
+    workerBlock := [
+            self showMessagePane:#progressInfoSpec in:state.
+            block on:UserNotification
+                do:[:notification | 
+                    self messageHolder value:notification description.
+                    (notification isKindOf:ProgressNotification) ifTrue:[
+                        self progressHolder value:notification progressValue
+                    ].
+                    notification proceed
+                ]
+        ].
+    worker := workerBlock newProcess 
+                addExitAction:[ self hideMessagePaneIn:state ].
+    state worker:worker.
+    worker resume.
+
+    "Created: / 28-08-2010 / 20:10:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showMessagePane: spec 
+
+    ^self showMessagePane: spec in: self navigationState
+
+    "Created: / 28-08-2010 / 20:37:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showMessagePane: spec in: givenNavigationState
+
+    | messagePaneView tabContentView |
+    messagePaneView := givenNavigationState messagePaneView.
+    tabContentView :=  givenNavigationState tabContentView.
+    messagePaneView isVisible ifTrue:[^self]."/already shown"
+    messagePaneView isVisible: true.
+    tabContentView  layout: 
+        (tabContentView layout topOffset: 40; yourself).
+    self messageSpecHolder value: spec.
+
+    "Created: / 28-08-2010 / 20:37:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showMessageWhileTest
+    self showMessage:'Tools::NewSystemBrowser >> testProgressAction'
+        while:[
+            (1 to:100) do:[:i | 
+                (ProgressNotification new)
+                    messageText:('Tools::NewSystemBrowser >> testProgressAction (%1 done)' 
+                                bindWith:i);
+                    parameter:i;
+                    raiseRequest.
+                Delay waitForMilliseconds:30.
+            ].
+            Transcript showCR:'Tools::NewSystemBrowser >> testProgressAction done!!'
+        ]
+
+    "Created: / 28-08-2010 / 10:32:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!NewSystemBrowser methodsFor:'user actions-profiler'!
+
+spawnProfilerStatistics:statistics in: where
+
+    self 
+        newBrowserOrBufferDependingOn: where 
+        label:'Visual Profiler' 
+        forSpec:#visualProfilerSpec 
+        setupWith: [:browser|
+            browser profilerStatistics value: statistics]
+
+    "Created: / 09-10-2007 / 22:05:36 / janfrog"
 ! !
 
 !NewSystemBrowser class methodsFor:'documentation'!
 
-version
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1536 2011-06-22 11:52:31 stefan Exp $'
-!
-
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1536 2011-06-22 11:52:31 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1537 2011-07-03 14:26:37 cg Exp $'
+!
+
+version_SVN
+    ^ '§Id: Tools__NewSystemBrowser.st 7797 2011-06-28 07:45:06Z vranyj1 §'
 ! !
 
 NewSystemBrowser initialize!