ChangesBrowser.st
branchjv
changeset 17136 cb908d2ba02e
parent 17132 17d361c666c2
parent 17096 e86120cc8ba3
child 17216 47ff06181c21
--- a/ChangesBrowser.st	Thu Nov 24 22:03:16 2016 +0000
+++ b/ChangesBrowser.st	Thu Nov 24 22:14:31 2016 +0000
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "
  COPYRIGHT (c) 1990 by Claus Gittinger
 	      All Rights Reserved
@@ -100,7 +98,7 @@
         overall structure. Do not take this as an example for good style ;-)
 
         The Change hierarchy is currently been completed, and the changes browser
-        will be adapted soon.
+        should be adapted soon.
 
     [author:]
         Claus Gittinger
@@ -213,451 +211,567 @@
         (
          (MenuItem
             label: 'File'
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Compress'
-                  itemValue: doCompress
-                  isVisible: notEditingClassSource
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Compress for Class'
-                  itemValue: doCompressClass
-                  isVisible: notEditingClassSource
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Compress for Class && Selector'
-                  itemValue: doCompressSelector
-                  isVisible: notEditingClassSource
-                )
-               (MenuItem
-                  label: 'Compare and Compress'
-                  itemValue: doCompareAndCompress
-                  isVisible: notEditingClassSource
-                )
-               (MenuItem
-                  label: '-'
-                  isVisible: notEditingClassSource
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Fileout && Delete all Changes for Class'
-                  itemValue: doFileoutAndDeleteClassAll
-                  isVisible: notEditingClassSource
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'CheckIn && Delete all Changes for Class'
-                  itemValue: doCheckinAndDeleteClassAll
-                  isVisible: notEditingClassSource
-                )
-               (MenuItem
-                  label: '-'
-                  isVisible: notEditingClassSource
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Save In...'
-                  itemValue: doSave
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Save to End In...'
-                  itemValue: doSaveRest
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Save for Class to End In...'
-                  itemValue: doSaveClassRest
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Save all for Class In...'
-                  itemValue: doSaveClassAll
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Writeback ClassFile'
-                  itemValue: doWriteBack
-                  isVisible: editingClassSource
-                )
-               (MenuItem
-                  label: 'Writeback ChangeFile'
-                  itemValue: doWriteBack
-                  isVisible: notEditingClassSource
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Update'
-                  itemValue: doUpdate
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Exit'
-                  itemValue: menuExit
-                )
-               )
-              nil
-              nil
-            )
+            submenuChannel: menuSpecFile
           )
          (MenuItem
             label: 'CHANGE'
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Apply'
-                  itemValue: doApply
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Apply to End'
-                  itemValue: doApplyRest
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Apply from Begin'
-                  itemValue: doApplyFromBeginning
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Apply for Class to End'
-                  itemValue: doApplyClassRest
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Apply for Class from Begin'
-                  itemValue: doApplyClassFromBeginning
-                )
-               (MenuItem
-                  enabled: hasNoSelection
-                  label: 'Apply All'
-                  itemValue: doApplyAll
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Apply to Conflict or End'
-                  itemValue: doApplyToConflictOrEnd
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Delete'
-                  itemValue: doDelete
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Delete to End'
-                  itemValue: doDeleteRest
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Delete from Begin'
-                  itemValue: doDeleteFromBeginning
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Delete for Class to End'
-                  itemValue: doDeleteClassRest
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Delete for Class from Begin'
-                  itemValue: doDeleteClassFromBeginning
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Delete all for Class'
-                  itemValue: doDeleteClassAll
-                  isVisible: hasNoMultiSelection
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Delete all for Class && its Private Classes'
-                  itemValue: doDeleteClassAndPrivateClassesAll
-                  isVisible: hasNoMultiSelection
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Delete all for Namespace'
-                  itemValue: doDeleteAllForNamespace
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Delete all for Classes'
-                  itemValue: doDeleteClassAll
-                  isVisible: hasMultiSelection
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Delete all for Classes && their Private Classes'
-                  itemValue: doDeleteClassAndPrivateClassesAll
-                  isVisible: hasMultiSelection
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Delete older Versions of Selected Method'
-                  itemValue: doDeleteClassSelectorOlder
-                  isVisible: hasNoMultiSelectionHolder
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Delete older Versions of all Selected Methods'
-                  itemValue: doDeleteClassSelectorOlder
-                  isVisible: hasMultiSelectionHolder
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Delete all Versions of Selected Method'
-                  itemValue: doDeleteClassSelectorAll
-                  isVisible: hasNoMultiSelectionHolder
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Delete all Versions of all Selected Methods'
-                  itemValue: doDeleteClassSelectorAll
-                  isVisible: hasMultiSelectionHolder
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Compare with Current'
-                  itemValue: doCompare
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Make Change a Patch'
-                  itemValue: doMakePatch
-                )
-               )
-              nil
-              nil
-            )
+            submenuChannel: menuSpecChange
           )
          (MenuItem
             label: 'Search'
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Class...'
-                  itemValue: findClass
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'First for Class'
-                  itemValue: findFirstForClass
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Previous for Class'
-                  itemValue: findPreviousForClass
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Next for Class'
-                  itemValue: findNextForClass
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Last for Class'
-                  itemValue: findLastForClass
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Selector...'
-                  itemValue: findSelector
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Previous for Selector'
-                  itemValue: findPreviousForSelector
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Next for Selector'
-                  itemValue: findNextForSelector
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'String...'
-                  itemValue: findString
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Previous with String'
-                  itemValue: findPreviousForString
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Next with String'
-                  itemValue: findNextForString
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Previous Difference'
-                  itemValue: findPreviousDifference
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Next Difference'
-                  itemValue: findNextDifference
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Previous Snapshot'
-                  itemValue: findPreviousSnapshot
-                )
-               (MenuItem
-                  enabled: hasSelection
-                  label: 'Next Snapshot'
-                  itemValue: findNextSnapshot
-                )
-               (MenuItem
-                  label: 'Last Snapshot'
-                  itemValue: findLastSnapshot
-                )
-               )
-              nil
-              nil
-            )
+            submenuChannel: menuSpecSearch
           )
          (MenuItem
             label: 'Browse'
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  enabled: hasSingleSelection
-                  label: 'Class'
-                  itemValue: doBrowse
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Senders...'
-                  itemValue: doBrowseSenders
-                )
-               (MenuItem
-                  label: 'Implementors...'
-                  itemValue: doBrowseImplementors
-                )
-               )
-              nil
-              nil
-            )
+            submenuChannel: menuSpecBrowse
           )
          (MenuItem
             label: 'Settings'
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'Auto Compare'
-                  indication: autoCompare
-                )
-               (MenuItem
-                  label: 'Autoload As Required'
-                  indication: autoloadAsRequired
-                )
-               (MenuItem
-                  label: 'Show Diffs'
-                  indication: showingDiffs
-                )
-               (MenuItem
-                  label: 'Auto Update'
-                  indication: autoUpdate
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Add to ChangeSet when Applying'
-                  indication: updateChangeSet
-                )
-               (MenuItem
-                  label: 'Ignore Public/Private in Categories (Dolphin code)'
-                  itemValue: ignorePublicPrivateCategories:
-                  indication: ignorePublicPrivateCategories
-                  isVisible: false
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Apply into Package...'
-                  itemValue: setEnforcedPackage
-                )
-               (MenuItem
-                  label: 'Apply into NameSpace...'
-                  itemValue: setEnforcedNameSpace
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'Settings...'
-                  itemValue: openSettingsDialog
-                )
-               )
-              nil
-              nil
-            )
+            submenuChannel: menuSpecSettings
           )
          (MenuItem
             label: 'MENU_Help'
-            startGroup: conditionalRight
-            submenu: 
-           (Menu
-              (
-               (MenuItem
-                  label: 'ChangesBrowser Documentation'
-                  itemValue: openHTMLDocument:
-                  argument: 'tools/cbrowser/TOP.html'
-                )
-               (MenuItem
-                  label: '-'
-                )
-               (MenuItem
-                  label: 'About ChangesBrowser...'
-                  itemValue: openAboutThisApplication
-                )
-               )
-              nil
-              nil
-            )
+            submenuChannel: menuSpecHelp
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 21-11-2016 / 23:46:22 / cg"
+!
+
+menuSpecBrowse
+    "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:ChangesBrowser andSelector:#menuSpecBrowse
+     (Menu new fromLiteralArrayEncoding:(ChangesBrowser menuSpecBrowse)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Class'
+            itemValue: doBrowse
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Senders...'
+            itemValue: doBrowseSenders
+          )
+         (MenuItem
+            label: 'Implementors...'
+            itemValue: doBrowseImplementors
+          )
+         )
+        nil
+        nil
+      )
+!
+
+menuSpecChange
+    "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:ChangesBrowser andSelector:#menuSpecChange
+     (Menu new fromLiteralArrayEncoding:(ChangesBrowser menuSpecChange)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            enabled: hasSelection
+            label: 'Apply'
+            itemValue: doApply
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Apply to End'
+            itemValue: doApplyRest
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Apply from Begin'
+            itemValue: doApplyFromBeginning
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Apply for Class to End'
+            itemValue: doApplyClassRest
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Apply for Class from Begin'
+            itemValue: doApplyClassFromBeginning
+          )
+         (MenuItem
+            enabled: hasNoSelection
+            label: 'Apply All'
+            itemValue: doApplyAll
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Apply to Conflict or End'
+            itemValue: doApplyToConflictOrEnd
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Delete'
+            itemValue: doDelete
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Delete to End'
+            itemValue: doDeleteRest
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Delete from Begin'
+            itemValue: doDeleteFromBeginning
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Delete for Class to End'
+            itemValue: doDeleteClassRest
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Delete for Class from Begin'
+            itemValue: doDeleteClassFromBeginning
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Delete all for Class'
+            itemValue: doDeleteClassAll
+            isVisible: hasNoMultiSelection
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Delete all for Class && its Private Classes'
+            itemValue: doDeleteClassAndPrivateClassesAll
+            isVisible: hasNoMultiSelection
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Delete all for Namespace'
+            itemValue: doDeleteAllForNamespace
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Delete all for Classes'
+            itemValue: doDeleteClassAll
+            isVisible: hasMultiSelection
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Delete all for Classes && their Private Classes'
+            itemValue: doDeleteClassAndPrivateClassesAll
+            isVisible: hasMultiSelection
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Delete older Versions of Selected Method'
+            itemValue: doDeleteClassSelectorOlder
+            isVisible: hasNoMultiSelectionHolder
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Delete older Versions of all Selected Methods'
+            itemValue: doDeleteClassSelectorOlder
+            isVisible: hasMultiSelectionHolder
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Delete all Versions of Selected Method'
+            itemValue: doDeleteClassSelectorAll
+            isVisible: hasNoMultiSelectionHolder
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Delete all Versions of all Selected Methods'
+            itemValue: doDeleteClassSelectorAll
+            isVisible: hasMultiSelectionHolder
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Compare with Current'
+            itemValue: doCompare
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Copy to Clipboard'
+            itemValue: doCopyToClipboard
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Make Change a Patch'
+            itemValue: doMakePatch
+          )
+         )
+        nil
+        nil
+      )
+
+    "Modified: / 21-11-2016 / 23:46:42 / cg"
+!
+
+menuSpecFile
+    "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:ChangesBrowser andSelector:#menuSpecFile
+     (Menu new fromLiteralArrayEncoding:(ChangesBrowser menuSpecFile)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Compress'
+            itemValue: doCompress
+            isVisible: notEditingClassSource
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Compress for Class'
+            itemValue: doCompressClass
+            isVisible: notEditingClassSource
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Compress for Class && Selector'
+            itemValue: doCompressSelector
+            isVisible: notEditingClassSource
+          )
+         (MenuItem
+            label: 'Compare and Compress'
+            itemValue: doCompareAndCompress
+            isVisible: notEditingClassSource
+          )
+         (MenuItem
+            label: '-'
+            isVisible: notEditingClassSource
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Fileout && Delete all Changes for Class'
+            itemValue: doFileoutAndDeleteClassAll
+            isVisible: notEditingClassSource
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'CheckIn && Delete all Changes for Class'
+            itemValue: doCheckinAndDeleteClassAll
+            isVisible: notEditingClassSource
+          )
+         (MenuItem
+            label: '-'
+            isVisible: notEditingClassSource
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Save In...'
+            itemValue: doSave
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Save to End In...'
+            itemValue: doSaveRest
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Save for Class to End In...'
+            itemValue: doSaveClassRest
+          )
+         (MenuItem
+            enabled: hasSingleSelection
+            label: 'Save all for Class In...'
+            itemValue: doSaveClassAll
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Writeback ClassFile'
+            itemValue: doWriteBack
+            isVisible: editingClassSource
+          )
+         (MenuItem
+            label: 'Writeback ChangeFile'
+            itemValue: doWriteBack
+            isVisible: notEditingClassSource
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Update'
+            itemValue: doUpdate
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Exit'
+            itemValue: menuExit
+          )
+         )
+        nil
+        nil
+      )
+!
+
+menuSpecHelp
+    "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:ChangesBrowser andSelector:#menuSpecHelp
+     (Menu new fromLiteralArrayEncoding:(ChangesBrowser menuSpecHelp)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'ChangesBrowser Documentation'
+            itemValue: openHTMLDocument:
+            argument: 'tools/cbrowser/TOP.html'
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'About ChangesBrowser...'
+            itemValue: openAboutThisApplication
+          )
+         )
+        nil
+        nil
+      )
+!
+
+menuSpecSearch
+    "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:ChangesBrowser andSelector:#menuSpecSearch
+     (Menu new fromLiteralArrayEncoding:(ChangesBrowser menuSpecSearch)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Class...'
+            itemValue: findClass
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'First for Class'
+            itemValue: findFirstForClass
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Previous for Class'
+            itemValue: findPreviousForClass
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Next for Class'
+            itemValue: findNextForClass
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Last for Class'
+            itemValue: findLastForClass
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Selector...'
+            itemValue: findSelector
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Previous for Selector'
+            itemValue: findPreviousForSelector
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Next for Selector'
+            itemValue: findNextForSelector
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'String...'
+            itemValue: findString
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Previous with String'
+            itemValue: findPreviousForString
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Next with String'
+            itemValue: findNextForString
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Previous Difference'
+            itemValue: findPreviousDifference
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Next Difference'
+            itemValue: findNextDifference
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Previous Snapshot'
+            itemValue: findPreviousSnapshot
+          )
+         (MenuItem
+            enabled: hasSelection
+            label: 'Next Snapshot'
+            itemValue: findNextSnapshot
+          )
+         (MenuItem
+            label: 'Last Snapshot'
+            itemValue: findLastSnapshot
+          )
+         )
+        nil
+        nil
+      )
+!
+
+menuSpecSettings
+    "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:ChangesBrowser andSelector:#menuSpecSettings
+     (Menu new fromLiteralArrayEncoding:(ChangesBrowser menuSpecSettings)) startUp
+    "
+
+    <resource: #menu>
+
+    ^ 
+     #(Menu
+        (
+         (MenuItem
+            label: 'Auto Compare'
+            indication: autoCompare
+          )
+         (MenuItem
+            label: 'Autoload As Required'
+            indication: autoloadAsRequired
+          )
+         (MenuItem
+            label: 'Show Diffs'
+            indication: showingDiffs
+          )
+         (MenuItem
+            label: 'Auto Update'
+            indication: autoUpdate
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Add to ChangeSet when Applying'
+            indication: updateChangeSet
+          )
+         (MenuItem
+            label: 'Ignore Public/Private in Categories (Dolphin code)'
+            itemValue: ignorePublicPrivateCategories:
+            isVisible: false
+            indication: ignorePublicPrivateCategories
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Apply into Package...'
+            itemValue: setEnforcedPackage
+          )
+         (MenuItem
+            label: 'Apply into NameSpace...'
+            itemValue: setEnforcedNameSpace
+          )
+         (MenuItem
+            label: '-'
+          )
+         (MenuItem
+            label: 'Settings...'
+            itemValue: openSettingsDialog
           )
          )
         nil
