added apply & browse
authorClaus Gittinger <cg@exept.de>
Tue, 07 Dec 1999 14:30:15 +0100
changeset 2465 0567a72d20a5
parent 2464 4d2d791bc174
child 2466 66842be773bd
added apply & browse
VersionDiffBrowser.st
--- a/VersionDiffBrowser.st	Sun Dec 05 15:46:34 1999 +0100
+++ b/VersionDiffBrowser.st	Tue Dec 07 14:30:15 1999 +0100
@@ -303,6 +303,14 @@
             #value: #inspectSelectedChangeInA
             #choiceValue: 'nil "UndefinedObject" '
           )
+         #(#MenuItem
+            #label: '-'
+          )
+         #(#MenuItem
+            #label: 'Browse'
+            #translateLabel: true
+            #value: #browseClassInA
+          )
          )
         nil
         nil
@@ -332,6 +340,14 @@
             #value: #inspectSelectedChangeInB
             #choiceValue: 'nil "UndefinedObject" '
           )
+         #(#MenuItem
+            #label: '-'
+          )
+         #(#MenuItem
+            #label: 'Browse'
+            #translateLabel: true
+            #value: #browseClassInB
+          )
          )
         nil
         nil
@@ -361,6 +377,14 @@
             #value: #inspectSelectedChangeInM
             #choiceValue: 'nil "UndefinedObject" '
           )
+         #(#MenuItem
+            #label: '-'
+          )
+         #(#MenuItem
+            #label: 'Browse'
+            #translateLabel: true
+            #value: #browseClassInM
+          )
          )
         nil
         nil
@@ -746,25 +770,63 @@
 
 !VersionDiffBrowser methodsFor:'menu action'!
 
-inspectSelectedChangeInA
-    |sel|
+browseChange:aChange
+    |class|
+
+    class := Smalltalk classNamed:(aChange className).
+    SystemBrowser openInClass:class selector:aChange selector.
+!
+
+browseClassInA
+    self browseChange:(self selectedChangeInA).
+!
 
-    sel := self methodsOnlyInASelection value.
-    sel notNil ifTrue:[
-        (changeSetA at:sel) inspect
-    ]
+browseClassInB
+    self browseChange:(self selectedChangeInB).
+!
+
+browseClassInM
+    self browseChange:(self selectedChangesInM first).
+!
+
+inspectSelectedChangeInA
+    self selectedChangeInA inspect.
 !
 
 inspectSelectedChangeInB
-    |sel|
+    self selectedChangeInB inspect.
+!
+
+inspectSelectedChangeInM
+    |changes|
+
+    changes := self selectedChangesInM.
+    changes do:[:change |
+        change inspect
+    ].
+!
+
+selectedChangeInA
+    |sel change|
+
+    sel := self methodsOnlyInASelection value.
+    sel notNil ifTrue:[
+        change := (changeSetA at:sel).
+    ].
+    ^ change
+!
+
+selectedChangeInB
+    |sel change|
 
     sel := self methodsOnlyInBSelection value.
     sel notNil ifTrue:[
-        (changeSetB at:sel) inspect
-    ]
+        change := (changeSetB at:sel).
+    ].
+    ^ change
 !
 
-inspectSelectedChangeInM
+selectedChangesInM
     |sel idxA idxB|
 
     sel := self methodsChangedSelection value.
@@ -772,9 +834,10 @@
         idxA := indexFromChangedToA at:sel ifAbsent:nil.
         idxB := indexFromChangedToB at:sel ifAbsent:nil.
 
-        (changeSetA at:idxA) inspect.
-        (changeSetB at:idxB) inspect.
-    ]
+        ^ Array with:(changeSetA at:idxA) 
+                with:(changeSetB at:idxB) 
+    ].
+    ^ nil
 ! !
 
 !VersionDiffBrowser methodsFor:'private'!
@@ -783,6 +846,8 @@
     (self builder componentAt:#diffTextViewBox) raise; beVisible.
     (self builder componentAt:#singleTextView) beInvisible.
     (self builder componentAt:#diffTextView) realizeAllSubViews.
+    self addAcceptToTextViewMenus.
+
 !
 
 showSingleTextView
@@ -975,6 +1040,39 @@
 
 !VersionDiffBrowser methodsFor:'values'!
 
+addAcceptToTextViewMenus
+    |m v|
+
+    (Array 
+        with:diffTextView leftTextView
+        with:diffTextView rightTextView)
+    do:[:v |
+        m := v editMenu.
+        m addLabels:#('-' 'accept')
+          selectors:(Array with:nil with:#accept)
+          after:#copySelection.
+        m 
+            actionAt:#accept 
+            put:[|idx idx2 text change|
+
+                 idx := self methodsChangedSelection value.
+
+                 v == diffTextView leftTextView ifTrue:[
+                    idx2 := indexFromChangedToA at:idx.
+                    change := changeSetA at:idx2.
+                 ] ifFalse:[
+                    idx2 := indexFromChangedToB at:idx.
+                    change := changeSetB at:idx2.
+                 ].
+                 change apply
+                ].
+        m selectorAt:#accept put:nil.
+        v menuHolder:m.
+        v menuMessage:#value.
+    ]
+
+!
+
 diffTextView
     "automatically generated by UIPainter ..."
 
@@ -983,6 +1081,8 @@
                            for:DiffTextView
                            miniScrollerH:true miniScrollerV:false.
         diffTextView addNextPreviousButtons.
+
+        self addAcceptToTextViewMenus.
     ].
     ^ diffTextView
 ! !
@@ -990,5 +1090,5 @@
 !VersionDiffBrowser class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.8 1999-10-06 12:03:30 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.9 1999-12-07 13:30:15 cg Exp $'
 ! !