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