Tools__NewSystemBrowser.st
branchjv
changeset 12125 0c49a3b13e43
parent 12123 4bde08cebd48
child 12128 a7ff7d66ee85
--- a/Tools__NewSystemBrowser.st	Sun Jan 29 12:56:58 2012 +0000
+++ b/Tools__NewSystemBrowser.st	Sun Jan 29 15:33:37 2012 +0000
@@ -43,7 +43,8 @@
 		DefaultShowMultitabMode LastRenamedOld LastRenamedNew
 		LastImportedPackage LastLintRules NewNavigationHistory
 		DefaultSortByNameAndInheritance LastLiteralReplacementType
-		LastLiteralReplacementNewName LastLiteralReplacementOldLiteral'
+		LastLiteralReplacementNewName LastLiteralReplacementOldLiteral
+		LastNewProjectType'
 	poolDictionaries:''
 	category:'Interface-Browsers-New'
 !
@@ -298,6 +299,13 @@
 
 synchronousUpdate
     ^ SynchronousUpdate ? false
+
+    "
+     SynchronousUpdate := true
+     SynchronousUpdate := false
+    "
+
+    "Modified (comment): / 24-08-2011 / 15:33:27 / cg"
 ! !
 
 !NewSystemBrowser class methodsFor:'help specs'!
@@ -309,6 +317,27 @@
 
     spec := super flyByHelpSpec addPairsFrom:#(
 
+#bookmarks
+'Manage bookmarks'
+
+#goBack
+'Go back in local visited history'
+
+#goBackInGlobalHistory
+'Go back in global visited history'
+
+#goForward
+'Go forward in local visited history'
+
+#recentChanges
+'Recent changes'
+
+#recentClassChanges
+'Recently changed classes'
+
+#recentlyVisitedMethods
+'Recently changed methods'
+
 #columnLabel
 'The text-cursor''s column number'
 
@@ -411,37 +440,7 @@
     ].
     ^ spec.
 
-    "Modified: / 15-07-2011 / 19:19:07 / cg"
-!
-
-helpSpec
-    "This resource specification was automatically generated
-     by the UIHelpTool of ST/X."
-
-    "Do not manually edit this!! If it is corrupted,
-     the UIHelpTool may not be able to read the specification."
-
-    "
-     UIHelpTool openOnClass:Tools::NewSystemBrowser    
-    "
-
-    <resource: #help>
-
-    ^ super helpSpec addPairsFrom:#(
-
-#goBack
-''
-
-#goBackInGlobalHistory
-''
-
-#goForward
-''
-
-#recentlyVisitedMethods
-''
-
-)
+    "Modified: / 08-11-2011 / 12:21:23 / cg"
 ! !
 
 !NewSystemBrowser class methodsFor:'image specs'!
@@ -664,7 +663,7 @@
             )
            (ViewSpec
               name: 'BookmarkBar'
-              layout: (LayoutFrame 0 0 40 0 0 1 65 0)
+              layout: (LayoutFrame 0 0 40 0 0 1 67 0)
               visibilityChannel: bookmarkBarVisibleHolder
               component: 
              (SpecCollection
@@ -1116,21 +1115,21 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:Tools::NewSystemBrowser andSelector:#codePaneSpec_withBrowslet
-     Tools::NewSystemBrowser new openInterface:#codePaneSpec_withBrowslet
+     UIPainter new openOnClass:Tools::NewSystemBrowser andSelector:#codePaneSpec
+     Tools::NewSystemBrowser new openInterface:#codePaneSpec
     "
 
     <resource: #canvas>
 
     ^ 
      #(FullSpec
-        name: #'codePaneSpec_withBrowslet'
+        name: codePaneSpec
         window: 
        (WindowSpec
           label: 'SystemBrowser'
           name: 'SystemBrowser'
           min: (Point 0 0)
-          bounds: (Rectangle 0 0 459 319)
+          bounds: (Rectangle 0 0 998 535)
           icon: defaultIcon
         )
         component: 
@@ -1201,14 +1200,44 @@
                           labelChannel: infoLabelHolder
                           adjust: left
                         )
-                       (LabelSpec
-                          label: 'Package'
-                          name: 'PackageLabel'
-                          activeHelpKey: packageInfoLabel
+                       (HorizontalPanelViewSpec
+                          name: 'PackageInfoPanel'
                           level: -1
-                          translateLabel: true
-                          labelChannel: packageLabelHolder
-                          adjust: left
+                          horizontalLayout: rightSpaceFit
+                          verticalLayout: fitSpace
+                          horizontalSpace: 0
+                          verticalSpace: 0
+                          elementsChangeSize: true
+                          component: 
+                         (SpecCollection
+                            collection: (
+                             (LabelSpec
+                                label: 'Package'
+                                name: 'PackageLabel'
+                                activeHelpKey: packageInfoLabel
+                                level: 0
+                                borderWidth: -1
+                                backgroundChannel: packageInfoBackgroundColorHolder
+                                translateLabel: true
+                                labelChannel: packageLabelHolder
+                                adjust: left
+                                useDefaultExtent: true
+                              )
+                             (ActionButtonSpec
+                                label: 'Info'
+                                name: 'PackageInfoButton'
+                                level: 0
+                                initiallyInvisible: true
+                                backgroundChannel: packageInfoBackgroundColorHolder
+                                foregroundColor: (Color 0.0 0.0 100.0)
+                                translateLabel: true
+                                resizeForLabel: true
+                                extent: (Point 36 23)
+                                postBuildCallback: postBuildPackageInfoButton:
+                              )
+                             )
+                           
+                          )
                         )
                        )
                      
@@ -1250,8 +1279,6 @@
          
         )
       )
-
-    "Modified: / 11-10-2010 / 20:23:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 fullBrowserSpec
@@ -3063,7 +3090,8 @@
             )
            (ViewSpec
               name: 'BookmarkBar'
-              layout: (LayoutFrame 0 0 40 0 0 1 65 0)
+              layout: (LayoutFrame 0 0 40 0 0 1 67 0)
+              level: 1
               visibilityChannel: bookmarkBarVisibleHolder
               component: 
              (SpecCollection
@@ -3071,7 +3099,7 @@
                  (ActionButtonSpec
                     label: 'hideToolBarIcon'
                     name: 'Button1'
-                    layout: (LayoutFrame 0 0 0 0 13 0 0 1)
+                    layout: (LayoutFrame 0 0 0 0 12 0 0 1)
                     activeHelpKey: hideToolBar
                     hasCharacterOrientedLabel: false
                     translateLabel: true
@@ -3109,8 +3137,6 @@
          
         )
       )
-
-    "Modified: / 03-06-2011 / 13:47:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 pagedWindowSpec
@@ -5114,7 +5140,7 @@
                              )
                            
                           )
-                          handles: (Any 0.333333333333333 0.666666666666667 1.0)
+                          handles: (Any 0.33 0.67 1.0)
                         )
                        (SubCanvasSpec
                           name: 'RuleDetails'
@@ -5155,6 +5181,8 @@
          
         )
       )
+
+    "Modified: / 31-12-2011 / 13:12:37 / cg"
 !
 
 visualProfilerSpec
@@ -5642,6 +5670,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#browseMenu
      (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser browseMenu)) startUp
@@ -5711,8 +5740,13 @@
                   label: 'With Extensions'
                   itemValue: browseMenuClassesWithExtensions
                   translateLabel: true
-                  showBusyCursorWhilePerforming: true
                   isVisible: false
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  label: 'Recently Opened Applications'
+                  itemValue: browseMenuClassesOfRecentlyOpenedApplications
+                  translateLabel: true
                 )
                (MenuItem
                   label: '-'
@@ -5794,15 +5828,15 @@
                   label: 'With External Function Calls (FFI)'
                   itemValue: browseMenuClassesWithExternalFunctionCalls
                   translateLabel: true
-                  showBusyCursorWhilePerforming: true
                   isVisible: false
+                  showBusyCursorWhilePerforming: true
                 )
                (MenuItem
                   label: 'With Primitive Code'
                   itemValue: browseMenuClassesWithPrimitiveCode
                   translateLabel: true
-                  showBusyCursorWhilePerforming: true
                   isVisible: false
+                  showBusyCursorWhilePerforming: true
                 )
                (MenuItem
                   label: '-'
@@ -5857,6 +5891,12 @@
             showBusyCursorWhilePerforming: true
           )
          (MenuItem
+            label: 'Writes to Global...'
+            itemValue: browseMenuWritesToGlobal
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
             label: '-'
           )
          (MenuItem
@@ -6022,8 +6062,8 @@
                   label: 'With External Function Calls (FFI)'
                   itemValue: browseMenuMethodsWithExternalFunctionCalls
                   translateLabel: true
-                  showBusyCursorWhilePerforming: true
                   isVisible: false
+                  showBusyCursorWhilePerforming: true
                 )
                (MenuItem
                   label: '-'
@@ -6044,7 +6084,7 @@
         nil
       )
 
-    "Modified: / 11-05-2010 / 18:21:14 / cg"
+    "Modified: / 29-09-2011 / 10:40:06 / cg"
 !
 
 bufferBaseMenu
@@ -6274,6 +6314,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#categoryMenuFileOutAndRepositorySlice
      (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser categoryMenuFileOutAndRepositorySlice)) startUp
@@ -6349,54 +6390,10 @@
             )
           )
          (MenuItem
-            enabled: hasSourceCodeManagerHolder
-            label: 'CVS'
-            translateLabel: true
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  enabled: hasCategorySelectedAndSourceCodeManagerHolder
-                  label: 'CheckIn all...'
-                  itemValue: categoryMenuCheckInEach
-                  translateLabel: true
-                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn all...')
-                  showBusyCursorWhilePerforming: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  enabled: hasCategorySelectedAndSourceCodeManagerHolder
-                  label: 'CheckOut Newest All'
-                  itemValue: categoryMenuCheckOutNewest
-                  translateLabel: true
-                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest All')
-                  showBusyCursorWhilePerforming: true
-                )
-               (MenuItem
-                  enabled: hasCategorySelectedAndSourceCodeManagerHolder
-                  label: 'CheckOut Previous Versions All...'
-                  itemValue: categoryMenuCheckOut
-                  translateLabel: true
-                  showBusyCursorWhilePerforming: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  enabled: hasSourceCodeManagerHolder
-                  label: 'Repository History...'
-                  itemValue: categoryMenuRepositoryHistory
-                  translateLabel: true
-                  showBusyCursorWhilePerforming: true
-                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryLog 'Repository History...')
-                )
-               )
-              nil
-              nil
-            )
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCVSIcon 'CVS')
+            label: 'Repository'
+            translateLabel: true
+            submenuChannel: categoryMenuSCMSlice
+            isMenuSlice: true
           )
          )
         nil
@@ -6676,178 +6673,6 @@
       )
 !
 
-classCVSMenu
-    "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:#classCVSMenu
-     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classCVSMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(Menu
-        (
-         (MenuItem
-            label: '** No SourceCodeManager - See Settings in the Launcher **'
-            translateLabel: true
-            isVisible: hasNoSourceCodeManagerHolder
-          )
-         (MenuItem
-            label: '-'
-            isVisible: hasNoSourceCodeManagerHolder
-          )
-         (MenuItem
-            enabled: hasClassSelectedHolderAndSourceCodeManagerHolder
-            label: 'CheckIn...'
-            itemValue: classMenuCheckIn
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn...')
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasClassWithExtensionsSelectedHolder
-            label: 'CheckIn Extensions For'
-            translateLabel: true
-            submenuChannel: browseClassExtensionsMenu
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: changeSetContainsChangedClassesAndSourceCodeManagerHolder
-            label: 'CheckIn All Changed Classes'
-            itemValue: classMenuCheckInAllChangedClasses
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            label: 'Quick CheckIn...'
-            itemValue: classMenuQuickCheckIn
-            translateLabel: true
-            isVisible: hasClassSelectedAndControlKeyDownHolder
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
-            label: 'CheckIn Build Support Files...'
-            itemValue: classMenuCheckInBuildSupportFiles
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
-            label: 'Set Tag...'
-            itemValue: classMenuSetTag
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryTag 'Set Tag...')
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
-            label: 'CheckOut Newest'
-            itemValue: classMenuCheckOutNewest
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest')
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
-            label: 'CheckOut Previous Version...'
-            itemValue: classMenuCheckOut
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
-            label: 'Revision Log (Recent Changes)'
-            itemValue: classMenuShortRevisionLog
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryLog 'Revision Log (Recent Changes)')
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
-            label: 'Revision Log (Full)'
-            itemValue: classMenuRevisionLog
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasClassSelectedAndSourceCodeManagerHolder
-            label: 'Compare with Newest in Repository...'
-            itemValue: classMenuCompareAgainstNewestInRepository
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryVersions 'Compare with Newest in Repository...')
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
-            label: 'Compare with Original in Repository...'
-            itemValue: classMenuCompareAgainstOriginalInRepository
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
-            label: 'Compare with Repository...'
-            itemValue: classMenuCompareWithRepository
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
-            label: 'Compare two Repository Versions...'
-            itemValue: classMenuCompareTwoRepositoryVersions
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
-            label: 'Compare Extensions with Repository...'
-            itemValue: classMenuCompareExtensionsWithRepository
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
-            label: 'Compare Build Support File'
-            translateLabel: true
-            submenuChannel: compareBuildSupportFileMenu
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
-            label: 'Edit Version in Repository...'
-            itemValue: classMenuEditVersionInRepository
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         )
-        nil
-        nil
-      )
-
-    "Created: / 19-04-2011 / 15:24:05 / cg"
-!
-
 classCheckMenu
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
@@ -7023,6 +6848,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#classDebugMenu
      (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classDebugMenu)) startUp
@@ -7078,6 +6904,7 @@
          (MenuItem
             label: 'Lint'
             translateLabel: true
+            isVisible: false
             submenuChannel: lintMenu
             keepLinkedMenu: true
           )
@@ -7089,6 +6916,13 @@
             showBusyCursorWhilePerforming: true
           )
          (MenuItem
+            enabled: hasClassSelectedHolder
+            label: 'Recompile all Methods here and in Subclasses'
+            itemValue: classMenuRecompileAll
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
             label: '-'
           )
          (MenuItem
@@ -7109,8 +6943,6 @@
         nil
         nil
       )
-
-    "Modified: / 27-04-2010 / 14:06:28 / cg"
 !
 
 classGenerateMenu
@@ -7597,6 +7429,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#classMenu
      (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenu)) startUp
@@ -7708,31 +7541,10 @@
             )
           )
          (MenuItem
-            enabled: hasClassSelectedAndSourceCodeManagerHolder
-            label: 'SCM'
-            translateLabel: true
-            isVisible: false
-            submenuChannel: classSCMMenu
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryIcon 'SCM')
-            argument: 'SCM'
-            keepLinkedMenu: true
-          )
-         (MenuItem
-            enabled: hasClassSelectedAndSourceCodeManagerHolder
-            label: 'CVS'
-            translateLabel: true
-            submenuChannel: classCVSMenu
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCVSIcon 'CVS')
-            argument: 'CVS'
-            keepLinkedMenu: true
-          )
-         (MenuItem
-            enabled: hasClassesSelectedAndSubversionRepositoryExistsHolder
-            label: 'SubVersion'
-            translateLabel: true
-            isVisible: hasSubversionSupport
-            submenuChannel: classSubversionMenu
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'SubVersion')
+            label: 'Repository Slice'
+            translateLabel: true
+            submenuChannel: classMenuSCMSlice
+            isMenuSlice: true
           )
          (MenuItem
             label: '-'
@@ -7990,7 +7802,7 @@
                 )
                (MenuItem
                   enabled: hasNonPrivateClassSelected
-                  label: 'To Project...'
+                  label: 'To Package...'
                   itemValue: classMenuMoveToProject
                   translateLabel: true
                 )
@@ -8342,15 +8154,6 @@
      #(Menu
         (
          (MenuItem
-            label: 'Class Wizard'
-            itemValue: classMenuOpenClassCreationWizard
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary newClassWizardIcon 'Class Wizard')
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
             label: 'Class'
             itemValue: classMenuNewClass
             translateLabel: true
@@ -8399,10 +8202,21 @@
             submenuChannel: classNewPLSQLClassSlice
             isMenuSlice: true
           )
-         )
-        nil
-        nil
-      )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Class Wizard'
+            itemValue: classMenuOpenClassCreationWizard
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary newClassWizardIcon 'Class Wizard')
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 16-01-2012 / 20:38:44 / cg"
 !
 
 classNewSmalltalkSlice
@@ -8509,176 +8323,6 @@
     "Modified: / 08-08-2011 / 07:47:16 / cg"
 !
 
-classSCMMenu
-    "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:#classSCMMenu
-     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classSCMMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(Menu
-        (
-         (MenuItem
-            label: '** No SourceCodeManager - See Settings in the Launcher **'
-            translateLabel: true
-            isVisible: hasNoSourceCodeManagerHolder
-          )
-         (MenuItem
-            label: '-'
-            isVisible: hasNoSourceCodeManagerHolder
-          )
-         (MenuItem
-            enabled: hasClassSelectedHolderAndSourceCodeManagerHolder
-            label: 'CheckIn...'
-            itemValue: classMenuCheckIn
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn...')
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasClassWithExtensionsSelectedHolder
-            label: 'CheckIn Extensions For'
-            translateLabel: true
-            submenuChannel: browseClassExtensionsMenu
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: changeSetContainsChangedClassesAndSourceCodeManagerHolder
-            label: 'CheckIn All Changed Classes'
-            itemValue: classMenuCheckInAllChangedClasses
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            label: 'Quick CheckIn...'
-            itemValue: classMenuQuickCheckIn
-            translateLabel: true
-            isVisible: hasClassSelectedAndControlKeyDownHolder
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
-            label: 'CheckIn Build Support Files...'
-            itemValue: classMenuCheckInBuildSupportFiles
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
-            label: 'Set Tag...'
-            itemValue: classMenuSetTag
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryTag 'Set Tag...')
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
-            label: 'CheckOut Newest'
-            itemValue: classMenuCheckOutNewest
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest')
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
-            label: 'CheckOut Previous Version...'
-            itemValue: classMenuCheckOut
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
-            label: 'Revision Log (Recent Changes)'
-            itemValue: classMenuShortRevisionLog
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryLog 'Revision Log (Recent Changes)')
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
-            label: 'Revision Log (Full)'
-            itemValue: classMenuRevisionLog
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasClassSelectedAndSourceCodeManagerHolder
-            label: 'Compare with Newest in Repository...'
-            itemValue: classMenuCompareAgainstNewestInRepository
-            translateLabel: true
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryVersions 'Compare with Newest in Repository...')
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
-            label: 'Compare with Original in Repository...'
-            itemValue: classMenuCompareAgainstOriginalInRepository
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
-            label: 'Compare with Repository...'
-            itemValue: classMenuCompareWithRepository
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
-            label: 'Compare two Repository Versions...'
-            itemValue: classMenuCompareTwoRepositoryVersions
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
-            label: 'Compare Extensions with Repository...'
-            itemValue: classMenuCompareExtensionsWithRepository
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
-            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
-            label: 'Compare Build Support File'
-            translateLabel: true
-            submenuChannel: compareBuildSupportFileMenu
-          )
-         (MenuItem
-            label: '-'
-          )
-         (MenuItem
-            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
-            label: 'Edit Version in Repository...'
-            itemValue: classMenuEditVersionInRepository
-            translateLabel: true
-            showBusyCursorWhilePerforming: true
-          )
-         )
-        nil
-        nil
-      )
-!
-
 classSmallTeamMenu
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
@@ -9243,6 +8887,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#mainMenu
      (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser mainMenu)) startUp
@@ -9293,7 +8938,7 @@
             keepLinkedMenu: true
           )
          (MenuItem
-            label: 'Project'
+            label: 'Package'
             translateLabel: true
             isVisible: projectMenuVisible
             submenuChannel: projectMenu
@@ -9409,8 +9054,6 @@
         nil
         nil
       )
-
-    "Modified: / 04-07-2011 / 17:52:50 / cg"
 !
 
 methodDebugMenu
@@ -9420,159 +9063,159 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
-    "
-     MenuEditor new openOnClass:NewSystemBrowser andSelector:#methodDebugMenu
-     (Menu new fromLiteralArrayEncoding:(NewSystemBrowser methodDebugMenu)) startUp
-    "
-
-    <resource: #menu>
-
-    ^
-     #(#Menu
-        #(
-         #(#MenuItem
-            #label: 'Remove Break/Trace'
-            #translateLabel: true
-            #value: #debugMenuRemoveBreakOrTrace
-            #isVisible: #hasNoMethodOrMixedWrapsSelectedHolder
-            #enabled: #hasMethodWithWrapSelectedHolder
-          )
-         #(#MenuItem
-            #label: 'Remove Break'
-            #translateLabel: true
-            #value: #debugMenuRemoveBreakOrTrace
-            #isVisible: #hasOnlyMethodsWithBreakPointSelected
-            #enabled: #hasMethodWithBreakPointSelectedHolder
-          )
-         #(#MenuItem
-            #label: 'Remove Trace'
-            #translateLabel: true
-            #value: #debugMenuRemoveBreakOrTrace
-            #isVisible: #hasOnlyMethodsWithTracePointSelected
-            #enabled: #hasMethodWithTracePointSelectedHolder
-          )
-         #(#MenuItem
-            #label: 'Remove all Break && Tracepoints'
-            #translateLabel: true
-            #value: #debugMenuRemoveAllBreakpoints
-            #enabled: #anyBreakOrTracePointsAreSetHolder
-          )
-         #(#MenuItem
-            #label: '-'
-          )
-         #(#MenuItem
-            #label: 'BreakPoint'
-            #translateLabel: true
-            #value: #debugMenuBreakPoint
-            #enabled: #hasMethodSelectedHolder
-          )
-         #(#MenuItem
-            #label: 'BreakPoint in Process...'
-            #translateLabel: true
-            #value: #debugMenuBreakPointIn
-            #enabled: #hasMethodSelectedHolder
-          )
-         #(#MenuItem
-            #label: 'BreakPoint for Instances Of...'
-            #translateLabel: true
-            #value: #debugMenuBreakPointFor
-            #enabled: #hasMethodSelectedHolder
-          )
-         #(#MenuItem
-            #label: 'BreakPoint After...'
-            #translateLabel: true
-            #value: #debugMenuBreakPointAfter
-            #enabled: #hasMethodSelectedHolder
-          )
-         #(#MenuItem
-            #label: 'BreakPoint If...'
-            #translateLabel: true
-            #value: #debugMenuBreakPointIf
-            #enabled: #hasMethodSelectedHolder
-          )
-         #(#MenuItem
-            #label: '-'
-          )
-         #(#MenuItem
-            #label: 'Trace'
-            #translateLabel: true
-            #value: #debugMenuTrace
-            #enabled: #hasMethodSelectedHolder
-          )
-         #(#MenuItem
-            #label: 'Trace Sender'
-            #translateLabel: true
-            #value: #debugMenuTraceSender
-            #enabled: #hasMethodSelectedHolder
-          )
-         #(#MenuItem
-            #label: 'Trace Full Walkback'
-            #translateLabel: true
-            #value: #debugMenuTraceFullWalkback
-            #enabled: #hasMethodSelectedHolder
-          )
-         #(#MenuItem
-            #label: 'Trace Change->Update Reason'
-            #translateLabel: true
-            #value: #debugMenuTraceChangeUpdate
-            #enabled: #hasUpdateMethodSelectedHolder
-          )
-         #(#MenuItem
-            #label: '-'
-          )
-         #(#MenuItem
-            #label: 'Start Message Tally'
-            #translateLabel: true
-            #value: #debugMenuStartMessageTally
-            #enabled: #hasMethodSelectedHolder
-            #isVisible: false
-          )
-         #(#MenuItem
-            #label: '-'
-            #isVisible: false
-          )
-         #(#MenuItem
-            #label: 'Start Timing'
-            #translateLabel: true
-            #value: #debugMenuStartTiming
-            #enabled: #hasMethodSelectedHolder
-          )
-         #(#MenuItem
-            #label: 'Start Counting'
-            #translateLabel: true
-            #value: #debugMenuStartCounting
-            #enabled: #hasMethodSelectedHolder
-          )
-         #(#MenuItem
-            #label: 'Start Memory Usage'
-            #translateLabel: true
-            #value: #debugMenuStartMemoryUsage
-            #enabled: #hasMethodSelectedHolder
-          )
-         #(#MenuItem
-            #label: '-'
-          )
-         (MenuItem
+
+    "
+     MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#methodDebugMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser methodDebugMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasMethodWithWrapSelectedHolder
+            label: 'Remove Break/Trace'
+            itemValue: debugMenuRemoveBreakOrTrace
+            translateLabel: true
+            isVisible: hasNoMethodOrMixedWrapsSelectedHolder
+          )
+         (MenuItem
+            enabled: hasMethodWithBreakPointSelectedHolder
+            label: 'Remove Break'
+            itemValue: debugMenuRemoveBreakOrTrace
+            translateLabel: true
+            isVisible: hasOnlyMethodsWithBreakPointSelected
+          )
+         (MenuItem
+            enabled: hasMethodWithTracePointSelectedHolder
+            label: 'Remove Trace'
+            itemValue: debugMenuRemoveBreakOrTrace
+            translateLabel: true
+            isVisible: hasOnlyMethodsWithTracePointSelected
+          )
+         (MenuItem
+            enabled: anyBreakOrTracePointsAreSetHolder
+            label: 'Remove all Break && Tracepoints'
+            itemValue: debugMenuRemoveAllBreakpoints
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasMethodSelectedHolder
+            label: 'BreakPoint'
+            itemValue: debugMenuBreakPoint
+            translateLabel: true
+          )
+         (MenuItem
+            enabled: hasMethodSelectedHolder
+            label: 'BreakPoint in Process...'
+            itemValue: debugMenuBreakPointIn
+            translateLabel: true
+          )
+         (MenuItem
+            enabled: hasMethodSelectedHolder
+            label: 'BreakPoint for Instances Of...'
+            itemValue: debugMenuBreakPointFor
+            translateLabel: true
+          )
+         (MenuItem
+            enabled: hasMethodSelectedHolder
+            label: 'BreakPoint After...'
+            itemValue: debugMenuBreakPointAfter
+            translateLabel: true
+          )
+         (MenuItem
+            enabled: hasMethodSelectedHolder
+            label: 'BreakPoint If...'
+            itemValue: debugMenuBreakPointIf
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasMethodSelectedHolder
+            label: 'Trace'
+            itemValue: debugMenuTrace
+            translateLabel: true
+          )
+         (MenuItem
+            enabled: hasMethodSelectedHolder
+            label: 'Trace Sender'
+            itemValue: debugMenuTraceSender
+            translateLabel: true
+          )
+         (MenuItem
+            enabled: hasMethodSelectedHolder
+            label: 'Trace Full Walkback'
+            itemValue: debugMenuTraceFullWalkback
+            translateLabel: true
+          )
+         (MenuItem
+            enabled: hasUpdateMethodSelectedHolder
+            label: 'Trace Change->Update Reason'
+            itemValue: debugMenuTraceChangeUpdate
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasMethodSelectedHolder
+            label: 'Start Message Tally'
+            itemValue: debugMenuStartMessageTally
+            translateLabel: true
+            isVisible: false
+          )
+         (MenuItem
+            label: '-'
+            isVisible: false
+          )
+         (MenuItem
+            enabled: hasMethodSelectedHolder
+            label: 'Start Timing'
+            itemValue: debugMenuStartTiming
+            translateLabel: true
+          )
+         (MenuItem
+            enabled: hasMethodSelectedHolder
+            label: 'Start Counting'
+            itemValue: debugMenuStartCounting
+            translateLabel: true
+          )
+         (MenuItem
+            enabled: hasMethodSelectedHolder
+            label: 'Start Memory Usage'
+            itemValue: debugMenuStartMemoryUsage
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasAnyTestCaseSelectedHolder
             label: 'Run Tests'
             itemValue: runTestCases
             translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
             enabled: hasAnyTestCaseSelectedHolder
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
             label: 'Debug Tests'
             itemValue: runTestCasesWithDebug
             translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
             enabled: hasAnyTestCaseSelectedHolder
-            showBusyCursorWhilePerforming: true
-          )
-         (MenuItem
             label: 'Run Tests for Coverage'
             itemValue: runTestCasesForCoverage
             translateLabel: true
-            enabled: hasAnyTestCaseSelectedHolder
-            showBusyCursorWhilePerforming: true
-            "/ enabled: hasAnyClassWithCoverageInfoSelectedHolder
+            showBusyCursorWhilePerforming: true
           )
          (MenuItem
             label: '-'
@@ -9609,15 +9252,23 @@
             label: 'Clear all Coverage Info (Systemwide)'
             itemValue: debugMenuClearCoverageInfo
             translateLabel: true
-            "/ enabled: hasAnyClassWithCoverageInfoSelectedHolder
-          )
-         )
-        nil
-        nil
-      )
-
-    "Created: / 11-09-2007 / 11:43:37 / cg"
-    "Modified: / 20-04-2011 / 17:37:38 / cg"
+          )
+         (MenuItem
+            label: 'Enable Coverage Recording in all Processes'
+            itemValue: debugMenuEnableGlobalCoverageRecording
+            translateLabel: true
+            isVisible: globalCoverageRecordingIsDisabled
+          )
+         (MenuItem
+            label: 'Disable Coverage Recording in all Processes'
+            itemValue: debugMenuDisableGlobalCoverageRecording
+            translateLabel: true
+            isVisible: globalCoverageRecordingIsEnabled
+          )
+         )
+        nil
+        nil
+      )
 !
 
 methodListMenu
@@ -9932,6 +9583,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#projectMenu
      (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser projectMenu)) startUp
@@ -10024,25 +9676,10 @@
             )
           )
          (MenuItem
-            label: 'CVS'
-            translateLabel: true
-            submenuChannel: projectMenuCVS
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCVSIcon 'CVS')
-          )
-         (MenuItem
-            enabled: hasProjectSelectedSubversionRepositoryExistsHolder
-            label: 'SubVersion'
-            translateLabel: true
-            isVisible: hasSubversionSupport
-            submenuChannel: projectSubversionMenu
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'SubVersion')
-          )
-         (MenuItem
-            enabled: hasProjectSelectedMonticelloRepositoryExistsHolder
-            label: 'Monticello'
-            translateLabel: true
-            isVisible: hasMonticelloSupport
-            submenuChannel: projectMonticelloMenu
+            label: 'Repositoru'
+            translateLabel: true
+            submenuChannel: projectMenuSCMSlice
+            isMenuSlice: true
           )
          (MenuItem
             label: '-'
@@ -10202,15 +9839,33 @@
                   itemValue: projectMenuRegenerateProjectContentsDefinitions
                   translateLabel: true
                 )
-               (MenuItem
-                  label: '-'
+               )
+              nil
+              nil
+            )
+          )
+         (MenuItem
+            label: 'Build'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  enabled: hasSingleRealProjectSelectedHolder
+                  label: 'Build Package for Deployment'
+                  itemValue: projectMenuBuild
+                  translateLabel: true
+                  showBusyCursorWhilePerforming: true
                 )
                (MenuItem
                   enabled: hasSingleRealProjectSelectedHolder
-                  label: 'Build Binaries for Deployment'
-                  itemValue: projectMenuBuild
-                  translateLabel: true
-                  showBusyCursorWhilePerforming: true
+                  label: 'Build Binaries for Execution'
+                  itemValue: projectMenuBuildExeOnly
+                  translateLabel: true
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  label: '-'
                 )
                (MenuItem
                   enabled: hasProjectSelectedHolder
@@ -10272,162 +9927,6 @@
       )
 !
 
-projectMenuCVS
-    "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:#projectMenuCVS
-     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser projectMenuCVS)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(Menu
-              (
-               (MenuItem
-                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
-                  label: 'CheckIn...'
-                  itemValue: projectMenuCheckInAll
-                  translateLabel: true
-                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn...')
-                  showBusyCursorWhilePerforming: true
-                )
-               (MenuItem
-                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
-                  label: 'CheckIn Classes Only...'
-                  itemValue: projectMenuCheckInClasses
-                  translateLabel: true
-                  showBusyCursorWhilePerforming: true
-                )
-               (MenuItem
-                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
-                  label: 'CheckIn Extensions Only...'
-                  itemValue: projectMenuCheckInExtensions
-                  translateLabel: true
-                  showBusyCursorWhilePerforming: true
-                )
-               (MenuItem
-                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
-                  label: 'CheckIn Build Support Files Only...'
-                  itemValue: projectMenuCheckInBuildSupportFiles
-                  translateLabel: true
-                  showBusyCursorWhilePerforming: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
-                  label: 'Set Tag (Release As)...'
-                  itemValue: projectMenuSetTag
-                  translateLabel: true
-                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryTag 'Set Tag (Release As)...')
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
-                  label: 'CheckOut Newest'
-                  itemValue: projectMenuCheckOutNewest
-                  translateLabel: true
-                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest')
-                  showBusyCursorWhilePerforming: true
-                )
-               (MenuItem
-                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
-                  label: 'CheckOut Previous Version...'
-                  itemValue: projectMenuCheckOut
-                  translateLabel: true
-                  showBusyCursorWhilePerforming: true
-                )
-               (MenuItem
-                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
-                  label: 'CheckOut Extensions Only...'
-                  itemValue: projectMenuCheckOutExtensions
-                  translateLabel: true
-                  showBusyCursorWhilePerforming: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Import Structure...'
-                  itemValue: projectMenuImport
-                  translateLabel: true
-                  showBusyCursorWhilePerforming: true
-                )
-               (MenuItem
-                  label: 'Import...'
-                  itemValue: projectMenuImportAndLoadClasses
-                  translateLabel: true
-                  showBusyCursorWhilePerforming: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
-                  label: 'Repository History...'
-                  itemValue: projectMenuRepositoryHistory
-                  translateLabel: true
-                  showBusyCursorWhilePerforming: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
-                  label: 'Compare with Newest in Repository...'
-                  itemValue: projectMenuCompareAgainstNewestInRepository
-                  translateLabel: true
-                )
-               (MenuItem
-                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
-                  label: 'Compare with Repository at Date...'
-                  itemValue: projectMenuCompareAgainstRepository
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: 'Compare Build Support File'
-                  translateLabel: true
-                  submenuChannel: compareBuildSupportFileMenu
-                )
-               (MenuItem
-                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
-                  label: 'Consistency Check...'
-                  itemValue: projectMenuCheckRepositoryConsistency
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                  isVisible: false
-                )
-               (MenuItem
-                  enabled: hasProjectSelectedHolder
-                  label: 'Resource Files...'
-                  itemValue: projectMenuResources
-                  translateLabel: true
-                  isVisible: false
-                )
-               (MenuItem
-                  enabled: hasProjectSelectedHolder
-                  label: 'Bitmap Files...'
-                  itemValue: projectMenuBitmapFiles
-                  translateLabel: true
-                  isVisible: false
-                )
-               )
-              nil
-              nil
-            )
-!
-
 protocolCheckMenu
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
@@ -11145,69 +10644,6 @@
     "Modified: / 05-07-2011 / 14:46:40 / cg"
 !
 
-selectorMenuCVS
-    "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:#selectorMenuFileOutPrintOutSlice
-     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser selectorMenuFileOutPrintOutSlice)) startUp
-    "
-
-    <resource: #menu>
-
-    ^ 
-     #(Menu
-              (
-               (MenuItem
-                  enabled: hasMethodSelected
-                  label: 'CheckIn Class(es)...'
-                  itemValue: methodListMenuCheckInClass
-                  translateLabel: true
-                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn Class(es)...')
-                  showBusyCursorWhilePerforming: true
-                )
-               (MenuItem
-                  enabled: hasRealExtensionMethodSelectedHolder
-                  label: 'CheckIn Extensions for Project...'
-                  itemValue: selectorMenuCheckInProjectExtensions
-                  translateLabel: true
-                  isVisible: hasExtensionMethodSelectedHolder
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  enabled: hasMethodSelectedAndSourceCodeManagerHolder
-                  label: 'Compare with Newest in Repository...'
-                  itemValue: selectorMenuCompareAgainstNewestInRepository
-                  translateLabel: true
-                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryVersions 'Compare with Newest in Repository...')
-                )
-               (MenuItem
-                  enabled: hasMethodSelectedAndSourceCodeManagerHolder
-                  label: 'Compare Class with Newest in Repository...'
-                  itemValue: selectorMenuCompareClassAgainstNewestInRepository
-                  translateLabel: true
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  enabled: hasSingleMethodSelected
-                  label: 'Browse Repository Versions...'
-                  itemValue: selectorMenuBrowseRepositoryVersions
-                  translateLabel: true
-                )
-               )
-              nil
-              nil
-            )
-!
-
 selectorMenuCompareGenerateDebugSlice
     "This resource specification was automatically generated
      by the MenuEditor of ST/X."
@@ -11478,6 +10914,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#selectorMenuCopyMoveRemoveSlice
      (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser selectorMenuCopyMoveRemoveSlice)) startUp
@@ -11521,13 +10958,13 @@
                 )
                (MenuItem
                   enabled: hasMethodSelectedHolder
-                  label: 'To Project...'
+                  label: 'To Package...'
                   itemValue: selectorMenuMoveToProject
                   translateLabel: true
                 )
                (MenuItem
                   enabled: hasExtensionMethodSelectedHolder
-                  label: 'To Classes Project'
+                  label: 'To Classes Package'
                   itemValue: selectorMenuMoveToClassProject
                   translateLabel: true
                 )
@@ -11654,6 +11091,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#selectorMenuFileOutPrintOutSlice
      (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser selectorMenuFileOutPrintOutSlice)) startUp
@@ -11698,11 +11136,10 @@
             )
           )
          (MenuItem
-            enabled: hasMethodSelected
-            label: 'CVS'
-            translateLabel: true
-            submenuChannel: selectorMenuCVS
-            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCVSIcon 'CVS')
+            label: 'Repository'
+            translateLabel: true
+            submenuChannel: selectorMenuSCMSlice
+            isMenuSlice: true
           )
          (MenuItem
             label: 'SmallTeam'
@@ -11781,6 +11218,12 @@
             submenuChannel: implementedMessagesMenu
           )
          (MenuItem
+            label: 'Globals'
+            translateLabel: true
+            "/ isVisible: hasSingleMethodSelectedHolder
+            submenuChannel: globalReferencesMenu
+          )
+         (MenuItem
             label: 'String Search...'
             itemValue: browseMenuMethodsWithString
             translateLabel: true
@@ -11796,6 +11239,8 @@
         nil
         nil
       )