@@ -2016,6 +2130,21 @@
     "Modified: / 19.11.2001 / 22:10:08 / cg"
 !
 
+doCopyToClipboard
+    "user wants a change text to be copied to the clipboard"
+
+    |text|
+
+    self withSingleSelectedChangeDo:[:changeNr |
+        text := self sourceOfMethodChange:changeNr.
+    ].
+    text notEmptyOrNil ifTrue:[
+        self window setClipboardText:text
+    ]
+
+    "Created: / 21-11-2016 / 23:38:11 / cg"
+!
+
 doDelete
     "delete currently selected change(s)"
 
@@ -3476,9 +3605,13 @@
     "/ does not care for VW qualified names
     "/ ^ Parser parseExpression:text inNameSpace:nameSpace.
 
+(text includesString:'§') ifTrue:[self halt].
+
     "/ new:
     parser := Parser for:(ReadStream on:text).
     parser parserFlags allowQualifiedNames:true.
+    parser parserFlags allowDollarInIdentifier:true.
+    parser parserFlags allowParagraphInIdentifier:true.
     Error handle:[:ex |
         ^ nil
     ] do:[
@@ -3490,6 +3623,8 @@
             inNameSpace:nameSpace.
     ].
     ^ p
+
+    "Modified: / 21-11-2016 / 23:25:48 / cg"
 !
 
 queryCloseText
