ChangeSetBrowser2 refactoring/cleanup
authorvrany
Thu, 04 Aug 2011 20:03:20 +0200
changeset 10448 0a7159ffbd18
parent 10447 c824b3df5121
child 10449 bdc2ecfadf41
ChangeSetBrowser2 refactoring/cleanup
Tools__ChangeSetBrowser2.st
--- a/Tools__ChangeSetBrowser2.st	Thu Aug 04 20:02:49 2011 +0200
+++ b/Tools__ChangeSetBrowser2.st	Thu Aug 04 20:03:20 2011 +0200
@@ -29,10 +29,11 @@
 
 ToolApplicationModel subclass:#ChangeSetBrowser2
 	instanceVariableNames:'changesetHolder titleHolder allowOpenHolder changesetFile
-		navigatorChangesetHolder navigatorSpecHolder selectionHolder
-		classHolder codeAspectHolder selection1Holder
-		list1GeneratorHolder showRemovedAspect acceptEnabledHolder
-		changeListViews sourceView changeSourceHolder imageSourceHolder'
+		navigatorChangesetHolder navigatorSpecHolder list1 list1Holder
+		selection1Holder list2 list2Holder selection2Holder classHolder
+		codeAspectHolder showRemovedAspect showSameAspect
+		acceptEnabledHolder sourceView changeSourceHolder
+		imageSourceHolder'
 	classVariableNames:'ShowRemoved LastSelectionConditionString'
 	poolDictionaries:''
 	category:'Interface-Browsers-ChangeSet'
@@ -167,7 +168,7 @@
                 offsets:(0 @ 0 corner:0 @ -30)).
     dialog 
         okAction:
-            [^browser navigatorChangesetHolder value condenseChangesForRemoved];
+            [^browser list1Holder value condenseChangesForRemoved];
         abortAction:
             [^#()].        
     dialog openWithExtent: 800@700.
@@ -182,7 +183,7 @@
 
     "Created: / 08-11-2010 / 17:59:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified (format): / 01-07-2011 / 16:34:06 / cg"
-    "Modified: / 19-07-2011 / 19:39:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 04-08-2011 / 18:06:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 open
@@ -221,8 +222,8 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:Tools::ChangeSetBrowser andSelector:#hierarchicalNavigatorSpec
-     Tools::ChangeSetBrowser new openInterface:#hierarchicalNavigatorSpec
+     UIPainter new openOnClass:Tools::ChangeSetBrowser2 andSelector:#hierarchicalNavigatorSpec
+     Tools::ChangeSetBrowser2 new openInterface:#hierarchicalNavigatorSpec
     "
 
     <resource: #canvas>
@@ -255,31 +256,38 @@
                 ) 
                (SubChannelInfoSpec
                   subAspect: inGeneratorHolder
-                  aspect: navigatorChangesetHolder
+                  aspect: list1Holder
                 )
                 
                (SubChannelInfoSpec
                   subAspect: menuHolder
-                  aspect: changeMenuHolder
+                  aspect: list1MenuHolder
                 ) 
                (SubChannelInfoSpec
                   subAspect: selectionHolder
-                  aspect: selectionHolder
+                  aspect: selection1Holder
                 )
                 
                (SubChannelInfoSpec
                   subAspect: showRemovedHolder
                   aspect: showRemovedAspect
                 )
+               (SubChannelInfoSpec
+                  subAspect: showSameHolder
+                  aspect: showSameAspect
+                )
+
               )
               createNewApplication: true
               createNewBuilder: true
-              postBuildCallback: addChangeListView:
+              postBuildCallback: list1View:
             )
            )
          
         )
       )
+
+    "Modified: / 04-08-2011 / 18:43:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 oneColumnNavigatorSpec
@@ -290,8 +298,8 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:Tools::ChangeSetBrowser andSelector:#oneColumnNavigatorSpec
-     Tools::ChangeSetBrowser new openInterface:#oneColumnNavigatorSpec
+     UIPainter new openOnClass:Tools::ChangeSetBrowser2 andSelector:#oneColumnNavigatorSpec
+     Tools::ChangeSetBrowser2 new openInterface:#oneColumnNavigatorSpec
     "
 
     <resource: #canvas>