+
+    "Modified: / 26-10-2011 / 18:08:38 / cg"
 !
 
 selectorMenuSpawnSlice
@@ -11941,7 +11386,7 @@
                (MenuItem
                   enabled: hasRealExtensionMethodSelectedHolder
                   label: 'Browser on Extensions for Project'
-                  itemValue: selectorMenuSpawnExtensionsProject
+                  itemValue: selectorMenuSpawnProjectExtensions 
                   translateLabel: true
                   isVisible: hasExtensionMethodSelectedHolder
                 )
@@ -11975,7 +11420,7 @@
         nil
       )
 
-    "Modified: / 06-08-2006 / 12:09:31 / cg"
+    "Modified: / 24-11-2011 / 19:34:53 / cg"
 !
 
 selectorSmallTeamMenu
@@ -12629,6 +12074,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#viewMenu
      (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser viewMenu)) startUp
@@ -12682,7 +12128,7 @@
             choiceValue: namespace
           )
          (MenuItem
-            label: 'Project'
+            label: 'Package'
             translateLabel: true
             isVisible: viewMenuOrganizerItemsVisible
             hideMenuOnActivated: false
@@ -12690,7 +12136,7 @@
             choiceValue: project
           )
          (MenuItem
-            label: 'Project Diagram'
+            label: 'Package Diagram'
             translateLabel: true
             isVisible: packageDiagramMenuItemVisible
             hideMenuOnActivated: false
@@ -13234,6 +12680,3134 @@
       )
 ! !
 
+!NewSystemBrowser class methodsFor:'menu specs-SCM-category'!
+
+categoryMenuSCMCommon
+    "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:#categoryMenuSCMSlice_old
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser categoryMenuSCMSlice_old)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+              (
+               (MenuItem
+                  enabled: hasCategorySelectedAndSourceCodeManagerHolder
+                  label: 'CheckIn all...'
+                  itemValue: categoryMenuCheckInEachUsing:
+                  translateLabel: true
+                  argument: SourceCodeManagerPlaceholder
+                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn all...')
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasCategorySelectedAndSourceCodeManagerHolder
+                  label: 'CheckOut Newest All'
+                  itemValue: categoryMenuCheckOutNewestUsing:
+                  translateLabel: true
+                  argument: SourceCodeManagerPlaceholder
+                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest All')
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  enabled: hasCategorySelectedAndSourceCodeManagerHolder
+                  label: 'CheckOut Previous Versions All...'
+                  itemValue: categoryMenuCheckOutUsing:
+                  translateLabel: true
+                  argument: SourceCodeManagerPlaceholder
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasSourceCodeManagerHolder
+                  label: 'Repository History...'
+                  itemValue: categoryMenuRepositoryHistoryUsing:
+                  translateLabel: true
+                  argument: SourceCodeManagerPlaceholder
+                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryLog 'Repository History...')
+                  showBusyCursorWhilePerforming: true
+                )
+               )
+              nil
+              nil
+            )
+
+    "Created: / 15-10-2011 / 12:22:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+categoryMenuSCMSlice
+    "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:#categoryMenuSCMSlice
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser categoryMenuSCMSlice)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'CVS'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  enabled: hasCategorySelectedAndSourceCodeManagerHolder
+                  label: 'CheckIn all...'
+                  itemValue: categoryMenuCheckInEach
+                  translateLabel: true
+                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn all...')
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasCategorySelectedAndSourceCodeManagerHolder
+                  label: 'CheckOut Newest All'
+                  itemValue: categoryMenuCheckOutNewest
+                  translateLabel: true
+                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest All')
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  enabled: hasCategorySelectedAndSourceCodeManagerHolder
+                  label: 'CheckOut Previous Versions All...'
+                  itemValue: categoryMenuCheckOut
+                  translateLabel: true
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasSourceCodeManagerHolder
+                  label: 'Repository History...'
+                  itemValue: categoryMenuRepositoryHistory
+                  translateLabel: true
+                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryLog 'Repository History...')
+                  showBusyCursorWhilePerforming: true
+                )
+               )
+              nil
+              nil
+            )
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCVSIcon 'CVS')
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 01-12-2011 / 21:16:05 / cg"
+!
+
+categoryMenuSCMSliceAll
+    "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:#classMenuSCMSliceAll
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSliceAll)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasClassSelectedAndSourceCodeManagerHolder
+            label: 'CVS'
+            translateLabel: true
+            submenuChannel: categoryMenuSCMFor:
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCVSIcon 'CVS')
+            argument: CVSSourceCodeManager
+            keepLinkedMenu: true
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndSubversionRepositoryExistsHolder
+            label: 'SubVersion'
+            translateLabel: true
+            isVisible: hasSubversionSupport
+            submenuChannel: categoryMenuSCMFor:
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'SubVersion')
+            argument: SVNSourceCodeManager
+          )
+         (MenuItem
+            enabled: hasClassSelectedAndSourceCodeManagerHolder
+            label: 'Perforce'
+            translateLabel: true
+            isVisible: hasPerforceSupport
+            submenuChannel: categoryMenuSCMFor:
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'Perforce')
+            argument: PerforceSourceCodeManager
+          )
+         )
+        nil
+        nil
+      )
+
+    "Created: / 15-10-2011 / 12:22:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+categoryMenuSCMSlice_compact
+    "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:#classMenuSCMSlice_compact
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSlice_compact)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Repository'
+            nameKey: SCM
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'Common Slice'
+                  nameKey: CommonSlice
+                  translateLabel: true
+                  submenuChannel: categoryMenuSCMFor:
+                  argument: SourceCodeManagerPlaceholder
+                  isMenuSlice: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'All Slice'
+                  translateLabel: true
+                  submenuChannel: categoryMenuSCMSliceAll
+                  isMenuSlice: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Repository Settings'
+                  itemValue: openSettingsDialogAndSelectSourceCodeManagement
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
+      )
+
+    "Created: / 15-10-2011 / 12:21:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+categoryMenuSCMSlice_inline
+    "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:#classMenuSCMSlice_inline
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSlice_inline)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'All Slice'
+            translateLabel: true
+            submenuChannel: categoryMenuSCMSliceAll
+            isMenuSlice: true
+          )
+         )
+        nil
+        nil
+      )
+
+    "Created: / 15-10-2011 / 12:21:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+categoryMenuSCMSlice_old
+    "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:#categoryMenuSCMSlice_old
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser categoryMenuSCMSlice_old)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'CVS'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  enabled: hasCategorySelectedAndSourceCodeManagerHolder
+                  label: 'CheckIn all...'
+                  itemValue: categoryMenuCheckInEach
+                  translateLabel: true
+                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn all...')
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasCategorySelectedAndSourceCodeManagerHolder
+                  label: 'CheckOut Newest All'
+                  itemValue: categoryMenuCheckOutNewest
+                  translateLabel: true
+                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest All')
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  enabled: hasCategorySelectedAndSourceCodeManagerHolder
+                  label: 'CheckOut Previous Versions All...'
+                  itemValue: categoryMenuCheckOut
+                  translateLabel: true
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasSourceCodeManagerHolder
+                  label: 'Repository History...'
+                  itemValue: categoryMenuRepositoryHistory
+                  translateLabel: true
+                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryLog 'Repository History...')
+                  showBusyCursorWhilePerforming: true
+                )
+               )
+              nil
+              nil
+            )
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCVSIcon 'CVS')
+          )
+         )
+        nil
+        nil
+      )
+! !
+
+!NewSystemBrowser class methodsFor:'menu specs-SCM-class'!
+
+classCVSMenu
+    "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:#classCVSMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classCVSMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: '** No SourceCodeManager - See Settings in the Launcher **'
+            translateLabel: true
+            isVisible: hasNoSourceCodeManagerHolder
+          )
+         (MenuItem
+            label: '-'
+            isVisible: hasNoSourceCodeManagerHolder
+          )
+         (MenuItem
+            enabled: hasClassSelectedHolderAndSourceCodeManagerHolder
+            label: 'CheckIn...'
+            itemValue: classMenuCheckIn
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn...')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasClassWithExtensionsSelectedHolder
+            label: 'CheckIn Extensions For'
+            translateLabel: true
+            submenuChannel: browseClassExtensionsMenu
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: changeSetContainsChangedClassesAndSourceCodeManagerHolder
+            label: 'CheckIn All Changed Classes'
+            itemValue: classMenuCheckInAllChangedClasses
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: 'Quick CheckIn...'
+            itemValue: classMenuQuickCheckIn
+            translateLabel: true
+            isVisible: hasClassSelectedAndControlKeyDownHolder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'CheckIn Build Support Files...'
+            itemValue: classMenuCheckInBuildSupportFiles
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Newest'
+            itemValue: classMenuCheckOutNewest
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Previous Version...'
+            itemValue: classMenuCheckOut
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Edit Version in Repository...'
+            itemValue: classMenuEditVersionInRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Newest in Repository...'
+            itemValue: classMenuCompareAgainstNewestInRepository
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryVersions 'Compare with Newest in Repository...')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Original in Repository...'
+            itemValue: classMenuCompareAgainstOriginalInRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Repository...'
+            itemValue: classMenuCompareWithRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare two Repository Versions...'
+            itemValue: classMenuCompareTwoRepositoryVersions
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionOrClassWithExtensionsSelectedAndSourceCodeManagerHolder
+            label: 'Compare Extensions with Repository...'
+            itemValue: classMenuCompareExtensionsWithRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'Compare Build Support File'
+            translateLabel: true
+            submenuChannel: compareBuildSupportFileMenu
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Set Tag...'
+            itemValue: classMenuSetTag
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryTag 'Set Tag...')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Revision Log (Recent Changes)'
+            itemValue: classMenuShortRevisionLog
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryLog 'Revision Log (Recent Changes)')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Revision Log (Full)'
+            itemValue: classMenuRevisionLog
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         )
+        nil
+        nil
+      )
+!
+
+classDataBaseRepositoryMenu
+    "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:#classDataBaseRepositoryMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classDataBaseRepositoryMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasClassSelectedHolderAndSourceCodeManagerHolder
+            label: 'CheckIn...'
+            itemValue: classMenuCheckInUsingManagerNamed:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn...')
+            argument: DataBaseSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasClassWithExtensionsSelectedHolder
+            label: 'CheckIn Extensions For'
+            translateLabel: true
+            submenuChannel: browseClassExtensionsMenuUsingManagerNamed:
+            argument: DataBaseSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: changeSetContainsChangedClassesAndSourceCodeManagerHolder
+            label: 'CheckIn All Changed Classes'
+            itemValue: classMenuCheckInAllChangedClassesUsingManagerNamed:
+            translateLabel: true
+            argument: DataBaseSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'CheckIn Build Support Files...'
+            itemValue: classMenuCheckInBuildSupportFilesUsingManagerNamed:
+            translateLabel: true
+            argument: DataBaseSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Newest'
+            itemValue: classMenuCheckOutNewestUsingManagerNamed:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest')
+            argument: DataBaseSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Previous Version...'
+            itemValue: classMenuCheckOutUsingManagerNamed:
+            translateLabel: true
+            argument: DataBaseSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Newest in Repository...'
+            itemValue: classMenuCompareAgainstNewestInRepositoryUsingManagerNamed:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryVersions 'Compare with Newest in Repository...')
+            argument: DataBaseSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Original in Repository...'
+            itemValue: classMenuCompareAgainstOriginalInRepositoryUsingManagerNamed:
+            translateLabel: true
+            argument: DataBaseSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Repository...'
+            itemValue: classMenuCompareWithRepositoryUsingManagerNamed:
+            translateLabel: true
+            argument: DataBaseSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare two Repository Versions...'
+            itemValue: classMenuCompareTwoRepositoryVersionsUsingManagerNamed:
+            translateLabel: true
+            argument: DataBaseSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionOrClassWithExtensionsSelectedAndSourceCodeManagerHolder
+            label: 'Compare Extensions with Repository...'
+            itemValue: classMenuCompareExtensionsWithRepositoryUsingManagerNamed:
+            translateLabel: true
+            argument: DataBaseSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'Compare Build Support File'
+            translateLabel: true
+            submenuChannel: compareBuildSupportFileMenuUsingManagerNamed:
+            argument: DataBaseSourceCodeManager
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Revision Log (Recent Changes)'
+            itemValue: classMenuShortRevisionLogUsingManagerNamed:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryLog 'Revision Log (Recent Changes)')
+            argument: DataBaseSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Revision Log (Full)'
+            itemValue: classMenuRevisionLogUsingManagerNamed:
+            translateLabel: true
+            argument: DataBaseSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         )
+        nil
+        nil
+      )
+!
+
+classFileBasedRepositoryMenu
+    "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:#classFileBasedRepositoryMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classFileBasedRepositoryMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasClassSelectedHolderAndSourceCodeManagerHolder
+            label: 'CheckIn...'
+            itemValue: classMenuCheckInUsingManagerNamed:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn...')
+            argument: FileBasedSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasClassWithExtensionsSelectedHolder
+            label: 'CheckIn Extensions For'
+            translateLabel: true
+            submenuChannel: browseClassExtensionsMenuUsingManagerNamed:
+            argument: FileBasedSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: changeSetContainsChangedClassesAndSourceCodeManagerHolder
+            label: 'CheckIn All Changed Classes'
+            itemValue: classMenuCheckInAllChangedClassesUsingManagerNamed:
+            translateLabel: true
+            argument: FileBasedSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'CheckIn Build Support Files...'
+            itemValue: classMenuCheckInBuildSupportFilesUsingManagerNamed:
+            translateLabel: true
+            argument: FileBasedSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Newest'
+            itemValue: classMenuCheckOutNewestUsingManagerNamed:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest')
+            argument: FileBasedSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Previous Version...'
+            itemValue: classMenuCheckOutUsingManagerNamed:
+            translateLabel: true
+            argument: FileBasedSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Newest in Repository...'
+            itemValue: classMenuCompareAgainstNewestInRepositoryUsingManagerNamed:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryVersions 'Compare with Newest in Repository...')
+            argument: FileBasedSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Original in Repository...'
+            itemValue: classMenuCompareAgainstOriginalInRepositoryUsingManagerNamed:
+            translateLabel: true
+            argument: FileBasedSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Repository...'
+            itemValue: classMenuCompareWithRepositoryUsingManagerNamed:
+            translateLabel: true
+            argument: FileBasedSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare two Repository Versions...'
+            itemValue: classMenuCompareTwoRepositoryVersionsUsingManagerNamed:
+            translateLabel: true
+            argument: FileBasedSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionOrClassWithExtensionsSelectedAndSourceCodeManagerHolder
+            label: 'Compare Extensions with Repository...'
+            itemValue: classMenuCompareExtensionsWithRepositoryUsingManagerNamed:
+            translateLabel: true
+            argument: FileBasedSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'Compare Build Support File'
+            translateLabel: true
+            submenuChannel: compareBuildSupportFileMenuUsingManagerNamed:
+            argument: FileBasedSourceCodeManager
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Revision Log (Recent Changes)'
+            itemValue: classMenuShortRevisionLogUsingManagerNamed:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryLog 'Revision Log (Recent Changes)')
+            argument: FileBasedSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Revision Log (Full)'
+            itemValue: classMenuRevisionLogUsingManagerNamed:
+            translateLabel: true
+            argument: FileBasedSourceCodeManager
+            showBusyCursorWhilePerforming: true
+          )
+         )
+        nil
+        nil
+      )
+!
+
+classMenuSCMCommon
+    "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:#classMenuSCMCommon
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMCommon)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasClassSelectedHolderAndSourceCodeManagerHolder
+            label: 'CheckIn...'
+            itemValue: classMenuCheckInUsingManagerNamed:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn...')
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: 'CheckIn (Quick)...'
+            itemValue: classMenuQuickCheckInUsingManagerNamed:
+            translateLabel: true
+            isVisible: hasClassSelectedAndControlKeyDownHolder
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasClassWithExtensionsSelectedHolder
+            label: 'CheckIn Extensions For'
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            submenuChannel: browseClassExtensionsMenuUsingManagerNamed:
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: changeSetContainsChangedClassesAndSourceCodeManagerHolder
+            label: 'CheckIn All Changed Classes'
+            itemValue: classMenuCheckInAllChangedClassesUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'CheckIn Build Support Files...'
+            itemValue: classMenuCheckInBuildSupportFilesUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Newest'
+            itemValue: classMenuCheckOutNewestUsingManagerNamed:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest')
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Previous Version...'
+            itemValue: classMenuCheckOutUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Revision Log (Recent Changes)'
+            itemValue: classMenuShortRevisionLogUsingManagerNamed:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryLog 'Revision Log (Recent Changes)')
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Revision Log (Full)'
+            itemValue: classMenuRevisionLogUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Newest in Repository...'
+            itemValue: classMenuCompareAgainstNewestInRepositoryUsingManagerNamed:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryVersions 'Compare with Newest in Repository...')
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Original in Repository...'
+            itemValue: classMenuCompareAgainstOriginalInRepositoryUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Repository...'
+            itemValue: classMenuCompareWithRepositoryUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare two Repository Versions...'
+            itemValue: classMenuCompareTwoRepositoryVersionsUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionOrClassWithExtensionsSelectedAndSourceCodeManagerHolder
+            label: 'Compare Extensions with Repository...'
+            itemValue: classMenuCompareExtensionsWithRepositoryUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'Compare Build Support File'
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            submenuChannel: projectMenuSCMCompareBuildSupportFileForManagerNamed:
+            argument: Default
+          )
+         (MenuItem
+            label: 'Extras'
+            translateLabel: true
+            submenuChannel: classMenuSCMExtraForManagerNamed:
+            argument: SourceCodeManagerPlaceholder
+            isMenuSlice: true
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 12-10-2011 / 20:24:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-12-2011 / 20:02:25 / cg"
+!
+
+classMenuSCMExtra_CVS
+    "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:#classMenuSCMExtra_CVS
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMExtra_CVS)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Set Tag...'
+            itemValue: classMenuSetTag
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryTag 'Set Tag...')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Edit Version in Repository...'
+            itemValue: classMenuEditVersionInRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         )
+        nil
+        nil
+      )
+!
+
+classMenuSCMExtra_Mercurial
+    "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:#classMenuSCMExtra_SVN
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMExtra_SVN)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasClassesSelectedAndSubversionRepositoryExistsAndBranchSelectedHolder
+            label: 'Changeset'
+            translateLabel: true
+            submenuChannel: classSubversionChangesetMenu
+          )
+         (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
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasClassesSelectedAndSubversionRepositoryExistsAndBranchSelectedHolder
+                  label: 'Compare'
+                  translateLabel: true
+                  submenuChannel: classSubversionCompareMenu
+                  labelImage: (ResourceRetriever #'SVN::IconLibrary' compare 'Compare')
+                )
+               (MenuItem
+                  enabled: hasClassesSelectedAndSubversionRepositoryExistsAndBranchSelectedHolder
+                  label: 'Browse Revision log'
+                  itemValue: classMenuSubversionShowRevisionLog
+                  translateLabel: true
+                  labelImage: (ResourceRetriever #'SVN::IconLibrary' log 'Browse Revision log')
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
+      )
+
+    "Created: / 15-01-2012 / 14:35:48 / cg"
+!
+
+classMenuSCMExtra_SVN
+    "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:#classMenuSCMExtra_SVN
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMExtra_SVN)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasClassesSelectedAndSubversionRepositoryExistsAndBranchSelectedHolder
+            label: 'Changeset'
+            translateLabel: true
+            submenuChannel: classSubversionChangesetMenu
+          )
+         (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
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasClassesSelectedAndSubversionRepositoryExistsAndBranchSelectedHolder
+                  label: 'Compare'
+                  translateLabel: true
+                  submenuChannel: classSubversionCompareMenu
+                  labelImage: (ResourceRetriever #'SVN::IconLibrary' compare 'Compare')
+                )
+               (MenuItem
+                  enabled: hasClassesSelectedAndSubversionRepositoryExistsAndBranchSelectedHolder
+                  label: 'Browse Revision log'
+                  itemValue: classMenuSubversionShowRevisionLog
+                  translateLabel: true
+                  labelImage: (ResourceRetriever #'SVN::IconLibrary' log 'Browse Revision log')
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
+      )
+!
+
+classMenuSCMSlice
+    "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:#classMenuSCMSlice
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSlice)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasClassSelectedAndSourceCodeManagerHolder
+            isVisible: cvsRepositoryMenusAreShown
+            label: 'CVS'
+            translateLabel: true
+            submenuChannel: classCVSMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCVSIcon 'CVS')
+            argument: 'CVS'
+            keepLinkedMenu: true
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndSubversionRepositoryExistsHolder
+            isVisible: svnRepositoryMenusAreShown
+            label: 'SubVersion'
+            translateLabel: true
+            submenuChannel: classSubversionMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'SubVersion')
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndFileBasedRepositoryExistsHolder
+            isVisible: fileBasedRepositoryMenusAreShown
+            label: 'File Repository'
+            translateLabel: true
+            submenuChannel: classFileBasedRepositoryMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryIcon 'File Repository')
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndDataBaseRepositoryExistsHolder
+            isVisible: dataBaseRepositoryMenusAreShown
+            label: 'Database Repository'
+            translateLabel: true
+            submenuChannel: classDataBaseRepositoryMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryIcon 'Database Repository')
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndMercurialRepositoryExistsHolder
+            isVisible: mercurialRepositoryMenusAreShown
+            label: 'Mercurial'
+            translateLabel: true
+            submenuChannel: classMercurialMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryHGIcon 'Mercurial')
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 15-01-2012 / 14:50:31 / cg"
+!
+
+classMenuSCMSliceAll
+    "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:#classMenuSCMSliceAll
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSliceAll)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasClassSelectedAndSourceCodeManagerHolder
+            isVisible: cvsRepositoryMenusAreShown
+            label: 'CVS'
+            translateLabel: true
+            submenuChannel: classMenuSCMFor:
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCVSIcon 'CVS')
+            argument: CVSSourceCodeManager
+            keepLinkedMenu: true
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndSubversionRepositoryExistsHolder
+            isVisible: svnRepositoryMenusAreShown
+            label: 'SubVersion'
+            translateLabel: true
+            submenuChannel: classMenuSCMFor:
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'SubVersion')
+            argument: SVNSourceCodeManager
+          )
+         (MenuItem
+            enabled: hasClassSelectedAndSourceCodeManagerHolder
+            isVisible: mercurialRepositoryMenusAreShown
+            label: 'Mercurial'
+            translateLabel: true
+            submenuChannel: classMenuSCMFor:
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryHGIcon 'Mercurial')
+            argument: MercurialSourceCodeManager
+          )
+         (MenuItem
+            enabled: hasClassSelectedAndSourceCodeManagerHolder
+            isVisible: perforceRepositoryMenusAreShown
+            label: 'Perforce'
+            translateLabel: true
+            submenuChannel: classMenuSCMFor:
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'Perforce')
+            argument: PerforceSourceCodeManager
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 15-01-2012 / 14:50:44 / cg"
+!
+
+classMenuSCMSlice_compact
+    "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:#classMenuSCMSlice_compact
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSlice_compact)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Repository'
+            nameKey: SCM
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'Common Slice'
+                  nameKey: CommonSlice
+                  translateLabel: true
+                  submenuChannel: classMenuSCMFor:
+                  argument: SourceCodeManagerPlaceholder
+                  isMenuSlice: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'All Slice'
+                  translateLabel: true
+                  submenuChannel: classMenuSCMSliceAll
+                  isMenuSlice: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Repository Settings'
+                  itemValue: openSettingsDialogAndSelectSourceCodeManagement
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 15-10-2011 / 12:04:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+classMenuSCMSlice_inline
+    "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:#classMenuSCMSlice_inline
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSlice_inline)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'All Slice'
+            translateLabel: true
+            submenuChannel: classMenuSCMSliceAll
+            isMenuSlice: true
+          )
+         )
+        nil
+        nil
+      )
+!
+
+classMenuSCMSlice_old
+    "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:#classMenuSCMSlice_old
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSlice_old)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasClassSelectedAndSourceCodeManagerHolder
+            label: 'CVS'
+            isVisible: cvsRepositoryMenusAreShown
+            translateLabel: true
+            submenuChannel: classCVSMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCVSIcon 'CVS')
+            argument: 'CVS'
+            keepLinkedMenu: true
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndSubversionRepositoryExistsHolder
+            isVisible: svnRepositoryMenusAreShown
+            label: 'SubVersion'
+            translateLabel: true
+            submenuChannel: classSubversionMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'SubVersion')
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndMercurialRepositoryExistsHolder
+            isVisible: mercurialRepositoryMenusAreShown
+            label: 'Mercurial'
+            translateLabel: true
+            submenuChannel: classMercurialMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryHGIcon 'Mercurial')
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndPerforceRepositoryExistsHolder
+            isVisible: perforceRepositoryMenusAreShown
+            label: 'Perforce'
+            translateLabel: true
+            submenuChannel: classPerforceMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'Perforce')
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndFileBasedRepositoryExistsHolder
+            label: 'File Repository'
+            isVisible: fileBasedRepositoryMenusAreShown
+            translateLabel: true
+            submenuChannel: classFileBasedRepositoryMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryIcon 'File Repository')
+          )
+         (MenuItem
+            enabled: hasClassesSelectedAndDataBaseRepositoryExistsHolder
+            isVisible: dataBaseRepositoryMenusAreShown
+            label: 'Database Repository'
+            translateLabel: true
+            submenuChannel: classDataBaseRepositoryMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryIcon 'Database Repository')
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 15-01-2012 / 14:49:41 / cg"
+!
+
+classMercurialMenu
+    "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:#classMercurialMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMercurialMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: '** No SourceCodeManager - See Settings in the Launcher **'
+            translateLabel: true
+            isVisible: hasNoSourceCodeManagerHolder
+          )
+         (MenuItem
+            label: '-'
+            isVisible: hasNoSourceCodeManagerHolder
+          )
+         (MenuItem
+            enabled: hasClassSelectedHolderAndSourceCodeManagerHolder
+            label: 'CheckIn...'
+            itemValue: classMenuCheckIn
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn...')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasClassWithExtensionsSelectedHolder
+            label: 'CheckIn Extensions For'
+            translateLabel: true
+            submenuChannel: browseClassExtensionsMenu
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: changeSetContainsChangedClassesAndSourceCodeManagerHolder
+            label: 'CheckIn All Changed Classes'
+            itemValue: classMenuCheckInAllChangedClasses
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: 'Quick CheckIn...'
+            itemValue: classMenuQuickCheckIn
+            translateLabel: true
+            isVisible: hasClassSelectedAndControlKeyDownHolder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'CheckIn Build Support Files...'
+            itemValue: classMenuCheckInBuildSupportFiles
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Newest'
+            itemValue: classMenuCheckOutNewest
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Previous Version...'
+            itemValue: classMenuCheckOut
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Edit Version in Repository...'
+            itemValue: classMenuEditVersionInRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Newest in Repository...'
+            itemValue: classMenuCompareAgainstNewestInRepository
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryVersions 'Compare with Newest in Repository...')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Original in Repository...'
+            itemValue: classMenuCompareAgainstOriginalInRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Repository...'
+            itemValue: classMenuCompareWithRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare two Repository Versions...'
+            itemValue: classMenuCompareTwoRepositoryVersions
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionOrClassWithExtensionsSelectedAndSourceCodeManagerHolder
+            label: 'Compare Extensions with Repository...'
+            itemValue: classMenuCompareExtensionsWithRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'Compare Build Support File'
+            translateLabel: true
+            submenuChannel: compareBuildSupportFileMenu
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Set Tag...'
+            itemValue: classMenuSetTag
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryTag 'Set Tag...')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Revision Log (Recent Changes)'
+            itemValue: classMenuShortRevisionLog
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryLog 'Revision Log (Recent Changes)')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Revision Log (Full)'
+            itemValue: classMenuRevisionLog
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         )
+        nil
+        nil
+      )
+!
+
+classPerforceMenu
+    "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:#classPerforceMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classPerforceMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: '** No SourceCodeManager - See Settings in the Launcher **'
+            translateLabel: true
+            isVisible: hasNoSourceCodeManagerHolder
+          )
+         (MenuItem
+            label: '-'
+            isVisible: hasNoSourceCodeManagerHolder
+          )
+         (MenuItem
+            enabled: hasClassSelectedHolderAndSourceCodeManagerHolder
+            label: 'CheckIn...'
+            itemValue: classMenuCheckIn
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn...')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasClassWithExtensionsSelectedHolder
+            label: 'CheckIn Extensions For'
+            translateLabel: true
+            submenuChannel: browseClassExtensionsMenu
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: changeSetContainsChangedClassesAndSourceCodeManagerHolder
+            label: 'CheckIn All Changed Classes'
+            itemValue: classMenuCheckInAllChangedClasses
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: 'Quick CheckIn...'
+            itemValue: classMenuQuickCheckIn
+            translateLabel: true
+            isVisible: hasClassSelectedAndControlKeyDownHolder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'CheckIn Build Support Files...'
+            itemValue: classMenuCheckInBuildSupportFiles
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Newest'
+            itemValue: classMenuCheckOutNewest
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Previous Version...'
+            itemValue: classMenuCheckOut
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Edit Version in Repository...'
+            itemValue: classMenuEditVersionInRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Newest in Repository...'
+            itemValue: classMenuCompareAgainstNewestInRepository
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryVersions 'Compare with Newest in Repository...')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Original in Repository...'
+            itemValue: classMenuCompareAgainstOriginalInRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Repository...'
+            itemValue: classMenuCompareWithRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare two Repository Versions...'
+            itemValue: classMenuCompareTwoRepositoryVersions
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionOrClassWithExtensionsSelectedAndSourceCodeManagerHolder
+            label: 'Compare Extensions with Repository...'
+            itemValue: classMenuCompareExtensionsWithRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'Compare Build Support File'
+            translateLabel: true
+            submenuChannel: compareBuildSupportFileMenu
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Set Tag...'
+            itemValue: classMenuSetTag
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryTag 'Set Tag...')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Revision Log (Recent Changes)'
+            itemValue: classMenuShortRevisionLog
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryLog 'Revision Log (Recent Changes)')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Revision Log (Full)'
+            itemValue: classMenuRevisionLog
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         )
+        nil
+        nil
+      )
+!
+
+classSCMMenu
+    "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:#classSCMMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classSCMMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: '** No SourceCodeManager - See Settings in the Launcher **'
+            translateLabel: true
+            isVisible: hasNoSourceCodeManagerHolder
+          )
+         (MenuItem
+            label: '-'
+            isVisible: hasNoSourceCodeManagerHolder
+          )
+         (MenuItem
+            enabled: hasClassSelectedHolderAndSourceCodeManagerHolder
+            label: 'CheckIn...'
+            itemValue: classMenuCheckIn
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn...')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasClassWithExtensionsSelectedHolder
+            label: 'CheckIn Extensions For'
+            translateLabel: true
+            submenuChannel: browseClassExtensionsMenu
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: changeSetContainsChangedClassesAndSourceCodeManagerHolder
+            label: 'CheckIn All Changed Classes'
+            itemValue: classMenuCheckInAllChangedClasses
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: 'Quick CheckIn...'
+            itemValue: classMenuQuickCheckIn
+            translateLabel: true
+            isVisible: hasClassSelectedAndControlKeyDownHolder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'CheckIn Build Support Files...'
+            itemValue: classMenuCheckInBuildSupportFiles
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Set Tag...'
+            itemValue: classMenuSetTag
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryTag 'Set Tag...')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Newest'
+            itemValue: classMenuCheckOutNewest
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Previous Version...'
+            itemValue: classMenuCheckOut
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Revision Log (Recent Changes)'
+            itemValue: classMenuShortRevisionLog
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryLog 'Revision Log (Recent Changes)')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasNonPrivateClassSelectedAndSourceCodeManagerHolder
+            label: 'Revision Log (Full)'
+            itemValue: classMenuRevisionLog
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Newest in Repository...'
+            itemValue: classMenuCompareAgainstNewestInRepository
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryVersions 'Compare with Newest in Repository...')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Original in Repository...'
+            itemValue: classMenuCompareAgainstOriginalInRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Repository...'
+            itemValue: classMenuCompareWithRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Compare two Repository Versions...'
+            itemValue: classMenuCompareTwoRepositoryVersions
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'Compare Extensions with Repository...'
+            itemValue: classMenuCompareExtensionsWithRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectDefinitionSelectedAndSourceCodeManagerHolder
+            label: 'Compare Build Support File'
+            translateLabel: true
+            submenuChannel: compareBuildSupportFileMenu
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasSingleClassSelectedAndSourceCodeManagerHolder
+            label: 'Edit Version in Repository...'
+            itemValue: classMenuEditVersionInRepository
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         )
+        nil
+        nil
+      )
+! !
+
+!NewSystemBrowser class methodsFor:'menu specs-SCM-project'!
+
+projectMenuCVS
+    "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:#projectMenuCVS
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser projectMenuCVS)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+              (
+               (MenuItem
+                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
+                  label: 'CheckIn...'
+                  itemValue: projectMenuCheckInAll
+                  translateLabel: true
+                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn...')
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
+                  label: 'CheckIn Classes Only...'
+                  itemValue: projectMenuCheckInClasses
+                  translateLabel: true
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
+                  label: 'CheckIn Extensions Only...'
+                  itemValue: projectMenuCheckInExtensions
+                  translateLabel: true
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
+                  label: 'CheckIn Build Support Files Only...'
+                  itemValue: projectMenuCheckInBuildSupportFiles
+                  translateLabel: true
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
+                  label: 'Set Tag (Release As)...'
+                  itemValue: projectMenuSetTag
+                  translateLabel: true
+                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryTag 'Set Tag (Release As)...')
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
+                  label: 'CheckOut Newest'
+                  itemValue: projectMenuCheckOutNewest
+                  translateLabel: true
+                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest')
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
+                  label: 'CheckOut Previous Version...'
+                  itemValue: projectMenuCheckOut
+                  translateLabel: true
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
+                  label: 'CheckOut Extensions Only...'
+                  itemValue: projectMenuCheckOutExtensions
+                  translateLabel: true
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Import Structure...'
+                  itemValue: projectMenuImport
+                  translateLabel: true
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  label: 'Import...'
+                  itemValue: projectMenuImportAndLoadClasses
+                  translateLabel: true
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
+                  label: 'Repository History...'
+                  itemValue: projectMenuRepositoryHistory
+                  translateLabel: true
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
+                  label: 'Compare with Newest in Repository...'
+                  itemValue: projectMenuCompareAgainstNewestInRepository
+                  translateLabel: true
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
+                  label: 'Compare with Repository at Date...'
+                  itemValue: projectMenuCompareAgainstRepository
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: 'Compare Build Support File'
+                  translateLabel: true
+                  submenuChannel: compareBuildSupportFileMenu
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedAndSourceCodeManagerHolder
+                  label: 'Consistency Check...'
+                  itemValue: projectMenuCheckRepositoryConsistency
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                  isVisible: false
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedHolder
+                  label: 'Resource Files...'
+                  itemValue: projectMenuResources
+                  translateLabel: true
+                  isVisible: false
+                )
+               (MenuItem
+                  enabled: hasProjectSelectedHolder
+                  label: 'Bitmap Files...'
+                  itemValue: projectMenuBitmapFiles
+                  translateLabel: true
+                  isVisible: false
+                )
+               )
+              nil
+              nil
+            )
+!
+
+projectMenuSCMCommon
+    "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:#projectMenuSCMCommon
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser projectMenuSCMCommon)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'CheckIn...'
+            itemValue: projectMenuCheckInAllUsingManagerNamed:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn...')
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'CheckIn Classes Only...'
+            itemValue: projectMenuCheckInClassesUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'CheckIn Extensions Only...'
+            itemValue: projectMenuCheckInExtensionsUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'CheckIn Build Support Files Only...'
+            itemValue: projectMenuCheckInBuildSupportFilesUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Newest'
+            itemValue: projectMenuCheckOutNewestUsingManagerNamed:
+            translateLabel: true                     
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckOut 'CheckOut Newest')
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Previous Version...'
+            itemValue: projectMenuCheckOutUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'CheckOut Extensions Only...'
+            itemValue: projectMenuCheckOutExtensionsUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Import Structure...'
+            itemValue: projectMenuImportUsing:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: 'Import...'
+            itemValue: projectMenuImportAndLoadClassesUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Newest in Repository...'
+            itemValue: projectMenuCompareAgainstNewestInRepositoryUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+          )
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Repository at Date...'
+            itemValue: projectMenuCompareAgainstRepositoryUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+          )
+         (MenuItem
+            label: 'Compare Build Support File'
+            translateLabel: true
+            submenuChannel: projectMenuSCMCompareBuildSupportFileForManagerNamed:
+            argument: SourceCodeManagerPlaceholder
+          )
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'Consistency Check...'
+            itemValue: projectMenuCheckRepositoryConsistencyUsingManagerNamed:
+            translateLabel: true
+            argument: SourceCodeManagerPlaceholder
+          )
+         (MenuItem
+            label: '-'
+            isVisible: false
+          )
+         (MenuItem
+            enabled: hasProjectSelectedHolder
+            label: 'Resource Files...'
+            itemValue: projectMenuResourcesUsingManagerNamed:
+            translateLabel: true
+            isVisible: false
+            argument: SourceCodeManagerPlaceholder
+          )
+         (MenuItem
+            enabled: hasProjectSelectedHolder
+            label: 'Bitmap Files...'
+            itemValue: projectMenuBitmapFilesUsingManagerNamed:
+            translateLabel: true
+            isVisible: false
+            argument: SourceCodeManagerPlaceholder
+          )
+         (MenuItem
+            label: 'Extras'
+            translateLabel: true
+            submenuChannel: projectMenuSCMExtraFor:
+            argument: SourceCodeManagerPlaceholder
+            isMenuSlice: true
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 23-12-2011 / 19:23:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuSCMCompareBuildSupportFile
+    "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:#compareBuildSupportFileMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser compareBuildSupportFileMenu)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasSingleProjectOrProjectDefinitionSelected
+            label: 'Make.spec'
+            itemValue: projectMenuShowGeneratedBuildFile:usingManager:
+            translateLabel: true
+            argument: 'Make.spec'
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleProjectOrProjectDefinitionSelected
+            label: 'Make.proto'
+            itemValue: projectMenuShowGeneratedBuildFile:usingManager:
+            translateLabel: true
+            argument: 'Make.proto'
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleProjectOrProjectDefinitionSelected
+            label: 'bc.mak'
+            itemValue: projectMenuShowGeneratedBuildFile:usingManager:
+            translateLabel: true
+            argument: 'bc.mak'
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleProjectOrProjectDefinitionSelected
+            label: 'libInit.cc'
+            itemValue: projectMenuShowGeneratedBuildFile:usingManager:
+            translateLabel: true
+            argument: 'libInit.cc'
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleProjectOrProjectDefinitionSelected
+            label: 'modules.stx'
+            itemValue: projectMenuShowGeneratedBuildFile:usingManager:
+            translateLabel: true
+            argument: 'modules.stx'
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleProjectOrProjectDefinitionSelected
+            label: 'lib.rc / app.rc'
+            itemValue: projectMenuShowGeneratedBuildFile:usingManager:
+            translateLabel: true
+            argument: 'lib.rc'
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleProjectOrProjectDefinitionSelected
+            label: 'app.nsi'
+            itemValue: projectMenuShowGeneratedBuildFile:usingManager:
+            translateLabel: true
+            argument: 'app.nsi'
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleProjectOrProjectDefinitionSelected
+            label: 'abbrev.stc'
+            itemValue: projectMenuShowGeneratedBuildFile:usingManager:
+            translateLabel: true
+            argument: 'abbrev.stc'
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleProjectOrProjectDefinitionSelected
+            label: 'loadAll'
+            itemValue: projectMenuShowGeneratedBuildFile:usingManager:
+            translateLabel: true
+            argument: 'loadAll'
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasSingleProjectOrProjectDefinitionSelected
+            label: 'bmake.bat'
+            itemValue: projectMenuShowGeneratedBuildFile:usingManager:
+            translateLabel: true
+            argument: 'bmake.bat'
+            showBusyCursorWhilePerforming: true
+          )
+         )
+        nil
+        nil
+      )
+
+    "Created: / 12-10-2011 / 18:56:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-12-2011 / 20:24:39 / cg"
+!
+
+projectMenuSCMExtra_CVS
+    "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:#projectMenuSCMExtra_CVS
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser projectMenuSCMExtra_CVS)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'Repository History...'
+            itemValue: projectMenuRepositoryHistory
+            translateLabel: true
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'Set Tag (Release As)...'
+            itemValue: projectMenuSetTagUsing:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryTag 'Set Tag (Release As)...')
+            argument: SourceCodeManagerPlaceholder
+          )
+         )
+        nil
+        nil
+      )
+!
+
+projectMenuSCMExtra_SVN
+    "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:#projectMenuSCMExtra_SVN
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser projectMenuSCMExtra_SVN)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasProjectSelectedSubversionRepositoryExistsAndBranchSelectedHolder
+            label: 'Changeset'
+            translateLabel: true
+            submenuChannel: projectSubversionChangesetMenu
+          )
+         (MenuItem
+            label: 'Branch'
+            translateLabel: true
+            submenuChannel: commonSubversionBranchMenu
+          )
+         (MenuItem
+            label: 'Browse working copy'
+            itemValue: commonMenuSubversionBrowseWorkingCopy
+            translateLabel: true
+          )
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'Set Tag (Release As)...'
+            itemValue: projectMenuSetTagUsing:
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryTag 'Set Tag (Release As)...')
+            argument: SourceCodeManagerPlaceholder
+          )
+         (MenuItem
+            label: 'More'
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (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
+      )
+!
+
+projectMenuSCMSlice
+
+    <resource: #menu>
+
+    ^self 
+        perform: ('projectMenuSCMSlice_' , UserPreferences current sourceCodeManagementMenuLayout) asSymbol
+        ifNotUnderstood: [self projectMenuSCMSlice_old].
+
+    "Created: / 07-10-2011 / 14:50:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuSCMSliceAll
+    "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:#classMenuSCMSliceAll
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSliceAll)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'CVS'
+            translateLabel: true
+            submenuChannel: projectMenuSCMFor:
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCVSIcon 'CVS')
+            argument: CVSSourceCodeManager
+            keepLinkedMenu: true
+          )
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'SubVersion'
+            translateLabel: true
+            isVisible: hasSubversionSupport
+            submenuChannel: projectMenuSCMFor:
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'SubVersion')
+            argument: SVNSourceCodeManager
+          )
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'Perforce'
+            translateLabel: true
+            isVisible: hasPerforceSupport
+            submenuChannel: projectMenuSCMFor:
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryP4Icon 'Perforce')
+            argument: PerforceSourceCodeManager
+          )
+         (MenuItem
+            enabled: hasProjectSelectedAndSourceCodeManagerHolder
+            label: 'Monticello'
+            translateLabel: true
+            isVisible: hasMonticelloSupport
+            submenuChannel: projectMenuSCMFor:
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryMCIcon 'Monticello')
+            argument: MCSourceCodeManager
+          )
+         )
+        nil
+        nil
+      )
+
+    "Created: / 12-10-2011 / 20:38:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 01-12-2011 / 21:12:53 / cg"
+!
+
+projectMenuSCMSlice_compact
+    "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:#classMenuSCMSlice_compact
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSlice_compact)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Repository'
+            nameKey: SCM
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'Common Slice'
+                  nameKey: CommonSlice
+                  translateLabel: true
+                  submenuChannel: projectMenuSCMFor:
+                  argument: SourceCodeManagerPlaceholder
+                  isMenuSlice: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'All Slice'
+                  translateLabel: true
+                  submenuChannel: projectMenuSCMSliceAll
+                  isMenuSlice: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Repository Settings'
+                  itemValue: openSettingsDialogAndSelectSourceCodeManagement
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
+      )
+
+    "Created: / 12-10-2011 / 20:36:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuSCMSlice_inline
+    "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:#projectMenuSCMSlice_inline
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser projectMenuSCMSlice_inline)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'All Slice'
+            translateLabel: true
+            submenuChannel: projectMenuSCMSliceAll
+            isMenuSlice: true
+          )
+         )
+        nil
+        nil
+      )
+!
+
+projectMenuSCMSlice_old
+    "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:#projectMenuSCMSlice_old
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser projectMenuSCMSlice_old)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'CVS'
+            translateLabel: true
+            submenuChannel: projectMenuCVS
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCVSIcon 'CVS')
+          )
+         (MenuItem
+            enabled: hasProjectSelectedSubversionRepositoryExistsHolder
+            label: 'SubVersion'
+            translateLabel: true
+            isVisible: hasSubversionSupport
+            submenuChannel: projectSubversionMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'SubVersion')
+          )
+         (MenuItem
+            enabled: hasProjectSelectedMonticelloRepositoryExistsHolder
+            label: 'Monticello'
+            translateLabel: true
+            isVisible: hasMonticelloSupport
+            submenuChannel: projectMonticelloMenu
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryMCIcon 'Monticello')
+          )
+         )
+        nil
+        nil
+      )
+! !
+
+!NewSystemBrowser class methodsFor:'menu specs-SCM-selector'!
+
+selectorMenuCVS
+    "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:#selectorMenuFileOutPrintOutSlice
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser selectorMenuFileOutPrintOutSlice)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+              (
+               (MenuItem
+                  enabled: hasMethodSelected
+                  label: 'CheckIn Class(es)...'
+                  itemValue: methodListMenuCheckInClass
+                  translateLabel: true
+                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn Class(es)...')
+                  showBusyCursorWhilePerforming: true
+                )
+               (MenuItem
+                  enabled: hasRealExtensionMethodSelectedHolder
+                  label: 'CheckIn Extensions for Project...'
+                  itemValue: selectorMenuCheckInProjectExtensions
+                  translateLabel: true
+                  isVisible: hasExtensionMethodSelectedHolder
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasMethodSelectedAndSourceCodeManagerHolder
+                  label: 'Compare with Newest in Repository...'
+                  itemValue: selectorMenuCompareAgainstNewestInRepository
+                  translateLabel: true
+                  labelImage: (ResourceRetriever ToolbarIconLibrary repositoryVersions 'Compare with Newest in Repository...')
+                )
+               (MenuItem
+                  enabled: hasMethodSelectedAndSourceCodeManagerHolder
+                  label: 'Compare Class with Newest in Repository...'
+                  itemValue: selectorMenuCompareClassAgainstNewestInRepository
+                  translateLabel: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  enabled: hasSingleMethodSelected
+                  label: 'Browse Repository Versions...'
+                  itemValue: selectorMenuBrowseRepositoryVersions
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+!
+
+selectorMenuSCMCommon
+    "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:#selectorMenuSCMCommon
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser selectorMenuSCMCommon)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasMethodSelected
+            label: 'CheckIn Class(es)...'
+            itemValue: methodListMenuCheckInClassUsingManagerNamed:
+            argument: SourceCodeManagerPlaceholder
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCheckIn 'CheckIn Class(es)...')
+            showBusyCursorWhilePerforming: true
+          )
+         (MenuItem
+            enabled: hasRealExtensionMethodSelectedHolder
+            label: 'CheckIn Extensions for Project...'
+            itemValue: selectorMenuCheckInProjectExtensionsUsingManagerNamed:
+            argument: SourceCodeManagerPlaceholder
+            translateLabel: true
+            isVisible: hasExtensionMethodSelectedHolder
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasMethodSelectedAndSourceCodeManagerHolder
+            label: 'Compare with Newest in Repository...'
+            itemValue: selectorMenuCompareAgainstNewestInRepositoryUsingManagerNamed:
+            argument: SourceCodeManagerPlaceholder
+            translateLabel: true
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryVersions 'Compare with Newest in Repository...')
+          )
+         (MenuItem
+            enabled: hasMethodSelectedAndSourceCodeManagerHolder
+            label: 'Compare Class with Newest in Repository...'
+            itemValue: selectorMenuCompareClassAgainstNewestInRepositoryUsingManagerNamed:
+            argument: SourceCodeManagerPlaceholder
+            translateLabel: true
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasSingleMethodSelected
+            label: 'Browse Repository Versions...'
+            itemValue: selectorMenuBrowseRepositoryVersionsUsingManagerNamed:
+            argument: SourceCodeManagerPlaceholder
+            translateLabel: true
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 11-01-2012 / 14:05:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectorMenuSCMSlice
+    "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:#selectorMenuSCMSlice
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser selectorMenuSCMSlice)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'All Slice'
+            translateLabel: true
+            submenuChannel: selectorMenuSCMSliceAll
+            isMenuSlice: true
+          )
+         )
+        nil
+        nil
+      )
+!
+
+selectorMenuSCMSliceAll
+    "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:#classMenuSCMSliceAll
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSliceAll)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasMethodSelectedAndSourceCodeManagerHolder
+            label: 'CVS'
+            translateLabel: true
+            submenuChannel: selectorMenuSCMFor:
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCVSIcon 'CVS')
+            argument: CVSSourceCodeManager
+            keepLinkedMenu: true
+          )
+         (MenuItem
+            enabled: hasMethodSelectedAndSourceCodeManagerHolder
+            label: 'SubVersion'
+            translateLabel: true
+            isVisible: hasSubversionSupport
+            submenuChannel: selectorMenuSCMFor:
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositorySVNIcon 'SubVersion')
+            argument: SVNSourceCodeManager
+          )
+         (MenuItem
+            enabled: hasMethodSelectedAndSourceCodeManagerHolder
+            label: 'Perforce'
+            translateLabel: true
+            isVisible: hasPerforceSupport
+            submenuChannel: selectorMenuSCMFor:
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryP4Icon 'Perforce')
+            argument: PerforceSourceCodeManager
+          )
+         )
+        nil
+        nil
+      )
+
+    "Created: / 12-10-2011 / 20:47:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 01-12-2011 / 21:13:19 / cg"
+!
+
+selectorMenuSCMSlice_compact
+    "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:#classMenuSCMSlice_compact
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser classMenuSCMSlice_compact)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Repository'
+            nameKey: SCM
+            translateLabel: true
+            submenu: 
+           (Menu
+              (
+               (MenuItem
+                  label: 'Common Slice'
+                  nameKey: CommonSlice
+                  translateLabel: true
+                  submenuChannel: selectorMenuSCMFor:
+                  argument: SourceCodeManagerPlaceholder
+                  isMenuSlice: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'All Slice'
+                  translateLabel: true
+                  submenuChannel: selectorMenuSCMSliceAll
+                  isMenuSlice: true
+                )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Repository Settings'
+                  itemValue: openSettingsDialogAndSelectSourceCodeManagement
+                  translateLabel: true
+                )
+               )
+              nil
+              nil
+            )
+          )
+         )
+        nil
+        nil
+      )
+
+    "Created: / 12-10-2011 / 20:45:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectorMenuSCMSlice_inline
+    "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:#selectorMenuSCMSlice_inline
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser selectorMenuSCMSlice_inline)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'All Slice'
+            translateLabel: true
+            submenuChannel: selectorMenuSCMSliceAll
+            isMenuSlice: true
+          )
+         )
+        nil
+        nil
+      )
+!
+
+selectorMenuSCMSlice_old
+    "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:#selectorMenuSCMSlice_old
+     (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser selectorMenuSCMSlice_old)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasMethodSelected
+            label: 'CVS'
+            translateLabel: true
+            submenuChannel: selectorMenuCVS
+            labelImage: (ResourceRetriever ToolbarIconLibrary repositoryCVSIcon 'CVS')
+          )
+         )
+        nil
+        nil
+      )
+! !
+
 !NewSystemBrowser class methodsFor:'menu specs-dialogs'!
 
 classesWhichHaveBeenModifiedPopupMenu
