# HG changeset patch # User Claus Gittinger # Date 944573415 -3600 # Node ID 0567a72d20a5ef8b535b2a9c09221d8102be135e # Parent 4d2d791bc17413ec110f1391df6547195d8e49da added apply & browse diff -r 4d2d791bc174 -r 0567a72d20a5 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 $' ! !