@@ -324,31 +332,38 @@
                 ) 
                (SubChannelInfoSpec
                   subAspect: inGeneratorHolder
-                  aspect: changesetHolder
+                  aspect: list1Holder
                 )
                 
                (SubChannelInfoSpec
                   subAspect: menuHolder
-                  aspect: changeMenuHolder
+                  aspect: list1MenuHolder
                 ) 
                (SubChannelInfoSpec
                   subAspect: selectionHolder
-                  aspect: selectionHolder
+                  aspect: selection1Holder
                 )
                 
                (SubChannelInfoSpec
                   subAspect: showRemovedHolder
                   aspect: showRemovedAspect
                 )
+               (SubChannelInfoSpec
+                  subAspect: showSameHolder
+                  aspect: showSameAspect
+                )
+
               )
               createNewApplication: true
               createNewBuilder: true
-              postBuildCallback: addChangeListView:
+              postBuildCallback: list1View:
             )
            )
          
         )
       )
+
+    "Modified: / 04-08-2011 / 18:43:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 twoColumnNavigatorSpec
@@ -359,8 +374,8 @@
      the UIPainter may not be able to read the specification."
 
     "
-     UIPainter new openOnClass:Tools::ChangeSetBrowser andSelector:#twoColumnNavigatorSpec
-     Tools::ChangeSetBrowser new openInterface:#twoColumnNavigatorSpec
+     UIPainter new openOnClass:Tools::ChangeSetBrowser2 andSelector:#twoColumnNavigatorSpec
+     Tools::ChangeSetBrowser2 new openInterface:#twoColumnNavigatorSpec
     "
 
     <resource: #canvas>
@@ -398,16 +413,16 @@
                       ) 
                      (SubChannelInfoSpec
                         subAspect: inGeneratorHolder
-                        aspect: navigatorChangesetHolder
+                        aspect: list1Holder
                       )
                       
                      (SubChannelInfoSpec
                         subAspect: menuHolder
-                        aspect: changeMenuHolder
+                        aspect: list1MenuHolder
                       ) 
                      (SubChannelInfoSpec
                         subAspect: outGeneratorHolder
-                        aspect: list1GeneratorHolder
+                        aspect: list2Holder
                       )
                       
                      (SubChannelInfoSpec
@@ -418,10 +433,14 @@
                         subAspect: showRemovedHolder
                         aspect: showRemovedAspect
                       )
+                    (SubChannelInfoSpec
+                        subAspect: showSameHolder
+                        aspect: showSameAspect
+                      )
                     )
                     createNewApplication: true
                     createNewBuilder: true
-                    postBuildCallback: addChangeListView:
+                    postBuildCallback: list1View:
                   )
                  (SubCanvasSpec
                     name: 'SecondColumn'
@@ -437,26 +456,30 @@
                       ) 
                      (SubChannelInfoSpec
                         subAspect: inGeneratorHolder
-                        aspect: list1GeneratorHolder
+                        aspect: list2Holder
                       )
                       
                      (SubChannelInfoSpec
                         subAspect: menuHolder
-                        aspect: changeMenuHolder
+                        aspect: list2MenuHolder
                       ) 
                      (SubChannelInfoSpec
                         subAspect: selectionHolder
-                        aspect: selectionHolder
+                        aspect: selection2Holder
                       )
                       
                      (SubChannelInfoSpec
                         subAspect: showRemovedHolder
                         aspect: showRemovedAspect
                       )
+                    (SubChannelInfoSpec
+                        subAspect: showSameHolder
+                        aspect: showSameAspect
+                      )
                     )
                     createNewApplication: true
                     createNewBuilder: true
-                    postBuildCallback: addChangeListView:
+                    postBuildCallback: list2View:
                   )
                  )
                
@@ -467,6 +490,8 @@
          
         )
       )
+
+    "Modified: / 04-08-2011 / 18:43:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 windowSpec
@@ -622,8 +647,8 @@
      the MenuEditor may not be able to read the specification."
 
     "
-     MenuEditor new openOnClass:Tools::ChangeSetBrowser andSelector:#changeMenu
-     (Menu new fromLiteralArrayEncoding:(Tools::ChangeSetBrowser changeMenu)) startUp
+     MenuEditor new openOnClass:Tools::ChangeSetBrowser2 andSelector:#changeMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::ChangeSetBrowser2 changeMenu)) startUp
     "
 
     <resource: #menu>