@@ -13426,6 +16000,7 @@
     "Modified: / 29-09-2006 / 16:11:08 / cg"
 ! !
 
+
 !NewSystemBrowser class methodsFor:'menu specs-popup'!
 
 categoryPopUpMenu
@@ -13843,6 +16418,7 @@
     "Do not manually edit this!! If it is corrupted,
      the MenuEditor may not be able to read the specification."
 
+
     "
      MenuEditor new openOnClass:Tools::NewSystemBrowser andSelector:#toolBarMenu
      (Menu new fromLiteralArrayEncoding:(Tools::NewSystemBrowser toolBarMenu)) startUp
@@ -13861,7 +16437,7 @@
             translateLabel: true
             isButton: true
             isVisible: showGlobalHistory
-            labelImage: (ResourceRetriever XPToolbarIconLibrary historyBackInGlobalListIcon)
+            labelImage: (ResourceRetriever ToolbarIconLibrary historyBackInGlobalListIcon)
           )
          (MenuItem
             activeHelpKey: goBack
@@ -13871,7 +16447,7 @@
             translateLabel: true
             isButton: true
             isVisible: showLocalHistory
-            labelImage: (ResourceRetriever XPToolbarIconLibrary historyBackIcon)
+            labelImage: (ResourceRetriever ToolbarIconLibrary historyBackIcon)
           )
          (MenuItem
             activeHelpKey: goForward
@@ -13881,7 +16457,7 @@
             translateLabel: true
             isButton: true
             isVisible: showLocalHistory
-            labelImage: (ResourceRetriever XPToolbarIconLibrary historyForwardIcon)
+            labelImage: (ResourceRetriever ToolbarIconLibrary historyForwardIcon)
           )
          (MenuItem
             label: ''
@@ -13929,6 +16505,8 @@
             submenuChannel: changedMenu
             labelImage: (ResourceRetriever ToolbarIconLibrary changesBrowserIcon)
             showBusyCursorWhilePerforming: true
+            ignoreMnemonicKeys: true
+            ignoreShortcutKeys: true
           )
          (MenuItem
             activeHelpKey: recentClassChanges
@@ -13939,6 +16517,8 @@
             submenuChannel: changedClassesMenu
             labelImage: (ResourceRetriever ToolbarIconLibrary empty1x20Icon)
             showBusyCursorWhilePerforming: true
+            ignoreMnemonicKeys: true
+            ignoreShortcutKeys: true
           )
          (MenuItem
             activeHelpKey: bookmarks
@@ -13946,7 +16526,9 @@
             translateLabel: true
             isVisible: false
             submenuChannel: boockmarksMenu
-            labelImage: (ResourceRetriever ToolbarIconLibrary bookmarks22x22)
+            labelImage: (ResourceRetriever ToolbarIconLibrary bookmarks14x14)
+            ignoreMnemonicKeys: true
+            ignoreShortcutKeys: true
           )
          (MenuItem
             label: ''
@@ -14107,20 +16689,17 @@
         nil
         nil
       )
+
+    "Modified: / 31-12-2011 / 15:47:24 / cg"
 ! !
 
 !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 ]
-        ] 
+    ^ ConfigurableFeatures includesFeature: #SubversionSupportEnabled
+
+    "Modified: / 07-09-2011 / 10:45:40 / cg"
+    "Modified: / 19-01-2012 / 10:46:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !NewSystemBrowser class methodsFor:'startup'!
@@ -14572,6 +17151,15 @@
     ^ self navigationState noAllItem
 !
 
+packageInfoBackgroundColorHolder
+
+    "Current background color of package info bar"        
+
+    ^ self navigationState packageInfoBackgroundColorHolder
+
+    "Created: / 03-10-2011 / 13:56:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 packageLabelHolder
     "the current buffers packageLabel (info field)"
 
@@ -14789,6 +17377,34 @@
     "Created: / 18.2.2000 / 12:17:07 / cg"
 !
 
+cvsRepositoryMenusAreShown
+    ^ ConfigurableFeatures includesFeature: #CVSSupportEnabled
+
+    "Created: / 18-01-2012 / 10:50:13 / cg"
+    "Modified: / 19-01-2012 / 10:44:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+dataBaseRepositoryMenusAreShown
+    ^ ConfigurableFeatures includesFeature: #DataBaseSourceCodeManagerSupportEnabled
+
+    "Created: / 10-01-2012 / 00:29:02 / cg"
+    "Modified: / 19-01-2012 / 10:44:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+fileBasedRepositoryMenusAreShown
+    ^ ConfigurableFeatures includesFeature: #FileBasedSourceCodeManagerSupportEnabled
+
+    "Created: / 10-01-2012 / 00:29:12 / cg"
+    "Modified: / 19-01-2012 / 10:44:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+mercurialRepositoryMenusAreShown
+    ^ ConfigurableFeatures includesFeature: #MercurialSupportEnabled
+
+    "Created: / 15-01-2012 / 14:36:53 / cg"
+    "Modified: / 19-01-2012 / 10:40:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 methodListPopUpMenu
     "to avoid generation of an aspect method by GUI definer"
 
@@ -14817,12 +17433,11 @@
     "Created: / 18.2.2000 / 12:17:22 / cg"
 !
 
-projectMenu
-    "to avoid generation of an aspect method by GUI definer"
-
-    ^ self class projectMenu
-
-    "Created: / 18.2.2000 / 12:17:28 / cg"
+perforceRepositoryMenusAreShown
+    ^ ConfigurableFeatures includesFeature: #PerforceSupportEnabled
+
+    "Created: / 10-01-2012 / 00:29:46 / cg"
+    "Modified: / 19-01-2012 / 10:45:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 protocolMenu
@@ -14861,6 +17476,13 @@
     "Modified: / 11-09-2007 / 11:44:09 / cg"
 !
 
+svnRepositoryMenusAreShown
+    ^ ConfigurableFeatures includesFeature: #SubversionSupportEnabled
+
+    "Created: / 15-01-2012 / 14:49:31 / cg"
+    "Modified: / 19-01-2012 / 10:46:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 tabMenu:index
     <resource: #programMenu>
 
@@ -15125,6 +17747,7 @@
     "Created: / 24.2.2000 / 23:28:06 / cg"
 ! !
 
+
 !NewSystemBrowser methodsFor:'aspects-organization'!
 
 categoryMenuVisible
@@ -16224,6 +18847,18 @@
     "Modified: / 28-08-2006 / 23:33:08 / cg"
 !
 
+globalCoverageRecordingIsDisabled
+    ^ [ InstrumentationContext hasGlobalInstrumentationContext not ]
+
+    "Created: / 21-09-2011 / 19:16:17 / cg"
+!
+
+globalCoverageRecordingIsEnabled
+    ^ [ InstrumentationContext hasGlobalInstrumentationContext ]
+
+    "Created: / 21-09-2011 / 19:16:08 / cg"
+!
+
 hasAnyAutoLoadedClassSelected
     |selected|
 
@@ -16772,6 +19407,55 @@
     "Created: / 4.2.2000 / 22:02:53 / cg"
 !
 
