124
|
1 |
"{ Package: 'stx:goodies/monticello' }"
|
|
2 |
|
|
3 |
MCPatchBrowser subclass:#MCMergeBrowser
|
|
4 |
instanceVariableNames:'conflicts merger ok'
|
|
5 |
classVariableNames:''
|
|
6 |
poolDictionaries:''
|
581
|
7 |
category:'SCM-Monticello-UI'
|
124
|
8 |
!
|
|
9 |
|
|
10 |
|
|
11 |
!MCMergeBrowser class methodsFor:'as yet unclassified'!
|
|
12 |
|
|
13 |
resolveConflictsInMerger: aMerger
|
|
14 |
| inst |
|
|
15 |
inst _ self new merger: aMerger.
|
|
16 |
^ inst showModally ifNil: [false]
|
|
17 |
! !
|
|
18 |
|
|
19 |
!MCMergeBrowser methodsFor:'as yet unclassified'!
|
|
20 |
|
|
21 |
buttonSpecs
|
|
22 |
^ #((Merge merge 'Proceed with the merge' canMerge)
|
|
23 |
(Cancel cancel 'Cancel the merge')
|
|
24 |
('All Newer' chooseAllNewerConflicts 'Choose all newer conflict versions')
|
|
25 |
('All Older' chooseAllOlderConflicts 'Choose all older conflict versions')
|
|
26 |
('Rest Local' chooseAllUnchosenLocal 'Choose local versions of all remaining conflicts')
|
|
27 |
('Rest Remote' chooseAllUnchosenRemote 'Choose remote versions of all remaining conflicts')
|
|
28 |
)
|
|
29 |
!
|
|
30 |
|
|
31 |
canMerge
|
|
32 |
^ merger isMerged
|
|
33 |
!
|
|
34 |
|
|
35 |
cancel
|
|
36 |
self answer: false
|
|
37 |
!
|
|
38 |
|
|
39 |
chooseAllNewerConflicts
|
|
40 |
conflicts do: [ :ea | ea chooseNewer ].
|
|
41 |
self changed: #text; changed: #list.
|
|
42 |
!
|
|
43 |
|
|
44 |
chooseAllOlderConflicts
|
|
45 |
conflicts do: [ :ea | ea chooseOlder ].
|
|
46 |
self changed: #text; changed: #list.
|
|
47 |
!
|
|
48 |
|
|
49 |
chooseAllUnchosenLocal
|
|
50 |
conflicts do: [ :ea | ea isResolved ifFalse: [ ea chooseLocal ] ].
|
|
51 |
self changed: #text; changed: #list.
|
|
52 |
!
|
|
53 |
|
|
54 |
chooseAllUnchosenRemote
|
|
55 |
conflicts do: [ :ea | ea isResolved ifFalse: [ ea chooseRemote ] ].
|
|
56 |
self changed: #text; changed: #list.
|
|
57 |
!
|
|
58 |
|
|
59 |
chooseLocal
|
|
60 |
self conflictSelectionDo:
|
|
61 |
[selection chooseLocal.
|
|
62 |
self changed: #text; changed: #list]
|
|
63 |
!
|
|
64 |
|
|
65 |
chooseRemote
|
|
66 |
self conflictSelectionDo:
|
|
67 |
[selection chooseRemote.
|
|
68 |
self changed: #text; changed: #list]
|
|
69 |
!
|
|
70 |
|
|
71 |
clearChoice
|
|
72 |
self conflictSelectionDo:
|
|
73 |
[selection clearChoice.
|
|
74 |
self changed: #text; changed: #list]
|
|
75 |
!
|
|
76 |
|
|
77 |
conflictSelectionDo: aBlock
|
|
78 |
self selectionIsConflicted
|
|
79 |
ifTrue: aBlock
|
|
80 |
ifFalse: [self inform: 'You must have a conflict selected']
|
|
81 |
!
|
|
82 |
|
|
83 |
defaultLabel
|
|
84 |
^ 'Merge Browser'
|
|
85 |
!
|
|
86 |
|
|
87 |
getConflictMenu: aMenu
|
|
88 |
selection remoteChosen
|
|
89 |
ifTrue: [aMenu add: 'undo keep change' target: self selector: #clearChoice]
|
|
90 |
ifFalse: [aMenu add: 'keep change' target: self selector: #chooseRemote].
|
|
91 |
selection localChosen
|
|
92 |
ifTrue: [aMenu add: 'undo reject change' target: self selector: #clearChoice]
|
|
93 |
ifFalse: [aMenu add: 'reject change' target: self selector: #chooseLocal].
|
|
94 |
^ aMenu
|
|
95 |
!
|
|
96 |
|
|
97 |
getMenu: aMenu
|
|
98 |
selection ifNil: [^ aMenu].
|
|
99 |
^ self selectionIsConflicted
|
|
100 |
ifTrue: [self getConflictMenu: aMenu]
|
|
101 |
ifFalse: [self getOperationMenu: aMenu]
|
|
102 |
!
|
|
103 |
|
|
104 |
getOperationMenu: aMenu
|
|
105 |
^ aMenu
|
|
106 |
!
|
|
107 |
|
|
108 |
innerButtonRow
|
|
109 |
^ self buttonRow:
|
|
110 |
#((Keep chooseRemote 'keep the selected change' selectionIsConflicted)
|
|
111 |
(Reject chooseLocal 'reject the selected change' selectionIsConflicted))
|
|
112 |
!
|
|
113 |
|
|
114 |
items
|
|
115 |
^ conflicts, items
|
|
116 |
!
|
|
117 |
|
|
118 |
merge
|
|
119 |
merger isMerged
|
|
120 |
ifFalse: [self inform: 'You must resolve all the conflicts first']
|
|
121 |
ifTrue: [self answer: true]
|
|
122 |
!
|
|
123 |
|
|
124 |
merger: aMerger
|
|
125 |
merger _ aMerger.
|
|
126 |
items _ aMerger operations asSortedCollection.
|
|
127 |
conflicts _ aMerger conflicts.
|
|
128 |
!
|
|
129 |
|
|
130 |
selectionIsConflicted
|
|
131 |
^ selection isKindOf: MCConflict
|
|
132 |
!
|
|
133 |
|
|
134 |
widgetSpecs
|
|
135 |
Preferences annotationPanes ifFalse: [ ^#(
|
|
136 |
((buttonRow) (0 0 1 0) (0 0 0 30))
|
|
137 |
((listMorph:selection:menu: list selection methodListMenu:) (0 0 1 0.4) (0 30 0 0))
|
|
138 |
((innerButtonRow) (0 0.4 1 0.4) (0 0 0 30))
|
|
139 |
((textMorph: text) (0 0.4 1 1) (0 30 0 0))
|
|
140 |
)].
|
|
141 |
|
|
142 |
^ #(
|
|
143 |
((buttonRow) (0 0 1 0) (0 0 0 30))
|
|
144 |
((listMorph:selection:menu: list selection methodListMenu:) (0 0 1 0.4) (0 30 0 0))
|
|
145 |
((innerButtonRow) (0 0.4 1 0.4) (0 0 0 30))
|
|
146 |
((textMorph: annotations) (0 0.4 1 0.4) (0 30 0 60))
|
|
147 |
((textMorph: text) (0 0.4 1 1) (0 60 0 0))
|
|
148 |
)
|
|
149 |
! !
|
|
150 |
|
|
151 |
!MCMergeBrowser class methodsFor:'documentation'!
|
|
152 |
|
|
153 |
version
|
581
|
154 |
^ '$Header: /cvs/stx/stx/goodies/monticello/MCMergeBrowser.st,v 1.2 2012-09-11 21:12:50 cg Exp $'
|
124
|
155 |
! !
|