refactored
authorClaus Gittinger <cg@exept.de>
Wed, 24 Jul 2002 23:41:40 +0200
changeset 3753 48fdc128a790
parent 3752 79378c1f0faf
child 3754 763c40d276c1
refactored
VersionDiffBrowser.st
--- a/VersionDiffBrowser.st	Wed Jul 24 23:35:27 2002 +0200
+++ b/VersionDiffBrowser.st	Wed Jul 24 23:41:40 2002 +0200
@@ -94,7 +94,7 @@
           #name: 'Version DiffBrowser'
           #min: #(#Point 10 10)
           #max: #(#Point nil nil)
-          #bounds: #(#Rectangle 12 22 877 526)
+          #bounds: #(#Rectangle 157 154 1022 658)
           #menu: #mainMenu
         )
         #component: 
@@ -253,6 +253,7 @@
                           #hasHorizontalScrollBar: true
                           #hasVerticalScrollBar: true
                           #miniScrollerHorizontal: true
+                          #isReadOnly: true
                         )
                        )
                      
@@ -364,11 +365,13 @@
             #label: 'Apply'
             #translateLabel: true
             #value: #applySelectedChangeInA
+            #enabled: #hasChangeSelectedInA
           )
          #(#MenuItem
             #label: 'Browse'
             #translateLabel: true
             #value: #browseClassInA
+            #enabled: #hasChangeSelectedInA
           )
          #(#MenuItem
             #label: '-'
@@ -378,6 +381,7 @@
             #translateLabel: true
             #value: #inspectSelectedChangeInA
             #choiceValue: 'nil "UndefinedObject" '
+            #enabled: #hasChangeSelectedInA
           )
          )
         nil
@@ -406,11 +410,13 @@
             #label: 'Apply'
             #translateLabel: true
             #value: #applySelectedChangeInB
+            #enabled: #hasChangeSelectedInB
           )
          #(#MenuItem
             #label: 'Browse'
             #translateLabel: true
             #value: #browseClassInB
+            #enabled: #hasChangeSelectedInB
           )
          #(#MenuItem
             #label: '-'
@@ -420,6 +426,7 @@
             #translateLabel: true
             #value: #inspectSelectedChangeInB
             #choiceValue: 'nil "UndefinedObject" '
+            #enabled: #hasChangeSelectedInA
           )
          )
         nil
@@ -448,6 +455,7 @@
             #label: 'Browse'
             #translateLabel: true
             #value: #browseClassInM
+            #enabled: #hasChangeSelectedInM
           )
          #(#MenuItem
             #label: '-'
@@ -457,6 +465,7 @@
             #translateLabel: true
             #value: #inspectSelectedChangeInM
             #choiceValue: 'nil "UndefinedObject" '
+            #enabled: #hasChangeSelectedInM
           )
          )
         nil
@@ -707,10 +716,9 @@
 
     sel := self methodsOnlyInASelection value.
     sel notNil ifTrue:[
-        change := (self changeSetA at:sel).
-        ^ change
+        change := self changeSetA at:sel.
     ].
-    ^ nil
+    ^ change
 !
 
 selectedChangeInB
@@ -724,9 +732,8 @@
     sel := self methodsOnlyInBSelection value.
     sel notNil ifTrue:[
         change := (self changeSetB at:sel).
-        ^ change
     ].
-    ^ nil
+    ^ change
 !
 
 selectedChangesInM
@@ -740,11 +747,12 @@
     sel := self methodsChangedSelection value.
     sel notNil ifTrue:[
         theTwoChanges := self classChangeSet methodsChanged at:sel.
-        changeA := theTwoChanges first.
-        changeB := theTwoChanges second.
-        ^ Array with:changeA with:changeB 
+"/        changeA := theTwoChanges first.
+"/        changeB := theTwoChanges second.
+"/        ^ Array with:changeA with:changeB.
+        ^ theTwoChanges.
     ].
-    ^ nil
+    ^ #(nil nil)
 !
 
 versionA
@@ -1029,6 +1037,26 @@
     ^ onlyInBLabelHolder.
 ! !
 
+!VersionDiffBrowser methodsFor:'aspects - menu'!
+
+canAcceptInCodeView
+    ^ self hasChangeSelectedInA
+      or:[self hasChangeSelectedInB
+      or:[self hasChangeSelectedInM]]
+!
+
+hasChangeSelectedInA
+    ^ self selectedChangeInA notNil
+!
+
+hasChangeSelectedInB
+    ^ self selectedChangeInB notNil
+!
+
+hasChangeSelectedInM
+    ^ self methodsChangedSelection value notNil
+! !
+
 !VersionDiffBrowser methodsFor:'aspects-exported'!
 
 changedLabelHolder:aValueHolder
@@ -1115,11 +1143,11 @@
 !VersionDiffBrowser methodsFor:'menu action'!
 
 applySelectedChangeInA
-    self selectedChangeInA apply 
+    self applyChange:(self selectedChangeInA) 
 !
 
 applySelectedChangeInB
-    self selectedChangeInB apply 
+    self applyChange:(self selectedChangeInB) 
 !
 
 browseChange:aChange
@@ -1283,6 +1311,30 @@
 
 !VersionDiffBrowser methodsFor:'private'!
 
+acceptInLeftView
+    |change|  
+
+    change := self selectedChangesInM first.
+    self applyChange:change
+!
+
+acceptInRightView
+    |change|  
+
+    change := self selectedChangesInM second.
+    self applyChange:change
+!
+
+acceptInSingleView
+    |change|  
+
+    change := self selectedChangeInA.
+    change isNil ifTrue:[
+        change := self selectedChangeInB
+    ].
+    self applyChange:change
+!
+
 addAcceptToTextViewMenus
     "
     add to the standard diff text view or single text views menu an accept entry.
@@ -1313,35 +1365,30 @@
         m 
             actionAt:#accept 
             put:[
-                |idx idx2 text change changeSet|  
-
-                changeSet := self classChangeSet.
-
                 v == singleView ifTrue:[
-                    self methodsOnlyInASelection value notNil
-                    ifTrue: [
-                        change := (changeSet methodsOnlyInA at: self methodsOnlyInASelection value)
+                    self acceptInSingleView
+                ] ifFalse:[     
+                    v == leftView ifTrue:[
+                       self acceptInLeftView
                     ] ifFalse:[
-                        change := (changeSet methodsOnlyInB at: self methodsOnlyInBSelection value)
+                       self acceptInRightView
                     ].
-                ] ifFalse:[     
-                     idx := self methodsChangedSelection value.
-
-                     v == leftView ifTrue:[
-                        change := (changeSet methodsChanged at:idx) first.
-                     ] ifFalse:[
-                        change := (changeSet methodsChanged at:idx) second.
-                     ].
                 ].
-                change apply
             ].
         m selectorAt:#accept put:nil.
         m enable:#copySelection.
+        m setEnable:#accept to:[self halt. self canAcceptInCodeView].
         v menuHolder:m.
         v menuMessage:#value.
     ]
 !
 
+applyChange:change
+    change notNil ifTrue:[
+        change apply
+    ]
+!
+
 generator
     "
     generate a print string for a change.
@@ -1965,5 +2012,5 @@
 !VersionDiffBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.55 2002-07-17 13:55:41 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.56 2002-07-24 21:41:40 cg Exp $'
 ! !