@@ -632,16 +657,17 @@
      #(Menu
         (
          (MenuItem
-            enabled: hasChangeSelectedAndNotRemoved
+            enabled: hasChangeSelectedAndNotRemoved:
             label: 'Apply'
-            itemValue: changeMenuApplySelection
+            itemValue: changeMenuApplySelection:
             translateLabel: true
             isVisible: acceptEnabledHolder
             shortcutKey: Accept
+            auxValue: 100
           )
          (MenuItem
             label: 'Apply all'
-            itemValue: changeMenuApply
+            itemValue: changeMenuApply:
             translateLabel: true
             isVisible: acceptEnabledHolder
           )
@@ -650,14 +676,14 @@
           )
          (MenuItem
             label: 'Delete'
-            itemValue: changeMenuDeleteSelection
+            itemValue: changeMenuDeleteSelection:
             nameKey: Delete
             translateLabel: true
             shortcutKey: Delete
           )
          (MenuItem
             label: 'Undelete'
-            itemValue: changeMenuUndeleteSelection
+            itemValue: changeMenuUndeleteSelection:
             nameKey: Undelete
             translateLabel: true
             shortcutKey: Delete
@@ -673,22 +699,22 @@
               (
                (MenuItem
                   label: 'Select same'
-                  itemValue: changeMenuSelectSame
+                  itemValue: changeMenuSelectSame:
                   translateLabel: true
                 )
                (MenuItem
                   label: 'Select additions (new classes/methods)'
-                  itemValue: changeMenuSelectAdditions
+                  itemValue: changeMenuSelectAdditions:
                   translateLabel: true
                 )
                (MenuItem
                   label: 'Select removals'
-                  itemValue: changeMenuSelectRemovals
+                  itemValue: changeMenuSelectRemovals:
                   translateLabel: true
                 )
                (MenuItem
                   label: 'Select differences'
-                  itemValue: changeMenuSelectDifferences
+                  itemValue: changeMenuSelectDifferences:
                   translateLabel: true
                 )
                (MenuItem
@@ -696,12 +722,12 @@
                 )
                (MenuItem
                   label: 'Select all'
-                  itemValue: changeMenuSelectAll
+                  itemValue: changeMenuSelectAll:
                   translateLabel: true
                 )
                (MenuItem
                   label: 'Select none'
-                  itemValue: changeMenuSelectNone
+                  itemValue: changeMenuSelectNone:
                   translateLabel: true
                 )
                (MenuItem
@@ -709,7 +735,7 @@
                 )
                (MenuItem
                   label: 'Select using block'
-                  itemValue: changeMenuSelectUsingBlock
+                  itemValue: changeMenuSelectUsingBlock:
                   translateLabel: true
                 )
                )
@@ -721,20 +747,24 @@
             label: '-'
           )
          (MenuItem
-            enabled: false
             label: 'Show Deleted'
             translateLabel: true
             indication: showRemovedAspect
           )
          (MenuItem
+            label: 'Show Same'
+            translateLabel: true
+            indication: showSameAspect
+          )
+         (MenuItem
             label: 'Inspect change'
-            itemValue: changeMenuInspect
+            itemValue: changeMenuInspect:
             translateLabel: true
           )
          (MenuItem
-            enabled: hasSingleChangeSelectedAndCanBrowse
+            enabled: hasSingleChangeSelectedAndCanBrowse:
             label: 'Browse'
-            itemValue: changeMenuBrowse
+            itemValue: changeMenuBrowse:
             translateLabel: true
           )
          )
@@ -751,8 +781,8 @@
      the MenuEditor may not be able to read the specification."
 
     "
-     MenuEditor new openOnClass:Tools::ChangeSetBrowser andSelector:#mainMenu
-     (Menu new fromLiteralArrayEncoding:(Tools::ChangeSetBrowser mainMenu)) startUp
+     MenuEditor new openOnClass:Tools::ChangeSetBrowser2 andSelector:#mainMenu
+     (Menu new fromLiteralArrayEncoding:(Tools::ChangeSetBrowser2 mainMenu)) startUp
     "
 
     <resource: #menu>
@@ -803,12 +833,6 @@
             )
           )
          (MenuItem
-            label: 'Change'
-            translateLabel: true
-            submenuChannel: changeMenu
-            keepLinkedMenu: true
-          )
-         (MenuItem
             label: 'View'
             translateLabel: true
             submenu: 
@@ -832,6 +856,19 @@
                   choice: navigatorSpecHolder
                   choiceValue: twoColumnNavigatorSpec
                 )
