ChangesBrowser.st
changeset 16475 5206032f1a19
parent 16467 c4582914a4be
child 16476 307b09c517b9
--- a/ChangesBrowser.st	Sat May 07 18:03:30 2016 +0200
+++ b/ChangesBrowser.st	Sat May 07 21:36:48 2016 +0200
@@ -211,34 +211,29 @@
         (
          (MenuItem
             label: 'File'
-            translateLabel: true
             submenu: 
            (Menu
               (
                (MenuItem
                   label: 'Compress'
                   itemValue: doCompress
-                  translateLabel: true
                   isVisible: notEditingClassSource
                 )
                (MenuItem
                   enabled: hasSingleSelection
                   label: 'Compress for Class'
                   itemValue: doCompressClass
-                  translateLabel: true
                   isVisible: notEditingClassSource
                 )
                (MenuItem
                   enabled: hasSingleSelection
                   label: 'Compress for Class && Selector'
                   itemValue: doCompressSelector
-                  translateLabel: true
                   isVisible: notEditingClassSource
                 )
                (MenuItem
                   label: 'Compare and Compress'
                   itemValue: doCompareAndCompress
-                  translateLabel: true
                   isVisible: notEditingClassSource
                 )
                (MenuItem
@@ -249,14 +244,12 @@
                   enabled: hasSingleSelection
                   label: 'Fileout && Delete all Changes for Class'
                   itemValue: doFileoutAndDeleteClassAll
-                  translateLabel: true
                   isVisible: notEditingClassSource
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'CheckIn && Delete all Changes for Class'
                   itemValue: doCheckinAndDeleteClassAll
-                  translateLabel: true
                   isVisible: notEditingClassSource
                 )
                (MenuItem
@@ -267,25 +260,21 @@
                   enabled: hasSelection
                   label: 'Save In...'
                   itemValue: doSave
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSingleSelection
                   label: 'Save to End In...'
                   itemValue: doSaveRest
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSingleSelection
                   label: 'Save for Class to End In...'
                   itemValue: doSaveClassRest
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSingleSelection
                   label: 'Save all for Class In...'
                   itemValue: doSaveClassAll
-                  translateLabel: true
                 )
                (MenuItem
                   label: '-'
@@ -293,13 +282,11 @@
                (MenuItem
                   label: 'Writeback ClassFile'
                   itemValue: doWriteBack
-                  translateLabel: true
                   isVisible: editingClassSource
                 )
                (MenuItem
                   label: 'Writeback ChangeFile'
                   itemValue: doWriteBack
-                  translateLabel: true
                   isVisible: notEditingClassSource
                 )
                (MenuItem
@@ -308,7 +295,6 @@
                (MenuItem
                   label: 'Update'
                   itemValue: doUpdate
-                  translateLabel: true
                 )
                (MenuItem
                   label: '-'
@@ -316,7 +302,6 @@
                (MenuItem
                   label: 'Exit'
                   itemValue: menuExit
-                  translateLabel: true
                 )
                )
               nil
@@ -325,7 +310,6 @@
           )
          (MenuItem
             label: 'CHANGE'
-            translateLabel: true
             submenu: 
            (Menu
               (
@@ -333,43 +317,36 @@
                   enabled: hasSelection
                   label: 'Apply'
                   itemValue: doApply
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSingleSelection
                   label: 'Apply to End'
                   itemValue: doApplyRest
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSingleSelection
                   label: 'Apply from Begin'
                   itemValue: doApplyFromBeginning
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSingleSelection
                   label: 'Apply for Class to End'
                   itemValue: doApplyClassRest
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSingleSelection
                   label: 'Apply for Class from Begin'
                   itemValue: doApplyClassFromBeginning
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasNoSelection
                   label: 'Apply All'
                   itemValue: doApplyAll
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSingleSelection
                   label: 'Apply to Conflict or End'
                   itemValue: doApplyToConflictOrEnd
-                  translateLabel: true
                 )
                (MenuItem
                   label: '-'
@@ -378,64 +355,54 @@
                   enabled: hasSelection
                   label: 'Delete'
                   itemValue: doDelete
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSingleSelection
                   label: 'Delete to End'
                   itemValue: doDeleteRest
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSingleSelection
                   label: 'Delete from Begin'
                   itemValue: doDeleteFromBeginning
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSingleSelection
                   label: 'Delete for Class to End'
                   itemValue: doDeleteClassRest
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSingleSelection
                   label: 'Delete for Class from Begin'
                   itemValue: doDeleteClassFromBeginning
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Delete all for Class'
                   itemValue: doDeleteClassAll
-                  translateLabel: true
                   isVisible: hasNoMultiSelection
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Delete all for Class && its Private Classes'
                   itemValue: doDeleteClassAndPrivateClassesAll
-                  translateLabel: true
                   isVisible: hasNoMultiSelection
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Delete all for Namespace'
                   itemValue: doDeleteAllForNamespace
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Delete all for Classes'
                   itemValue: doDeleteClassAll
-                  translateLabel: true
                   isVisible: hasMultiSelection
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Delete all for Classes && their Private Classes'
                   itemValue: doDeleteClassAndPrivateClassesAll
-                  translateLabel: true
                   isVisible: hasMultiSelection
                 )
                (MenuItem
@@ -443,16 +410,26 @@
                 )
                (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
-                  translateLabel: true
                   isVisible: hasNoMultiSelectionHolder
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Delete all Versions of all Selected Methods'
                   itemValue: doDeleteClassSelectorAll
-                  translateLabel: true
                   isVisible: hasMultiSelectionHolder
                 )
                (MenuItem
@@ -462,7 +439,6 @@
                   enabled: hasSingleSelection
                   label: 'Compare with Current'
                   itemValue: doCompare
-                  translateLabel: true
                 )
                (MenuItem
                   label: '-'
@@ -471,7 +447,6 @@
                   enabled: hasSelection
                   label: 'Make Change a Patch'
                   itemValue: doMakePatch
-                  translateLabel: true
                 )
                )
               nil
@@ -480,38 +455,32 @@
           )
          (MenuItem
             label: 'Search'
-            translateLabel: true
             submenu: 
            (Menu
               (
                (MenuItem
                   label: 'Class...'
                   itemValue: findClass
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'First for Class'
                   itemValue: findFirstForClass
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Previous for Class'
                   itemValue: findPreviousForClass
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Next for Class'
                   itemValue: findNextForClass
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Last for Class'
                   itemValue: findLastForClass
-                  translateLabel: true
                 )
                (MenuItem
                   label: '-'
@@ -519,19 +488,16 @@
                (MenuItem
                   label: 'Selector...'
                   itemValue: findSelector
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Previous for Selector'
                   itemValue: findPreviousForSelector
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Next for Selector'
                   itemValue: findNextForSelector
-                  translateLabel: true
                 )
                (MenuItem
                   label: '-'
@@ -539,19 +505,16 @@
                (MenuItem
                   label: 'String...'
                   itemValue: findString
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Previous with String'
                   itemValue: findPreviousForString
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Next with String'
                   itemValue: findNextForString
-                  translateLabel: true
                 )
                (MenuItem
                   label: '-'
@@ -560,13 +523,11 @@
                   enabled: hasSelection
                   label: 'Previous Difference'
                   itemValue: findPreviousDifference
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Next Difference'
                   itemValue: findNextDifference
-                  translateLabel: true
                 )
                (MenuItem
                   label: '-'
@@ -575,18 +536,15 @@
                   enabled: hasSelection
                   label: 'Previous Snapshot'
                   itemValue: findPreviousSnapshot
-                  translateLabel: true
                 )
                (MenuItem
                   enabled: hasSelection
                   label: 'Next Snapshot'
                   itemValue: findNextSnapshot
-                  translateLabel: true
                 )
                (MenuItem
                   label: 'Last Snapshot'
                   itemValue: findLastSnapshot
-                  translateLabel: true
                 )
                )
               nil
@@ -595,7 +553,6 @@
           )
          (MenuItem
             label: 'Browse'
-            translateLabel: true
             submenu: 
            (Menu
               (
@@ -603,7 +560,6 @@
                   enabled: hasSingleSelection
                   label: 'Class'
                   itemValue: doBrowse
-                  translateLabel: true
                 )
                (MenuItem
                   label: '-'
@@ -611,12 +567,10 @@
                (MenuItem
                   label: 'Senders...'
                   itemValue: doBrowseSenders
-                  translateLabel: true
                 )
                (MenuItem
                   label: 'Implementors...'
                   itemValue: doBrowseImplementors
-                  translateLabel: true
                 )
                )
               nil
@@ -625,28 +579,23 @@
           )
          (MenuItem
             label: 'Settings'
-            translateLabel: true
             submenu: 
            (Menu
               (
                (MenuItem
                   label: 'Auto Compare'
-                  translateLabel: true
                   indication: autoCompare
                 )
                (MenuItem
                   label: 'Autoload As Required'
-                  translateLabel: true
                   indication: autoloadAsRequired
                 )
                (MenuItem
                   label: 'Show Diffs'
-                  translateLabel: true
                   indication: showingDiffs
                 )
                (MenuItem
                   label: 'Auto Update'
-                  translateLabel: true
                   indication: autoUpdate
                 )
                (MenuItem
@@ -654,14 +603,13 @@
                 )
                (MenuItem
                   label: 'Add to ChangeSet when Applying'
-                  translateLabel: true
                   indication: updateChangeSet
                 )
                (MenuItem
-                  label: 'Ignore public/private categories (Dolphin code)'
+                  label: 'Ignore Public/Private in Categories (Dolphin code)'
                   itemValue: ignorePublicPrivateCategories:
-                  translateLabel: true
                   indication: ignorePublicPrivateCategories
+                  isVisible: false
                 )
                (MenuItem
                   label: '-'
@@ -669,12 +617,10 @@
                (MenuItem
                   label: 'Apply into Package...'
                   itemValue: setEnforcedPackage
-                  translateLabel: true
                 )
                (MenuItem
                   label: 'Apply into NameSpace...'
                   itemValue: setEnforcedNameSpace
-                  translateLabel: true
                 )
                (MenuItem
                   label: '-'
@@ -682,7 +628,6 @@
                (MenuItem
                   label: 'Settings...'
                   itemValue: openSettingsDialog
-                  translateLabel: true
                 )
                )
               nil
@@ -691,7 +636,6 @@
           )
          (MenuItem
             label: 'MENU_Help'
-            translateLabel: true
             startGroup: conditionalRight
             submenu: 
            (Menu
@@ -699,7 +643,6 @@
                (MenuItem
                   label: 'ChangesBrowser Documentation'
                   itemValue: openHTMLDocument:
-                  translateLabel: true
                   argument: 'tools/cbrowser/TOP.html'
                 )
                (MenuItem
@@ -708,7 +651,6 @@
                (MenuItem
                   label: 'About ChangesBrowser...'
                   itemValue: openAboutThisApplication
-                  translateLabel: true
                 )
                )
               nil
@@ -719,8 +661,6 @@
         nil
         nil
       )
-
-    "Modified: / 25-12-2011 / 11:21:56 / cg"
 !
 
 toolbarMenuSpec
@@ -2351,6 +2291,54 @@
     "Modified: / 28.1.1998 / 20:42:14 / cg"
 !
 
+doDeleteClassSelectorOlder
+    "delete older changes with same class and selector as currently selected change(s)"
+
+    |classNameSelectorPairsToDelete upToPerClassAndSelector lastChangeNr overAllNumDeletedBefore|
+
+    lastChangeNr := -1.
+    classNameSelectorPairsToDelete := Set new.
+    upToPerClassAndSelector := Dictionary new.
+    
+    "/ collect what is to be deleted
+    self withSelectedChangesDo:[:changeNr |
+        |className selector|
+
+        className := self classNameOfChange:changeNr.
+        selector := self selectorOfMethodChange:changeNr.
+        selector notNil ifTrue:[
+            (className notNil and:[selector notNil]) ifTrue:[
+                classNameSelectorPairsToDelete add:(className -> selector).
+                upToPerClassAndSelector at:(className -> selector) put:changeNr.
+            ]
+        ].
+        lastChangeNr := lastChangeNr max:changeNr.
+    ].
+        
+    overAllNumDeletedBefore := 0.
+    changeListView setSelection:nil.
+
+    self withExecuteCursorDo:[
+        classNameSelectorPairsToDelete do:[:pair |
+            |numDeletedBefore className selector lastToDelete|
+
+            className := pair key.
+            selector  := pair value.
+            lastToDelete := (upToPerClassAndSelector at:pair) - 1.
+            
+            numDeletedBefore := self
+                                   silentDeleteChangesFor:className selector:selector
+                                   from:1
+                                   to:lastToDelete.
+            lastChangeNr := lastChangeNr - numDeletedBefore.
+            overAllNumDeletedBefore := overAllNumDeletedBefore + numDeletedBefore.
+        ].
+    ].
+
+    self setChangeList.
+    self autoSelectOrEnd:lastChangeNr
+!
+
 doDeleteFromBeginning
     "delete all changes from 1 to the current"