@@ -4659,7 +4794,7 @@
         ].
 
     "/
-    "/ if I am showing the changes file, dont update it
+    "/ if I am showing the changes file, don't update it
     "/
     changeFileName = ObjectMemory nameForChanges ifTrue:[
         Class withoutUpdatingChangesDo:[
@@ -5714,11 +5849,11 @@
 
 saveAndTerminate
     "update the changes file and quit.
-     Dont depend on this being sent, not all window managers
+     Don't depend on this being sent, not all window managers
      send it; instead, they simply destroy the view."
 
     anyChanges ifTrue:[
-	self writeBackChanges.
+        self writeBackChanges.
     ].
     super saveAndTerminate
 
@@ -6432,6 +6567,8 @@
     "
     clsName := nil.
 
+(chunkText includesString:'§') ifTrue:[self halt].
+
     p := browser parseExpression:chunkText inNameSpace:(self nameSpaceForApply).
     (p notNil and:[p ~~ #Error and:[p isMessage]]) ifTrue:[
         rec := p receiver.
@@ -6496,17 +6633,11 @@
                             selector:nil headerLine:nil timestamp:timeStampInfo isFollowupChange:true. 
                 changeInfo add:info.
 
-"/                changeChunks add:chunkText.
-"/                changeClassNames add:clsName.
-"/                changePositions add:methodPos.
-"/                changeTimeStamps add:timeStampInfo.
-"/                changeIsFollowupMethodChange add:true.
                 askedForEditingClassSource ifFalse:[
                     thisIsAClassSource := (changeFileName asFilename hasSuffix:'st').
                     askedForEditingClassSource := true.
                 ]
             ] ifTrue:[
-"/                changeClassNames at:changeClassNames size put:clsName.
                 changeInfo last className:clsName
             ].
 
@@ -6533,14 +6664,21 @@
                 methodSelector := nil.
                 clsName notNil ifTrue:[
                     methodChunks ifTrue:[
-                        p := Parser
-                                 parseMethodSpecification:text
-                                 in:nil
-                                 ignoreErrors:true
-                                 ignoreWarnings:true.
-                        (p notNil and:[p ~~ #Error]) ifTrue:[
-                            methodSelector := p selector.
-                        ]
+                        p := Parser for:(ReadStream on:text) in:nil.  
+                        p ignoreErrors:true.
+                        p ignoreWarnings:true.
+                        p parserFlags allowDollarInIdentifier:true.
+                        p parserFlags allowParagraphInIdentifier:true.
+                        p parseMethodSpec.
+                        methodSelector := p selector.
+"/                        p := Parser
+"/                                 parseMethodSpecification:text
+"/                                 in:nil
+"/                                 ignoreErrors:true
+"/                                 ignoreWarnings:true.
+"/                        (p notNil and:[p ~~ #Error]) ifTrue:[
+"/                            methodSelector := p selector.
+"/                        ]
                     ]
                 ].
 
@@ -6555,11 +6693,15 @@
                 ].
 
                 autoCompare value ifTrue:[
-                    changeDelta := ChangeDeltaInformation changeDeltaFor:text changeClass:changeClass selector:methodSelector.
+                    changeDelta := ChangeDeltaInformation 
+                                        changeDeltaFor:text changeClass:changeClass selector:methodSelector.
                 ].
             ].
-            changeInfo last headerLine:(self headerLineForChangeType:changeType changeString:changeString changeDelta:changeDelta timeStampInfo:timeStampInfo).
-"/            self addHeaderLineForChangeType:changeType changeString:changeString changeDelta:changeDelta timeStampInfo:timeStampInfo.
+            changeInfo last 
+                headerLine:(self headerLineForChangeType:changeType 
+                                 changeString:changeString
+                                 changeDelta:changeDelta
+                                 timeStampInfo:timeStampInfo).
         ].
         changeString := nil.
         headerLine := nil.
@@ -6572,7 +6714,7 @@
         emptyBlock value
     ].
 
-    "Modified: / 01-05-2016 / 19:15:00 / cg"
+    "Modified: / 21-11-2016 / 23:32:29 / cg"
 !
 
 processNonMethodChunk