+               (MenuItem
+                  label: '-'
+                )
+               (MenuItem
+                  label: 'Show Deleted'
+                  translateLabel: true
+                  indication: showRemovedAspect
+                )
+               (MenuItem
+                  label: 'Show Same'
+                  translateLabel: true
+                  indication: showSameAspect
+                )
                )
               nil
               nil
@@ -947,6 +984,20 @@
     self changesetHolder value: aChangeSet
 !
 
+list1View: aSubApplicationView
+
+    list1 := aSubApplicationView application
+
+    "Created: / 04-08-2011 / 17:56:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+list2View: aSubApplicationView
+
+    list2 := aSubApplicationView application
+
+    "Created: / 04-08-2011 / 17:57:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
 readOnly: aBoolean
 
     "Created: / 20-07-2010 / 09:48:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -954,13 +1005,19 @@
 
 theSingleSelectedChange
 
-    | change |
+    | change sel |
     change := nil.
-    selectionHolder value do:
+    sel := selection2Holder value.
+    sel isNil ifTrue:[
+        sel := selection1Holder value.
+    ].
+    sel do:
         [:each|
         change ifNotNil:[nil].
         change ifNil:[change := each]].
     ^change
+
+    "Modified: / 04-08-2011 / 18:55:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 title: aString
@@ -980,11 +1037,28 @@
 
 !ChangeSetBrowser2 methodsFor:'accessing - menus'!
 
-changeMenuHolder
+list1MenuHolder
+
+    ^[
+    | menu |
+    menu := builder menuFor: #changeMenu.
+    menu allItemsDo:[:item|item argument: list1].
+    menu        
+    ]
 
-    ^[self menuFor: #changeMenu]
+    "Created: / 04-08-2011 / 18:11:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+list2MenuHolder
 
-    "Created: / 29-10-2010 / 13:23:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    ^[
+    | menu |
+    menu := builder menuFor: #changeMenu.
+    menu allItemsDo:[:item|item argument: list2].
+    menu        
+    ]
+
+    "Created: / 04-08-2011 / 18:13:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetBrowser2 methodsFor:'actions'!
@@ -1113,28 +1187,34 @@
     "Created: / 19-07-2011 / 11:46:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-list1GeneratorHolder
-    "return/create the 'list1GeneratorHolder' value holder (automatically generated)"
+list1Holder
+    "return/create the 'list1Holder' value holder (automatically generated)"
 