+hasClassesSelectedAndDataBaseRepositoryExistsHolder
+    ^ [
+        | classes |
+
+        classes := self selectedClasses value.
+        classes isEmptyOrNil ifTrue:[
+            false
+        ] ifFalse:[
+            ConfigurableFeatures includesFeature: #DataBaseSourceCodeManagerSupport
+        ]
+    ]
+
+    "Created: / 03-01-2012 / 15:48:46 / cg"
+    "Modified: / 19-01-2012 / 10:44:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hasClassesSelectedAndFileBasedRepositoryExistsHolder
+    ^ [
+        | classes |
+
+        classes := self selectedClasses value.
+        classes isEmptyOrNil ifTrue:[
+            false
+        ] ifFalse:[
+            ConfigurableFeatures includesFeature: #FileBasedSourceCodeManagerSupport
+        ]
+    ]
+
+    "Created: / 21-12-2011 / 17:05:28 / cg"
+    "Modified: / 19-01-2012 / 10:44:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hasClassesSelectedAndMercurialRepositoryExistsHolder
+    ^ [
+        | classes |
+
+        classes := self selectedClasses value.
+        classes isEmptyOrNil ifTrue:[
+            false
+        ] ifFalse:[
+            classes 
+                allSatisfy:
+                    [:cls | self hasMercurialRepositoryFor: cls theNonMetaclass package]
+        ]
+    ]
+
+    "Created: / 19-01-2012 / 16:14:57 / cg"
+!
+
 hasClassesSelectedAndPerforceRepositoryExistsHolder
     ^ [
         | classes |
@@ -16846,6 +19530,22 @@
     "Modified: / 11-02-2007 / 13:47:14 / cg"
 !
 
+hasDataBaseRepositoryFor: package
+    ^ ConfigurableFeatures hasDatabaBaseSourceCodeManagerSupport
+    "/ use Smalltalk-at to trick the dependency/prerequisite generator
+    and:[(Smalltalk at:#'DatabaBaseSourceCodeManager') hasRepositoryForPackage: package]
+
+    "Created: / 03-01-2012 / 15:35:39 / cg"
+!
+
+hasDataBaseSourceCodeManagerSupport
+    ^ ConfigurableFeatures includesFeature: #DataBaseSourceCodeManagerSupport
+
+    "Modified: / 07-09-2011 / 10:45:57 / cg"
+    "Created: / 03-01-2012 / 15:47:11 / cg"
+    "Modified: / 19-01-2012 / 10:44:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 hasEmptyNamespacesSelected
     "return true, if only empty namespaces are selected"
 
@@ -16923,6 +19623,28 @@
     "Modified: / 08-03-2007 / 23:00:43 / cg"
 !
 
+hasFileBasedRepositoryFor: package
+    "is there a subversion source repository for package?"
+
+    ^ (ConfigurableFeatures includesFeature: #FileBasedSourceCodeManagerSupport)
+    "/ use Smalltalk-at to trick the dependency/prerequisite generator
+    and:[(Smalltalk at:#'FileBasedSourceCodeManager') hasRepositoryForPackage: package]
+
+    "Created: / 31-03-2008 / 15:08:13 / janfrog"
+    "Modified: / 22-08-2009 / 10:49:33 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 07-09-2011 / 10:43:21 / cg"
+    "Created: / 21-12-2011 / 17:08:01 / cg"
+    "Modified: / 19-01-2012 / 10:45:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hasFileBasedSourceCodeManagerSupport
+    ^ (ConfigurableFeatures includesFeature: #FileBasedSourceCodeManagerSupport)
+
+    "Modified: / 07-09-2011 / 10:45:57 / cg"
+    "Created: / 21-12-2011 / 17:08:53 / cg"
+    "Modified: / 19-01-2012 / 10:45:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 hasFindHistoryClassesHolder
     ^ [ FindHistory size > 0 ]
 
@@ -17058,6 +19780,25 @@
     ^ [ self hasLocalVariableSelectedInCodeView ]
 !
 
+hasMercurialRepositoryFor: package
+    "is there a perforce source repository for package?"
+
+    ^ self hasMercurialSupport
+    "/ use Smalltalk-at to trick the dependency/prerequisite generator
+"/    and:[(Smalltalk at:#'PerforceSourceCodeManager') hasRepositoryForPackage: package]
+
+    "Modified: / 22-08-2009 / 10:49:33 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Created: / 15-01-2012 / 14:42:02 / cg"
+!
+
+hasMercurialSupport
+    "is there support for the perforce source code manager?"
+
+    ^ self hasSCMSupportFor:#'MercurialSourceCodeManager'
+
+    "Created: / 15-01-2012 / 14:42:30 / cg"
+!
+
 hasMetaMethodSelectedHolder
     ^ [ (self hasMethodSelected and:[self hasMetaSelected])
         or:[self hasClassMethodsSelected ]]
@@ -17185,10 +19926,10 @@
 !
 
 hasMonticelloSupport
-
-    ^(Smalltalk at: #MCSourceCodeManager) notNil
+    ^ (Smalltalk at: #MCSourceCodeManager) notNil
 
     "Created: / 14-09-2010 / 22:34:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (format): / 01-12-2011 / 21:21:12 / cg"
 !
 
 hasMultipleClassesSelected
@@ -17449,15 +20190,18 @@
 hasPerforceSupport
     "is there support for the perforce source code manager?"
 
-    |perforceManager|
-
-    "/ use Smalltalk-at to trick the dependency/prerequisite generator
-    perforceManager := Smalltalk at: #'PerforceSourceCodeManager'.
-    ^ perforceManager notNil and:[ perforceManager isLoaded ]
+    ^ self hasSCMSupportFor:#'PerforceSourceCodeManager'
 
     "Created: / 19-04-2011 / 14:14:51 / cg"
 !
 
+hasProjectDefinitionOrClassWithExtensionsSelectedAndSourceCodeManagerHolder
+    ^ [ self hasSourceCodeManager
+        and:[ self hasProjectDefinitionSelected or:[self hasClassWithExtensionsSelected]]]
+
+    "Created: / 12-09-2011 / 11:12:12 / cg"
+!
+
 hasProjectDefinitionSelected
     ^ self selectedClassesValue contains:[:cls | cls theNonMetaclass isProjectDefinition]
 
@@ -17616,6 +20360,20 @@
     ^ manager hasRedoableOperations
 !
 
+hasSCMSupportFor:aManagerClassName
+    "is there support for the perforce source code manager?"
+
+    |manager|
+
+    "/ use Smalltalk-at to trick the dependency/prerequisite generator
+    manager := Smalltalk at:aManagerClassName.
+    ^ manager notNil 
+    and:[ manager isLoaded
+    and:[ manager shownInBrowserMenus ]]
+
+    "Created: / 15-01-2012 / 14:45:11 / cg"
+!
+
 hasSelectedClassWithSuperclassHolder
     ^ [ self theSingleSelectedClass notNil
         and:[self theSingleSelectedClass superclass notNil ]]
@@ -18099,11 +20857,14 @@
 
     "Created: / 31-03-2008 / 15:08:13 / janfrog"
     "Modified: / 22-08-2009 / 10:49:33 / Jan Vrany <vranyj1@fel.cvut.cz>"
-    "Modified: / 19-04-2011 / 14:04:02 / cg"
+    "Modified: / 15-01-2012 / 13:18:10 / cg"
 !
 
 hasSubversionSupport
-    ^ self class hasSubversionSupport
+    ^ ConfigurableFeatures includesFeature: #SubversionSupportEnabled
+
+    "Modified: / 07-09-2011 / 10:45:57 / cg"
+    "Modified: / 19-01-2012 / 10:45:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 hasTemporaryVariableSelectedInCodeView
@@ -18237,7 +20998,12 @@
 !
 
 instrumentingCompilerExists
-    ^ InstrumentingCompiler notNil 
+    "true, if instrumenting is possible 
+     (now, always true, because InstrumentingCompiler is now in the libcomp package)"
+
+    ^ InstrumentingCompiler notNil
+
+    "Modified (comment): / 30-09-2011 / 12:41:20 / cg"
 !
 
 isAnyOtherMetaclassPresent
@@ -18406,6 +21172,7 @@
     ^ UserPreferences current useSearchBarInBrowser or:[self codeView searchBarActionBlock notNil]
 ! !
 
+
 !NewSystemBrowser methodsFor:'change & update'!
 
 categorySelectionChanged
@@ -19145,13 +21912,18 @@
                 ].
             ]
         ].
+
+        something == #methodTrap ifTrue:[
+            self hasMethodWithoutBreakPointSelectedHolder value:(self hasMethodWithoutBreakPointSelected).
+            self hasMethodWithBreakPointSelectedHolder value:(self hasMethodWithBreakPointSelected).
+        ].
         ^ self
     ].
 
     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>"
+    "Modified: / 15-11-2011 / 23:10:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 updateBookmarkHolder
@@ -19361,7 +22133,7 @@
 
     spec := super flyByHelpSpec.
     changeSet := ChangeSet current.
-    (changeSet contains:[:chg | chg isMethodChange and:[chg changeClass notNil]]) ifTrue:[
+    (changeSet findLast:[:chg | chg isMethodChange and:[chg changeClass notNil]]) ~~ 0 ifTrue:[
         spec at:#recentChanges put:(spec at:#recentlyChangedMethods).
     ] ifFalse:[
 "/        (changeSet contains:[:chg | chg isClassChange and:[chg changeClass notNil]]) ifTrue:[
@@ -19371,6 +22143,8 @@
 "/        ]
     ].
     ^ spec.
+
+    "Modified: / 08-09-2011 / 05:05:06 / cg"
 !
 
 flyByHelpTextFor:aComponent
@@ -19830,6 +22604,34 @@
         label:'Changed classes in current changeSet' openAs:openHow
 !
 
+browseMenuClassesOfRecentlyOpenedApplications
+    "add a new buffer on all classes for which an application has been opened recently"
+
+    ^ self browseMenuClassesOfRecentlyOpenedApplications:#newBuffer
+
+    "Created: / 22-08-2011 / 08:03:25 / cg"
+!
+
+browseMenuClassesOfRecentlyOpenedApplications:openHow
+    "add a new buffer/open a new browser on all classes for which an app has been opened recently"
+
+    |searchBlock|
+
+    searchBlock :=
+        [
+            |appHistory|
+
+            appHistory := ApplicationModel recentlyOpenedApplications.
+            appHistory 
+                collect:[:nm | Smalltalk classNamed:nm]
+                as:OrderedCollection
+        ].
+
+    ^ self spawnClassBrowserForSearch:searchBlock sortBy:nil in:openHow label:'Recently opened applications'
+
+    "Created: / 22-08-2011 / 08:04:17 / cg"
+!
+
 browseMenuClassesWithFilter:aFilterBlock label:aLabelString
     |searchBlock|
 
@@ -19988,9 +22790,14 @@
      "/
 
      "/ example (search for classes which implement some message and are in the Smalltalk nameSpace)
-
      (class nameSpace == Smalltalk
      and:[ class implements:#at: ] )
+
+     "/ example (search for classes which do not implement a message)
+     "/ (class implements:#at:) not
+
+     "/ same, for class side
+     "/ (class theMetaclass implements:#version) not
 ]
 '.
 
@@ -20016,6 +22823,8 @@
     self assert:filterBlock isBlock message:'bad input'.
 
     self browseMenuClassesWithFilter:filterBlock label:'Class-Search result'
+
+    "Modified: / 29-09-2011 / 13:13:31 / cg"
 !
 
 browseMenuClassesWithoutCVSRepositoryContainer
@@ -20459,7 +23268,7 @@
 
     self
         askForMethodAndSpawnSearchTitle:'String to Search for in Sources:'
-        browserLabel:'Methods containing ''%1'''
+        browserLabel:'Methods containing "%1"'
         searchWith:#( #'findString:in:ignoreCase:match:' #'findString:inMethods:ignoreCase:match:' )
         searchWhat:#string
         searchArea:whereDefault
@@ -20470,7 +23279,7 @@
                             brwsr autoSearchPattern:string ignoreCase:ignoreCase.
                          ]
 
-    "Modified: / 19-11-2010 / 12:11:55 / cg"
+    "Modified: / 22-12-2011 / 10:04:46 / cg"
 !
 
 browseMenuMethodsWithStringInHelpSpec
@@ -20486,7 +23295,7 @@
     ].
     self
         askForMethodAndSpawnSearchTitle:'String to search for in help spec methods:'
-        browserLabel:'HelpSpec Methods containing ''%1'''
+        browserLabel:'HelpSpec Methods containing "%1"'
         searchWith:#findHelpSpecMethodsWithString:in:ignoreCase:match:
         searchWhat:#string
         searchArea:whereDefault
@@ -20494,6 +23303,8 @@
         setSearchPattern:[:brwsr :string :ignoreCase :doMatch|
                             brwsr autoSearchPattern:string ignoreCase:ignoreCase.
                          ]
+
+    "Modified: / 22-12-2011 / 10:04:52 / cg"
 !
 
 browseMenuMethodsWithStringInMenuSpec
@@ -20509,7 +23320,7 @@
     ].
     self
         askForMethodAndSpawnSearchTitle:'String to search for in menu spec methods:'
-        browserLabel:'MenuSpec Methods containing ''%1'''
+        browserLabel:'MenuSpec Methods containing "%1"'
         searchWith:#'findMenuSpecMethodsWithString:in:ignoreCase:match:'
         searchWhat:#string
         searchArea:whereDefault
@@ -20517,6 +23328,8 @@
         setSearchPattern:[:brwsr :string :ignoreCase :doMatch|
                             brwsr autoSearchPattern:string ignoreCase:ignoreCase.
                          ]
+
+    "Modified: / 22-12-2011 / 10:04:57 / cg"
 !
 
 browseMenuMethodsWithStringLiteral
@@ -21083,6 +23896,157 @@
     "Modified: / 12-10-2006 / 20:51:48 / cg"
 !
 
+browseMenuWritesToGlobal
+    "launch an enterBox for global to search for writers"
+
+    |labelHolder alreadyAsked searchAllLabel|
+
+    labelHolder := 'Methods writing to global ''%1''' asValue.
+    self
+        askForMethodAndSpawnSearchTitle:'Global to search:\(TAB for completion; matchPattern allowed)'
+        browserLabel:labelHolder
+        searchWith:[:string :classes :dummyIgnoreCase :dummyMatch|
+                        |globlNames globlNamesAndSymbols globlName sym baseName matchBlock realClasses val
+                         keysReferringToValue otherKeysReferringToValue msg searchAll|
+
+                        globlNames := string withoutSeparators asCollectionOfSubstringsSeparatedByAny:',;| '.
+"/                        globlNames size > 1 ifTrue:[
+"/                            globlNames := globlNames collect:[:nm | nm asSymbol].
+"/                            matchBlock := [:cls :mthd :sel |
+"/                                            |mSource usedGlobals usesGlobal|
+"/
+"/                                            usesGlobal := false.
+"/                                            mthd isLazyMethod ifTrue:[
+"/                                                mSource := mthd source.
+"/
+"/                                                (mSource notNil
+"/                                                and:[(globlNames contains:[:nm |
+"/                                                        (mSource includesString:nm)
+"/                                                        and:[
+"/                                                           usedGlobals isNil ifTrue:[ usedGlobals := mthd usedGlobals].
+"/                                                           usesGlobal := usedGlobals includes:nm
+"/                                                        ]])]).
+"/                                            ] ifFalse:[
+"/                                                globlNames contains:[:nm |
+"/                                                        (mthd referencesLiteral:nm)
+"/                                                        and:[
+"/                                                           usedGlobals isNil ifTrue:[ usedGlobals := mthd usedGlobals].
+"/                                                           usesGlobal := usedGlobals includes:nm
+"/                                                        ]].
+"/                                            ].
+"/                                            usesGlobal ifTrue:[
+"/                                            ].
+"/                                          ]
+"/                        ] ifFalse:[
+"/                            globlName := globlNames first.
+"/                            globlName knownAsSymbol ifFalse:[
+"/                                globlName includesMatchCharacters ifFalse:[
+"/                                    ^ self warn:'No such global (''' , globlName , ''')'.
+"/                                ].
+"/                                matchBlock := [:cls :mthd :sel |
+"/                                                (mthd literals contains:[:lit | globlName match:lit])
+"/                                                 and:[mthd usedGlobals contains:[:lit | globlName match:lit] ]
+"/                                              ]
+"/                            ] ifTrue:[
+"/                                searchAll := false.
+"/                                sym := globlName asSymbol.
+"/
+"/                                val := globlName lastIndexOf:$:.
+"/                                val ~~ 0 ifTrue:[
+"/                                    baseName := (globlName copyFrom:val+1) asSymbol.
+"/                                ] ifFalse:[
+"/                                    baseName := sym.
+"/                                ].
+"/                                (val := Smalltalk at:sym) isBehavior ifTrue:[
+"/                                    otherKeysReferringToValue := OrderedCollection new.
+"/                                    Smalltalk keysAndValuesDo:[:k :v | v == val ifTrue:[
+"/                                                                           k ~~ sym ifTrue:[
+"/                                                                               otherKeysReferringToValue add:k
+"/                                                                           ]
+"/                                                                       ]
+"/                                                              ].
+"/                                    otherKeysReferringToValue size > 0 ifTrue:[
+"/                                        keysReferringToValue := otherKeysReferringToValue copyWith:sym.
+"/                                        otherKeysReferringToValue size == 1 ifTrue:[
+"/                                            msg := '''%1'' also refers to that value. Search these references too ?'.
+"/                                            searchAllLabel := 'Methods referring to ''%1'' or ''%2''' bindWithArguments:keysReferringToValue.
+"/                                        ] ifFalse:[
+"/                                            searchAllLabel := 'Methods referring to the value of ''%1'''.
+"/                                            otherKeysReferringToValue size <= 3 ifTrue:[
+"/                                                msg := (otherKeysReferringToValue copyWithoutLast:1) asStringWith:', '.
+"/                                                msg := msg , ' and ' , otherKeysReferringToValue last.
+"/                                                msg := msg , ' also refer to that value. Search those references too ?'.
+"/                                            ] ifFalse:[
+"/                                                msg := 'There are %2 other globals referring to that value. Search those references too ?'.
+"/                                            ]
+"/                                        ].
+"/                                        alreadyAsked isNil ifTrue:[
+"/                                            searchAll := Dialog
+"/                                                            confirmWithCancel:(msg bindWith:otherKeysReferringToValue first with:otherKeysReferringToValue size)
+"/                                                            default:true.
+"/                                            searchAll isNil ifTrue:[^ self].
+"/                                            alreadyAsked := searchAll.
+"/                                        ] ifFalse:[
+"/                                            searchAll := alreadyAsked.
+"/                                        ].
+"/                                    ]
+"/                                ].
+"/                                searchAll ifTrue:[
+"/                                    labelHolder value:searchAllLabel.
+"/                                    matchBlock := [:cls :mthd :sel |
+"/                                                    "/ kludge: Lazy methods do not include symbols in the literal array - sigh
+"/                                                    mthd isLazyMethod ifTrue:[
+"/                                                        (mthd usedGlobals includesAny:keysReferringToValue)
+"/                                                    ] ifFalse:[
+"/                                                        (keysReferringToValue contains:[:globl | mthd refersToLiteral:globl])
+"/                                                        and:[mthd usedGlobals includesAny:keysReferringToValue]
+"/                                                    ]
+"/                                                  ]
+"/                                ] ifFalse:[
+"/                                    matchBlock := [:cls :mthd :sel | |mSource|
+"/                                                    "/ kludge: Lazy methods do not include symbols in the literal array - sigh
+"/                                                    mthd isLazyMethod ifTrue:[
+"/                                                        mSource := mthd source.
+"/                                                        (mSource notNil
+"/                                                        and:[(mSource includesString:baseName)
+"/                                                        and:[mthd usedGlobals includes:sym]])
+"/                                                    ] ifFalse:[
+"/                                                        (((mthd referencesLiteral:baseName) or:[baseName ~~ sym and:[mthd referencesLiteral:sym]])
+"/                                                         and:[mthd usedGlobals includes:sym])
+"/                                                    ]
+"/                                                  ]
+"/                                ]
+"/                           ].
+"/                       ].
+
+                        matchBlock := self class
+                            filterToSearchRefsTo:string 
+                            instVars:false 
+                            classVars:false 
+                            globals:true 
+                            access:#write.
+
+                       "/ recollect realClasses from names (in case of class-changes)
+                       realClasses := classes collect:[:eachClass | Smalltalk at:eachClass name].
+                       self class
+                           findMethodsIn:realClasses
+                           where:matchBlock
+                   ]
+        searchWhat:#globalName
+        searchArea:#everywhere
+        withCaseIgnore:false
+        setSearchPattern:[:brwsr :string :ignoreCase :doMatch|
+                            |globlNames|
+
+                            globlNames := string withoutSeparators asCollectionOfSubstringsSeparatedByAny:',;| '.
+                            brwsr autoSearchVariables:globlNames.
+
+                            "/ brwsr autoSearchPattern:string ignoreCase:ignoreCase.
+                         ]
+
+    "Created: / 29-09-2011 / 10:40:16 / cg"
+!
+
 browseResponseToIt
     |selector|
 
@@ -22173,9 +25137,9 @@
             self busyLabel:'saving: %1' with:eachClass name.
             Class fileOutErrorSignal handle:[:ex |
                 answer := DialogBox
-                                confirm:(resources string:'Cannot fileOut: %1\(%2)\\skipped.'
+                                confirm:(resources stringWithCRs:'Cannot fileOut: %1\(%2)\\skipped.'
                                                      with:(eachClass name allBold)
-                                                     with:ex description) withCRs
+                                                     with:ex description)
                                 yesLabel:'ok' noLabel:'cancel'.
                 answer == false ifTrue:[
                     ^ self
@@ -22190,7 +25154,7 @@
     ].
     self normalLabel.
 
-    "Modified: / 06-10-2006 / 16:17:56 / cg"
+    "Modified: / 05-09-2011 / 22:01:27 / cg"
 !
 
 spawnCategoryBrowserFor:categories in:where
@@ -22526,7 +25490,7 @@
                         AbortSignal raise
                     ].
                     confirmed ifTrue:[
-                        SourceCodeManagerUtilities
+                        SourceCodeManagerUtilities default
                             removeSourceContainerForClass:eachClassToRemove
                             confirm:true
                             warn:true
@@ -22563,7 +25527,7 @@
             (CheckForInstancesWhenRemovingClasses == false or:[
                     aSubClass hasInstances not or:[
                             self confirm:(resources string:'''%1'' has instances - remove anyway ?'
-                                        with:aSubClass name allBold)
+                                                    with:aSubClass name allBold)
                         ]
                 ]) ifTrue:[
                 classesToRemove add:aSubClass.
@@ -22603,7 +25567,7 @@
         ]
     ]
 
-    "Modified: / 30-08-2007 / 19:01:37 / cg"
+    "Modified: / 21-12-2011 / 20:22:34 / cg"
 !
 
 askForSuperclassToGenerateTestMethod:selector
@@ -23117,7 +26081,6 @@
 !
 
 classMenuExcludeFromProject
-
     |projectDefinitionClasses|
 
     projectDefinitionClasses := (self selectedClasses value collect:[:cls | cls projectDefinitionClass]) asSet.
@@ -23136,7 +26099,7 @@
     ].
 
     "Created: / 19-02-2007 / 17:29:12 / cg"
-    "Modified: / 30-08-2007 / 18:28:10 / cg"
+    "Modified: / 26-01-2012 / 14:05:59 / cg"
 !
 
 classMenuFileOutAs
@@ -23279,10 +26242,12 @@
     "create a visitor acceptor method"
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate Accept-Visitor Method for %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate Accept-Visitor Method for %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             generator createAcceptVisitorMethodIn:eachClass theNonMetaclass
         ].
+
+    "Modified: / 21-01-2012 / 10:22:31 / cg"
 !
 
 classMenuGenerateAccessMethods
@@ -23357,8 +26322,8 @@
      otherwise for that selected instvar."
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate Access Methods in %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate Access Methods in %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             |names|
 
             names := self variableFilter value.
@@ -23375,8 +26340,7 @@
                 lazyInitialization:lazyInitialization
         ]
 
-    "Modified: / 18.8.1997 / 15:44:10 / cg"
-    "Created: / 7.8.1998 / 18:17:18 / cg"
+    "Created: / 07-08-1998 / 18:17:18 / cg"
 !
 
 classMenuGenerateAccessMethodsWithLazyInitialization
@@ -23395,11 +26359,9 @@
 classMenuGenerateApplicationCode
     "create application code methods"
 
-    self
-        generateUndoableChangeOverSelectedClasses:'Generate ApplicationCode in %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
-            self classMenuGenerateApplicationCodeFor:(eachClass theNonMetaclass) using:generator
-        ]
+    self classMenuGenerateApplicationCodeForClasses:(self selectedClasses value ? #())
+
+    "Modified: / 21-01-2012 / 11:10:11 / cg"
 !
 
 classMenuGenerateApplicationCodeFor:cls using:generator
@@ -23425,14 +26387,30 @@
     "Modified: / 19-08-2011 / 01:58:40 / cg"
 !
 
+classMenuGenerateApplicationCodeForClasses:classes
+    "create application code methods"
+
+    self
+        generateUndoableChange:'Generate ApplicationCode in %(singleClassNameOrNumberOfClasses)'
+        overClasses:classes
+        via:[:generator :eachClass |
+            generator confirmChanges:false.
+            self classMenuGenerateApplicationCodeFor:(eachClass theNonMetaclass) using:generator
+        ]
+
+    "Created: / 21-01-2012 / 11:09:47 / cg"
+!
+
 classMenuGenerateClassInitializationCode
     "create #initialize method on the class side"
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate Class Initializer in %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate Class Initializer in %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             generator createClassInitializeMethodIn:eachClass theMetaclass.
         ]
+
+    "Modified: / 21-01-2012 / 10:22:58 / cg"
 !
 
 classMenuGenerateClassTypeTestMethods
@@ -23452,12 +26430,12 @@
     ].
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate ClassType Testers'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate ClassType Testers'
+        overSelectedClassesVia:[:generator :eachClass |
             generator createClassTypeTestMethodsIn:cls theNonMetaclass forClasses:subclasses
         ].
 
-    "Modified: / 01-03-2007 / 20:51:07 / cg"
+    "Modified: / 21-01-2012 / 10:23:07 / cg"
 !
 
 classMenuGenerateClassTypeTestMethodsForThisClass
@@ -23475,10 +26453,12 @@
     superclass isNil ifTrue:[^ self].
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate ClassType Testers'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate ClassType Testers'
+        overSelectedClassesVia:[:generator :eachClass |
             generator createClassTypeTestMethodsIn:(superclass theNonMetaclass) forClasses:(Array with:eachClass)
         ].
+
+    "Modified: / 21-01-2012 / 10:23:15 / cg"
 !
 
 classMenuGenerateCopyrightMethod
@@ -23495,23 +26475,23 @@
     SmalltalkCodeGeneratorTool copyrightTemplate:copyRightText.
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate Copyright Method in %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate Copyright Method in %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             |metaClass |
 
             metaClass := eachClass theMetaclass.
             generator createCopyrightMethodFor:copyRightText for:metaClass.
         ]
 
-    "Modified: / 31-01-2011 / 18:30:04 / cg"
+    "Modified: / 21-01-2012 / 10:23:22 / cg"
 !
 
 classMenuGenerateDocumentationMethodFromComment
     "create documentation method from comment"
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate Documentation method in %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate Documentation method in %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             |cls|
 
             cls := eachClass theMetaclass.
@@ -23522,14 +26502,16 @@
                 ].
             ].
         ]
+
+    "Modified: / 21-01-2012 / 10:23:31 / cg"
 !
 
 classMenuGenerateDocumentationStubs
     "create documentation methods"
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate Documentation in %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate Documentation in %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             |metaClass |
 
             metaClass := eachClass theMetaclass.
@@ -23540,19 +26522,23 @@
             "/ but only if not already present.
             generator createExamplesMethodFor:metaClass.
         ]
+
+    "Modified: / 21-01-2012 / 10:23:38 / cg"
 !
 
 classMenuGenerateEnumTypeCode
     "create an enumeration type"
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate EnumTypeCode in %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate EnumTypeCode in %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             |cls|
 
             cls := eachClass theNonMetaclass.
             generator createEnumTypeCodeFor:cls
         ]
+
+    "Modified: / 21-01-2012 / 10:23:45 / cg"
 !
 
 classMenuGenerateGetterMethods
@@ -23572,30 +26558,36 @@
     "create initialize method"
 
     self
-        generateUndoableChangeOverSelectedClasses:'Initialization Code for %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Initialization Code for %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             generator createInitializationMethodIn:eachClass theNonMetaclass
         ].
+
+    "Modified: / 21-01-2012 / 10:23:53 / cg"
 !
 
 classMenuGenerateInitializeMethod
     "create the initialize method"
 
     self
-        generateUndoableChangeOverSelectedClasses:'Initializer for %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Initializer for %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             generator createInitializationMethodIn:eachClass theNonMetaclass
         ].
+
+    "Modified: / 21-01-2012 / 10:24:01 / cg"
 !
 
 classMenuGenerateInitializedInstanceCreationMethods
     "create new and initialize methods"
 
     self
-        generateUndoableChangeOverSelectedClasses:'Initialized Instance Creation Code for %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Initialized Instance Creation Code for %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             generator createInitializedInstanceCreationMethodsIn:eachClass theNonMetaclass
         ].
+
+    "Modified: / 21-01-2012 / 10:24:07 / cg"
 !
 
 classMenuGenerateMultiSetterMethod
@@ -23627,18 +26619,20 @@
     selector := selector asSymbol.
 
     self
-        generateUndoableChangeOverSelectedClasses:'Parametrized Instance Creation Code for %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Parametrized Instance Creation Code for %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             generator createParametrizedInstanceCreationMethodsNamed:selector in:eachClass theNonMetaclass
         ].
+
+    "Modified: / 21-01-2012 / 10:24:15 / cg"
 !
 
 classMenuGeneratePoolInitializationCode
     "create a Pool initialization template method"
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate Pool Initialization in %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate Pool Initialization in %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             |cls|
 
             cls := eachClass theNonMetaclass.
@@ -23656,20 +26650,24 @@
     "create redefined new methods"
 
     self
-        generateUndoableChangeOverSelectedClasses:'Redefined Instance Creation for %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Redefined Instance Creation for %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             generator createRedefinedInstanceCreationMethodsIn:eachClass theNonMetaclass
         ].
+
+    "Modified: / 21-01-2012 / 10:24:28 / cg"
 !
 
 classMenuGenerateRequiredProtocol
     "create required protocol (all inherited subclassResponsibility methods)"
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate Required Protocol in %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate Required Protocol in %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             generator createClassResponsibleProtocolFor:eachClass
         ]
+
+    "Modified: / 21-01-2012 / 10:24:37 / cg"
 !
 
 classMenuGenerateSetterMethods
@@ -23691,8 +26689,8 @@
     |singletonVarName|
 
     self
-        generateUndoableChangeOverSelectedClasses:'Singleton Pattern for %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Singleton Pattern for %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             |theClass vars defaultNameForSingleton singletonVar|
 
             "/ if any of the selected classes is a subclass of one of the previously processed,
@@ -23729,20 +26727,24 @@
 
 classMenuGenerateStandardPrintOnMethod
     self
-        generateUndoableChangeOverSelectedClasses:'Generate PrintOn Method for %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate PrintOn Method for %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             generator createStandardPrintOnMethodIn:eachClass theNonMetaclass
         ].
+
+    "Modified: / 21-01-2012 / 10:24:51 / cg"
 !
 
 classMenuGenerateUpdateMethod
     "create a standard update method template"
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate%(numClassesOrEmpty)Update Method%(sForPlural)%(forSingleClassOrEmpty)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate%(numClassesOrEmpty)Update Method%(sForPlural)%(forSingleClassOrEmpty)'
+        overSelectedClassesVia:[:generator :eachClass |
             generator createUpdateMethodIn:eachClass theNonMetaclass
         ].
+
+    "Modified: / 21-01-2012 / 10:24:58 / cg"
 !
 
 classMenuGenerateVisitorMethods
@@ -23765,13 +26767,12 @@
     LastVisitorClassName := visitorClassName.
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate Visitor Pattern'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate Visitor Pattern'
+        overSelectedClassesVia:[:generator :eachClass |
             generator createVisitorMethodsIn:eachClass theNonMetaclass andVisitorClass:visitorClass
         ].
 
-    "Modified: / 11.10.2001 / 22:19:09 / cg"
-    "Created: / 11.10.2001 / 22:26:08 / cg"
+    "Created: / 11-10-2001 / 22:26:08 / cg"
 !
 
 classMenuGenerateVisitorMethods2
@@ -23786,7 +26787,7 @@
                     title:'Visitor class'
                     onCancel:nil
                     list:#()
-                    entryCompletionBlock:(self classNameEntryCompletionBlock).
+                    entryCompletionBlock:(DoWhatIMeanSupport classNameEntryCompletionBlock).
 
     visitorClass := self classIfValidNonMetaClassName:visitorClassName.
     visitorClass isNil ifTrue:[^ nil].
@@ -23794,12 +26795,13 @@
     LastVisitorClassName := visitorClassName.
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate Visitor Pattern'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate Visitor Pattern'
+        overSelectedClassesVia:[:generator :eachClass |
             generator createVisitorMethodsIn:eachClass theNonMetaclass andVisitorClass2:visitorClass
         ].
 
     "Created: / 07-07-2009 / 20:41:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
+    "Modified: / 21-01-2012 / 10:25:37 / cg"
 !
 
 classMenuHierarchy
@@ -23829,7 +26831,7 @@
     ].
 
     "Created: / 19-02-2007 / 16:46:16 / cg"
-    "Modified: / 20-02-2007 / 10:39:30 / cg"
+    "Modified: / 26-01-2012 / 14:05:25 / cg"
 !
 
 classMenuInitialize
@@ -24656,7 +27658,7 @@
             ].
     ].
 
-    "Modified: / 30-01-2011 / 15:51:57 / cg"
+    "Modified: / 29-12-2011 / 13:48:54 / cg"
 !
 
 classMenuPrimitiveCode:aspect
@@ -24715,6 +27717,25 @@
     ].
 !
 
+classMenuRecompileAll
+    "recompile selected classes incl all subclasses (kludge - for me)"
+
+    |already|
+
+    already := Set new.
+    self selectedClassesDo:[:each |
+        each withAllSubclassesDo:[:eachClass |
+            (already includes:eachClass theNonMetaclass) ifFalse:[
+                already add:eachClass theNonMetaclass.
+                eachClass theNonMetaclass recompile.
+                eachClass theMetaclass recompile.
+            ]
+        ].
+    ].
+
+    "Created: / 07-09-2011 / 21:23:01 / cg"
+!
+
 classMenuRecompileInstrumented
     self selectedClassesDo:[:eachClass |
         self recompileClassWithInstrumentation:eachClass
@@ -25703,16 +28724,32 @@
 !
 
 generateUndoableChange:nameOfOperation overClasses:classes via:aBlock
-    "helper for code generators"
-
-    |generator count dict className codeGeneratorClass|
-
-    "/ remove this a.s.a.p
-    (classes conform:[:cls | |lang| lang := cls programmingLanguage. lang isSmalltalk or:[lang isSTXJavaScript]]) ifFalse:[
-        Dialog warn:('Sorry.\\For now, this works only for Smalltalk classes.' withCRs).
-        ^ self.
-    ].
-    codeGeneratorClass := classes first programmingLanguage codeGeneratorClass.
+    "helper for code generators; collect changes generated by enumerating
+     classes with a generator into a user-provided block.
+     If classes is nil, the block is called once with a nil class argument."
+
+    |programmingLanguage generator count dict className codeGeneratorClass|
+
+    classes notNil ifTrue:[
+        "/ remove this a.s.a.p
+        "/ check if all classes are either smalltalk or java-script
+        (classes 
+            conform:[:cls | 
+                |lang| 
+
+                lang := cls programmingLanguage. 
+                lang isSmalltalk or:[lang isSTXJavaScript]]
+        ) ifFalse:[
+            Dialog warn:('Sorry.\\For now, this works only for Smalltalk classes.' withCRs).
+            ^ self.
+        ].
+    ].
+
+    programmingLanguage := (classes isEmptyOrNil)
+                    ifTrue:[ SmalltalkLanguage instance ]
+                    ifFalse:[ classes first programmingLanguage ].
+    
+    codeGeneratorClass := programmingLanguage codeGeneratorClass.
     codeGeneratorClass isNil ifTrue:[
         Dialog warn:('Sorry.\\For now, there seems to be no codeGeneratorClass defined for this language.' withCRs).
         ^ self.
@@ -25723,13 +28760,17 @@
 
     count := 0.
     self withWaitCursorDo:[
-        classes do:[:eachClass |
-            eachClass isLoaded ifFalse:[
-                Transcript showCR:'skipping unloaded class: ' , eachClass name.
-            ] ifTrue:[
-                aBlock value:generator value:eachClass.
-                count := count + 1.
-            ]
+        classes isNil ifTrue:[
+            aBlock value:generator value:nil.
+        ] ifFalse:[
+            classes do:[:eachClass |
+                eachClass isLoaded ifFalse:[
+                    Transcript showCR:'skipping unloaded class: ' , eachClass name.
+                ] ifTrue:[
+                    aBlock value:generator value:eachClass.
+                    count := count + 1.
+                ]
+            ].
         ].
 
         dict := Dictionary new.
@@ -25757,7 +28798,18 @@
         ]
     ]
 
-    "Modified: / 30-01-2011 / 15:20:03 / cg"
+    "Modified: / 21-01-2012 / 11:11:24 / cg"
+!
+
+generateUndoableChange:nameOfOperation overSelectedClassesVia:aBlock
+    "helper for code generators"
+
+    self
+        generateUndoableChange:nameOfOperation
+        overClasses:(self selectedClasses value ? #())
+        via:aBlock
+
+    "Created: / 21-01-2012 / 10:22:19 / cg"
 !
 
 generateUndoableChangeOverSelectedClasses:nameOfOperation via:aBlock
@@ -25772,10 +28824,12 @@
 generateUndoableChangeOverSelectedMethods:nameOfOperation via:aBlock
     "helper for code generators"
 
-    |generator count dict method methodName languageOfFirstMethod|
-
-    languageOfFirstMethod := self selectedMethods value first mclass language.
-    (self selectedMethods value conform:[:mthd | (mthd mclass language) = languageOfFirstMethod]) ifFalse:[
+    |selMethods generator count dict method methodName languageOfFirstMethod|
+
+    selMethods := self selectedMethods value.
+
+    languageOfFirstMethod := selMethods first mclass programmingLanguage.
+    (selMethods conform:[:mthd | (mthd mclass programmingLanguage) = languageOfFirstMethod]) ifFalse:[
         Dialog warn:'All methods must be defined in the same programming language'.
         ^ self
     ].
@@ -25810,7 +28864,8 @@
 
     generator executeCollectedChangesNamed:(nameOfOperation expandPlaceholdersWith:dict)
 
-    "Modified: / 30-01-2011 / 15:20:35 / cg"
+    "Modified: / 06-12-2011 / 15:27:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-12-2011 / 15:46:19 / cg"
 !
 
 launchSelectedApplication
@@ -25949,9 +29004,10 @@
 
     compile := 
         [:cls :sel :mthd |
-            (mthd sends:#subclassResponsibility) ifFalse:[
+            ((mthd sends:#subclassResponsibility)
+            or:[ (mthd sends:#subclassResponsibility:) ]) ifFalse:[
                 mthd hasPrimitiveCode ifFalse:[
-                    cls recompile:sel usingCompilerClass:InstrumentingCompiler
+                    cls recompile:sel usingCompiler:InstrumentingCompiler new
                 ]
             ]
         ].
@@ -25975,7 +29031,7 @@
     ].
 
     "Created: / 10-08-2010 / 14:36:45 / cg"
-    "Modified: / 06-07-2011 / 21:44:17 / cg"
+    "Modified: / 30-09-2011 / 12:46:34 / cg"
 !
 
 recompileMethodWithInstrumentation:aMethod
@@ -25983,7 +29039,7 @@
         aMethod hasPrimitiveCode ifFalse:[
             aMethod mclass 
                 recompile:aMethod selector
-                usingCompilerClass:InstrumentingCompiler
+                usingCompiler:InstrumentingCompiler new
         ]
     ]
 
@@ -26078,6 +29134,12 @@
     ]
 !
 
+spawnBrowserOnClass:cls
+    self spawnClassBrowserFor:(Array with:cls) in:#newBuffer
+
+    "Created: / 26-10-2011 / 18:28:21 / cg"
+!
+
 spawnClassBrowserFor:classes in:where
     "browse selected class(es);
         where is: #newBrowser - open a new browser showing the classes
@@ -26103,11 +29165,13 @@
 
     allClasses := OrderedCollection new.
     classes do:[:eachClass |
-        eachClass withAllPrivateClassesDo:[:everyClass |
+        eachClass theNonMetaclass withAllPrivateClassesDo:[:everyClass |
             allClasses add:everyClass
         ].
     ].
     ^ self spawnClassBrowserFor:allClasses label:titleOrNil in:where select:true
+
+    "Modified: / 19-10-2011 / 16:06:25 / cg"
 !
 
 spawnClassBrowserFor:classes label:labelOrNil in:where select:doSelectIn
@@ -26125,7 +29189,7 @@
         meta := singleClass isMeta.
         doSelect := true.
     ] ifFalse:[
-        spec := #multipleClassBrowserSpec.
+        spec := #fullBrowserSpec. "/#multipleClassBrowserSpec.
         meta := self meta value ? false.
     ].
 
@@ -26163,7 +29227,7 @@
             brwsr meta onChangeEvaluate:[ brwsr classListGenerator changed ].
         ]
 
-    "Modified: / 1.3.2000 / 11:54:08 / cg"
+    "Modified: / 26-10-2011 / 18:49:25 / cg"
 !
 
 spawnClassBrowserForSearch:searchBlock sortBy:sortByWhat in:openHow label:lbl
@@ -26379,68 +29443,61 @@
         ] ifFalse:[
             allRefs := IdentitySet new.
             aCollectionOfClasses do:[:eachClassInQuestion |
-                |sym symInsideNamespace symInsideOwner refsHere|
+                |findRefs sym classesNameSpace symInsideNamespace symInsideOwner refsHere|
 
                 sym := eachClassInQuestion theNonMetaclass name.
-
-                refsHere := self class
-                        findMethodsIn:(Smalltalk allClasses)
-                        where:[:cls :mthd :sel |   
-                                |mSource|
+                classesNameSpace := eachClassInQuestion theNonMetaclass nameSpace.
+
+                findRefs := 
+                    [:setOfClasses | 
+                        self class
+                            findMethodsIn:setOfClasses
+                            where:[:cls :mthdIn :sel |   
+                                |mthd mSource isCandidate isReference usedGlobals|
+
+                                mthd := mthdIn.
+                                mthd isWrapped ifTrue:[ mthd := mthd originalMethod ].
 
                                 "/ kludge: Lazy methods do not include symbols in the literal array - sigh
                                 mthd isLazyMethod ifTrue:[
                                     mSource := mthd source.
-                                    (mSource notNil
-                                    and:[(mSource includesString:sym)
-                                    and:[mthd usedGlobals includes:sym]])
+                                    isCandidate := mSource notNil and:[ mSource includesString:sym].
                                 ] ifFalse:[
-                                     ((mthd referencesLiteral:sym)
-                                     and:[mthd usedGlobals includes:sym])
-                                ]
-                        ].
+                                    isCandidate := mthd referencesLiteral:sym
+                                ].
+                                isReference := false.
+                                isCandidate ifTrue:[
+                                    usedGlobals := mthd usedGlobals.
+                                    isReference := (usedGlobals includes:sym).
+                                    isReference ifFalse:[
+                                        (mthd referencesLiteral:classesNameSpace name) ifTrue:[
+                                            isReference := mthd sendsAny:#(#'at:' #'at:ifAbsent:' #'classNamed:')
+                                        ].
+                                        isReference ifFalse:[
+                                            classesNameSpace ~= Smalltalk ifTrue:[
+                                                (mthd referencesLiteral:#Smalltalk) ifTrue:[
+                                                    isReference := mthd sendsAny:#(#'at:' #'at:ifAbsent:' #'classNamed:')
+                                                ].
+                                            ]
+                                        ]
+                                    ]
+                                ].
+                                isReference
+                            ].
+                    ].
+
+                refsHere := findRefs value:(Smalltalk allClasses).
                 allRefs addAll:refsHere.
 
                 (eachClassInQuestion nameSpace notNil
                 and:[ eachClassInQuestion nameSpace ~~ Smalltalk ]) ifTrue:[
                     symInsideNamespace := eachClassInQuestion theNonMetaclass nameWithoutNameSpacePrefix asSymbol.
-                    refsHere := self class
-                        findMethodsIn:(eachClassInQuestion topNameSpace allClassesWithAllPrivateClasses)
-                        where:[:cls :mthd :sel |   
-                                |mSource|
-
-                                "/ kludge: Lazy methods do not include symbols in the literal array - sigh
-                                mthd isLazyMethod ifTrue:[
-                                    mSource := mthd source.
-                                    (mSource notNil
-                                    and:[(mSource includesString:symInsideNamespace)
-                                    and:[mthd usedGlobals includes:sym]])
-                                ] ifFalse:[
-                                    ((mthd referencesLiteral:symInsideNamespace)
-                                     and:[mthd usedGlobals includes:sym])
-                                ]
-                        ].
+                    refsHere := findRefs value:(eachClassInQuestion topNameSpace allClassesWithAllPrivateClasses).
                     allRefs addAll:refsHere.
                 ].
                 (eachClassInQuestion owningClass notNil) ifTrue:[
                     symInsideOwner := eachClassInQuestion theNonMetaclass nameWithoutPrefix asSymbol.
-
-                    refsHere := self class
-                        findMethodsIn:(Array with:eachClassInQuestion owningClass)
-                        where:[:cls :mthd :sel |   
-                                |mSource|
-
-                                "/ kludge: Lazy methods do not include symbols in the literal array - sigh
-                                mthd isLazyMethod ifTrue:[
-                                    mSource := mthd source.
-                                    (mSource notNil
-                                    and:[(mSource includesString:symInsideOwner)
-                                    and:[mthd usedGlobals includes:sym]])
-                                ] ifFalse:[
-                                    ((mthd referencesLiteral:symInsideOwner)
-                                     and:[mthd usedGlobals includes:sym])
-                                ]
-                        ].
+                    refsHere := findRefs value:(Array with:eachClassInQuestion owningClass).
                     allRefs addAll:refsHere.
                 ].
             ].
@@ -26462,6 +29519,8 @@
             brwsr autoSearchPattern:singleClassName ignoreCase:false.
         ]
     ].
+
+    "Modified (format): / 25-11-2011 / 14:02:17 / cg"
 !
 
 spawnMultipleClassBrowserFor:classes sortBy:sortHow in:where
@@ -26687,13 +29746,15 @@
     aDefinitionClass excludeClasses:toExclude usingCompiler:generator.
 !
 
-includeClassInProject:aClass using:compiler
+includeClassInProject:aClass usingManager:compiler
     "include (add to classList) a class." 
 
     self 
         includeClasses:(Array with: aClass) 
         inProject:aClass projectDefinitionClass 
-        using:compiler
+        usingManager:compiler
+
+    "Created: / 21-12-2011 / 20:17:48 / cg"
 !
 
 includeClasses: toInclude inProject:aDefinitionClass using:compiler
@@ -26723,11 +29784,163 @@
     "Created: / 08-02-2011 / 09:45:56 / cg"
 !
 
+askForRepositoryVersionOf:aClass withSourceDo:aTwoArgBlock
+    "helper for comapre class against version and compare method against version.
+     Ask for a version in the repository, fetch it and call ablock with
+     the source and revision info string as arguments.
+     Returns false, if no source could be fetched, true if the block was called"
+
+    |aStream comparedSource rev revInfoString mgr
+     nm msg rev2 newestRev
+     containerModule containerPackage containerFile rslt
+     pkg info mod dir versionsAreTheSame|
+
+    nm := aClass name.
+    mgr := SourceCodeManagerUtilities default sourceCodeManagerFor:aClass.
+    mgr isNil ifTrue:[
+        ^ false
+    ].
+    rev := aClass binaryRevision.
+    rev2 := aClass revision.
+    rev isNil ifTrue:[
+        rev := rev2
+    ].
+    rev isNil ifTrue:[
+        "/
+        "/ class not in repository - allow compare against any other containers newest contents
+        "/
+        self normalLabel.
+
+        pkg := aClass package.
+        (pkg notNil and:[pkg ~= PackageId noProjectID]) ifTrue:[
+            containerModule := pkg upTo:$:.
+            containerPackage := pkg copyFrom:(containerModule size + 2).
+        ].
+        containerModule size == 0 ifTrue:[
+            containerModule := (SourceCodeManagerUtilities lastModule) ? Project current repositoryModule.
+        ].
+        containerPackage size == 0 ifTrue:[
+            containerPackage := (SourceCodeManagerUtilities lastPackage) ? Project current package.
+        ].
+        rslt := SourceCodeManagerUtilities default
+            askForContainer:(resources string:'The class seems to have no repository information.\\Do you want to compare it against an existing containers contents ?')
+            title:'Container to compare' note:nil
+            initialModule:containerModule
+            initialPackage:containerPackage
+            initialFileName:(aClass nameWithoutPrefix , '.st')
+            forNewContainer:false.
+        rslt isNil ifTrue:[
+            "/ canel
+            ^ false
+        ].
+        containerModule := rslt at:#module.
+        containerPackage := rslt at:#package.
+        containerFile := rslt at:#fileName.
+        SourceCodeManagerUtilities lastModule:containerModule.
+        SourceCodeManagerUtilities lastPackage:containerPackage.
+    ] ifFalse:[
+        "/
+        "/ class in repository - ask for revision
+        "/
+        newestRev := mgr newestRevisionOf:aClass.
+
+        msg := resources string:'Compare to revision: (empty for newest)'.
+        rev notNil ifTrue:[
+            msg := msg , '\\' , (resources string:'Current %1 is based upon rev %2.'
+                                           with:nm allBold with:rev).
+            (rev2 notNil and:[rev2 ~= rev]) ifTrue:[
+                msg := msg , '\' , (resources string:'And has been checked into the repository as %1.' with:rev2)
+            ]
+        ].
+        newestRev notNil ifTrue:[
+            msg := msg , '\' , (resources string:'Newest in reporitory is %1.' with:newestRev)
+        ].
+
+        self normalLabel.
+        rev := SourceCodeManagerUtilities default
+                    askForExistingRevision:msg
+                    title:'Compare with repository'
+                    class:aClass
+    ].
+
+    versionsAreTheSame := false.
+    (rev notNil or:[containerFile notNil]) ifFalse:[
+        self normalLabel.
+        ^ false
+    ].
+
+    rev notNil ifTrue:[
+        rev withoutSpaces isEmpty ifTrue:[
+            msg := 'extracting newest %1 (' , (newestRev ? '???') , ')'.
+            "/ aStream := mgr getMostRecentSourceStreamForClassNamed:nm.
+            rev := newestRev.
+            revInfoString := 'newest'.
+        ] ifFalse:[
+            msg := 'extracting previous %1'.
+            revInfoString := rev
+        ].
+        aStream := mgr getSourceStreamFor:aClass revision:rev.
+    ] ifFalse:[
+        msg := 'extracting newest version from ' , containerModule , '/' , containerPackage, '/' , containerFile.
+        aStream := mgr streamForClass:nil fileName:containerFile revision:#newest directory:containerPackage module:containerModule cache:false.
+        revInfoString := '???'
+    ].
+    self busyLabel:msg with:nm.
+
+    aStream isNil ifTrue:[
+        info := mgr sourceInfoOfClass:aClass.
+        info notNil ifTrue:[
+            mod := info at:#module ifAbsent:'??'.
+            dir := info at:#directory ifAbsent:'??'.
+        ].
+
+        self warn:(resources
+                     string:'Could not extract source from repository (for module: ''%1'' , directory: ''%2'' , revision: ''%3'')'
+                     with:mod with:dir with:revInfoString).
+        self normalLabel.
+        ^ false
+    ].
+
+    aStream class readErrorSignal handle:[:ex |
+        self warn:('read error while reading extracted source\\' , ex description) withCRs.
+        aStream close.
+        self normalLabel.
+        ^ false
+    ] do:[
+        comparedSource := aStream contents asString.
+    ].
+    aStream close.
+
+    revInfoString = '(newest)' ifTrue:[
+        |rev|
+
+        (rev := mgr newestRevisionOf:aClass) notNil ifTrue:[
+            revInfoString := '(newest is ' , rev , ')'
+        ]
+    ].
+
+    aTwoArgBlock value:comparedSource value:revInfoString.
+
+    self normalLabel.
+    ^ true.
+
+    "Created: / 29-11-2011 / 13:10:05 / cg"
+!
+
 checkInClasses:aCollectionOfClasses withInfo:logInfoOrNil withCheck:doCheck
     "check a bunch of classes into the source repository.
      If logInfoOrNil isNil, ask for one."
 
-    |classesNotInPackage msg answer errors|
+    self checkInClasses:aCollectionOfClasses withInfo:logInfoOrNil withCheck:doCheck usingManager:nil
+
+    "Modified: / 21-12-2011 / 18:23:10 / cg"
+!
+
+checkInClasses:aCollectionOfClasses withInfo:logInfoOrNil withCheck:doCheck usingManager:aManagerOrNil
+    "check a bunch of classes into the source repository.
+     If logInfoOrNil isNil, ask for one."
+
+    |classesNotInPackage utilities msg answer errors|
 
     errors := self checkCompilabilityOfAll:aCollectionOfClasses errorsOnly:true.
     errors notEmptyOrNil ifTrue:[
@@ -26737,11 +29950,16 @@
         ].
     ].
 
+    utilities := aManagerOrNil isNil
+                    ifTrue:[ SourceCodeManagerUtilities default ]
+                    ifFalse:[ aManagerOrNil utilities ].
+
     self withActivityNotificationsRedirectedToInfoLabelDo:[
-        SourceCodeManagerUtilities
+        utilities
             checkinClasses:aCollectionOfClasses
             withInfo:logInfoOrNil
-            withCheck:doCheck.
+            withCheck:doCheck
+            usingManager:aManagerOrNil.
     ].
 
     classesNotInPackage := aCollectionOfClasses select:[:cls |
@@ -26771,20 +29989,20 @@
                                       )
                     labels:(resources array:#('Cancel' 'Autoloaded' 'Compiled')).
         answer == nil ifTrue:[^ self ].
-        answer == true ifTrue:[
-            classesNotInPackage do:[:eachClass |
-                eachClass projectDefinitionClass
-                    includeClasses:{ eachClass } usingCompiler:nil
-            ].
-        ] ifFalse:[
-            classesNotInPackage do:[:eachClass |
-                eachClass projectDefinitionClass
-                    makeClassesAutoloaded:{ eachClass } usingCompiler:nil
-            ].
-        ].
-    ].
-
-    "Modified: / 02-11-2010 / 13:19:35 / cg"
+
+        classesNotInPackage do:[:eachClass |
+            |defClass|
+
+            defClass := eachClass projectDefinitionClass.
+            answer == true ifTrue:[
+                defClass includeClasses:{ eachClass } usingCompiler:nil
+            ] ifFalse:[
+                defClass makeClassesAutoloaded:{ eachClass } usingCompiler:nil
+            ].
+        ].
+    ].
+
+    "Created: / 21-12-2011 / 18:22:58 / cg"
 !
 
 checkOutClass:aClass askForRevision:askForRevision
@@ -26801,6 +30019,22 @@
     "Modified: / 01-03-2007 / 17:47:32 / cg"
 !
 
+checkOutClass:aClass askForRevision:askForRevision usingManager: manager
+    "check-out a single class from the source repository.
+     Offer a chance to either merge-in a version, or overload the current version.
+     If askForRevision is false, fetch the newest revision(s),
+     otherwise ask for the revision."
+
+    self withActivityNotificationsRedirectedToInfoLabelDo:[
+        manager utilities
+            checkoutClass:aClass askForRevision:askForRevision askForMerge:true.
+    ]
+
+    "Modified: / 01-03-2007 / 17:47:32 / cg"
+    "Created: / 11-10-2011 / 23:12:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:26:27 / cg"
+!
+
 checkOutClasses:classes askForRevision:askForRevision
     "check-out a bunch of classes from the source repository.
      Offer chance to either overwrite the current version,
@@ -26808,6 +30042,18 @@
      If askForRevision is false, fetch the newest revision(s),
      otherwise ask for the revision."
 
+    self checkOutClasses:classes askForRevision:askForRevision usingManager:nil
+
+    "Modified: / 22-12-2011 / 11:05:05 / cg"
+!
+
+checkOutClasses:classes askForRevision:askForRevision usingManager:aManagerOrNil
+    "check-out a bunch of classes from the source repository.
+     Offer chance to either overwrite the current version,
+     or merge-in the repository version.
+     If askForRevision is false, fetch the newest revision(s),
+     otherwise ask for the revision."
+
     |alreadyCheckedOut|
 
     (self askIfModified:'Code was modified.\\CheckOut anyway ?')
@@ -26842,7 +30088,12 @@
                        ex proceed.
                   ] do:[
                        self withActivityNotificationsRedirectedToInfoLabelDo:[
-                           SourceCodeManagerUtilities
+                            |utilities|
+
+                            utilities := aManagerOrNil notNil
+                                            ifTrue:[ aManagerOrNil utilities ]
+                                            ifFalse:[ SourceCodeManagerUtilities default ].
+                            utilities
                                 checkoutClass:cls askForRevision:askForRevision askForMerge:true askForConfirmation:false.
                        ].
                        alreadyCheckedOut add:cls.
@@ -26865,7 +30116,7 @@
                                 AbortAllOperationRequest raise    "/ cancel
                             ].
                             answer == true ifTrue:[
-                                self checkOutClass:owner askForRevision:askForRevision.
+                                self checkOutClass:owner askForRevision:askForRevision usingManager:aManagerOrNil.
                                 alreadyCheckedOut add:owner.
                             ].
                         ]
@@ -26874,20 +30125,16 @@
     ].
     self normalLabel.
 
-    "Modified: / 09-02-2011 / 14:01:59 / cg"
+    "Created: / 11-10-2011 / 23:11:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:15:33 / cg"
 !
 
 classMenuCheckIn
     "check a class into the source repository (with checks)"
 
-    |doChecks|
-
-    doChecks := (UserPreferences current at:#checkClassesWhenCheckingIn ifAbsent:true).
-    doChecks := doChecks asValue.
-    self classMenuCheckIn:doChecks.
-    doChecks value ~~ (UserPreferences current at:#checkClassesWhenCheckingIn ifAbsent:true) ifTrue:[
-        UserPreferences current at:#checkClassesWhenCheckingIn put:doChecks value
-    ].
+    self classMenuCheckInUsingManager:nil
+
+    "Modified: / 21-12-2011 / 18:20:40 / cg"
 !
 
 classMenuCheckIn:doCheck
@@ -26897,9 +30144,9 @@
      Otherwise, a no check is done, and the class is quickly checked in.
      "
 
-    ^ self
-        classMenuCheckIn:doCheck
-        classes:(self selectedClasses value)
+    ^ self classMenuCheckIn:doCheck usingManager:nil
+
+    "Modified: / 21-12-2011 / 18:21:44 / cg"
 !
 
 classMenuCheckIn:doCheck classes:classesSelected
@@ -26909,6 +30156,18 @@
      Otherwise, a no check is done, and the class is quickly checked in.
      "
 
+    self classMenuCheckIn:doCheck classes:classesSelected usingManager:nil
+
+    "Modified: / 21-12-2011 / 18:22:24 / cg"
+!
+
+classMenuCheckIn:doCheck classes:classesSelected usingManager:aManagerOrNil
+    "check a class into the source repository.
+     If doCheck is true, perform some checks (leftover halts etc.) on
+     the class (which may take some time with huge classes).
+     Otherwise, a no check is done, and the class is quickly checked in.
+     "
+
     |classesToCheckIn|
 
     (self askIfModified:'Code was modified.\\CheckIn (without that modification) anyway ?')
@@ -26955,18 +30214,34 @@
             ].
 
     classesToCheckIn notEmpty ifTrue:[
-        self checkInClasses:classesToCheckIn withInfo:nil withCheck:doCheck.
+        self checkInClasses:classesToCheckIn withInfo:nil withCheck:doCheck usingManager:aManagerOrNil.
     ].
     self normalLabel.
+
+    "Created: / 21-12-2011 / 18:22:09 / cg"
+!
+
+classMenuCheckIn:doCheck usingManager:aManagerOrNil
+    "check a class into the source repository.
+     If doCheck is true, perform some checks (leftover halts etc.) on
+     the class (which may take some time with huge classes).
+     Otherwise, a no check is done, and the class is quickly checked in.
+     "
+
+    ^ self
+        classMenuCheckIn:doCheck
+        classes:(self selectedClasses value)
+        usingManager:aManagerOrNil
+
+    "Created: / 21-12-2011 / 18:21:30 / cg"
 !
 
 classMenuCheckInAllChangedClasses
     "check in all changed classes into the source repository (with checks)"
 
-    |doChecks|
-
-    doChecks := (UserPreferences current at:#checkClassesWhenCheckingIn ifAbsent:true).
-    ^ self classMenuCheckInAllChangedClasses:doChecks
+    ^ self classMenuCheckInAllChangedClassesUsingManager:nil
+
+    "Modified: / 21-12-2011 / 19:52:29 / cg"
 !
 
 classMenuCheckInAllChangedClasses:doCheck
@@ -26976,9 +30251,43 @@
      Otherwise, a no check is done, and the class is quickly checked in.
     "
 
+    ^ self classMenuCheckInAllChangedClasses:doCheck usingManager:nil
+
+    "Modified: / 21-12-2011 / 19:53:00 / cg"
+!
+
+classMenuCheckInAllChangedClasses:doCheck usingManager:aManagerOrNil
+    "check all changed classes into the source repository.
+     If doCheck is true, perform some checks (leftover halts etc.) on
+     the class (which may take some time with huge classes).
+     Otherwise, a no check is done, and the class is quickly checked in.
+    "
+
     ^ self
         classMenuCheckIn:doCheck
         classes:(ChangeSet current changedClasses)
+        usingManager:aManagerOrNil
+
+    "Created: / 21-12-2011 / 19:52:50 / cg"
+!
+
+classMenuCheckInAllChangedClassesUsingManager:aManagerOrNil
+    "check in all changed classes into the source repository (with checks)"
+
+    |doChecks|
+
+    doChecks := (UserPreferences current at:#checkClassesWhenCheckingIn ifAbsent:true).
+    ^ self classMenuCheckInAllChangedClasses:doChecks usingManager:aManagerOrNil
+
+    "Created: / 21-12-2011 / 19:52:16 / cg"
+!
+
+classMenuCheckInAllChangedClassesUsingManagerNamed:aManagerName
+    "check in all changed classes into the source repository (with checks)"
+
+    ^ self classMenuCheckInAllChangedClassesUsingManager:(Smalltalk at:aManagerName asSymbol)
+
+    "Created: / 21-12-2011 / 20:04:27 / cg"
 !
 
 classMenuCheckInExtensions
@@ -27021,13 +30330,39 @@
 
     (self askIfModified:'Code was modified.\\CheckIn (without that modification) anyway ?')
     ifFalse:[^ self].
-
-    self
-        projectMenuCheckInProject:aProjectID
-        classes:false
-        extensions:true
-        buildSupport:false
-        askForMethodsInOtherPackages:false
+    self withWaitCursorDo:[
+        self
+            projectMenuCheckInProject:aProjectID
+            classes:false
+            extensions:true
+            buildSupport:false
+            askForMethodsInOtherPackages:false
+    ]
+
+    "Modified: / 08-09-2011 / 04:07:58 / cg"
+!
+
+classMenuCheckInUsingManager:aManagerOrNil
+    "check a class into the source repository (with checks)"
+
+    |doChecks|
+
+    doChecks := (UserPreferences current at:#checkClassesWhenCheckingIn ifAbsent:true).
+    doChecks := doChecks asValue.
+    self classMenuCheckIn:doChecks usingManager:aManagerOrNil.
+    doChecks value ~~ (UserPreferences current at:#checkClassesWhenCheckingIn ifAbsent:true) ifTrue:[
+        UserPreferences current at:#checkClassesWhenCheckingIn put:doChecks value
+    ].
+
+    "Created: / 21-12-2011 / 18:20:19 / cg"
+!
+
+classMenuCheckInUsingManagerNamed:sourceCodeManagerClassName
+    "check a class into the source repository (with checks)"
+
+    self classMenuCheckInUsingManager:(Smalltalk at:sourceCodeManagerClassName asSymbol)
+
+    "Created: / 21-12-2011 / 20:03:01 / cg"
 !
 
 classMenuCheckOut
@@ -27049,6 +30384,31 @@
     self checkOutClasses:(self selectedClasses value) askForRevision:false
 !
 
+classMenuCheckOutNewestUsingManager: manager
+    "check-out the newest version of the selected class(es) from the source repository.
+     Offer chance to either overwrite the current version,
+     or merge-in the repository version.
+     "
+
+    self checkOutClasses:(self selectedClasses value) askForRevision:false usingManager: manager
+
+    "Modified: / 11-10-2011 / 23:09:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:16:21 / cg"
+!
+
+classMenuCheckOutUsingManager: manager
+    "check-out selected class(es) from the source repository.
+     Individually ask for class revisions.
+     Offer chance to either overwrite the current version,
+     or merge-in the repository version.
+     "
+
+    self checkOutClasses:(self selectedClasses value) askForRevision:true usingManager: manager
+
+    "Modified: / 11-10-2011 / 23:10:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:16:41 / cg"
+!
+
 classMenuCompareAgainstNewestInRepository
     "open a diff-textView comparing the current (in-image) version
      with the the newest version found in the repository.
@@ -27059,13 +30419,52 @@
     "Modified: / 13-10-2006 / 11:44:09 / cg"
 !
 
+classMenuCompareAgainstNewestInRepositoryUsingManager:aManagerOrNil
+    "open a diff-textView comparing the current (in-image) version
+     with the the newest version found in the repository.
+     That is the most recent version."
+
+    self doCompareClassesWithRepository:(self selectedClasses value) usingManager:aManagerOrNil.
+
+    "Modified: / 13-10-2006 / 11:44:09 / cg"
+    "Created: / 21-12-2011 / 19:55:56 / cg"
+!
+
+classMenuCompareAgainstNewestInRepositoryUsingManagerNamed:sourceCodeManagerClassName
+    "open a diff-textView comparing the current (in-image) version
+     with the the newest version found in the repository.
+     That is the most recent version."
+
+    self classMenuCompareAgainstNewestInRepositoryUsingManager:(Smalltalk at:sourceCodeManagerClassName asSymbol)
+
+    "Created: / 21-12-2011 / 20:35:43 / cg"
+!
+
 classMenuCompareAgainstOriginalInRepository
     "open a diff-textView comparing the current (in-image) version
      with the the base version found in the repository.
      That is the version on which the class was based upon, not the most recent one."
 
+    |currentClass mgr|
+
+    currentClass := self theSingleSelectedLoadedNonMetaclassOrNil.
+    currentClass isNil ifTrue:[
+        self warn:'Cannot compare unloaded classes.'.
+        ^ self.
+    ].
+    mgr := SourceCodeManagerUtilities default sourceCodeManagerFor:currentClass.
+    self classMenuCompareAgainstOriginalInRepositoryUsingManager:mgr.
+
+    "Modified: / 21-12-2011 / 22:49:35 / cg"
+!
+
+classMenuCompareAgainstOriginalInRepositoryUsingManager: manager
+    "open a diff-textView comparing the current (in-image) version
+     with the the base version found in the repository.
+     That is the version on which the class was based upon, not the most recent one."
+
     |currentClass
-     aStream comparedSource currentSource rev revString thisRevString mgr
+     aStream comparedSource currentSource rev revInfo revString thisRevString mgr
      nm msg newestRev brwsr|
 
     currentClass := self theSingleSelectedLoadedNonMetaclassOrNil.
@@ -27075,14 +30474,16 @@
     ].
 
     nm := currentClass name.
-    mgr := SourceCodeManagerUtilities sourceCodeManagerFor:currentClass.
+    mgr := manager.
     mgr isNil ifTrue:[
         ^ self
     ].
-    rev := currentClass binaryRevision.
-    rev isNil ifTrue:[
-        rev := currentClass revision.
-    ].
+    revInfo := currentClass revisionInfoOfManager: manager.
+    revInfo ifNil:[
+        self warn:('The class seems to have no repository information for %1.' bindWith: mgr managerTypeName).
+        ^ self
+    ].
+    rev := revInfo revision.
     rev isNil ifTrue:[
         self warn:'The class seems to have no repository information.'.
         ^ self
@@ -27153,7 +30554,96 @@
     ].
     self normalLabel.
 
-    "Modified: / 01-03-2007 / 20:47:37 / cg"
+    "Modified: / 11-10-2011 / 14:37:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:28:18 / cg"
+!
+
+classMenuCompareAgainstOriginalInRepositoryUsingManagerNamed:sourceCodeManagerClassName
+    "open a diff-textView comparing the current (in-image) version
+     with the the base version found in the repository.
+     That is the version on which the class was based upon, not the most recent one."
+
+    self classMenuCompareAgainstOriginalInRepositoryUsingManager:(Smalltalk at:sourceCodeManagerClassName asSymbol)
+
+    "Created: / 21-12-2011 / 22:50:51 / cg"
+!
+
+classMenuCompareClassExtensionsWithRepository
+    "open a diff-textView comparing the current (in-image) extensions of the selected class
+     with the some extensions version found in the repository."
+
+    |currentClass extensionMethods extensionMethodChangesInImage extensionProjectDefinitions 
+     extensionMethodChangesInRepository diffSet versionsAreTheSame|
+
+    currentClass := self theSingleSelectedLoadedNonMetaclassOrNil.
+    currentClass isNil ifTrue:[^ self].
+
+    extensionMethods := currentClass methodDictionary values select:[:mthd | mthd isExtension].
+
+    extensionProjectDefinitions := Set new.
+    ProjectDefinition allSubclasses do:[:eachProjectDefinition |
+        (eachProjectDefinition extensionClasses includes:currentClass) ifTrue:[
+            extensionProjectDefinitions add:eachProjectDefinition.
+        ].
+    ].
+
+    extensionMethodChangesInImage := ChangeSet forExistingClass:currentClass withExtensions:true extensionsOnly:true.
+    extensionMethodChangesInRepository := ChangeSet new.
+
+    extensionProjectDefinitions do:[:eachProjectDefinition |
+        |mgr revString info rev package changesHere changesHereForMe|
+
+        package := eachProjectDefinition package.
+        mgr := SourceCodeManagerUtilities default sourceCodeManagerFor:eachProjectDefinition.
+        mgr isNil ifTrue:[
+            Dialog warn:(resources string:'No sourceCodeManager known for %1.' with:eachProjectDefinition package).
+        ] ifFalse:[
+            rev := mgr
+                    newestRevisionInFile:'extensions.st' 
+                    directory:(eachProjectDefinition directory) 
+                    module:(eachProjectDefinition module).
+            "/ revString := eachProjectDefinition perform:(mgr nameOfVersionMethodForExtensions) ifNotUnderstood:nil.
+            "/ revString isNil ifTrue:[
+            "/    Dialog warn:(resources string:'%1 seems to not have any extensions (loaded)' with:package).
+            "/] ifFalse:[
+            "/    info := mgr revisionInfoFromString:revString.
+            "/    rev := info revision.
+                "/
+                "/ ask for revision
+                "/
+"/                newestRev := mgr 
+"/                                newestRevisionInFile:'extensions.st' 
+"/                                directory:(eachProjectDefinition directory) 
+"/                                module:(eachProjectDefinition module).
+
+                changesHere := SourceCodeManagerUtilities default
+                    changeSetForExtensionMethodsForPackage:package 
+                    revision:rev orAskForRevision:false 
+                    usingManager:mgr.
+                changesHereForMe := changesHere select:[:chg | chg isMethodChange
+                                                               and:[chg changeClass == currentClass]].
+                extensionMethodChangesInRepository addAll:changesHereForMe.
+            "/ ].
+        ].
+    ].
+
+    versionsAreTheSame := false.
+    diffSet := extensionMethodChangesInImage diffSetsAgainst:extensionMethodChangesInRepository. 
+    diffSet isEmpty ifTrue:[
+        self information:'Versions are identical.'.
+        ^ self
+    ].
+
+    (UserPreferences versionDiffViewerClass)
+        openOnDiffSet:diffSet 
+        labelA:'Current (In Image)'
+        labelB:('Repository (%1 extension package(s))' bindWith:extensionProjectDefinitions size) 
+        title:'Diffs'
+        ignoreExtensions:false.
+
+    self normalLabel.
+
+    "Created: / 12-09-2011 / 11:21:39 / cg"
 !
 
 classMenuCompareExtensionsWithRepository
@@ -27163,13 +30653,14 @@
     |currentClass projectDefinition rev revString mgr msg newestRev diffSet info versionsAreTheSame changeSetForMethodsInRepository changeSetForMethodsInImage|
 
     currentClass := self theSingleSelectedLoadedNonMetaclassOrNil.
-    (currentClass isNil 
-    or:[(projectDefinition := currentClass theNonMetaclass) isProjectDefinition not]) ifTrue:[
-        self warn:'Oops - select a ProjectDefinition class.'.
-        ^ self.
-    ].
-
-    mgr := SourceCodeManagerUtilities sourceCodeManagerFor:projectDefinition.
+    currentClass isNil ifTrue:[^ self].
+
+    (projectDefinition := currentClass theNonMetaclass) isProjectDefinition ifFalse:[
+        self classMenuCompareClassExtensionsWithRepository.
+        ^ self.
+    ].
+
+    mgr := SourceCodeManagerUtilities default sourceCodeManagerFor:projectDefinition.
     mgr isNil ifTrue:[
         ^ self
     ].
@@ -27201,7 +30692,7 @@
     ].
 
     self normalLabel.
-    rev := SourceCodeManagerUtilities
+    rev := SourceCodeManagerUtilities default
                 askForExistingRevision:msg 
                 title:'Compare Extensions against Revision' 
                 class:nil 
@@ -27224,10 +30715,10 @@
         revString := rev
     ].
     changeSetForMethodsInRepository :=
-        SourceCodeManagerUtilities
+        SourceCodeManagerUtilities default
             changeSetForExtensionMethodsForPackage:projectDefinition package 
             revision:revString orAskForRevision:false 
-            using:mgr.
+            usingManager:mgr.
 
     changeSetForMethodsInImage := ChangeSet forExistingMethods:(
                                     Method allInstances 
@@ -27241,12 +30732,19 @@
         openOnDiffSet:diffSet 
         labelA:'Current (In Image)'
         labelB:'Repository (',rev,')' 
-        title:'Diffs'.
+        title:'Diffs'
+        ignoreExtensions:false.
 
     self normalLabel.
 
     "Created: / 04-01-1997 / 15:48:20 / cg"
-    "Modified: / 01-03-2007 / 20:50:08 / cg"
+    "Modified: / 21-12-2011 / 20:21:14 / cg"
+!
+
+classMenuCompareExtensionsWithRepositoryUsingManager: aManager
+    ^ Dialog warn: 'Not yet implemented'
+
+    "Created: / 21-12-2011 / 20:28:28 / cg"
 !
 
 classMenuCompareTwoRepositoryVersions
@@ -27262,19 +30760,19 @@
     ].
 
     nm := currentClass name.
-    mgr := SourceCodeManagerUtilities sourceCodeManagerFor:currentClass.
+    mgr := SourceCodeManagerUtilities default sourceCodeManagerFor:currentClass.
     mgr isNil ifTrue:[
         ^ self
     ].
 
     self normalLabel.
-    rev1 := SourceCodeManagerUtilities
+    rev1 := SourceCodeManagerUtilities default
                 askForExistingRevision:(resources string:'Compare which revision:')
                 title:(resources string:'Compare which repository version')
                 class:currentClass.
     rev1 isNil ifTrue:[^ self].
 
-    rev2 := SourceCodeManagerUtilities
+    rev2 := SourceCodeManagerUtilities default
                 askForExistingRevision:(resources string:'Against which revision:')
                 title:(resources string:'Against which repository version')
                 class:currentClass.
@@ -27305,6 +30803,71 @@
     "Modified: / 08-02-2011 / 10:26:45 / cg"
 !
 
+classMenuCompareTwoRepositoryVersionsUsingManager: manager
+    "open a diff-textView comparing two versions found in the repository."
+
+    |currentClass source1 source2 mgr
+     nm rev1 rev2 versionsAreTheSame|
+
+    currentClass := self theSingleSelectedLoadedNonMetaclassOrNil.
+    currentClass isNil ifTrue:[
+        self warn:'Cannot compare unloaded classes.'.
+        ^ self.
+    ].
+
+    nm := currentClass name.
+    mgr := manager.
+    mgr isNil ifTrue:[
+        ^ self
+    ].
+
+    self normalLabel.
+    rev1 := manager utilities
+                askForExistingRevision:(resources string:'Compare which revision:')
+                title:(resources string:'Compare which repository version')
+                class:currentClass.
+    rev1 isNil ifTrue:[^ self].
+
+    rev2 := manager utilities
+                askForExistingRevision:(resources string:'Against which revision:')
+                title:(resources string:'Against which repository version')
+                class:currentClass.
+    rev2 isNil ifTrue:[^ self].
+
+    source1 := self getClassSourceFor:currentClass revision:rev1 usingManager: manager.
+    source2 := self getClassSourceFor:currentClass revision:rev2 usingManager: manager.
+
+    self busyLabel:'comparing  ...' with:nil.
+    versionsAreTheSame := (source1 = source2).
+    versionsAreTheSame ifFalse:[
+        self busyLabel:'comparing  ...' with:nil.
+        (UserPreferences versionDiffViewerClass)
+                  openOnClass:currentClass
+                  labelA:(rev1)
+                  sourceA:source1
+                  labelB:(rev2)
+                  sourceB:source2
+                  title:('comparing ' , currentClass name)
+                  ifSame:[versionsAreTheSame := true].
+
+        versionsAreTheSame ifTrue:[
+            self information:'Versions are identical.'.
+        ].
+    ].
+    self normalLabel.
+
+    "Modified: / 11-10-2011 / 23:07:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:28:43 / cg"
+!
+
+classMenuCompareTwoRepositoryVersionsUsingManagerNamed:sourceCodeManagerClassName
+    "open a diff-textView comparing two versions found in the repository."
+
+    self classMenuCompareTwoRepositoryVersionsUsingManager:(Smalltalk at:sourceCodeManagerClassName asSymbol)
+
+    "Created: / 21-12-2011 / 23:13:40 / cg"
+!
+
 classMenuCompareWithFile
     "compare the class against a version in a file"
 
@@ -27321,7 +30884,7 @@
             Transcript showCR:('Cannot compare unloaded class: ' , eachClass name).
         ] ifTrue:[
             fileName := Dialog requestFileName:'Compare against:'.
-            fileName isNil ifTrue:[^ self].
+            fileName isEmptyOrNil ifTrue:[^ self].
 
             self busyLabel:'comparing  ...' with:nil.
 
@@ -27350,7 +30913,8 @@
             openOnDiffSet:allDiffs
             labelA:'Version in File ',fileName
             labelB:'Image'
-            title:title.
+            title:title
+            ignoreExtensions:true.
     ].
 
     self normalLabel.
@@ -27363,7 +30927,71 @@
      with the some version found in the repository."
 
     |currentClass
-     aStream comparedSource currentSource rev revString thisRevString mgr
+     aStream currentSource thisRevString newestRev versionsAreTheSame|
+
+    currentClass := self theSingleSelectedLoadedNonMetaclassOrNil.
+    currentClass isNil ifTrue:[
+        self warn:'Cannot compare unloaded classes.'.
+        ^ self.
+    ].
+
+    self 
+        askForRepositoryVersionOf:currentClass 
+        withSourceDo:[:comparedSource :revString |
+
+            self busyLabel:'generating current source ...' with:nil.
+
+            aStream := '' writeStream.
+            Method flushSourceStreamCache.
+            "/ currentClass fileOutOn:aStream withTimeStamp:false.
+            "/ currentSource := aStream contents asString.
+
+            Class fileOutErrorSignal handle:[:ex |
+                ex proceed
+            ] do:[
+                currentSource := currentClass source asString.
+            ].
+            
+            self busyLabel:'comparing  ...' with:nil.
+            versionsAreTheSame := (comparedSource = currentSource).
+            versionsAreTheSame ifFalse:[
+                thisRevString := currentClass revision.
+                thisRevString isNil ifTrue:[
+                    thisRevString := 'no revision'
+                ].
+
+                self busyLabel:'comparing  ...' with:nil.
+                (UserPreferences versionDiffViewerClass)
+                      openOnClass:currentClass
+                      labelA:('repository: ' , revString) sourceA:comparedSource
+                      labelB:('current: (based on: ' , thisRevString , ')') sourceB:currentSource
+                      title:('comparing ' , currentClass name)
+                      ifSame:[versionsAreTheSame := true].
+            ].
+            versionsAreTheSame ifTrue:[
+                ((currentClass revision = newestRev)
+                and:[currentClass hasUnsavedChanges]) ifTrue:[
+                    (self confirm:'Versions are identical.\\Remove entries from changeSet ?' withCRs) ifTrue:[
+                        ChangeSet current condenseChangesForClass:currentClass.
+                    ].
+                ] ifFalse:[
+                    self information:'Versions are identical.'.
+                ]
+            ].
+        ].
+
+    self normalLabel.
+
+    "Created: / 04-01-1997 / 15:48:20 / cg"
+    "Modified: / 29-11-2011 / 13:19:13 / cg"
+!
+
+classMenuCompareWithRepositoryUsingManager: manager
+    "open a diff-textView comparing the current (in-image) version
+     with the some version found in the repository."
+
+    |currentClass
+     aStream comparedSource currentSource revInfo rev revString thisRevString mgr
      nm msg rev2 newestRev
      containerModule containerPackage containerFile rslt
      pkg info mod dir versionsAreTheSame|
@@ -27375,13 +31003,17 @@
     ].
 
     nm := currentClass name.
-    mgr := SourceCodeManagerUtilities sourceCodeManagerFor:currentClass.
+    mgr := manager.
     mgr isNil ifTrue:[
         ^ self
     ].
+    "Use revision of manager"
     rev := currentClass binaryRevision.
-    rev2 := currentClass revision.
-    rev isNil ifTrue:[
+    revInfo := mgr revisionInfoOfManager: mgr.
+    revInfo notNil ifTrue:[
+        rev2 := revInfo revision.
+    ].
+    rev2 notNil ifTrue:[
         rev := rev2
     ].
     rev isNil ifTrue:[
@@ -27401,7 +31033,7 @@
         containerPackage size == 0 ifTrue:[
             containerPackage := (SourceCodeManagerUtilities lastPackage) ? Project current package.
         ].
-        rslt := SourceCodeManagerUtilities
+        rslt := manager utilities
             askForContainer:(resources string:'The class seems to have no repository information.\\Do you want to compare it against an existing containers contents ?')
             title:'Container to compare' note:nil
             initialModule:containerModule
@@ -27428,17 +31060,15 @@
             msg := msg , '\\' , (resources string:'Current %1 is based upon rev %2.'
                                            with:nm allBold with:rev).
             (rev2 notNil and:[rev2 ~= rev]) ifTrue:[
-                msg := msg , '\' , (resources string:'And has been checked into the repository as %1.'
-                                               with:rev2)
+                msg := msg , '\' , (resources string:'And has been checked into the repository as %1.' with:rev2)
             ]
         ].
         newestRev notNil ifTrue:[
-            msg := msg , '\' , (resources string:'Newest in reporitory is %1.'
-                                           with:newestRev)
+            msg := msg , '\' , (resources string:'Newest in reporitory is %1.' with:newestRev)
         ].
 
         self normalLabel.
-        rev := SourceCodeManagerUtilities
+        rev := manager utilities
                     askForExistingRevision:msg
                     title:'Compare with repository'
                     class:currentClass
@@ -27535,8 +31165,17 @@
     ].
     self normalLabel.
 
-    "Created: / 04-01-1997 / 15:48:20 / cg"
-    "Modified: / 01-03-2007 / 20:50:08 / cg"
+    "Modified: / 11-10-2011 / 16:25:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:28:48 / cg"
+!
+
+classMenuCompareWithRepositoryUsingManagerNamed:sourceCodeManagerClassName
+    "open a diff-textView comparing the current (in-image) version
+     with the some version found in the repository."
+
+    self classMenuCompareWithRepositoryUsingManager:(Smalltalk at:sourceCodeManagerClassName asSymbol)
+
+    "Created: / 21-12-2011 / 22:51:56 / cg"
 !
 
 classMenuCompareWithSmallTeamVersionOnHost:hostName
@@ -27599,14 +31238,15 @@
             openOnDiffSet:allDiffs
             labelA:'Version on Host ',hostName
             labelB:'Image'
-            title:title.
+            title:title
+            ignoreExtensions:false.
     ].
 
     self normalLabel.
 
     "Modified: / 18-10-2006 / 13:08:21 / User"
     "Created: / 11-11-2006 / 15:36:43 / cg"
-    "Modified: / 12-11-2006 / 15:41:49 / cg"
+    "Modified: / 12-09-2011 / 11:55:16 / cg"
 !
 
 classMenuEditVersionInRepository
@@ -27624,13 +31264,13 @@
     ].
 
     nm := currentClass name.
-    mgr := SourceCodeManagerUtilities sourceCodeManagerFor:currentClass.
+    mgr := SourceCodeManagerUtilities default sourceCodeManagerFor:currentClass.
     mgr isNil ifTrue:[
         ^ self
     ].
 
     self normalLabel.
-    rev := SourceCodeManagerUtilities
+    rev := SourceCodeManagerUtilities default
                 askForExistingRevision:(resources string:'Edit which revision:')
                 title:(resources string:'Edit which repository version')
                 class:currentClass.
@@ -27643,12 +31283,24 @@
     "Created: / 17-02-2011 / 10:29:59 / cg"
 !
 
+classMenuEditVersionInRepositoryUsingManager: aManager
+    ^ Dialog warn: 'Not yet implemented'
+
+    "Created: / 21-12-2011 / 20:28:57 / cg"
+!
+
 classMenuQuickCheckIn
     "check a class into the source repository (without checks)"
 
     ^ self classMenuCheckIn:false
 !
 
+classMenuQuickCheckInUsingManager: argument
+    ^ Dialog warn: 'Not yet implemented'
+
+    "Created: / 21-12-2011 / 20:29:04 / cg"
+!
+
 classMenuRevisionLog
     "show a classes revision log"
 
@@ -27705,6 +31357,77 @@
     self normalLabel.
 !
 
+classMenuRevisionLog:shortOrNot usingManager: manager
+    "show a classes revision log"
+
+    |codeView|
+
+    (self askIfModified:'Code was modified.\\Show log anyway ?')
+    ifFalse:[^ self].
+
+    self codeAspect:#repositoryLog.
+    self selectedMethods value:nil.
+    self selectProtocols:nil.
+
+    codeView := self codeView.
+    codeView contents:nil.
+    codeView modified:false.
+    navigationState realModifiedState:false.
+
+    self
+        selectedClassesNonMetaDo:
+            [:cls |
+               self 
+                showRepositoryLogOf:cls short:shortOrNot usingManager: manager
+                beforeLogDo:[:s |
+                    self selectedClasses value size > 1 ifTrue:[
+                        s nextPutLine:'-----------------------------------------------------------'. 
+                        s nextPutLine:('%1 log for %2:' 
+                                            bindWith:(shortOrNot ifTrue:['Short'] ifFalse:['Full']) 
+                                            with:cls name).
+                        s nextPutLine:'-----------------------------------------------------------'. 
+                        s cr. 
+                    ]
+                ]
+            ]
+        ifUnloaded:
+            [:cls |
+                true.
+            ]
+        ifPrivate:
+            [:cls | 
+                |owner|
+                owner := cls owningClass.
+                (self selectedClasses value includes:owner) ifFalse:[
+                    self warn:'cannot show log of private class: %1\\Please see the log of the owning class (%2).'
+                        with:cls nameWithoutPrefix allBold
+                        with:owner name.
+                ]
+            ].
+    self normalLabel.
+
+    "Created: / 11-10-2011 / 20:32:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:26:08 / cg"
+!
+
+classMenuRevisionLogUsingManager: manager
+    "show a classes revision log"
+
+    self classMenuRevisionLog:false usingManager: manager
+
+    "Modified: / 11-10-2011 / 20:31:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:17:12 / cg"
+!
+
+classMenuRevisionLogUsingManagerNamed:sourceCodeManagerClassName
+    "show a classes revision log"
+
+    self classMenuRevisionLog:false usingManager:(Smalltalk at:sourceCodeManagerClassName asSymbol)
+
+    "Modified: / 11-10-2011 / 20:31:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 23:02:10 / cg"
+!
+
 classMenuSetTag
     |classes tag knownTags|
 
@@ -27741,29 +31464,79 @@
     "Modified: / 08-02-2011 / 10:30:49 / cg"
 !
 
+classMenuSetTagUsingManager: aManager
+    ^ Dialog warn: 'Not yet implemented'
+
+    "Created: / 21-12-2011 / 20:29:13 / cg"
+!
+
 classMenuShortRevisionLog
     "show a short (last 20 entries) classes repository log"
 
     self classMenuRevisionLog:true
 !
 
+classMenuShortRevisionLogUsingManager: manager
+    "show a short (last 20 entries) classes repository log"
+
+    self classMenuRevisionLog:true usingManager: manager
+
+    "Modified: / 11-10-2011 / 20:31:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:17:24 / cg"
+!
+
+classMenuShortRevisionLogUsingManagerNamed:sourceCodeManagerClassName
+    "show a short (last 20 entries) classes repository log"
+
+    self classMenuShortRevisionLogUsingManager:(Smalltalk at:sourceCodeManagerClassName asSymbol)
+
+    "Created: / 21-12-2011 / 23:12:15 / cg"
+!
+
 compareAgainstNewestInRepository:aClass
     "open a diff-textView comparing the current (in-image) version
      with the the newest version found in the repository.
      That is the most recent version."
 
-    SourceCodeManagerUtilities compareClassWithRepository:aClass askForRevision:false.
+    self compareAgainstNewestInRepository:aClass usingManager:nil
+
+    "Modified: / 21-12-2011 / 20:13:47 / cg"
+!
+
+compareAgainstNewestInRepository:aClass usingManager:aManagerOrNil
+    "open a diff-textView comparing the current (in-image) version
+     with the the newest version found in the repository.
+     That is the most recent version."
+
+    |utilities|
+
+    utilities := aManagerOrNil isNil
+                    ifTrue:[SourceCodeManagerUtilities default]
+                    ifFalse:[aManagerOrNil utilities].
+
+    utilities compareClassWithRepository:aClass askForRevision:false.
     self normalLabel.
+
+    "Created: / 11-10-2011 / 10:33:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:13:31 / cg"
 !
 
 doCompareClassesWithRepository:collectionOfClasses
+    self doCompareClassesWithRepository:collectionOfClasses usingManager:nil
+
+    "Created: / 04-01-1997 / 15:48:20 / cg"
+    "Modified: / 18-10-2006 / 13:08:21 / User"
+    "Modified: / 21-12-2011 / 20:12:26 / cg"
+!
+
+doCompareClassesWithRepository:collectionOfClasses usingManager:aManagerOrNil
     |classes s
      aStream comparedSource currentSource thisRevString
      classesToUnload current repository diffs allDiffs
      title|
 
     collectionOfClasses size == 1 ifTrue:[
-        self compareAgainstNewestInRepository:(collectionOfClasses first theNonMetaclass).
+        self compareAgainstNewestInRepository:(collectionOfClasses first theNonMetaclass) usingManager:aManagerOrNil.
         ^ self.
     ].
 
@@ -27788,7 +31561,7 @@
         eachClass isLoaded ifFalse:[
             Transcript showCR:('Cannot compare unloaded class: ' , eachClass name).
         ] ifTrue:[
-            aStream := self sourceStreamForRepositorySourceOfClass:eachClass.
+            aStream := self sourceStreamForRepositorySourceOfClass:eachClass usingManager:aManagerOrNil.
             aStream notNil ifTrue:[
                 aStream class readErrorSignal handle:[:ex |
                     self warn:('read error while reading extracted source\\' , ex description) withCRs.
@@ -27811,7 +31584,7 @@
                 self busyLabel:'comparing  ...' with:nil.
 
                 comparedSource = currentSource ifTrue:[
-                    ((eachClass revision = (eachClass sourceCodeManager newestRevisionOf:eachClass))
+                    ((eachClass revision = ((aManagerOrNil ? eachClass sourceCodeManager) newestRevisionOf:eachClass))
                     and:[eachClass hasUnsavedChanges]) ifTrue:[
                         (self confirm:'Versions are identical.\\Remove entries from changeSet ?' withCRs) ifTrue:[
                             ChangeSet current condenseChangesForClass:eachClass.
@@ -27867,20 +31640,22 @@
             openOnDiffSet:allDiffs
             labelA:'Repository'
             labelB:'Image'
-            title:title.
+            title:title
+            ignoreExtensions:true.
     ].
 
     self normalLabel.
 
-    "Created: / 04-01-1997 / 15:48:20 / cg"
     "Modified: / 18-10-2006 / 13:08:21 / User"
-    "Modified: / 26-10-2006 / 15:13:33 / cg"
+    "Modified: / 12-09-2011 / 11:54:42 / cg"
+    "Created: / 11-10-2011 / 10:32:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:10:53 / cg"
 !
 
 generateDiffSetForClasses:collectionOfClasses newest:newest
     |classes s
      aStream comparedSource currentSource rev revString thisRevString mgr
-     nm msg rev2 newestRev
+     nm msg newestRev
      containerModule containerPackage containerFile rslt
      pkg info mod dir classesToUnload current repository diffs allDiffs
      title|
@@ -27901,7 +31676,7 @@
 
     classes do:[:currentClass |
         nm := currentClass name.
-        mgr := SourceCodeManagerUtilities sourceCodeManagerFor:currentClass.
+        mgr := SourceCodeManagerUtilities default sourceCodeManagerFor:currentClass.
         mgr isNil ifTrue:[
             (Dialog
                 confirm:('No sourceCode manager defined for %1 - check settings.\\Skip this class ?' bindWith:currentClass name) withCRs)
@@ -27910,9 +31685,8 @@
             ].
         ].
         rev := currentClass binaryRevision.
-        rev2 := currentClass revision.
         rev isNil ifTrue:[
-            rev := rev2
+            rev := currentClass revision
         ].
         rev isNil ifTrue:[
             "/
@@ -27931,7 +31705,7 @@
             containerPackage size == 0 ifTrue:[
                 containerPackage := (SourceCodeManagerUtilities lastPackage) ? Project current package.
             ].
-            rslt := SourceCodeManagerUtilities
+            rslt := SourceCodeManagerUtilities default
                 askForContainer:(resources string:'The class seems to have no repository information.\\Do you want to compare it against an existing containers contents ?')
                 title:'Container to compare' note:nil
                 initialModule:containerModule
@@ -28051,12 +31825,13 @@
         openOnDiffSet:allDiffs
         labelA:'Repository'
         labelB:'Image'
-        title:title.
+        title:title
+        ignoreExtensions:true.
 
     self normalLabel.
 
     "Created: / 04-01-1997 / 15:48:20 / cg"
-    "Modified: / 12-10-2006 / 23:30:12 / cg"
+    "Modified: / 29-09-2011 / 15:43:28 / cg"
 !
 
 getClassSourceFor:aClass revision:revision
@@ -28087,6 +31862,35 @@
     "Created: / 08-02-2011 / 10:24:50 / cg"
 !
 
+getClassSourceFor:aClass revision:revision usingManager: manager
+    "ask aClass's sourceCodeManager to retrieve a (possibly older or newer) version's source code"
+
+    |msg stream source|
+
+    msg := 'extracting previous %1'.
+    self busyLabel:msg with:revision.
+
+    stream := manager getSourceStreamFor:aClass revision:revision.
+    stream isNil ifTrue:[
+        self warn:(resources
+                     string:'Could not extract source of rev %1 from repository'
+                    with:revision).
+        ^ nil
+    ].
+    stream class readErrorSignal handle:[:ex |
+        self warn:('read error while reading extracted source\\' , ex description) withCRs.
+        stream close.
+        ^ nil
+    ] do:[
+        source := stream contents asString.
+    ].
+    stream close.
+    ^ source
+
+    "Created: / 11-10-2011 / 23:06:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:25:39 / cg"
+!
+
 repositoryHistoryForProjects:projectListOrNil
     (self askIfModified:'Code was modified.\\Show history anyway ?')
      ifFalse:[^ self].
@@ -28257,7 +32061,7 @@
     do:[
         self busyLabel:'Extracting log of %1' with:aClass name.
         aBlock value:aStream.
-        SourceCodeManagerUtilities repositoryLogOf:aClass short:shortOrNot onto:aStream
+        SourceCodeManagerUtilities default repositoryLogOf:aClass short:shortOrNot onto:aStream
     ].
 
     self codeAspect:#repositoryLog.
@@ -28279,20 +32083,63 @@
     self normalLabel
 !
 
+showRepositoryLogOf:aClass short:shortOrNot usingManager: manager beforeLogDo:aBlock
+    "show a classes repository log - append to codeView.
+     CAVEAT: that is almost the same code as found in SystemBrowser;
+             move to SourceCodeManagerUtilities."
+
+    |codeView aStream|
+
+    aStream := WriteStream on:(String new:200).
+
+    Processor activeProcess
+        withPriority:Processor activePriority-1 to:Processor activePriority
+    do:[
+        self busyLabel:'Extracting log of %1' with:aClass name.
+        aBlock value:aStream.
+        manager utilities repositoryLogOf:aClass short:shortOrNot onto:aStream
+    ].
+
+    self codeAspect:#repositoryLog.
+    self selectedMethods value:nil.
+    self selectProtocols:nil.
+
+    codeView := self codeView.
+    codeView contents:(codeView contents ,
+                       Character cr asString ,
+                       Character cr asString ,
+                       aStream contents).
+
+    codeView modified:false.
+    navigationState realModifiedState:false.
+
+"/    self clearAcceptAction.
+"/    self clearExplainAction.
+
+    self normalLabel
+
+    "Created: / 11-10-2011 / 20:33:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:24:55 / cg"
+!
+
 sourceStreamForRepositorySourceOfClass:aClass
     "ask for a classes revision and return a stream on this revisions source; nil on error"
 
-    |mgr rev rev2 pkg containerModule containerPackage rslt containerFile newestRev msg sourceStream revString
+    ^ self sourceStreamForRepositorySourceOfClass:aClass usingManager:(aClass sourceCodeManager)
+
+    "Modified: / 21-12-2011 / 20:11:59 / cg"
+!
+
+sourceStreamForRepositorySourceOfClass:aClass usingManager: aManagerOrNil
+    "ask for a classes revision and return a stream on this revisions source; nil on error"
+
+    |mgr rev pkg containerModule containerPackage rslt containerFile newestRev msg sourceStream revString
      info mod dir|
 
-    mgr := SourceCodeManagerUtilities sourceCodeManagerFor:aClass.
-    mgr isNil ifTrue:[
-        ^ nil
-    ].
+    mgr := aManagerOrNil ? aClass sourceCodeManager.
     rev := aClass binaryRevision.
-    rev2 := aClass revision.
     rev isNil ifTrue:[
-        rev := rev2
+        rev := aClass revision
     ].
     rev isNil ifTrue:[
         "/
@@ -28311,7 +32158,7 @@
         containerPackage size == 0 ifTrue:[
             containerPackage := (SourceCodeManagerUtilities lastPackage) ? Project current package.
         ].
-        rslt := SourceCodeManagerUtilities
+        rslt := mgr utilities
             askForContainer:(resources
                     stringWithCRs:'The "%1"-class seems to have no repository information.\\Do you want to compare it against an existing containers contents ?'
                     with:aClass name)
@@ -28371,7 +32218,9 @@
     ].
     ^ nil
 
-    "Modified: / 12-10-2006 / 20:51:19 / cg"
+    "Modified: / 29-09-2011 / 15:43:08 / cg"
+    "Created: / 11-10-2011 / 10:34:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:11:25 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'menu actions-code'!
@@ -30520,6 +34369,18 @@
     "Created: / 27-04-2010 / 19:00:32 / cg"
 !
 
+debugMenuDisableGlobalCoverageRecording
+    InstrumentationContext setGlobalInstrumentationContext:nil
+
+    "Created: / 21-09-2011 / 19:17:45 / cg"
+!
+
+debugMenuEnableGlobalCoverageRecording
+    InstrumentationContext new beActiveEverywhere
+
+    "Created: / 21-09-2011 / 19:17:42 / cg"
+!
+
 debugMenuOpenCallGraphForClasses
     "open an OOM CallGraph view on the selected class(es)"
 
@@ -30763,53 +34624,25 @@
                                     ].
                             self busyLabel:'running test %1 ...' with:cls name.
                             toRun := suite tests size.
-                            result := TestResult new.
                             withDebug ifTrue:[
-                                suite tests do:[:each | 
-                                    |errorHappened|
-
-                                    errorHappened := false.
-                                    GenericException 
-                                        handle:[:ex | 
-                                            (HaltInterrupt accepts:ex signal) ifFalse:[
-                                                ex signal == NoHandlerError ifFalse:[
-                                                    errorHappened := true.
-                                                ]
-                                            ].
-                                            ex reject.
-                                        ]
-                                        do:[ each debug ].
-                                    errorHappened ifTrue:[
-                                        cls rememberFailedTest:each selector.
-                                        result failures add:each.
-                                    ] ifFalse:[
-                                        cls rememberPassedTest:each selector.
-                                        result passed add:each.
-                                    ]
+                                result := TestResultForRunWithDebug new.
+                            ] ifFalse:[
+                                result := TestResult new.
+                            ].
+                            suite 
+                                run:result
+                                beforeEachDo:[:case :result | 
+                                    self showInfo:('To Run: %1 ; executing %2...' bindWith:toRun
+                                                with:case printString).
                                 ]
-                            ] ifFalse:[
-                                suite 
-                                    run:result
-                                    beforeEachDo:[:case :result | 
-                                        self showInfo:('To Run: %1 ; executing %2...' bindWith:toRun
-                                                    with:case printString).
-                                    ]
-                                    afterEachDo:[:case :result | toRun := toRun - 1. ].
-                                cls rememberPassedTestsFromResult:result.
-                                cls rememberFailedTestsFromResult:result.
-                            ].
+                                afterEachDo:[:case :result | toRun := toRun - 1. ].
+
                             result hasPassed ifTrue:[
                                 result passedCount > 0 ifTrue:[
-                                    isCompleteSuite ifTrue:[
-                                        cls rememberPassedTestRun
-                                    ].
                                     self showInfo:(result printString asText colorizeAllWith:Color black
                                                 on:Color green).
                                 ].
                             ] ifFalse:[
-                                isCompleteSuite ifTrue:[
-                                    cls rememberFailedTestRun
-                                ].
                                 self showInfo:(result printString asText colorizeAllWith:Color black
                                             on:Color red).
                             ].
@@ -30820,7 +34653,7 @@
 
     "Created: / 05-08-2006 / 17:32:06 / cg"
     "Modified: / 06-07-2011 / 14:07:52 / cg"
-    "Modified: / 29-07-2011 / 09:51:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-08-2011 / 13:54:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 selectedNonAbstractTestCaseClassesDo:aBlock
@@ -30899,6 +34732,8 @@
 methodListMenuCheckInClass
     "check the selected methods class(es) into the source repository."
 
+    <resource: #obsolete> "use ...Using:manager variant"
+
     |classes|
 
     classes := self selectedMethods value collect:[:each | each mclass].
@@ -30907,6 +34742,25 @@
     ^ self
         classMenuCheckIn:true
         classes:(classes asOrderedCollection)
+
+    "Modified: / 18-11-2011 / 18:49:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+methodListMenuCheckInClassUsingManager: manager
+    "check the selected methods class(es) into the source repository."
+
+    |classes|
+
+    classes := self selectedMethods value collect:[:each | each mclass].
+    classes := classes asIdentitySet.
+
+    ^ self
+        classMenuCheckIn:true
+        classes:(classes asOrderedCollection)
+        usingManager: manager.
+
+    "Created: / 18-11-2011 / 18:49:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:18:09 / cg"
 !
 
 methodListMenuCopyList
@@ -31072,6 +34926,7 @@
     ^ brwsr
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-namespace'!
 
 nameSpaceMenuCheckOut
@@ -31212,27 +35067,54 @@
 !
 
 openSettingsDialog
+
+    ^self openSettingsDialogAndSelect: nil
+
+    "Modified: / 06-07-2011 / 12:38:07 / cg"
+    "Modified: / 15-10-2011 / 12:01:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+openSettingsDialogAndSelect: settingsClassToSelectOrNil
     |settingsList settingsApp|
 
     settingsList := 
         #(
             #('Editor'                  #'AbstractSettingsApplication::EditSettingsAppl'                )
             #('Syntax Color'            #'AbstractSettingsApplication::SyntaxColorSettingsAppl'         )
+            #('Code Editor 2'           #'Tools::CodeView2SettingsAppl'                                 )
             #('Code Format'             #'AbstractSettingsApplication::SourceCodeFormatSettingsAppl'    )
             #('System Browser'          #'AbstractSettingsApplication::SystemBrowserSettingsAppl'       )
             #('Compiler'                #'AbstractSettingsApplication::GeneralCompilerSettingsAppl'     )
             #('Compiler/ByteCode'       #'AbstractSettingsApplication::ByteCodeCompilerSettingsAppl'    )
             #('Source Code Management'  #'AbstractSettingsApplication::SourceCodeManagementSettingsAppl')
+            "/ see initializeSettingsList for how the following is expanded...
+            #('Source Code Management/[% managerTypeName]'     
+                                                '[ AbstractSourceCodeManager availableManagers 
+                                                     collect:[:each | each settingsApplicationClass] ]'    
+                                                                                                            '[% defaultIcon]' )
         ).
 
     settingsApp := SettingsDialog new.
     "/ settingsApp requestor:self.
-    settingsApp installSettingsEntries:settingsList.
+    settingsApp installSettingsEntries:settingsList expand: true.
     settingsApp allButOpen.
+    settingsApp showRoot: false.
+    settingsClassToSelectOrNil notNil ifTrue:[
+        settingsApp selectItemWithClass: settingsClassToSelectOrNil.
+    ].
     settingsApp window label:('System Browser Settings').
     settingsApp openWindow.
 
     "Modified: / 06-07-2011 / 12:38:07 / cg"
+    "Created: / 15-10-2011 / 12:01:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+openSettingsDialogAndSelectSourceCodeManagement
+
+    self openSettingsDialogAndSelect: AbstractSettingsApplication::SourceCodeManagementSettingsAppl
+
+    "Modified: / 06-07-2011 / 12:38:07 / cg"
+    "Created: / 15-10-2011 / 12:02:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !NewSystemBrowser methodsFor:'menu actions-project'!
@@ -31248,6 +35130,23 @@
     "Modified: / 12-09-2006 / 13:53:28 / cg"
 !
 
+classMenuCheckInBuildSupportFilesUsingManager:aManagerOrNil
+    self selectedNonMetaclassesDo:[:eachClass |
+        eachClass isProjectDefinition ifTrue:[
+            self projectMenuCheckInBuildSupportFilesForProject:eachClass package definition:eachClass usingManager:aManagerOrNil
+        ]
+    ]
+
+    "Modified: / 11-10-2011 / 23:16:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:28:09 / cg"
+!
+
+classMenuCheckInBuildSupportFilesUsingManagerNamed:sourceCodeManagerClassName
+    self classMenuCheckInBuildSupportFilesUsingManager:(Smalltalk at:sourceCodeManagerClassName asSymbol)
+
+    "Created: / 22-12-2011 / 14:04:45 / cg"
+!
+
 classMenuCopySourceToClipboard
     |stream|
 
@@ -31491,7 +35390,7 @@
 
             classes := (bindings at:#selectedClassesWithMissingContainer) value
                         collect:[:idx | classesWithMissingContainer at:idx].
-            SourceCodeManagerUtilities
+            SourceCodeManagerUtilities default
                 checkinClasses:classes
                 withInfo:nil
                 withCheck:true
@@ -31568,7 +35467,7 @@
             classes := (bindings at:#selectedClassesWhichHaveBeenModified) value
                         collect:[:idx | classesWhichHaveBeenModified at:idx].
 
-            SourceCodeManagerUtilities
+            SourceCodeManagerUtilities default
                 checkinClasses:classes
                 withInfo:nil
                 withCheck:true
@@ -31676,13 +35575,17 @@
             |classesInPackage|
 
             classesInPackage := Smalltalk allClassesInPackage:package.
-            (classesInPackage contains:[:cls | cls isBrowserStartable]) ifTrue:[
-                (classesInPackage contains:[:cls | cls isVisualStartable])
-                    ifTrue:[ defaultProjectType := ProjectDefinition guiApplicationType]
-                    ifFalse:[ defaultProjectType := ProjectDefinition nonGuiApplicationType]
-            ] ifFalse:[
-                defaultProjectType := ProjectDefinition libraryType
-            ].
+            classesInPackage isEmpty ifTrue:[
+                defaultProjectType := LastNewProjectType ? ProjectDefinition guiApplicationType
+            ] ifFalse:[
+                (classesInPackage contains:[:cls | cls isBrowserStartable]) ifTrue:[
+                    (classesInPackage contains:[:cls | cls isVisualStartable])
+                        ifTrue:[ defaultProjectType := ProjectDefinition guiApplicationType]
+                        ifFalse:[ defaultProjectType := ProjectDefinition nonGuiApplicationType]
+                ] ifFalse:[
+                    defaultProjectType := ProjectDefinition libraryType
+                ].
+            ]
         ].
 
     aProjectIDOrNil notNil ifTrue:[
@@ -31754,6 +35657,8 @@
         ^ nil
     ].
 
+    LastNewProjectType := projectTypeHolder value.
+
     self withWaitCursorDo:[
         aProjectIDOrNil notNil ifTrue:[
             newProjectID := aProjectIDOrNil.
@@ -31774,7 +35679,7 @@
     ].
     ^ projectDefinitionClass
 
-    "Modified: / 06-10-2006 / 11:44:05 / cg"
+    "Modified: / 21-01-2012 / 10:33:15 / cg"
 !
 
 projectMenuBitmapFiles
@@ -31782,7 +35687,19 @@
 !
 
 projectMenuBuild
-    |projectToBuild projectDefinitionClasses projectDefinition|
+    self projectMenuBuildExeOnly:false
+
+    "Modified: / 21-01-2012 / 13:53:52 / cg"
+!
+
+projectMenuBuildExeOnly
+    self projectMenuBuildExeOnly:true
+
+    "Created: / 21-01-2012 / 13:54:00 / cg"
+!
+
+projectMenuBuildExeOnly:exeOnly
+    |projectToBuild projectDefinitionClasses projectDefinition projectBuilder|
 
     projectToBuild := self theSingleSelectedProject.
     projectDefinitionClasses := self projectDefinitionClassesForSelectedProjects.
@@ -31795,12 +35712,25 @@
     Tools::ProjectBuilderAssistantApplication new
         projectType:projectDefinition projectType.    
 
-    Tools::ProjectBuilder new
+    Transcript isView ifTrue:[
+        Transcript topView raise.
+    ].
+
+    projectBuilder := Tools::ProjectBuilder new
+        makeExeOnly:exeOnly;
         package:projectToBuild;
-        build
+        "/ build
+        buildWithColorizedOutputTo:Transcript.
+
+    FileBrowserV2 openOnDirectory:(projectBuilder buildDirectory)
+
+    "Created: / 21-01-2012 / 13:53:34 / cg"
 !
 
 projectMenuCheckInAll
+
+    <resource: #obsolete> "use ...Using:manager variant"
+    
     self selectedProjectsDo:[:packageToCheckIn |
         self
             projectMenuCheckInProject:packageToCheckIn
@@ -31810,20 +35740,49 @@
     ]
 
     "Modified: / 09-08-2006 / 18:57:28 / fm"
+    "Modified: / 13-10-2011 / 11:06:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified (comment): / 15-10-2011 / 20:22:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuCheckInAllUsingManager: manager
+    self selectedProjectsDo:[:packageToCheckIn |
+        self
+            projectMenuCheckInProject:packageToCheckIn
+            classes:true
+            extensions:true
+            buildSupport:true
+            usingManager: manager
+    ]
+
+    "Modified: / 09-08-2006 / 18:57:28 / fm"
+    "Created: / 13-10-2011 / 10:37:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:18:25 / cg"
+!
+
+projectMenuCheckInAllUsingManagerNamed: managerName
+
+    ^self projectMenuCheckInAllUsingManager: (Smalltalk at: managerName asSymbol)
+
+    "Created: / 23-12-2011 / 19:24:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 projectMenuCheckInBuildSupportFiles
+
+    <resource: #obsolete> "use ...Using:manager variant"
+
     self selectedProjectsDo:[:packageToCheckIn |
         self projectMenuCheckInBuildSupportFilesForProject:packageToCheckIn
     ]
 
     "Created: / 09-08-2006 / 19:04:52 / fm"
+    "Modified: / 15-10-2011 / 22:31:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 projectMenuCheckInBuildSupportFilesForProject:packageID
-    |anyFailure module directory defClass mgr|
-
-    anyFailure := false.
+
+    <resource: #obsolete> "use ...Using:manager variant"
+
+    |defClass mgr|
 
     defClass := ProjectDefinition definitionClassForPackage:packageID createIfAbsent:false.
     defClass isNil ifTrue:[
@@ -31832,34 +35791,44 @@
         defClass compileDescriptionMethods.
     ].
 
-    defClass validateDescription.
-    defClass hasAllCompiledClassesFullyLoaded ifFalse:[
-        (Dialog confirm:('%1: the dependency information as generated will be incomplete,%<cr>because some compiled class(es) are not loaded (see Transcript).%<cr>%<cr>%2%<cr>Continue anyway ?' 
-                bindWith:defClass name
-                with:('Warning: these classes will be excluded from the list of compiled classes.' allBold)))
-        ifFalse:[
-            ^ self.
-        ]
-    ].
-
-    mgr := SourceCodeManagerUtilities sourceCodeManagerFor:defClass.
+    mgr := SourceCodeManagerUtilities default sourceCodeManagerFor:defClass.
     mgr isNil ifTrue:[
         self warn:'No sourceCode manager - cannot checkin.'.
         ^ self.
     ].
+    self projectMenuCheckInBuildSupportFilesForProject:packageID definition:defClass usingManager:mgr
+
+    "Created: / 09-08-2006 / 18:59:42 / fm"
+    "Modified: / 16-08-2006 / 18:38:49 / User"
+    "Modified: / 15-10-2011 / 22:31:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-12-2011 / 14:03:36 / cg"
+!
+
+projectMenuCheckInBuildSupportFilesForProject:packageID definition:defClass usingManager:mgr
+    |anyFailure module directory|
+
+    defClass validateDescription.
+
+    anyFailure := false.
+
     module := packageID asPackageId module.
     directory := packageID asPackageId directory.
 
     self activityNotification:(resources string:'checking in build-support files...').
+    (mgr checkForExistingModule:module directory:directory) ifFalse:[
+        mgr createModule:module directory:directory
+    ].
     self withActivityNotificationsRedirectedToInfoLabelDo:[
         defClass forEachFileNameAndGeneratedContentsDo:[:fileName :fileContents |
             |realFileName realDirectory|
 
-            realDirectory := directory.
-            realFileName := fileName.
-            (realFileName includes:$/) ifTrue:[
-                realDirectory := (realDirectory asFilename construct:(realFileName asFilename directoryName)) name.
-                realFileName := realFileName asFilename baseName.
+            "/ care for subdirectories
+            (fileName includes:$/) ifTrue:[
+                realDirectory := (directory asFilename construct:(fileName asFilename directoryName)) name.
+                realFileName := fileName asFilename baseName.
+            ] ifFalse:[
+                realDirectory := directory.
+                realFileName := fileName.
             ].
             realDirectory := realDirectory replaceAll:$\ with:$/.
 
@@ -31871,8 +35840,10 @@
                     (mgr
                         checkForExistingContainer:realFileName inModule:module directory:realDirectory)
                     ifFalse:[
-                        (mgr checkForExistingModule:module directory:realDirectory) ifFalse:[
-                            mgr createModule:module directory:realDirectory
+                        realDirectory ~= directory ifTrue:[
+                            (mgr checkForExistingModule:module directory:realDirectory) ifFalse:[
+                                mgr createModule:module directory:realDirectory
+                            ].
                         ].
                         (mgr
                             createContainerForText:fileContents
@@ -31908,7 +35879,8 @@
         self
             checkInClasses:(Array with:defClass)
             withInfo:'automatic checkIn'
-            withCheck:false.
+            withCheck:false
+            usingManager: mgr
     ].
 
     self activityNotification:nil.
@@ -31922,10 +35894,57 @@
 
     "Created: / 09-08-2006 / 18:59:42 / fm"
     "Modified: / 16-08-2006 / 18:38:49 / User"
-    "Modified: / 23-02-2011 / 15:27:20 / cg"
+    "Modified: / 12-10-2011 / 11:36:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:19:30 / cg"
+!
+
+projectMenuCheckInBuildSupportFilesForProject:packageID usingManager: manager
+    |defClass mgr|
+
+    defClass := ProjectDefinition definitionClassForPackage:packageID createIfAbsent:false.
+    defClass isNil ifTrue:[
+        defClass := self projectDefinitionDialogFor:packageID.
+        defClass isNil ifTrue:[ ^ self ].
+        defClass compileDescriptionMethods.
+    ].
+
+    mgr := manager.
+    mgr isNil ifTrue:[
+        self warn:'No sourceCode manager - cannot checkin.'.
+        ^ self.
+    ].
+    self projectMenuCheckInBuildSupportFilesForProject:packageID definition:defClass usingManager:mgr
+
+    "Created: / 09-08-2006 / 18:59:42 / fm"
+    "Modified: / 16-08-2006 / 18:38:49 / User"
+    "Modified: / 06-09-2011 / 08:00:43 / cg"
+    "Created: / 15-10-2011 / 22:32:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:25:21 / cg"
+    "Modified: / 24-01-2012 / 13:03:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuCheckInBuildSupportFilesUsingManager: manager
+    self selectedProjectsDo:[:packageToCheckIn |
+        self projectMenuCheckInBuildSupportFilesForProject:packageToCheckIn usingManager: manager
+    ]
+
+    "Created: / 09-08-2006 / 19:04:52 / fm"
+    "Created: / 15-10-2011 / 22:31:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:18:34 / cg"
+    "Modified: / 24-01-2012 / 13:02:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuCheckInBuildSupportFilesUsingManagerNamed: managerName
+
+    ^self projectMenuCheckInBuildSupportFilesUsingManager: (Smalltalk at:managerName asSymbol)
+
+    "Created: / 24-01-2012 / 13:02:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 projectMenuCheckInClasses
+
+    <resource: #obsolete> "use ...Using:manager variant"
+
     self selectedProjectsDo:[:packageToCheckIn |
         self
             projectMenuCheckInProject:packageToCheckIn
@@ -31933,9 +35952,35 @@
             extensions:false
             buildSupport:false
     ]
+
+    "Modified: / 15-10-2011 / 20:22:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuCheckInClassesUsingManager: manager
+    self selectedProjectsDo:[:packageToCheckIn |
+        self
+            projectMenuCheckInProject:packageToCheckIn
+            classes:true
+            extensions:false
+            buildSupport:false
+            usingManager: manager
+    ]
+
+    "Created: / 15-10-2011 / 20:21:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:18:42 / cg"
+!
+
+projectMenuCheckInClassesUsingManagerNamed: sourceCodeManagerClassName
+
+    self projectMenuCheckInClassesUsingManager: (Smalltalk at:sourceCodeManagerClassName asSymbol)
+
+    "Created: / 23-12-2011 / 19:29:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 projectMenuCheckInExtensions
+
+    <resource: #obsolete> "use ...Using:manager variant"
+
     self selectedProjectsDo:[:packageToCheckIn |
         self
             projectMenuCheckInProject:packageToCheckIn
@@ -31943,9 +35988,36 @@
             extensions:true
             buildSupport:false
     ]
+
+    "Modified: / 15-10-2011 / 20:22:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuCheckInExtensionsUsingManager: manager
+
+    self selectedProjectsDo:[:packageToCheckIn |
+        self
+            projectMenuCheckInProject:packageToCheckIn
+            classes:false
+            extensions:true
+            buildSupport:false
+            usingManager: manager
+    ]
+
+    "Created: / 15-10-2011 / 20:06:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:18:50 / cg"
+!
+
+projectMenuCheckInExtensionsUsingManagerNamed: sourceCodeManagerClassName
+
+    self projectMenuCheckInExtensionsUsingManager: (Smalltalk at:sourceCodeManagerClassName asSymbol)
+
+    "Created: / 23-12-2011 / 19:30:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 projectMenuCheckInProject:packageToCheckIn classes:doClasses extensions:doExtensions buildSupport:doBuild
+
+    <resource: #obsolete>
+
     ^ self
         projectMenuCheckInProject:packageToCheckIn
         classes:doClasses
@@ -31954,9 +36026,12 @@
         askForMethodsInOtherPackages:true
 
     "Modified: / 21-08-2006 / 19:43:22 / cg"
+    "Modified: / 13-10-2011 / 11:07:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 projectMenuCheckInProject:packageToCheckIn classes:doClasses extensions:doExtensions buildSupport:doBuild askForMethodsInOtherPackages:askForMethodsInOtherPackages
+    <resource: #obsolete>
+
     |classes classesToCheckIn methodsToCheckIn
      methodsInOtherPackages looseMethods otherPackages
      msg classesInChangeSet checkinInfo originalCheckinInfo classesToTag|
@@ -31980,7 +36055,10 @@
         ].
     ].
 
-    classesInChangeSet := classesToCheckIn select:[:cls | cls hasUnsavedChanges].
+    "/ cg: O(n^2) algorithm
+    "/  classesInChangeSet := classesToCheckIn select:[:cls | cls hasUnsavedChanges].
+    "/ replaced by: O(n) algorithm
+    classesInChangeSet := ChangeSet current selectForWhichIncludesChangeForClassOrMetaclassOrPrivateClassFrom:classesToCheckIn. 
 
     "/ individual methods ...
     classes do:[:aClass |
@@ -32012,7 +36090,7 @@
             ].
             msg := msg , 'of project "%3"'.
 
-            checkinInfo := SourceCodeManagerUtilities
+            checkinInfo := SourceCodeManagerUtilities default
                         getCheckinInfoFor:(msg
                                                     bindWith:classesToCheckIn size
                                                     with:methodsToCheckIn size
@@ -32023,7 +36101,7 @@
             checkinInfo isNil ifTrue:[
                 ^ self.
             ].
-            (SourceCodeManagerUtilities
+            (SourceCodeManagerUtilities default
                 checkinExtensionMethods:methodsToCheckIn
                 forPackage:packageToCheckIn
                 withInfo:checkinInfo)
@@ -32037,7 +36115,7 @@
                 checkForExistingContainer:'extensions.st' inPackage:packageToCheckIn)
             ifTrue:[
 "/ self halt.
-                (SourceCodeManagerUtilities
+                (SourceCodeManagerUtilities default
                     checkinExtensionMethods:#()
                     forPackage:packageToCheckIn
                     withInfo:'No extensions any more')
@@ -32050,7 +36128,7 @@
     ].
 
     checkinInfo isNil ifTrue:[
-        checkinInfo := SourceCodeManagerUtilities
+        checkinInfo := SourceCodeManagerUtilities default
                     getCheckinInfoFor:('%1 classes (%4 changed) and %2 extensions for project "%3"'
                                                         bindWith:classesToCheckIn size
                                                         with:methodsToCheckIn size
@@ -32145,18 +36223,18 @@
                     mthd package:packageToCheckIn
                 ].
             ].
-            SourceCodeManagerUtilities checkinClasses:classesToCheckIn withInfo:checkinInfo.
+            SourceCodeManagerUtilities default checkinClasses:classesToCheckIn withInfo:checkinInfo.
         ].
 
         originalCheckinInfo notNil ifTrue:[
             originalCheckinInfo isStable ifTrue:[
                 classesToTag do:[:eachClass |
-                    SourceCodeManagerUtilities tagClass:eachClass as:#stable
+                    SourceCodeManagerUtilities default tagClass:eachClass as:#stable
                 ].
             ].
             originalCheckinInfo tagIt ifTrue:[
                 classesToTag do:[:eachClass |
-                    SourceCodeManagerUtilities tagClass:eachClass as:(originalCheckinInfo tag)
+                    SourceCodeManagerUtilities default tagClass:eachClass as:(originalCheckinInfo tag)
                 ].
             ].
         ].
@@ -32168,7 +36246,38 @@
 
     self normalLabel.
 
-    "Modified: / 28-11-2006 / 15:44:24 / cg"
+    "Modified: / 08-09-2011 / 04:42:38 / cg"
+    "Modified: / 13-10-2011 / 11:07:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuCheckInProject:packageToCheckIn classes:doClasses extensions:doExtensions buildSupport:doBuild askForMethodsInOtherPackages:askForMethodsInOtherPackages usingManager: manager
+
+    self withActivityNotificationsRedirectedToInfoLabelDo:[
+        manager utilities
+            checkinPackage:packageToCheckIn 
+            classes:doClasses 
+            extensions:doExtensions 
+            buildSupport:doBuild 
+            askForMethodsInOtherPackages:askForMethodsInOtherPackages
+    ]
+
+    "Modified: / 08-09-2011 / 04:42:38 / cg"
+    "Created: / 13-10-2011 / 10:40:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:25:11 / cg"
+!
+
+projectMenuCheckInProject:packageToCheckIn classes:doClasses extensions:doExtensions buildSupport:doBuild usingManager: manager
+    ^ self
+        projectMenuCheckInProject:packageToCheckIn
+        classes:doClasses
+        extensions:doExtensions
+        buildSupport:doBuild
+        askForMethodsInOtherPackages:true
+        usingManager: manager
+
+    "Modified: / 21-08-2006 / 19:43:22 / cg"
+    "Created: / 13-10-2011 / 10:37:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:18:59 / cg"
 !
 
 projectMenuCheckOut
@@ -32187,7 +36296,7 @@
             checkoutExtensionMethodsForPackage:packageToCheckOut
             askForRevision:true
             askForMerge:true
-            using:(SourceCodeManager defaultManager)
+            usingManager:(SourceCodeManager defaultManager)
     ]
 
     "Created: / 10-08-2006 / 18:16:51 / cg"
@@ -32487,7 +36596,7 @@
                   "/ eachClassInProject isLoaded ifTrue:[
                     self busyLabel:'Checking ' , packageToCheck , ' - ' , eachClassInProject name.
 
-                    mgr := SourceCodeManagerUtilities sourceCodeManagerFor:eachClassInProject.
+                    mgr := SourceCodeManagerUtilities default sourceCodeManagerFor:eachClassInProject.
                     info := mgr sourceInfoOfClass:eachClassInProject.
                     info isNil ifTrue:[
                         "/ no container for that class
@@ -32601,6 +36710,8 @@
     "Comparing the current (in-image) version of the project(s)
      against the the newest version found in the repository."
 
+    <resource: #obsolete> "use ...Using:manager variant"
+
     self withWaitCursorDo:[
         self selectedProjects value do:[:eachProject |
             SourceCodeManagerUtilities compareProjectWithRepository:eachProject
@@ -32609,6 +36720,32 @@
 
     "Created: / 12-10-2006 / 17:41:55 / cg"
     "Modified: / 12-10-2006 / 21:46:14 / cg"
+    "Modified: / 15-10-2011 / 23:09:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuCompareAgainstNewestInRepositoryUsingManager: manager
+    "Comparing the current (in-image) version of the project(s)
+     against the the newest version found in the repository."
+
+    self withWaitCursorDo:[
+        self selectedProjects value do:[:eachProject |
+            manager utilities compareProjectWithRepository:eachProject
+        ].
+    ].
+
+    "Modified: / 12-10-2006 / 21:46:14 / cg"
+    "Created: / 15-10-2011 / 23:10:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:29:20 / cg"
+    "Modified: / 16-01-2012 / 18:45:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuCompareAgainstNewestInRepositoryUsingManagerNamed: managerName
+    "Comparing the current (in-image) version of the project(s)
+     against the the newest version found in the repository."
+
+    ^self projectMenuCompareAgainstNewestInRepositoryUsingManager: (Smalltalk at:managerName asSymbol)
+
+    "Created: / 16-01-2012 / 18:45:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 projectMenuCompareAgainstRepository
@@ -32857,6 +36994,10 @@
     dirName isNil ifTrue:[
         ^ self
     ].
+    dirName asFilename exists ifFalse:[
+        dirName asFilename recursiveMakeDirectory    
+    ].
+
     self
         fileOutEachClassIn:self selectedProjectClasses
         in:dirName
@@ -32879,6 +37020,8 @@
         format:aFormatSymbolOrNil
         toFile:fileNameForExtensions
         withPackage:true
+
+    "Modified: / 05-09-2011 / 22:02:48 / cg"
 !
 
 projectMenuFileOutEachSIFIn
@@ -33298,14 +37441,99 @@
 !
 
 projectMenuNew
-    |projectDefinitionClass|
+    |projectDefinitionClass appClassName theCode appClass package  
+     defaultStartupClassName startupClassName startupClass change|
 
     projectDefinitionClass := self projectDefinitionDialogFor:nil.
     projectDefinitionClass isNil ifTrue:[
         ^ self
     ].
-    projectDefinitionClass compileDescriptionMethods.
-    self selectClass:projectDefinitionClass.
+
+    package := projectDefinitionClass package.
+    Class packageQuerySignal answer:package
+    do:[
+        projectDefinitionClass compileDescriptionMethods.
+        self selectClass:projectDefinitionClass.
+
+        projectDefinitionClass isApplicationDefinition ifTrue:[
+            appClassName := Dialog 
+                                request:(resources 
+                                    stringWithCRs:'Create initial application class?\(Enter name or cancel)').
+            appClassName notNil ifTrue:[
+                theCode := '
+ApplicationModel subclass: #''%1''
+    instanceVariableNames:'' ''
+    classVariableNames:'' ''
+    poolDictionaries:'' ''
+    category:''%1'' 
+'               bindWith:appClassName.
+
+
+                self canUseRefactoringSupport ifTrue:[
+                    change := AddClassChange definition: theCode.
+                    change name:('Create application class %1' bindWith:appClassName).
+                    RefactoryChangeManager performChange:change
+                ] ifFalse:[
+                    self 
+                        doAcceptClassDefinition:theCode 
+                        usingCompiler:Compiler.
+                ].
+
+                appClass := Smalltalk classNamed:appClassName.
+                appClass package:package.
+
+                self classMenuGenerateApplicationCodeForClasses:{ appClass }.
+                appClass instAndClassMethodsDo:[:m | m package:package].
+
+                defaultStartupClassName := appClassName,'Start'.
+                (Smalltalk classNamed:defaultStartupClassName) notNil ifTrue:[
+                    defaultStartupClassName := nil
+                ].
+                startupClassName := Dialog 
+                                request:(resources 
+                                    stringWithCRs:'Create startup class (e.g. main)?\(Enter name or cancel)')
+                                initialAnswer:defaultStartupClassName.
+                startupClassName notNil ifTrue:[
+                    theCode := '
+StandaloneStartup subclass: #''%1''
+    instanceVariableNames:'' ''
+    classVariableNames:'' ''
+    poolDictionaries:'' ''
+    category:''%1'' 
+'               bindWith:startupClassName.
+
+                    self canUseRefactoringSupport ifTrue:[
+                        change := AddClassChange definition: theCode.
+                        change name:('Create startup class %1' bindWith:startupClassName).
+                        RefactoryChangeManager performChange:change
+                    ] ifFalse:[
+                        self 
+                            doAcceptClassDefinition:theCode 
+                            usingCompiler:Compiler.
+                    ].
+
+                    startupClass := Smalltalk classNamed:startupClassName.
+                    startupClass package:package.
+
+                    "/ update the classList, again
+                    projectDefinitionClass compileDescriptionMethods.
+                    "/ generate startupClass code
+    self halt.
+                    SmalltalkCodeGeneratorTool
+                        compile:(projectDefinitionClass startupClassName_codeFor:(startupClass name))
+                        forClass:projectDefinitionClass theMetaclass
+                        inCategory:'description - startup'.
+
+                    self classMenuGenerateApplicationCodeForClasses:{ startupClass }.
+                    startupClass instAndClassMethodsDo:[:m | m package:package].
+                ].
+
+                self selectClass:appClass.
+            ]
+        ]
+    ].
+
+    "Modified: / 21-01-2012 / 13:38:43 / cg"
 !
 
 projectMenuProperties
@@ -33328,21 +37556,20 @@
         ^ self
     ].
 
-    ProjectDefinitionEditor new
+    Tools::ProjectDefinitionEditor new
         definitionClass:defClass;
         open
 
-    "Modified: / 09-02-2007 / 12:17:29 / cg"
+    "Modified: / 20-01-2012 / 16:36:32 / cg"
 !
 
 projectMenuRecompileInstrumented
     self selectedProjectClasses do:[:eachClass |
-        eachClass theNonMetaclass recompileUsingCompilerClass:InstrumentingCompiler.
-        eachClass theMetaclass recompileUsingCompilerClass:InstrumentingCompiler.
+        self recompileClassWithInstrumentation:eachClass
     ].
 
     "Created: / 27-04-2010 / 12:39:43 / cg"
-    "Modified: / 27-04-2010 / 14:09:13 / cg"
+    "Modified: / 30-09-2011 / 12:39:19 / cg"
 !
 
 projectMenuRegenerateProjectContentsDefinitions
@@ -33441,6 +37668,9 @@
 !
 
 projectMenuRepositoryHistory
+
+    <resource: #obsolete> "use ...Using:manager variant"
+
     |projects|
 
     projects := self selectedProjects value.
@@ -33449,6 +37679,21 @@
     self repositoryHistoryForProjects:projects
 
     "Modified: / 12-09-2006 / 15:06:02 / cg"
+    "Modified: / 15-10-2011 / 22:58:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuRepositoryHistoryUsingManager: manager
+
+    |projects|
+
+    projects := self selectedProjects value.
+    projects size == 0 ifTrue:[projects := nil].
+
+    self repositoryHistoryForProjects:projects usingManager: manager
+
+    "Modified: / 12-09-2006 / 15:06:02 / cg"
+    "Created: / 15-10-2011 / 22:59:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:20:03 / cg"
 !
 
 projectMenuResources
@@ -33456,6 +37701,9 @@
 !
 
 projectMenuSetTag
+
+    <resource: #obsolete> "use ...Using:manager variant"
+
     |tag|
 
     tag := Dialog request:'Tag:'.
@@ -33471,12 +37719,13 @@
     ]
 
     "Created: / 12-09-2006 / 13:25:09 / cg"
+    "Modified: / 15-10-2011 / 22:45:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 projectMenuShowGeneratedBuildFile:whichFile
     "/ intermediate - this will be removed later
 
-    |package defClass newFile oldFile editor differ theFile|
+    |package defClass newFile oldFile editor differ theFile missingName|
 
     self hasProjectDefinitionSelected ifTrue:[
         self hasSingleClassSelected ifTrue:[
@@ -33509,15 +37758,17 @@
         theFile := defClass nsiFilename.
     ].
 
-    (defClass allClassNames "compiled_classNames"
-        contains:[:aName |
+    (missingName := defClass allClassNames "compiled_classNames"
+        detect:[:aName |
             |cls|
 
             cls := Smalltalk at:aName asSymbol.
             cls isNil
-        ])
-    ifTrue:[
-        (Dialog confirm:('Some class from the list of compiled classes is missing in the image!!\\Continue anyway ?') withCRs)
+        ]
+        ifNone:nil)
+    notNil ifTrue:[
+        (Dialog confirm:(resources stringWithCRs:'Some class (%1) from the list of compiled classes is missing in the image!!\\Continue anyway ?'
+                                    with:missingName))
         ifFalse:[^ self ].
     ].
 
@@ -33562,7 +37813,102 @@
     ].
 
     "Created: / 29-08-2006 / 15:35:44 / cg"
-    "Modified: / 19-12-2006 / 12:15:33 / cg"
+    "Modified: / 12-09-2011 / 16:03:28 / cg"
+!
+
+projectMenuShowGeneratedBuildFile:whichFile usingManager: manager
+    "/ intermediate - this will be removed later
+
+    |package defClass newFile oldFile editor differ theFile missingName|
+
+    self hasProjectDefinitionSelected ifTrue:[
+        self hasSingleClassSelected ifTrue:[
+            defClass := self theSingleSelectedClass
+        ].
+        defClass isNil ifTrue:[
+            self warn:(resources string:'Please select a single project definition class').
+            ^ self.
+        ].
+        defClass := defClass theNonMetaclass.
+        package := defClass package.
+    ] ifFalse:[
+        self hasSingleProjectSelected ifTrue:[
+            package := self theSingleSelectedProject.
+            defClass := ProjectDefinition definitionClassForPackage:package.
+            defClass isNil ifTrue:[
+                self warn:(resources string:'Missing project definition class (%1)\for package: %2.'
+                        with:(ProjectDefinition initialClassNameForDefinitionOf:package)
+                        with:package allBold).
+                ^ self.
+            ].
+        ]
+    ].
+
+    theFile := whichFile.
+    theFile = 'lib.rc' ifTrue:[
+        theFile := defClass rcFilename.
+    ].
+    theFile = 'app.nsi' ifTrue:[
+        theFile := defClass nsiFilename.
+    ].
+
+    (missingName := defClass allClassNames "compiled_classNames"
+        detect:[:aName |
+            |cls|
+
+            cls := Smalltalk at:aName asSymbol.
+            cls isNil
+        ]
+        ifNone:nil)
+    notNil ifTrue:[
+        (Dialog confirm:(resources stringWithCRs:'Some class (%1) from the list of compiled classes is missing in the image!!\\Continue anyway ?'
+                                    with:missingName))
+        ifFalse:[^ self ].
+    ].
+
+    whichFile = 'abbrev.stc' ifTrue:[
+        (defClass compiled_classNames
+            contains:[:aName |
+                |cls|
+
+                cls := Smalltalk at:aName asSymbol.
+                cls notNil and:[cls isLoaded not]
+            ])
+        ifTrue:[
+            (Dialog confirm:'Autoload missing class(es) ?\\Notice: generated abbrev.stc file is wrong if autoloaded classes are unloaded' withCRs) ifTrue:[
+                defClass compiled_classNames do:[:aName |
+                    (Smalltalk at:aName asSymbol) autoload
+                ].
+            ].
+        ].
+    ].
+
+    [
+        newFile := defClass generateFile:theFile.
+    ] on:Error do:[:ex|
+        self errorNotify:ex description.
+        ^ self.
+    ].
+
+    manager notNil ifTrue:[
+        oldFile := manager
+                        getFile:theFile
+                        revision:#newest
+                        directory:(package asPackageId directory)
+                        module:(package asPackageId module).
+    ].
+    oldFile isNil ifTrue:[
+        editor := EditTextView openOnModel:newFile.
+        editor topView label:(resources string:'Generated %1' with:theFile).
+    ] ifFalse:[
+        differ := DiffCodeView
+                openOn:oldFile label:(resources string:'Newest %1 in Repository' with:theFile)
+                and:newFile label:(resources string:'Generated %1' with:theFile).
+    ].
+
+    "Modified: / 12-09-2011 / 16:03:28 / cg"
+    "Created: / 12-10-2011 / 19:02:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:24:42 / cg"
 !
 
 projectMenuSpawn
@@ -33689,7 +38035,7 @@
                 |mgr info classesModule classesPackageDir classesContainerFileName|
 
                 eachClassInProject isPrivate ifFalse:[
-                    mgr := SourceCodeManagerUtilities sourceCodeManagerFor:eachClassInProject.
+                    mgr := SourceCodeManagerUtilities default sourceCodeManagerFor:eachClassInProject.
                     info := mgr sourceInfoOfClass:eachClassInProject.
                     info isNil ifTrue:[
                         "/ no container for that class
@@ -33841,16 +38187,28 @@
     "Modified: / 23-10-2006 / 11:01:42 / cg"
 ! !
 
+!NewSystemBrowser methodsFor:'menu actions-project-monticello'!
+
+projectMenuMonticelloBrowseRepositories
+    MCRepositoryBrowser openOnPrimaryRepositoryForPackage:(self theSingleSelectedProject).
+
+    "Created: / 01-12-2011 / 21:47:24 / cg"
+! !
+
 !NewSystemBrowser methodsFor:'menu actions-protocol'!
 
 doMoveSelectedProtocolsToProject:newProject
     "change the package-id of all methods in the selected protocols.
      Will eventually update the Project-object"
 
-    self selectedProtocolMethodsDo:[:cls :protocol :sel :eachMethod |
-        eachMethod package:newProject.
-    ].
-    self rememberLastProjectMoveTo:newProject
+    self withWaitCursorDo:[
+        self selectedProtocolMethodsDo:[:cls :protocol :sel :eachMethod |
+            eachMethod package:newProject.
+        ].
+        self rememberLastProjectMoveTo:newProject
+    ].
+
+    "Modified: / 08-09-2011 / 04:17:32 / cg"
 !
 
 methodListMenuUpdate
@@ -34654,7 +39012,7 @@
                             ifTrue:[ ns := '' ]
                             ifFalse:[ns := ' (in ',ns,')'].
                         cls nameWithoutNameSpacePrefix,ns
-                    ]) sortWith:allClasses.
+                    ]) sortWith:allClasses; yourself.
 
     updateList := [
             |nameToSearch list namesStarting namesIncluding lcName|
@@ -34714,7 +39072,7 @@
     ].
 
     doWhat isNil ifTrue:[
-        aBlock notNil ifTrue:[aBlock value:className].
+        aBlock notNil ifTrue:[aBlock value:className optionalArgument:singleClass and:doWhat].
         ^ className
     ].
 
@@ -34723,7 +39081,7 @@
     ].
     ^ className
 
-    "Modified: / 14-04-2011 / 10:21:40 / cg"
+    "Modified: / 18-01-2012 / 11:28:42 / cg"
 !
 
 askForClassToSearch:doWhatByDefault single:singleClass msgTail:msgTail thenDo:aBlock
@@ -35290,6 +39648,8 @@
      with the the newest versions found in the repository.
      That is the most recent version."
 
+    <resource: #obsolete> "use ...Repository: methods using:manager variant"
+
     |s aStream comparedSource currentSource thisRevString
      current repositoryChangeSet diffs allDiffs
      mclass mselector theNonMetaclass lastClass lastRepositoryChangeSet
@@ -35326,7 +39686,7 @@
                     repositoryChangeSet := SourceCodeManagerUtilities
                                                  changeSetForExtensionMethodsForPackage:methodPackage
                                                  askForRevision:false
-                                                 using:SourceCodeManager.
+                                                 usingManager:SourceCodeManager.
                     repositoryChangeSet := repositoryChangeSet
                                     select:[:eachChange | eachChange isMethodChange
                                                           and:[eachChange selector = mselector
@@ -35413,13 +39773,153 @@
         openOnDiffSet:allDiffs
         labelA:labelA
         labelB:labelB
-        title:title.
+        title:title
+        ignoreExtensions:false.
 
     self normalLabel.
 
     "Created: / 04-01-1997 / 15:48:20 / cg"
-    "Modified: / 19-02-2011 / 15:32:42 / cg"
     "Modified: / 11-08-2011 / 12:21:30 / az"
+    "Modified: / 18-11-2011 / 18:46:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-12-2011 / 20:21:46 / cg"
+!
+
+doCompareMethodsWithRepository:methods usingManager: manager
+    "open a diff-textView comparing the current (in-image) versions
+     with the the newest versions found in the repository.
+     That is the most recent version."
+
+    |s aStream comparedSource currentSource thisRevString
+     current repositoryChangeSet diffs allDiffs
+     mclass mselector theNonMetaclass lastClass lastRepositoryChangeSet
+     isExtension title labelA labelB|
+
+    self withWaitCursorDo:[
+        Method flushSourceStreamCache.
+
+        methods do:[:eachMethod |
+            |classPackage methodPackage|
+
+            mclass := eachMethod mclass.
+            mclass isNil ifTrue:[
+                self warn:('Cannot find methods class (obsolete).').
+            ] ifFalse:[
+                classPackage := mclass package.
+                methodPackage := eachMethod package.
+                (classPackage == methodPackage or:[ methodPackage == PackageId noProjectID ]) ifTrue:[
+                    theNonMetaclass := mclass theNonMetaclass.
+                    isExtension := false.
+                ] ifFalse:[
+                    isExtension := true.
+                ].
+
+                mselector := eachMethod selector.
+
+                currentSource := eachMethod source asString.
+                current := ChangeSet new.
+                current addMethodChange:eachMethod in:mclass.
+
+                self busyLabel:'getting repository source...' with:nil.
+
+                isExtension ifTrue:[
+                    repositoryChangeSet := manager utilities
+                                                 changeSetForExtensionMethodsForPackage:methodPackage
+                                                 askForRevision:false
+                                                 usingManager:manager.
+                    repositoryChangeSet := repositoryChangeSet
+                                    select:[:eachChange | eachChange isMethodChange
+                                                          and:[eachChange selector = mselector
+                                                          and:[eachChange className = mclass name]]].
+                    lastClass := nil.
+                ] ifFalse:[
+                    (lastClass ~~ theNonMetaclass) ifTrue:[
+                        aStream := self sourceStreamForRepositorySourceOfClass:theNonMetaclass.
+                        aStream notNil ifTrue:[
+                            aStream class readErrorSignal handle:[:ex |
+                                self warn:('read error while reading extracted source\\' , ex description) withCRs.
+                                aStream close.
+                                comparedSource := nil.
+                            ] do:[
+                                comparedSource := aStream contents asString.
+                            ].
+                            aStream close.
+
+                            thisRevString := theNonMetaclass revision.
+                            thisRevString isNil ifTrue:[
+                                thisRevString := 'no revision'
+                            ].
+
+                            lastRepositoryChangeSet := ChangeSet fromStream:(s := comparedSource readStream). s close.
+                            lastClass := theNonMetaclass.
+
+                            self busyLabel:'comparing...' with:nil.
+                        ].
+                    ].
+                    repositoryChangeSet := (lastRepositoryChangeSet ? #())
+                                    select:[:eachChange | eachChange isMethodChange
+                                                          and:[eachChange selector = mselector
+                                                          and:[eachChange className = mclass name]]].
+                ].
+                repositoryChangeSet notEmptyOrNil ifTrue:[
+                    diffs := repositoryChangeSet diffSetsAgainst:current.
+                ].
+                allDiffs isNil ifTrue:[
+                    allDiffs := diffs.
+                ] ifFalse:[
+                    allDiffs changed addAll:(diffs changed).
+                    allDiffs onlyInArg addAll:(diffs onlyInArg).
+                    allDiffs onlyInReceiver addAll:(diffs onlyInReceiver).
+                ].
+            ].
+        ].
+    ].
+
+    (allDiffs isNil or:[allDiffs isEmpty]) ifTrue:[
+        (methods
+            contains:[:m |
+                ChangeSet current includesChangeForClass:m mclass selector:m selector
+            ]
+        ) ifTrue:[
+            (self confirm:'Versions are identical.\\Remove entries from changeSet ?' withCRs)
+            ifTrue:[
+                methods do:[:m |
+                    ChangeSet current condenseChangesForClass:m mclass selector:m selector.
+                ].
+            ].
+        ] ifFalse:[
+            self information:'Versions are identical.'.
+        ].
+        ^ self.
+    ].
+
+    title := methods size == 1
+                ifTrue:['Difference of %1' bindWith:methods first whoString]
+                ifFalse:['Differences of %1 classes' bindWith:methods size].
+
+    labelA := 'Repository'.
+    labelB := 'Image'.
+
+    (methods collect:[:m | m mclass theNonMetaclass]) asSet size == 1 ifTrue:[
+        "/ all methods of the same class
+        (methods collect:[:m | m package]) asSet size == 1 ifTrue:[
+            "/ all methods from the same package (source container)
+            labelA := 'Repository (%1)' bindWith:(thisRevString ? '?').
+            labelB := 'Image (based on %1)' bindWith:(methods first mclass theNonMetaclass revision).
+        ].
+    ].
+
+    VersionDiffBrowser
+        openOnDiffSet:allDiffs
+        labelA:labelA
+        labelB:labelB
+        title:title
+        ignoreExtensions:false.
+
+    self normalLabel.
+
+    "Modified: / 11-08-2011 / 12:21:30 / az"
+    "Created: / 18-11-2011 / 18:45:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:17:36 / cg"
 !
 
 doMoveSelectedMethodsToProject:newProject
@@ -36077,6 +40577,9 @@
 !
 
 selectorMenuBrowseRepositoryVersions
+
+    <resource: #obsolete> "use ...Using:manager variant"
+
     |method mclass mselector className mgr revisions previousMethods browser
      lastSource currentSource lastRevision lastDate lastChange thisIsAnExtensionMethod
      packageId directory module|
@@ -36102,7 +40605,7 @@
     ] ifFalse:[
         packageId := mclass package asPackageId.
         "/ mgr := packageId projectDefinitionClass sourceCodeManager.
-        mgr := SourceCodeManagerUtilities sourceCodeManagerFor:mclass.
+        mgr := SourceCodeManagerUtilities default sourceCodeManagerFor:mclass.
         self assert:(mgr = packageId projectDefinitionClass sourceCodeManager).
     ].
     directory := packageId directory.
@@ -36278,6 +40781,221 @@
     ].
 
     "Modified: / 01-07-2011 / 16:34:29 / cg"
+    "Modified: / 18-11-2011 / 18:17:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectorMenuBrowseRepositoryVersionsUsingManager: manager
+
+    |method mclass mselector className mgr revisions previousMethods browser
+     lastSource currentSource lastRevision lastDate lastChange thisIsAnExtensionMethod
+     packageId directory module|
+
+    method := self theSingleSelectedMethod.
+    method isNil ifTrue:[^ self].
+
+    mclass := method mclass.
+    mselector := method selector.
+    className := mclass name.
+    [
+        |set|
+
+        set := ChangeSet forExistingMethods:(Array with:method).
+        set := set select:[:c | c isMethodChange].
+        lastChange := set first.
+    ] value.
+
+    thisIsAnExtensionMethod := (method package ~= mclass package).
+    thisIsAnExtensionMethod ifTrue:[
+        packageId := method package asPackageId.
+        mgr := manager
+    ] ifFalse:[
+        packageId := mclass package asPackageId.
+        "/ mgr := packageId projectDefinitionClass sourceCodeManager.
+        mgr := manager.
+        "/self assert:(mgr = packageId projectDefinitionClass sourceCodeManager).
+    ].
+    directory := packageId directory.
+    module := packageId module.
+
+    self withWaitCursorDo:[
+        |revisionLog start stop answer t tS list msg first|
+
+        thisIsAnExtensionMethod ifTrue:[
+            revisionLog := mgr 
+                revisionLogOf:nil
+                fromRevision:nil 
+                toRevision:nil
+                numberOfRevisions:nil
+                fileName:'extensions.st'
+                directory:directory 
+                module:module.
+        ] ifFalse:[
+            revisionLog := mgr revisionLogOf:mclass.
+        ].
+        revisions := revisionLog at:#revisions.
+
+        start := 1.
+        stop := revisions size.
+        stop > 20 ifTrue:[
+            thisIsAnExtensionMethod ifTrue:[
+                t := 500.   "/ fake time
+            ] ifFalse:[
+                "/ measure the time it takes to checkout a version...
+                t := Time millisecondsToRun:[
+                    |revSourceStream|
+
+                    revSourceStream := mgr getSourceStreamFor:mclass revision:((revisions at:10) at:#revision).
+                    ChangeSet fromStream:revSourceStream.
+                    revSourceStream close.
+                ].
+            ].
+
+            list := revisions collect:[:entry |
+                                        |rev author dateString date msg|
+
+                                        rev := entry at:#revision.
+                                        author := entry at:#author.
+                                        dateString := entry at:#date.
+                                        date := Timestamp readGeneralizedFrom:dateString.
+                                        dateString := date printStringFormat:'%(year)-%(mon)-%(day) %h:%m:%s'.
+                                        entry at:#date put:dateString.
+                                        msg := (entry at:#logMessage) asStringCollection first asString.
+                                        rev,' ',author,' ',dateString,' ',msg
+                                      ].
+            msg := 'There are %1 revisions to extract from the repository'.
+            t := (t * revisions size / 1000) rounded.
+            t < 10 ifTrue:[
+                msg := msg,'\(this will take a few seconds).'.
+                tS := t.
+            ] ifFalse:[
+                t := t * revisions size // 1000 // 10 * 10.
+                tS := (TimeDuration fromSeconds:t) printStringForApproximation.
+                msg := msg,'\(this will take roughly %2).'
+            ].
+            msg := msg,'\\Do you want to see all or only some of the revisions ?'.
+
+            answer := Dialog
+                choose:(resources stringWithCRs:msg
+                                    with:revisions size
+                                    with:tS)
+                fromList:list values:revisions initialSelection:nil
+                buttons:nil
+                values:nil
+                default:nil
+                lines:20
+                cancel:[^ self]
+                multiple:false
+                title:(resources string:'Confirmation')
+                postBuildBlock:[:dialog |
+                            |b|
+
+                            b := Button label:(resources string:'Browse Newer than Selected').
+                            b action:[ stop := (dialog componentAt:#ListView) selection. dialog okPressed].
+                            b := dialog addButton:b before:dialog okButton.
+
+                            dialog okButton label:(resources string:'Browse All').
+                            dialog okButton action:[ stop := revisions size. dialog okPressed].
+                        ].
+
+            stop isNil ifTrue:[^ self ].
+        ].
+
+t := Time millisecondsToRun:[
+
+        previousMethods := ChangeSet new.
+        lastSource := currentSource := method source.
+        lastRevision := lastDate := nil.
+        first := true.
+
+        revisions from:start to:stop do:[:eachLogEntry |
+            |revision date revSourceStream|
+
+            revision := eachLogEntry at:#revision.
+            date := eachLogEntry at:#date.
+
+            [
+                |chg nChg classChangeSet changeSource changeName|
+
+                self activityNotification:('Fetching revision ',revision,'...').
+                thisIsAnExtensionMethod ifTrue:[
+                    revSourceStream := mgr 
+                                            streamForClass:nil
+                                            fileName:'extensions.st' 
+                                            revision:revision 
+                                            directory:directory 
+                                            module:module
+                                            cache:true.
+                ] ifFalse:[
+                    revSourceStream := mgr getSourceStreamFor:mclass revision:revision.
+                ].
+                classChangeSet := ChangeSet fromStream:revSourceStream.
+
+                chg := classChangeSet
+                            detect:[:chg | chg isMethodChange
+                                           and:[chg selector = mselector
+                                           and:[chg className = className]]]
+                            ifNone:nil.
+
+                chg isNil ifTrue:[
+                    "the method was created in the next version (previous one processed)"
+                ] ifFalse:[
+                    changeSource := chg source.
+                ].
+                ((changeSource isNil and:[lastSource isNil]) 
+                or:[ changeSource asString = lastSource asString ]) ifTrue:[
+                ] ifFalse:[
+                    lastChange isNil ifTrue:[ 
+                        "/ mhm - was not in the previous version
+                    ] ifFalse:[
+                        nChg := lastChange asNamedMethodChange 
+                    ].
+                    lastRevision isNil ifTrue:[
+                        (stop = revisions size) ifTrue:[
+                            changeName := 'current (not in the repository)'.
+                        ] ifFalse:[
+                            "/ not showing all - dont really know
+                            changeName := 'current'.
+                        ].
+                    ] ifFalse:[
+                        changeName := lastRevision,' [',lastDate,']'.
+                        first ifTrue:[
+                            changeName := changeName,' (= current)'.
+                        ]
+                    ].
+                    nChg notNil ifTrue:[
+                        nChg changeName:changeName.
+                        previousMethods add:nChg.
+                    ].
+                    lastSource := changeSource.
+                    lastChange := chg.
+
+                    first := false.
+                ].
+                lastRevision := revision.
+                lastDate := date.
+            ] ensure:[
+                revSourceStream notNil ifTrue:[revSourceStream close].
+            ].
+        ].
+].
+"/ Transcript showCR:('it took %1 seconds' bindWith:(t /1000)printString).
+
+        self activityNotification:nil.
+        browser := (UserPreferences current changeSetBrowserClass) openOn:previousMethods.
+        browser window label:('Revisions of ' , mclass name , ' ' , mselector).
+        browser readOnly:true.
+    ].
+
+    "Modified: / 01-07-2011 / 16:34:29 / cg"
+    "Created: / 18-11-2011 / 18:19:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:29:42 / cg"
+!
+
+selectorMenuBrowseRepositoryVersionsUsingManagerNamed: managerName
+
+    ^self selectorMenuBrowseRepositoryVersionsUsingManager: (Smalltalk at:managerName asSymbol)
+
+    "Created: / 02-01-2012 / 12:35:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 selectorMenuChangePrivacyTo:privacySymbol
@@ -36323,7 +41041,29 @@
      with the the newest version found in the repository.
      That is the most recent version."
 
+    <resource: #obsolete> "use ...Using:manager variant"
+
     self doCompareMethodsWithRepository:(self selectedMethods value).
+
+    "Modified: / 18-11-2011 / 18:43:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectorMenuCompareAgainstNewestInRepositoryUsingManager: manager
+    "open a diff-textView comparing the current (in-image) version
+     with the the newest version found in the repository.
+     That is the most recent version."
+
+    self doCompareMethodsWithRepository:(self selectedMethods value) usingManager: manager.
+
+    "Created: / 18-11-2011 / 18:44:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:20:20 / cg"
+!
+
+selectorMenuCompareAgainstNewestInRepositoryUsingManagerNamed: managerNamed
+
+    ^ self selectorMenuCompareAgainstNewestInRepositoryUsingManager: (Smalltalk at:managerNamed asSymbol)
+
+    "Created: / 02-01-2012 / 12:37:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 selectorMenuCompareClassAgainstNewestInRepository
@@ -36331,12 +41071,40 @@
      with the the newest version found in the repository.
      That is the most recent version."
 
+    <resource: #obsolete> "use ...Using:manager variant"
+
+    |classes|
+
+    classes := (self selectedMethods value collect:[:m | m mclass theNonMetaclass]) asSet.
+    self doCompareClassesWithRepository:classes.
+
+    "Created: / 13-10-2006 / 11:40:23 / cg"
+    "Modified (format): / 18-11-2011 / 18:47:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectorMenuCompareClassAgainstNewestInRepositoryUsingManager: manager
+    "open a diff-textView comparing the current (in-image) version of the class(es)
+     with the the newest version found in the repository.
+     That is the most recent version."
+
     |classes|
 
     classes := (self selectedMethods value collect:[:m | m mclass theNonMetaclass]) asSet.
-    self doCompareClassesWithRepository:classes.
-
-    "Created: / 13-10-2006 / 11:40:23 / cg"
+    self doCompareClassesWithRepository:classes usingManager: manager
+
+    "Created: / 18-11-2011 / 18:47:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:20:28 / cg"
+!
+
+selectorMenuCompareClassAgainstNewestInRepositoryUsingManagerNamed: managerName
+    "open a diff-textView comparing the current (in-image) version of the class(es)
+     with the the newest version found in the repository.
+     That is the most recent version."
+
+    ^ self selectorMenuCompareClassAgainstNewestInRepositoryUsingManager: (Smalltalk at:managerName asSymbol)
+
+    "Created: / 21-12-2011 / 20:20:28 / cg"
+    "Created: / 02-01-2012 / 12:37:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 selectorMenuCompareTwoSelectedMethods
@@ -38664,6 +43432,7 @@
     "Modified: / 25-06-2010 / 10:08:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+
 !NewSystemBrowser methodsFor:'menu actions-variables'!
 
 browseVarRefsOrModsWithTitle:browserTitle boxTitle:boxTitle variables:varType access:accessType all:browseAll
@@ -39208,8 +43977,8 @@
                         ifFalse:['Accessors']].
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate ',what,' in %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate ',what,' in %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             |classVars instVars|
 
             classVars := names select:[:var | eachClass classVarNames includes:var].      
@@ -39236,7 +44005,7 @@
             ]
         ]
 
-    "Modified: / 05-07-2011 / 23:01:12 / cg"
+    "Modified: / 21-01-2012 / 10:25:52 / cg"
 !
 
 variablesMenuGenerateAccessMethodsForAll
@@ -39332,8 +44101,8 @@
     "common helper to create access methods."
 
     self
-        generateUndoableChangeOverSelectedClasses:'Generate collection access in %(singleClassNameOrNumberOfClasses)'
-        via:[:generator :eachClass |
+        generateUndoableChange:'Generate collection access in %(singleClassNameOrNumberOfClasses)'
+        overSelectedClassesVia:[:generator :eachClass |
             names size > 0 ifTrue:[
                 generator
                     createCollectionAccessMethodsFor:names
@@ -40048,6 +44817,21 @@
     ].
 !
 
+categoryMenuWithFind
+    "insert the sourcecode manager name"
+
+    <resource: #programMenu>
+
+    | menu |
+
+    menu := self class categoryMenuWithFind decodeAsLiteralArray.
+    menu receiver:self.
+    menu findGuiResourcesIn:self.
+    ^ menu
+
+    "Created: / 15-10-2011 / 12:28:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 changedClassesMenu
     "returns a block evaluating to a popup menu to navigate
      to the last few changed classes"
@@ -40192,25 +44976,15 @@
 
     <resource: #programMenu>
 
-    |menu item sourceCodeManager|
+    | menu |
 
     menu := self class classMenu decodeAsLiteralArray.
-    item := menu menuItemWithArgument:#SCM.
-    self theSingleSelectedClass notNil ifTrue:[
-        sourceCodeManager := self theSingleSelectedClass sourceCodeManager.
-    ] ifFalse:[
-        sourceCodeManager := SourceCodeManager ? AbstractSourceCodeManager defaultManager.
-    ].
-    sourceCodeManager isNil ifTrue:[
-        item label:(resources string:'SCM (none)').
-    ] ifFalse:[
-        item label:(resources string:'SCM (%1)' with:(sourceCodeManager managerTypeName)).
-    ].
     menu receiver:self.
     menu findGuiResourcesIn:self.
     ^ menu
 
     "Created: / 19-04-2011 / 14:29:47 / cg"
+    "Created: / 11-10-2011 / 09:08:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 classOperationsMenu
@@ -40482,6 +45256,56 @@
     ].
 !
 
+globalReferencesMenu
+    "a menu allowing to browse the referenced globals (typically: classes) of the
+     selected method(s)"
+
+    |classes m|
+
+    classes := Set new.
+
+    self selectedMethodsDo:[:m |
+        m literalsDo:[:lit |
+            |cls ns|
+
+            lit isSymbol ifTrue:[
+                (((cls := Smalltalk at:lit) notNil and:[ cls isBehavior ])
+                "JV@2011-11-25: Added check if the nameSpace is really a namespace, it may be
+                 a class if m mclass is a privateClass...
+                 ---------------------------------------------v"
+                or:[ m mclass notNil 
+                     and:[ (ns := m mclass nameSpace) notNil 
+                     and:[ ns isNameSpace 
+                     and:[ ns ~= Smalltalk
+                     and:[ (cls := ns at:lit) notNil  and:[ cls isBehavior ]]]]]])
+                ifTrue:[
+                    classes add:cls
+                ]
+            ]
+        ].
+    ].
+    classes isEmpty ifTrue:[
+        ^ nil
+    ].
+
+    classes := classes asOrderedCollection sort:[:a :b | a name < b name].
+
+    m := Menu new.
+    classes do:[:each |
+        |item|
+
+        item := MenuItem label:each name.   
+        item value:#'spawnBrowserOnClass:'.
+        item argument:each.
+        m addItem:item.
+    ].
+    ^ m
+
+    "Created: / 26-10-2011 / 18:15:01 / cg"
+    "Modified (comment): / 25-11-2011 / 21:57:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-12-2011 / 23:52:28 / cg"
+!
+
 goBackInGlobalHistoryMenu
     <resource: #programMenu>
 
@@ -40861,6 +45685,21 @@
         ^menu
 !
 
+projectMenu
+
+    <resource: #programMenu>
+
+    | menu |
+
+    menu := self class projectMenu decodeAsLiteralArray.
+    menu receiver:self.
+    menu findGuiResourcesIn:self.
+    ^ menu
+
+    "Created: / 18-02-2000 / 12:17:28 / cg"
+    "Modified: / 12-10-2011 / 20:31:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 selectedClassesHierarchyMenu
     <resource: #programMenu >
 
@@ -40989,6 +45828,475 @@
     "Modified: / 20-11-2006 / 12:23:08 / cg"
 ! !
 
+!NewSystemBrowser methodsFor:'menus-dynamic-SCM'!
+
+categoryMenuSCMFor: sourceCodeManagerClassName
+    "insert the sourcecode manager name"
+
+    <resource: #programMenu>
+
+    |manager menu |
+
+    sourceCodeManagerClassName isBehavior ifTrue:[
+        manager := sourceCodeManagerClassName
+    ] ifFalse:[
+        manager := Smalltalk at: sourceCodeManagerClassName.
+    ].
+    manager isNil ifTrue:[
+        menu := Menu new.
+        menu addItem: 
+            (MenuItem 
+                label: (resources string: 'Unavailable - Configure SCM') 
+                value: [self openSettingsDialogAndSelectSourceCodeManagement])
+    ] ifFalse:[
+        menu := self class categoryMenuSCMCommon decodeAsLiteralArray.
+    ].
+    self replaceSourceCodeManagerPlaceholderWith: manager in: menu.
+
+    ^ menu
+
+    "Created: / 15-10-2011 / 12:23:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+categoryMenuSCMSlice
+
+    <resource: #programMenu>
+
+    ^self 
+        commonMenuSCMSliceNamed: #categoryMenuSCMSlice
+        computeManagerWith:
+            [:managers|
+            self selectedCategoryClassesDo: [:cls|
+                | mgr |
+
+                mgr := cls theNonMetaclass sourceCodeManager. 
+                mgr isNil ifFalse:[managers add: mgr]
+            ]].
+
+    "Created: / 19-04-2011 / 14:29:47 / cg"
+    "Created: / 15-10-2011 / 12:31:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+classMenuSCMExtraFor: sourceCodeManagerClassName
+
+    <resource: #programMenu>
+
+    |manager spec menu |
+
+    sourceCodeManagerClassName isBehavior ifTrue:[
+        manager := sourceCodeManagerClassName
+    ] ifFalse:[
+        manager := Smalltalk at: sourceCodeManagerClassName.
+        manager isNil ifTrue:[
+            ^Menu new
+        ].
+    ].
+    spec := self class perform: ('classMenuSCMExtra_' , manager managerTypeNameShort) asSymbol ifNotUnderstood:[nil].
+    spec notNil ifTrue:[
+        menu := spec decodeAsLiteralArray.
+        menu receiver:self.
+        menu findGuiResourcesIn:self.
+        menu addItem: (MenuItem separator) beforeIndex: 1
+    ] ifFalse:[
+        menu := Menu new.
+    ].
+    ^menu
+
+    "Created: / 12-10-2011 / 16:04:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+classMenuSCMExtraForManagerNamed:sourceCodeManagerClassName
+
+    <resource: #programMenu>
+
+    |manager spec menu |
+
+    sourceCodeManagerClassName isBehavior ifTrue:[
+        manager := sourceCodeManagerClassName
+    ] ifFalse:[
+        manager := Smalltalk at: sourceCodeManagerClassName.
+        manager isNil ifTrue:[
+            ^Menu new
+        ].
+    ].
+    spec := self class perform: ('classMenuSCMExtra_' , manager managerTypeNameShort) asSymbol ifNotUnderstood:[nil].
+    spec notNil ifTrue:[
+        menu := spec decodeAsLiteralArray.
+        menu receiver:self.
+        menu findGuiResourcesIn:self.
+        menu addItem: (MenuItem separator) beforeIndex: 1
+    ] ifFalse:[
+        menu := Menu new.
+    ].
+    ^menu
+
+    "Created: / 12-10-2011 / 16:04:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:01:27 / cg"
+!
+
+classMenuSCMFor: sourceCodeManagerClassName
+    "insert the sourcecode manager name"
+
+    <resource: #programMenu>
+
+    |manager menu |
+
+    sourceCodeManagerClassName isBehavior ifTrue:[
+        manager := sourceCodeManagerClassName
+    ] ifFalse:[
+        manager := Smalltalk at: sourceCodeManagerClassName.
+    ].
+    manager isNil ifTrue:[
+        menu := Menu new.
+        menu addItem: 
+            (MenuItem 
+                label: (resources string: 'Unavailable - Configure SCM') 
+                value: [self openSettingsDialogAndSelectSourceCodeManagement])
+    ] ifFalse:[
+        menu := self class classMenuSCMCommon decodeAsLiteralArray.
+    ].
+    self replaceSourceCodeManagerPlaceholderWith: manager in: menu.
+
+    ^ menu
+
+    "Created: / 07-10-2011 / 16:18:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+classMenuSCMSlice
+
+    <resource: #programMenu>
+
+    ^self 
+        commonMenuSCMSliceNamed: #classMenuSCMSlice
+        computeManagerWith:[:managers|
+            self selectedClassesDo: [:cls|
+                | mgr |
+
+                mgr := cls theNonMetaclass sourceCodeManager. 
+                mgr notNil ifTrue:[managers add: mgr]
+            ]
+        ].
+
+    "Created: / 19-04-2011 / 14:29:47 / cg"
+    "Created: / 07-10-2011 / 14:53:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 10-01-2012 / 00:26:38 / cg"
+!
+
+commonMenuSCMSliceNamed: sliceName computeManagerWith: managersBlock  
+    "Common helper for SCM menu creation. managersBlock
+     is one arg block that should fill a set of managers
+     (passes as arg) for currently selected thingies
+     (classes, projects, ...)"
+
+    <resource: #programMenu>
+
+    | layout menu item managers manager |
+
+    layout := UserPreferences current sourceCodeManagementMenuLayout.
+    menu := self class 
+                perform: 
+                    (sliceName,  '_' , layout) asSymbol
+                ifNotUnderstood: [self class perform:(sliceName,  '_old') asSymbol].    
+    menu := menu decodeAsLiteralArray.
+    managers := Set new.        
+    managersBlock value: managers.
+    managers size == 1 ifTrue:[
+        manager := managers anyOne.
+    ] ifFalse:[
+        manager := nil
+    ].
+    item := menu menuItemWithKey:#SCM.
+    (item notNil) ifTrue:[
+        manager notNil ifTrue:[
+            manager := managers anyOne.
+            item label:(resources string:'Repository') , '  ' , (manager managerTypeName asText colorizeAllWith:Color gray).
+        ] ifFalse:[
+            item label:(resources string:'Repository').
+            item enabled: false.
+        ].
+    ].
+    self replaceSourceCodeManagerPlaceholderWith: manager in: menu.
+    (layout = 'inline') ifTrue:[
+        menu itemsDo:[:item|
+            manager notNil ifTrue:[
+                item argument == manager name ifTrue:[
+                    item label: (item label , '  ' , ((resources string: '(default)') asText colorizeAllWith: Color gray)).
+                ]
+            ] ifFalse:[
+                item enabled: false                
+            ].
+        ]
+    ].
+    ^ menu
+
+    "Created: / 19-04-2011 / 14:29:47 / cg"
+    "Created: / 15-10-2011 / 11:02:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 01-12-2011 / 21:18:20 / cg"
+!
+
+projectMenuSCMCompareBuildSupportFileFor: sourceCodeManagerClassName
+
+    <resource: #programMenu>
+
+    |manager menu |
+
+    sourceCodeManagerClassName isBehavior ifTrue:[
+        manager := sourceCodeManagerClassName
+    ] ifFalse:[
+        manager := Smalltalk at: sourceCodeManagerClassName.
+    ].
+    manager isNil ifTrue:[
+        menu := Menu new.
+        menu addItem: 
+            (MenuItem 
+                label: (resources string: 'Unavailable - Configure SCM') 
+                value: [self openSettingsDialogAndSelectSourceCodeManagement])
+    ] ifFalse:[
+        menu := self class projectMenuSCMCompareBuildSupportFile decodeAsLiteralArray.
+        menu itemsDo:[:item|
+
+            | selector |
+            selector := item value.
+            item value:[self perform: selector with: item argument with: manager]
+        ]
+    ].
+    menu receiver:self.
+    menu findGuiResourcesIn:self.
+    ^ menu
+
+    "Created: / 12-10-2011 / 20:23:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuSCMCompareBuildSupportFileForManagerNamed:sourceCodeManagerClassName
+
+    <resource: #programMenu>
+
+    |manager menu |
+
+    sourceCodeManagerClassName isBehavior ifTrue:[
+        manager := sourceCodeManagerClassName
+    ] ifFalse:[
+        manager := Smalltalk at: sourceCodeManagerClassName.
+    ].
+    manager isNil ifTrue:[
+        menu := Menu new.
+        menu addItem: 
+            (MenuItem 
+                label: (resources string: 'Unavailable - Configure SCM') 
+                value: [self openSettingsDialogAndSelectSourceCodeManagement])
+    ] ifFalse:[
+        menu := self class projectMenuSCMCompareBuildSupportFile decodeAsLiteralArray.
+        menu itemsDo:[:item|
+
+            | selector |
+            selector := item value.
+            item value:[self perform: selector with: item argument with: manager]
+        ]
+    ].
+    menu receiver:self.
+    menu findGuiResourcesIn:self.
+    ^ menu
+
+    "Created: / 12-10-2011 / 20:23:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 21-12-2011 / 20:01:10 / cg"
+!
+
+projectMenuSCMExtraFor: sourceCodeManagerClassName
+
+    <resource: #programMenu>
+
+    |manager spec menu |
+
+    sourceCodeManagerClassName isBehavior ifTrue:[
+        manager := sourceCodeManagerClassName
+    ] ifFalse:[
+        manager := Smalltalk at: sourceCodeManagerClassName.
+        manager isNil ifTrue:[
+            ^Menu new
+        ].
+    ].
+    spec := self class perform: ('projectMenuSCMExtra_' , manager managerTypeNameShort) asSymbol ifNotUnderstood:[nil].
+    spec notNil ifTrue:[
+        menu := spec decodeAsLiteralArray.
+        menu receiver:self.
+        menu findGuiResourcesIn:self.
+        menu addItem: (MenuItem separator) beforeIndex: 1
+    ] ifFalse:[
+        menu := Menu new.
+    ].
+    ^menu
+
+    "Created: / 15-10-2011 / 22:42:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuSCMFor: sourceCodeManagerClassName
+    "insert the sourcecode manager name"
+
+    <resource: #programMenu>
+
+    |manager menu |
+
+    sourceCodeManagerClassName isBehavior ifTrue:[
+        manager := sourceCodeManagerClassName
+    ] ifFalse:[
+        manager := Smalltalk at: sourceCodeManagerClassName.
+    ].
+    manager isNil ifTrue:[
+        menu := Menu new.
+        menu addItem: 
+            (MenuItem 
+                label: (resources string: 'Unavailable - Configure SCM') 
+                value: [self openSettingsDialogAndSelectSourceCodeManagement])
+    ] ifFalse:[
+        menu := self class projectMenuSCMCommon decodeAsLiteralArray.
+    ].
+    self replaceSourceCodeManagerPlaceholderWith: manager in: menu.
+
+    ^ menu
+
+    "Created: / 12-10-2011 / 20:57:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+projectMenuSCMSlice
+
+    <resource: #programMenu>
+
+    ^self 
+        commonMenuSCMSliceNamed: #projectMenuSCMSlice
+        computeManagerWith:
+            [:managers|
+            self selectedProjectsDo:[:pkg|
+                | mgr |
+
+                mgr := AbstractSourceCodeManager managerForPackage:pkg.
+                mgr isNil ifFalse:[managers add: mgr]
+            ]].
+
+    "Created: / 19-04-2011 / 14:29:47 / cg"
+    "Created: / 12-10-2011 / 20:53:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectorMenuSCMExtraFor: sourceCodeManagerClassName
+
+    <resource: #programMenu>
+
+    |manager spec menu |
+
+    sourceCodeManagerClassName isBehavior ifTrue:[
+        manager := sourceCodeManagerClassName
+    ] ifFalse:[
+        manager := Smalltalk at: sourceCodeManagerClassName.
+        manager isNil ifTrue:[
+            ^Menu new
+        ].
+    ].
+    spec := self class perform: ('selectorMenuSCMExtra_' , manager managerTypeNameShort) asSymbol ifNotUnderstood:[nil].
+    spec notNil ifTrue:[
+        menu := spec decodeAsLiteralArray.
+        menu receiver:self.
+        menu findGuiResourcesIn:self.
+        menu addItem: (MenuItem separator) beforeIndex: 1
+    ] ifFalse:[
+        menu := Menu new.
+    ].
+    ^menu
+
+    "Created: / 15-10-2011 / 22:42:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectorMenuSCMFor: sourceCodeManagerClassName
+    "insert the sourcecode manager name"
+
+    <resource: #programMenu>
+
+    |manager menu |
+
+    sourceCodeManagerClassName isBehavior ifTrue:[
+        manager := sourceCodeManagerClassName
+    ] ifFalse:[
+        manager := Smalltalk at: sourceCodeManagerClassName.
+    ].
+    manager isNil ifTrue:[
+        menu := Menu new.
+        menu addItem: 
+            (MenuItem 
+                label: (resources string: 'Unavailable - Configure SCM') 
+                value: [self openSettingsDialogAndSelectSourceCodeManagement])
+    ] ifFalse:[
+        menu := self class selectorMenuSCMCommon decodeAsLiteralArray.
+    ].
+    self replaceSourceCodeManagerPlaceholderWith: manager in: menu.
+
+    ^ menu
+
+    "Created: / 12-10-2011 / 20:58:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+selectorMenuSCMSlice
+
+    <resource: #programMenu>
+
+    ^self 
+        commonMenuSCMSliceNamed: #selectorMenuSCMSlice
+        computeManagerWith:
+            [:managers|
+            self selectedMethodsDo:[:mthd|
+                | mgr |
+    
+                mgr := AbstractSourceCodeManager managerForPackage:mthd package.
+                mgr isNil ifFalse:[managers add: mgr].
+            ]].
+
+    "Created: / 19-04-2011 / 14:29:47 / cg"
+    "Created: / 12-10-2011 / 20:54:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 19-10-2011 / 16:48:31 / cg"
+! !
+
+!NewSystemBrowser methodsFor:'menus-dynamic-popup'!
+
+categoryPopUpMenu
+    "return the popUpMenu for the class-category-list view"
+
+    <resource: #programMenu>
+
+    ^[ self categoryMenuWithFind ]
+
+    "Created: / 18-02-2000 / 11:58:25 / cg"
+    "Created: / 15-10-2011 / 12:28:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+classPopUpMenu
+    "return the popUpMenu for the regular class-list view"
+
+    <resource: #programMenu>
+
+    ^[ self classMenu ]
+
+    "Created: / 18-02-2000 / 11:58:25 / cg"
+    "Modified: / 11-10-2011 / 09:18:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+hierarchyPopUpMenu
+    "return the popUpMenu for the class-hierarchy-list view"
+
+    <resource: #programMenu>
+
+    ^ self classPopUpMenu
+
+    "Created: / 18.2.2000 / 11:58:25 / cg"
+!
+
+projectPopUpMenu
+    "return the popUpMenu for the project-list view"
+
+    <resource: #programMenu>
+
+    ^[ self projectMenu ]
+
+    "Created: / 18-02-2000 / 11:58:25 / cg"
+    "Created: / 12-10-2011 / 20:28:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !NewSystemBrowser methodsFor:'menus-dynamic-subversion'!
 
 commonSubversionBranchMenu
@@ -40996,6 +46304,7 @@
     <resource: #programMenu >
 
     | menu repository wc branchAspect|
+
     menu := Menu new.
     repository := self selectedProjectSubversionRepository. 
     repository ifNil:[^nil].
@@ -41017,6 +46326,7 @@
 
     "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>"
+    "Modified (format): / 01-12-2011 / 21:06:52 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'navigation'!
@@ -41461,7 +46771,9 @@
 
     (aClass isNameSpace and:[aClass ~~ Smalltalk]) ifTrue:[
         orgMode ~~ OrganizerCanvas organizerModeNamespace ifTrue:[      
-            answer := self confirmWithCancel:('Browser: ' , aClass name , ' is a namespace - switch organizers display mode ?').
+            answer := self 
+                        confirmWithCancel:(resources string:'Browser: %1 is a namespace - switch organizers display mode ?' with:aClass name)
+                        defaultAnswer:false.
             answer isNil ifTrue:[
                 AbortOperationRequest raise.
                 ^ self
@@ -41578,10 +46890,9 @@
     self normalLabel.
     self enqueueDelayedClassSelectionChange.
 
-    "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"
+    "Modified: / 05-10-2011 / 13:49:41 / cg"
 !
 
 switchToClassNameMatching:aMatchString
@@ -41746,7 +47057,7 @@
     ].
 
     category := aMethod category.
-    (self selectedProtocolsValue contains:[:p | p string = category]) ifFalse:[
+    (self selectedProtocolsValue contains:[:p | p notNil and:[p string = category]]) ifFalse:[
         (self selectedProtocolsValue includes:BrowserList nameListEntryForALL) ifFalse:[
             self selectProtocols:(Array with:category).
         ]
@@ -41754,6 +47065,8 @@
     self theSingleSelectedMethod ~~ aMethod ifTrue:[
         self selectedMethods value:(Array with:aMethod).
     ]
+
+    "Modified: / 30-08-2011 / 16:03:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 switchToSearchItemMatching:aMatchString
@@ -42666,7 +47979,9 @@
         "/ immediate coloring, if code is not too large;
         "/ otherwise, do it in the background.
         code size < 2000 " 10000 " ifTrue:[
-            Error catch:[
+            Error handle:[:ex |
+                Transcript showCR:'error in syntaxHighlighter: ',ex description.
+            ] do:[
                 code := self syntaxHighlightedCodeFor:code method:mthd.
             ].
         ] ifFalse:[
@@ -42684,6 +47999,7 @@
         self showCode:code scrollToTop:doScrollToTop.
     ].
 
+    "/ scroll, for file-based classes (java, ruby, etc.)
     mthd sourceLineNumber ~~ 1 ifTrue:[
         doScrollToTop "ifTrue:" ifFalse:[
             codeView scrollToLine:mthd sourceLineNumber
@@ -42695,6 +48011,7 @@
 
     "Created: / 01-03-2000 / 11:38:57 / cg"
     "Modified (format): / 29-07-2011 / 11:45:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 21-08-2011 / 08:54:33 / cg"
 !
 
 showNothing
@@ -42716,7 +48033,7 @@
     cls notNil ifTrue:[
         cls := cls theNonMetaclass.
         (ownerClass := cls topOwningClass) isNil ifTrue:[ownerClass := cls].
-        mgr := SourceCodeManagerUtilities sourceCodeManagerFor:ownerClass.
+        mgr := SourceCodeManagerUtilities default sourceCodeManagerFor:ownerClass.
 
         info := 'Package: ' , ownerClass package.
 
@@ -42750,6 +48067,33 @@
     "Modified: / 12-09-2006 / 14:23:40 / cg"
 !
 
+sourceCodeManagerOfClass:aClass
+    |metaclass nonMetaclass sourceCodeManager|
+
+    "/ metaclass := aClass theMetaclass.
+    nonMetaclass := aClass theNonMetaclass.
+
+    "/ hack:
+    "/ to prevent JAVA-bridge to forward those messages, we check for the presence first,
+    "/ instead of using perform:ifNotUnderstood:
+
+    (nonMetaclass respondsTo:#sourceCodeManagerForSourceAccess) ifTrue:[
+        sourceCodeManager := nonMetaclass sourceCodeManagerForSourceAccess. 
+        sourceCodeManager notNil ifTrue:[ ^ sourceCodeManager].
+    ].
+    (nonMetaclass respondsTo:#sourceCodeManagerFromBinaryRevision) ifTrue:[
+        sourceCodeManager := nonMetaclass sourceCodeManagerFromBinaryRevision.
+        sourceCodeManager notNil ifTrue:[ ^ sourceCodeManager].
+    ].
+    (nonMetaclass respondsTo:#sourceCodeManager) ifTrue:[
+        sourceCodeManager := nonMetaclass sourceCodeManager
+    ].
+    ^ sourceCodeManager
+
+    "Modified: / 03-12-2011 / 21:48:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 15-01-2012 / 00:15:05 / cg"
+!
+
 sourceOfMethod:mthd
     |code|
 
@@ -42793,23 +48137,79 @@
 "'.
 !
 
+updatePackageInfoBarIfSourceCodeManagersDoesNotMatchForClass: aClass
+    "Show a warning in package info bar if configured source code manager 
+     does not match the source code manager for source access"
+
+    | cls cnfManager srcManager color showInfoButton |
+
+    navigationState packageInfoButton isNil ifTrue:[
+        "JV@2011-10-03: When a browser is embedded in the inspector,
+         this method is called before the view is set. As a workaround,
+         return here"
+        ^self.
+    ].
+
+
+    color := Label defaultBackgroundColor.
+    showInfoButton := false.
+
+    (aClass notNil and:[aClass isLoaded]) ifTrue:[
+         cls := aClass.
+        [ cls isPrivate ] whileTrue:[cls := cls owningClass].
+        "For libbasic without #sourceCodeManagerFromBinaryRevision..."
+        (cls respondsTo: #sourceCodeManagerFromBinaryRevision) ifTrue:[
+            cnfManager := cls sourceCodeManager.
+            srcManager := cls sourceCodeManagerFromBinaryRevision.
+
+            cnfManager ~~ srcManager ifTrue:[
+                         "Color yellow lighter"
+                color := (Color red:100.0 green:100.0 blue:54.5464255741207).
+                showInfoButton := true.
+                navigationState packageInfoButton action:
+                    [self 
+                        informUserAboutPackage: cls package 
+                        configuredManager: cnfManager 
+                        sourceManager: srcManager
+                    ]
+                
+            ]
+        ]
+    ].
+
+    navigationState packageInfoButton isVisible: showInfoButton.
+    navigationState packageInfoBackgroundColorHolder value: color.
+
+    "Created: / 03-10-2011 / 13:54:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 updatePackageInfoForClass:aClass
-    |packageLabel loadInfo revisionInfo revision lastUser|
-
-    (aClass notNil and:[aClass isClass or:[aClass isMetaclass]]) ifTrue:[
+    |cls packageLabel loadInfo revisionInfo sourceCodeManager sourceCodeManagerInfo revision lastUser|
+
+    (aClass notNil and:[aClass isClass or:[aClass isMetaclass]]) ifTrue:[        
         "/ packageLabel := 'Base: ' , (aClass package ? '?').
+
+        cls := aClass theNonMetaclass.
         packageLabel := (aClass package ? '?') allBold.
 
         aClass isLoaded ifTrue:[
-            revisionInfo := aClass theNonMetaclass revisionInfo.
+            sourceCodeManager := self sourceCodeManagerOfClass:aClass.
+
+            sourceCodeManager notNil ifTrue:[
+                sourceCodeManagerInfo := sourceCodeManager managerTypeNameShort , ' '
+            ] ifFalse:[
+                sourceCodeManagerInfo := ''.
+            ].
+
+            revisionInfo := cls revisionInfo.
             (revisionInfo notNil and:[(revisionInfo at:#revision) notNil]) ifTrue:[
                 revision := revisionInfo at:#revision.
-                lastUser := ' ',(revisionInfo at:#user).
-            ] ifFalse:[
-                revision := aClass theNonMetaclass revision.
+                lastUser := ' ',((revisionInfo at:#user) ? '').
+            ] ifFalse:[
+                revision := cls revision.
                 lastUser := ''.
             ].
-            loadInfo := ' [%1%2]' bindWith:(revision ? 'no revision') with:lastUser.
+            loadInfo := ' [%1%2%3]' bindWith: sourceCodeManagerInfo with:(revision ? 'no revision') with:lastUser.
             aClass wasAutoloaded ifTrue:[
                 loadInfo := loadInfo , ' {Auto}'.
             ].
@@ -42819,13 +48219,18 @@
         packageLabel := packageLabel , loadInfo.
         "/ packageLabel := packageLabel,' (Base)'.
     ].
+
+    self updatePackageInfoBarIfSourceCodeManagersDoesNotMatchForClass: cls.
     navigationState packageLabelHolder value:packageLabel.
 
-    "Modified: / 14-08-2010 / 12:04:39 / cg"
+    "Modified: / 06-10-2011 / 09:34:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 22-11-2011 / 16:19:18 / cg"
 !
 
 updatePackageInfoForMethod:aMethod
-    |mpkg info info2 mClass clsRevision|
+    "update the info-label to show the selected method's version info"
+
+    |mpkg info info2 mClass revision sourceCodeManager sourceCodeManagerInfo prjDef scmInfo extensionOrNot|
 
     aMethod isNil ifTrue:[
         ^ self updatePackageInfoForClass:self theSingleSelectedClass.
@@ -42837,25 +48242,50 @@
     ] ifFalse:[
         mpkg := aMethod package.
         info := mpkg allBold.
+        extensionOrNot := ''.
+
         (mpkg ~= mClass package) ifTrue:[
             mpkg = PackageId noProjectID ifTrue:[
                 info2 := ' (Unassigned)'
             ] ifFalse:[
-                info2 := ' (Extension)'
-            ].
-        ] ifFalse:[
-            clsRevision := mClass theNonMetaclass revision printString.
+                extensionOrNot := ' Extension'.
+                prjDef := ProjectDefinition definitionClassForPackage: mpkg.
+                prjDef notNil ifTrue:[    
+                    sourceCodeManager := self sourceCodeManagerOfClass:prjDef.
+                    scmInfo := prjDef extensionsRevisionInfoForManager:nil.
+                    scmInfo notNil ifTrue:[
+                        revision := scmInfo revision.
+                    ]
+                ]
+            ].
+        ] ifFalse:[
+            sourceCodeManager := self sourceCodeManagerOfClass:mClass theNonMetaclass. 
+            revision := mClass theNonMetaclass revision printString.
+        ].
+
+        sourceCodeManager notNil ifTrue:[
+            sourceCodeManagerInfo := sourceCodeManager managerTypeNameShort , ' '
+        ] ifFalse:[
+            sourceCodeManagerInfo := ''.
+        ].
+
+        revision notNil ifTrue:[
+            info2 := ' ['.
             (ChangeSet current includesChangeForClass:mClass selector:aMethod selector) ifTrue:[
-                info2 := ' [derived from ' , clsRevision , ']'.
-            ] ifFalse:[
-                info2 := ' [' , clsRevision , ']'.
-            ]
-        ].
-        info := info,info2
+                info2 := info2,'derived from '
+            ].
+            info2 := info2,sourceCodeManagerInfo,revision,extensionOrNot,']'.
+        ].
+        info2 notNil ifTrue:[info := info,info2].
+    ].
+
+    mClass notNil ifTrue:[
+        self updatePackageInfoBarIfSourceCodeManagersDoesNotMatchForClass: mClass theNonMetaclass.
     ].
     navigationState packageLabelHolder value:info
 
-    "Modified: / 01-03-2007 / 21:03:22 / cg"
+    "Modified (format): / 25-11-2011 / 14:48:14 / cg"
+    "Modified: / 01-12-2011 / 14:26:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !NewSystemBrowser methodsFor:'private-dialogs'!
@@ -42986,7 +48416,9 @@
 
 askForMethodAndSpawnSearchTitle:title browserLabel:labelHolderOrBlock searchWith:aSelectorOrBlock searchWhat:searchWhat searchArea:whereDefault
     withCaseIgnore:withCaseIgnore withTextEntry:withTextEntry withMatch:withMatch withMethodList:withMethodList setSearchPattern:setSearchPatternAction
-    "convenient helper method: setup an enterBox with text from codeView or selected
+
+    "convenient common helper method for searches: 
+     setup an enterBox with text from codeView or selected
      method for browsing based on a selector. Set action and launch box.
      SearchArea may be one of
         #everywhere,
@@ -42996,7 +48428,13 @@
         #classes
         #classesWithPrivateClasses
         #classHierarchies
-        #classHierarchiesWithPrivateClasses"
+        #classHierarchiesWithPrivateClasses
+
+     aSelectorOrBlock is either a search selector (to be sent to SystemBrowser, such as findMethods:...)
+     or a block, or a pair containing class- and methodlist search selectors.
+
+     searchWhat is a symbol such as #selector, #code etc.
+    "
 
     |restart dialog|
 
@@ -43160,6 +48598,7 @@
         ].
 
     "Modified: / 11-05-2010 / 16:51:50 / cg"
+    "Modified (comment): / 06-12-2011 / 11:44:27 / cg"
 !
 
 askForMethodAndSpawnSearchTitle:title browserLabel:labelHolderOrBlock searchWith:aSelectorOrBlock searchWhat:searchWhat searchArea:whereDefault
@@ -44463,8 +49902,8 @@
 !
 
 selectedCodeComponents
-
     | mode |
+
     mode := self navigationState canvasType.
     #(
         fullBrowserSpec 
@@ -44485,6 +49924,7 @@
 
     "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>"
+    "Modified (format): / 21-12-2011 / 20:23:13 / cg"
 !
 
 selectedCodeComponentsUsing: selectors
@@ -45018,6 +50458,7 @@
     ^ navigationState projectListApplication
 ! !
 
+
 !NewSystemBrowser methodsFor:'private-history'!
 
 lastSearchPatterns
@@ -45271,7 +50712,7 @@
         explanation :=
             [ self explanationForCode:code short:short ]
                     valueWithWatchDog:[explainTookTooLong := true]
-                    afterMilliseconds:500.
+                    afterMilliseconds:100.
     ] ifFalse:[
         explanation := self explanationForCode:code short:short
     ].
@@ -45592,6 +51033,25 @@
     "Modified: / 18.8.2000 / 21:12:17 / cg"
 !
 
+replaceSourceCodeManagerPlaceholderWith: manager in: menu
+
+    | nm |
+
+    manager isNil ifTrue:[
+        nm := nil
+    ] ifFalse:[
+        nm := manager name.
+    ].
+
+    menu replaceArgument: #SourceCodeManagerPlaceholder with: nm.
+    menu receiver:self.
+    menu findGuiResourcesIn:self.
+    "Must once again after resolve because of slices!!!!!!"
+    menu replaceArgument: #SourceCodeManagerPlaceholder with: nm.
+
+    "Created: / 12-10-2011 / 20:22:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 showActivity:someMessage
     "some activityNotification to be forwarded to the user;
      show it in the windows title area here
@@ -45752,6 +51212,52 @@
 
 searchCompletionBlock
 
+    "Returns a class/selector name completion block that
+     is used by the search field in browser's toolbar"
+
+    "Following code allows me (JV) to experiment with different
+     completion blocks as I'm not happy with the standard one
+     (now in searchCompletionBlock_Standard)"
+
+    | sel |
+    sel := UserPreferences current at: #searchCompletionBlock ifAbsent:[nil].
+    sel notNil ifTrue:[
+        ^self perform: ('searchCompletionBlock_' , sel) asSymbol ifNotUnderstood:[
+            self searchCompletionBlock_Standard
+        ].        
+    ].
+    ^self searchCompletionBlock_Standard 
+
+    "
+    UserPreferences current removeKey: #searchCompletionBlock.
+    UserPreferences current at: #searchCompletionBlock put: #New.
+    UserPreferences current at: #searchCompletionBlock put: #Standard.
+
+    Tools::NewSystemBrowser basicNew searchCompletionBlock
+
+    "
+
+    "Created: / 09-02-2010 / 21:45:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 04-08-2011 / 19:05:28 / cg"
+    "Modified (comment): / 04-12-2011 / 22:39:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+searchCompletionBlock_New
+
+    "This returns a class/selector name completion block that uses
+     standard DoWhatIMeanSupport"
+
+    ^[:patternString|self searchCompletionNew: patternString]
+
+    "Modified: / 04-08-2011 / 19:05:28 / cg"
+    "Created: / 04-12-2011 / 22:13:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+searchCompletionBlock_Standard
+
+    "This returns a class/selector name completion block that uses
+     standard DoWhatIMeanSupport"
+
     ^[:partialName| | env |
     env := self theSingleSelectedNamespace ? #Smalltalk.
     env = NavigatorModel nameListEntryForALL 
@@ -45767,9 +51273,38 @@
                 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>"
     "Modified: / 04-08-2011 / 19:05:28 / cg"
+    "Created: / 04-12-2011 / 22:11:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+searchCompletionNew: patternString
+
+    | env pattern matches |
+
+    patternString isEmptyOrNil ifTrue:[^#('' #())].
+
+    env := self theSingleSelectedNamespace ? #Smalltalk.
+    env = NavigatorModel nameListEntryForALL ifTrue:[env := #Smalltalk].
+    env := Smalltalk at: env.
+
+    pattern := StringPattern readFrom: patternString onError: [^#('' #())].
+    matches := OrderedCollection new.
+
+    env keysDo:[:nm|
+        | cls nmWihoutPrefix |
+
+        cls := env at: nm.
+        (cls notNil and:[cls isBehavior]) ifTrue:[
+            (pattern match: (nmWihoutPrefix := cls nameWithoutPrefix)) ifTrue:[
+                matches add: nmWihoutPrefix 
+            ].
+        ].
+    ].
+    ^ { matches first . matches }
+
+    "Modified: / 04-08-2011 / 19:05:28 / cg"
+    "Created: / 04-12-2011 / 22:22:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !NewSystemBrowser methodsFor:'private-semantic checks'!
@@ -46124,7 +51659,11 @@
         assert:(#( #smalllintRulesAll #smalllintRulesFromUser #smalllintRules ) 
                 includes:ruleSetSymbol).
     rule := self perform:ruleSetSymbol asSymbol.
-    rule ifNil:[ ^ self ].
+    rule isNil ifTrue:[ ^ self ].
+    rule isEmpty ifTrue:[
+        rule := self smalllintRulesFromUser.
+    ].
+
     self showMessage:'Checking code...'
         while:[
             self smalllintRunRule:rule onEnvironment:anEnvironment.
@@ -46139,6 +51678,7 @@
     "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>"
+    "Modified: / 23-09-2011 / 15:26:48 / cg"
 !
 
 smalllintRules
@@ -46186,6 +51726,30 @@
     "Modified: / 25-08-2010 / 15:35:16 / Jan Vrany <enter your email here>"
 !
 
+smalllintRulesOrAll
+
+    "Returns a set of user-selected SmallLint rules or all rules,
+     if no user selection is done"    
+
+   ^LastLintRules notNil ifTrue:[
+        LastLintRules
+    ] ifFalse:[
+        self smalllintRulesAll
+    ]
+
+    "Created: / 23-01-2012 / 10:59:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+smalllintRulesOrAllHolder
+    "Returns a holder on user-selected SmallLint rules
+     (or all rules if user made no selection"
+
+    ^[ self smalllintRulesOrAll ]
+
+    "Modified: / 17-04-2010 / 09:42:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 23-01-2012 / 11:05:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 smalllintRunRule: aLintRule onEnvironment: anEnvironment
 
     | rules |
@@ -46853,6 +52417,15 @@
     "Modified: / 28-08-2010 / 10:37:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
+postBuildPackageInfoButton: aButton
+
+    <resource: #uiCallback>
+
+    navigationState packageInfoButton: aButton
+
+    "Created: / 03-10-2011 / 15:36:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 postBuildSpecialEditor:specialEditorSubcanvas
     builder componentAt:#SpecialEditorCanvas put:specialEditorSubcanvas.
 !
@@ -48011,18 +53584,21 @@
     |navigationState|
 
     navigationState := self navigationState.
+
     self codeView modified ifTrue:[
         navigationState realModifiedState:true.
 
-        self startSyntaxHighlightProcess.
-
+        self codeView isCodeView2 ifFalse:[
+            self startSyntaxHighlightProcess.
+        ].
         self navigationState realModifiedState:true.
         self codeView modifiedChannel setValue:false.
     ].
     self enqueueDelayedCheckReallyModified.
     self updateBufferLabel.
 
-    "Modified: / 17-08-2011 / 14:34:44 / cg"
+    "Modified (comment): / 27-09-2011 / 19:04:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 29-11-2011 / 13:25:51 / cg"
 !
 
 doNotShowInheritedMethods
@@ -48041,6 +53617,46 @@
     "Created: / 10.12.2001 / 21:00:13 / cg"
 !
 
+informUserAboutPackage: package configuredManager: cnfManager sourceManager: srcManager
+
+    "Opens a dialog informing user that configured source
+     code manager does not match the source code manager
+     for source access"
+
+    | dialog cnfManagerName srcManagerName |
+
+    cnfManager notNil ifTrue:[
+        cnfManagerName := cnfManager managerTypeName
+    ] ifFalse:[
+        cnfManagerName := self class resources at: 'Not configured'.
+    ].
+    srcManager notNil ifTrue:[
+        srcManagerName := cnfManager managerTypeName
+    ] ifFalse:[
+        srcManagerName := self class resources at: 'Unknown'.
+    ].
+
+    dialog := DialogBox new.
+    dialog label: package, ': source code managers does not match'.
+    (dialog addTextLabel: 
+            ('Default configured source manager does match with\' ,
+            'source code manager for the source. This may mean\' ,
+            'that you have compiled the package using sources\',
+            'checked out using different repository and source\',
+            'code management system that the one you have configured\',
+            'for the package') withCRs) 
+            adjust: #left.
+    (dialog addTextLabel: 'Package: ', package) adjust: #left.
+    (dialog addTextLabel: 'Configured SCM: ', cnfManagerName) adjust: #left.
+    (dialog addTextLabel: 'Source SCM: ', srcManagerName) adjust: #left.
+    dialog addButton:(Button label:'Open SCM Settings' action:[self openSettingsDialogAndSelectSourceCodeManagement]).
+    dialog addOkButton.
+
+    dialog open.
+
+    "Created: / 03-10-2011 / 16:22:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 methodDoubleClicked
     |currentMethod|
 
@@ -48270,6 +53886,7 @@
     toolBar := self componentAt:#ToolBar.
     bookmarkBar := self componentAt:#BookmarkBar.
     topOffset := 0.
+
     toolBar isNil ifFalse:[
         toolBarVisible := self toolBarVisibleHolder value.
         DefaultToolBarVisible := toolBarVisible.
@@ -48277,6 +53894,7 @@
             topOffset := topOffset + toolBar height.
         ]
     ].
+
     bookmarkBar isNil ifFalse:[    
         bookmarkBarVisible := self bookmarkBarVisibleHolder value.     
         UserPreferences current showBookmarkBar:bookmarkBarVisible.
@@ -48291,7 +53909,7 @@
         ]
     ].
 
-
+    topOffset := topOffset - 1. 
     pageContent := (browserPageCanvas notNil or:[builder spec name == #browserPageSpec]) 
                     ifTrue:[(self componentAt: #BrowserPageContents)]
                     ifFalse:[(self componentAt:#NoteBook)].
@@ -48304,6 +53922,7 @@
 
     "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>"
+    "Modified: / 31-12-2011 / 13:18:24 / cg"
 !
 
 toolBarVisibilityChanged
@@ -48375,15 +53994,11 @@
     code := codeArg.
     returnValue := false.
     language := languageOrNil 
-                    ifNotNil:
-                        [languageOrNil]
-                    ifNil:
-                        [self hasMethodSelected
+                    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.
     existingMethod := cls compiledMethodAt:newSelector ifAbsent:[].
@@ -48393,8 +54008,7 @@
         (Class methodRedefinitionNotification) handle:[:ex |
             |answer|
 
-            answer := SystemBrowser askForPackageChangeFrom:ex oldPackage
-                                                         to:ex newPackage.
+            answer := SystemBrowser askForPackageChangeFrom:ex oldPackage to:ex newPackage.
             (answer ~~ #cancel) ifTrue:[
                 ex proceedWith:answer
             ].
@@ -48436,9 +54050,7 @@
                                   default:false
                                   onCancel:false.
 
-                    answer == false ifTrue:[
-                        ^ false
-                    ].
+                    answer == false ifTrue:[ ^ false ].
                     answer == #compare ifTrue:[
                         self openDiffViewForText:code againstSourceOfMethod:existingMethod.
                         ^ false
@@ -48493,9 +54105,7 @@
                         ]
                     ].
                 ].
-                package isNil ifTrue:[
-                    package := defPackage
-                ].
+                package isNil ifTrue:[ package := defPackage ].
             ].
 
             lang := oldMethod notNil
@@ -48585,6 +54195,7 @@
 "/                            Icon flushCachedIcons
 "/                        ].
 
+                    rslt package.
                     navigationState realModifiedState:false.
                     codeView modified:false.
 
@@ -48620,7 +54231,6 @@
                         self checkAcceptedMethod:rslt inClass:cls.
                     ].
                     returnValue := true.
-
                     "/ self updateBufferLabel.
                 ].
             ] ensure:[
@@ -48632,8 +54242,9 @@
     ].
     ^ returnValue.
 
-    "Modified: / 17-07-2010 / 14:54:53 / cg"
     "Created: / 30-12-2009 / 20:01:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 12-09-2011 / 11:10:26 / cg"
+    "Modified (format): / 06-12-2011 / 11:50:34 / cg"
 !
 
 askForInitialApplicationCodeFor:aClass
@@ -48793,7 +54404,9 @@
 
 doAcceptClassDefinition:theCode fullClass:thisIsAFullClassesCode usingCompiler:aCompilerClass
     "tell the codeView what to do on accept.
-     Return false, if NOT accepted (i.e. compilation canceled)"
+     Return false, if NOT accepted (i.e. compilation canceled).
+     Ouch: this shares a lot of duplicate code with setAcceptActionForClass; 
+           please refacor"
 
     |codeView returnValue package|
 
@@ -48847,7 +54460,7 @@
                 ex proceedWith:ns
             ] do:[
                 AbortOperationRequest catch:[
-                    UndefinedObject createMinimumProtocolInNewSubclassQuery
+                  UndefinedObject createMinimumProtocolInNewSubclassQuery
                     answer:true
                     do:[
                         (Class classRedefinitionNotification) handle:[:ex |
@@ -48927,6 +54540,7 @@
 
     "Created: / 13-02-2000 / 22:43:59 / cg"
     "Modified: / 30-01-2011 / 17:06:14 / cg"
+    "Modified (comment): / 21-01-2012 / 09:57:49 / cg"
 !
 
 doAcceptClassDefinition:theCode usingCompiler:aCompilerClass
@@ -49880,6 +55494,11 @@
     |codeView evView key rawKey sensor|
 
     codeView := self codeView.
+    "/JV@2011-08-17: FIXME: remove the typecheck and add isCodeView2 
+    "/or something...
+    (codeView isKindOf: Tools::CodeView2) ifTrue:[
+        codeView := codeView textView.
+    ].
     evView := anEvent targetView.
     evView notNil ifTrue:[
         anEvent isKeyPressEvent ifTrue:[
@@ -49940,6 +55559,7 @@
 
         anEvent isButtonReleaseEvent ifTrue:[
             anEvent delegatedFrom isNil ifTrue:[
+                
                 evView == codeView ifTrue:[
                     self codeInfoVisible value ifTrue:[
                         self doImmediateExplaining value ifTrue:[
@@ -49970,7 +55590,7 @@
 
     "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>"
+    "Modified: / 17-08-2011 / 13:29:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !NewSystemBrowser methodsFor:'user actions-helpers'!
@@ -50015,6 +55635,10 @@
     self messageHolder value: aString.
     self showMessagePane: #messageInfoSpec.
 
+    "
+        WindowGroup activeApplication showMessage: 'Hello'
+    "
+
     "Created: / 28-08-2010 / 11:47:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
@@ -50064,7 +55688,8 @@
 !
 
 showMessageWhileTest
-    self showMessage:'Tools::NewSystemBrowser >> testProgressAction'
+    self 
+        showMessage:'Tools::NewSystemBrowser >> testProgressAction'
         while:[
             (1 to:100) do:[:i | 
                 (ProgressNotification new)
@@ -50078,6 +55703,7 @@
         ]
 
     "Created: / 28-08-2010 / 10:32:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 29-11-2011 / 15:05:31 / cg"
 ! !
 
 !NewSystemBrowser methodsFor:'user actions-profiler'!
@@ -50089,23 +55715,25 @@
         label:'Visual Profiler' 
         forSpec:#visualProfilerSpec 
         setupWith: [:browser|
-            browser profilerStatistics value: statistics]
+            browser profilerStatistics value: statistics
+        ]
 
     "Created: / 09-10-2007 / 22:05:36 / janfrog"
+    "Modified (format): / 29-11-2011 / 14:49:08 / cg"
 ! !
 
 !NewSystemBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Tools__NewSystemBrowser.st 7819 2011-08-19 08:54:18Z vranyj1 $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1702 2012/01/26 13:58:43 cg Exp $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1595 2011/08/19 00:33:43 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libtool/Tools__NewSystemBrowser.st,v 1.1702 2012/01/26 13:58:43 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: Tools__NewSystemBrowser.st 7819 2011-08-19 08:54:18Z vranyj1 $'
-! !
-
-NewSystemBrowser initialize!
\ No newline at end of file
+    ^ '$Id: Tools__NewSystemBrowser.st 7851 2012-01-29 15:33:37Z vranyj1 $'
+! !
+
+NewSystemBrowser initialize!