-    list1GeneratorHolder isNil ifTrue:[
-        list1GeneratorHolder := ValueHolder new.
+    list1Holder isNil ifTrue:[
+        list1Holder := ValueHolder new.
     ].
-    ^ list1GeneratorHolder
+    ^ list1Holder
 !
 
-list1GeneratorHolder:something
-    "set the 'list1GeneratorHolder' value holder (automatically generated)"
+list1Holder:something
+    "set the 'list1Holder' value holder (automatically generated)"
 
-    list1GeneratorHolder := something.
+    list1Holder := something.
 !
 
-listHolder
+list2Holder
+    "return/create the 'list2Holder' value holder (automatically generated)"
 
-    ^self navigatorSpecHolder value == #twoColumnNavigatorSpec
-        ifTrue:[self list1GeneratorHolder]
-        ifFalse:[self navigatorChangesetHolder]
+    list2Holder isNil ifTrue:[
+        list2Holder := ValueHolder new.
+    ].
+    ^ list2Holder
+!
 
-    "Created: / 20-03-2011 / 22:16:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+list2Holder:something
+    "set the 'list2Holder' value holder (automatically generated)"
+
+    list2Holder := something.
 !
 
 navigatorChangesetHolder
@@ -1165,23 +1245,30 @@
     "return/create the 'selection1Holder' value holder (automatically generated)"
 
     selection1Holder isNil ifTrue:[
-        selection1Holder := ValueHolder with:#().
+        selection1Holder := ValueHolder new.
     ].
     ^ selection1Holder
+!
 
-    "Modified: / 24-10-2009 / 20:29:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+selection1Holder:something
+    "set the 'selection1Holder' value holder (automatically generated)"
+
+    selection1Holder := something.
 !
 
-selectionHolder
-    "return/create the 'selectionHolder' value holder (automatically generated)"
+selection2Holder
+    "return/create the 'selection2Holder' value holder (automatically generated)"
 
-    selectionHolder isNil ifTrue:[
-        selectionHolder := ValueHolder new.
-        selectionHolder addDependent: self.
+    selection2Holder isNil ifTrue:[
+        selection2Holder := ValueHolder new.
     ].
-    ^ selectionHolder
+    ^ selection2Holder
+!
 
-    "Modified: / 24-10-2009 / 19:56:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+selection2Holder:something
+    "set the 'selection2Holder' value holder (automatically generated)"
+
+    selection2Holder := something.
 !
 
 showRemovedAspect
@@ -1198,6 +1285,23 @@
     showRemovedAspect := aValueHolder.
 !
 
+showSameAspect
+    "return/create the 'showSameAspect' value holder (automatically generated)"
+
+    showSameAspect isNil ifTrue:[
+        showSameAspect := ValueHolder with: true.
+    ].
+    ^ showSameAspect
+
+    "Modified: / 04-08-2011 / 18:42:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+showSameAspect:something
+    "set the 'showSameAspect' value holder (automatically generated)"
+
+    showSameAspect := something.
+!
+
 titleHolder
     "return/create the 'titleHolder' value holder (automatically generated)"
     
@@ -1213,9 +1317,9 @@
 changesetChanged
 
     self titleHolder value: (self changeset name ? (self defaultTitle)).
-    self navigatorChangesetHolder value: self getNavigatorChangeSet
+    self list1Holder value: self getNavigatorChangeSet
 
-    "Modified: / 26-10-2010 / 22:57:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 04-08-2011 / 18:05:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 selectionChanged
@@ -1245,7 +1349,8 @@
 update: aspect with: param from: sender 
 
     sender == changesetHolder ifTrue: [ ^ self changesetChanged ].
-    sender == selectionHolder ifTrue: [ ^ self selectionChanged ].
+    sender == selection1Holder ifTrue: [ ^ self selectionChanged ].
+    sender == selection2Holder ifTrue: [ ^ self selectionChanged ].
 
     "Created: / 24-10-2009 / 19:29:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
@@ -1321,75 +1426,41 @@
 
 !ChangeSetBrowser2 methodsFor:'menu actions - changes'!
 
-changeMenuApply
+changeMenuApply: changeList
 
     | changesToApply |
     changesToApply := OrderedCollection new. 
     self changesDo:[:chg|chg removed ifFalse:[changesToApply add: chg]].
-    self changeMenuApply: changesToApply.
+    self changeMenuApplyChanges: changesToApply.
 
-    "Created: / 29-10-2010 / 13:53:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 16-03-2011 / 22:54:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 04-08-2011 / 17:26:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-changeMenuApply: changesToApply
-
-    | changesThatFailToApply |
-
-    changesThatFailToApply := ChangeSet new.
-    ProgressIndicator
-        displayProgress:'Applying changes...'
-        at:(Screen default center)
-        from:200 to:400
-        during:[:val |
-            1 to: changesToApply size do:
-                [:i|
-                val value:((100 / changesToApply size) * i) rounded.
-                [self changeMenuApplyChange: (changesToApply at: i)]
-                    on: Error do:[changesThatFailToApply add: (changesToApply at: i)]]]
-
-    "Created: / 29-10-2010 / 14:54:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-changeMenuApplyChange: aChange
-
-    aChange isClassDefinitionChange ifTrue:
-        [(Smalltalk at: aChange superClassName asSymbol) 
-            ifNil:[^self error: 'Nil superclass']].
-    aChange apply
-
-    "Modified: / 29-10-2010 / 14:57:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-changeMenuApplySelection
+changeMenuApplySelection: changeList
 
     self selectionDo:[:change|self changeMenuApplyChange:change].
 
-    "Created: / 29-10-2010 / 13:53:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 29-10-2010 / 14:55:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 04-08-2011 / 17:27:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-changeMenuBrowse
-    "automatically generated by UIEditor ..."
+changeMenuBrowse: changeList
 
-    "*** the code below performs no action"
-    "*** (except for some feedback on the Transcript)"
-    "*** Please change as required and accept in the browser."
-    "*** (and replace this comment by something more useful ;-)"
+    self breakPoint: #jv.
+    Dialog warn: 'Not yet implemented'
 
-    "action to be added ..."
-
-    Transcript showCR:self class name, ': action for #changeMenuBrowse ...'.
+    "Created: / 04-08-2011 / 17:27:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-changeMenuDeleteSelection
+changeMenuDeleteSelection: changeList
 
     self selectionDo:[:chg|chg removed: true]
 
     "Modified: / 29-10-2010 / 13:53:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 04-08-2011 / 17:28:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-changeMenuInspect
+changeMenuInspect: changeList
 
     | changes |
     changes := OrderedCollection new: 1.
@@ -1398,75 +1469,61 @@
         ifTrue:[changes anyOne inspect] 
         ifFalse:[changes inspect].
 
-    "Created: / 29-10-2010 / 14:16:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 04-08-2011 / 17:28:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-changeMenuInspect:aValueHolder
-
-    aValueHolder value size = 1 
-        ifTrue:[aValueHolder value anyOne inspect]
-        ifFalse:[aValueHolder value inspect]
-!
-
-changeMenuInspectChangeset
+changeMenuInspectChangeset: changeList
 
     self changesetHolder value inspect.
+
+    "Created: / 04-08-2011 / 17:28:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-changeMenuSelectAdditions
+changeMenuSelectAdditions: changeList
 
-    self changeMenuSelectAllSuchThat:[:change|change delta = #+]
+    self changeMenuSelectIn: changeList suchThat:[:change|change delta = #+]
 
-    "Modified: / 29-10-2010 / 13:16:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 04-08-2011 / 17:29:07 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-changeMenuSelectAll
+changeMenuSelectAll: changeList
 
-    self changeMenuSelectAllSuchThat:[:change|true]
+    self changeMenuSelectIn: changeList suchThat:[:change|true]
 
-    "Modified: / 29-10-2010 / 13:17:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 04-08-2011 / 17:29:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-changeMenuSelectAllSuchThat:conditionBlock 
+changeMenuSelectDifferences: changeList
 
-    | newSelection |
-    newSelection := OrderedCollection new.
-    self listDo: [:chg|(conditionBlock value: chg) ifTrue:[newSelection add: chg]].
-    self selectionHolder value: newSelection.
+    self changeMenuSelectIn: changeList suchThat:[:change|change delta = #~]
 
-    "Created: / 29-10-2010 / 13:05:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 20-03-2011 / 22:33:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 04-08-2011 / 17:29:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-changeMenuSelectDifferences
+changeMenuSelectNone: changeList
 
-    self changeMenuSelectAllSuchThat:[:change|change delta = #~]
+    self changeMenuSelectIn: changeList suchThat:[:change|false]
 
-    "Created: / 29-10-2010 / 14:07:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 04-08-2011 / 17:30:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-changeMenuSelectNone
+changeMenuSelectRemovals: changeList
 
-    self changesDo:[:chg|chg removed: true].
+    self changeMenuSelectIn: changeList suchThat:[:change|change delta = #-]
 
-    "Modified: / 29-10-2010 / 14:23:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 29-10-2010 / 13:18:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 04-08-2011 / 17:35:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-changeMenuSelectRemovals
+changeMenuSelectSame: changeList
 
-    self changeMenuSelectAllSuchThat:[:change|change delta = #-]
+    self changeMenuSelectIn: changeList suchThat:[:change|change delta = #=]
 
-    "Modified: / 29-10-2010 / 13:18:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 29-10-2010 / 13:18:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 04-08-2011 / 17:35:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-changeMenuSelectSame
-
-    self changeMenuSelectAllSuchThat:[:change|change delta = #=]
-
-    "Modified: / 29-10-2010 / 13:18:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-changeMenuSelectUsingBlock
+changeMenuSelectUsingBlock: changeList
 
     |conditionBlockString conditionBlock dialog textHolder template|
 
@@ -1506,37 +1563,63 @@
         ^ self
     ].
 
-    self changeMenuSelectAllSuchThat: conditionBlock
+    self changeMenuSelectIn: changeList suchThat: conditionBlock
 
     "Modified: / 29-10-2010 / 13:05:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 04-08-2011 / 17:42:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-changeMenuUndeleteSelection
+changeMenuUndeleteSelection: changeList
 
     self selectionDo:[:chg|chg removed: false]
 
     "Modified: / 29-10-2010 / 13:53:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 04-08-2011 / 17:42:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!ChangeSetBrowser2 methodsFor:'menu actions - changes - helpers'!
+
+changeMenuApplyChange: aChange
+
+    aChange isClassDefinitionChange ifTrue:
+        [(Smalltalk at: aChange superClassName asSymbol) 
+            ifNil:[^self error: 'Nil superclass']].
+    aChange apply
+
+    "Modified: / 29-10-2010 / 14:57:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeMenuApplyChanges: changesToApply
+
+    | changesThatFailToApply |
+
+    changesThatFailToApply := ChangeSet new.
+    ProgressIndicator
+        displayProgress:'Applying changes...'
+        at:(Screen default center)
+        from:200 to:400
+        during:[:val |
+            1 to: changesToApply size do:
+                [:i|
+                val value:((100 / changesToApply size) * i) rounded.
+                [self changeMenuApplyChange: (changesToApply at: i)]
+                    on: Error do:[changesThatFailToApply add: (changesToApply at: i)]]]
+
+    "Created: / 04-08-2011 / 17:26:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+changeMenuSelectIn: changeList suchThat:conditionBlock 
+
+    | sel |
+    sel := OrderedCollection new.
+    changeList listHolder value do: [:chg|(conditionBlock value: chg) ifTrue:[sel add: chg]].
+    changeList selectionHolder value: sel.
+
+    "Created: / 04-08-2011 / 17:29:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetBrowser2 methodsFor:'private'!
 
-addChangeListView: aView
-
-    changeListViews ifNil:[changeListViews := Set new].
-    changeListViews add: aView
-
-    "Created: / 16-03-2011 / 22:41:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-changesDo: aBlock
-
-    self navigatorChangesetHolder value do:[:chg|chg do: aBlock].
-    self redrawChangeListViews
-
-    "Created: / 29-10-2010 / 13:46:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 16-03-2011 / 22:43:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
 getNavigatorChangeSet
 
     | changeset |
@@ -1556,33 +1639,16 @@
 
 redrawChangeListViews
 
-    changeListViews ifNil:[^self].    
-    changeListViews do:[:v|
-        v allSubViewsDo:
-            [:sv|sv redraw]
-    ]
+    list1 notNil ifTrue:[
+        list1 builder window allSubViewsDo: [:v|v redraw]
+    ].
+    list2 notNil ifTrue:[
+        list2 builder window allSubViewsDo: [:v|v redraw]
+    ].
 
     "Created: / 16-03-2011 / 22:41:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-selectionDo: aBlock
-
-    | applyBlock |
-    applyBlock := [:e|aBlock value: e change].
-
-    selectionHolder value isNilOrEmptyCollection ifTrue:[
-        (self navigatorChangesetHolder value ? #()) do: aBlock
-    ] ifFalse:[
-        selection1Holder value isNilOrEmptyCollection not
-            ifTrue:[selection1Holder value do: applyBlock]
-            ifFalse:[selectionHolder value do: applyBlock].
-    ].
-    self redrawChangeListViews
-
-    "Created: / 29-10-2010 / 13:47:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 08-04-2011 / 10:15:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
 showSource: aBoolean
 
     | panel |
@@ -1632,26 +1698,31 @@
     "Created: / 20-03-2011 / 21:34:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-hasChangeSelectedAndNotRemoved
+hasChangeSelectedAndNotRemoved: changeList
 
-    self selectionDo:[:e|e removed ifFalse:[^true]].
-    ^false
+    | sel |
+    sel := changeList selection.
+    sel isEmptyOrNil ifTrue:[^false].
+    ^(sel anySatisfy:[:each|each removed]) not
 
-    "Created: / 18-03-2011 / 08:01:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 24-07-2011 / 06:52:28 / cg"
+    "Created: / 04-08-2011 / 18:23:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-hasSingleChangeSelectedAndCanBrowse
+hasSingleChangeSelectedAndCanBrowse: changeList
 
-    ^false
+    | sel |
+    sel := changeList selection.
+    sel isEmptyOrNil ifTrue:[^false].
+    ^true
 
-    "Created: / 18-03-2011 / 08:02:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 04-08-2011 / 18:25:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ChangeSetBrowser2 class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetBrowser2.st,v 1.7 2011-07-24 04:58:13 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__ChangeSetBrowser2.st,v 1.8 2011-08-04 18:03:20 vrany Exp $'
 !
 
 version_SVN