MCPatchBrowser.st
author Claus Gittinger <cg@exept.de>
Sat, 01 Sep 2018 17:32:13 +0200
changeset 1086 efc5221435a5
parent 665 7a962035792e
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
125
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
MCCodeTool subclass:#MCPatchBrowser
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'selection'
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
665
7a962035792e category change
Claus Gittinger <cg@exept.de>
parents: 125
diff changeset
     7
	category:'SCM-Monticello-UI'
125
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
!MCPatchBrowser class methodsFor:'as yet unclassified'!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
forPatch: aPatch
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
	^ self new patch: aPatch
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
! !
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
!MCPatchBrowser methodsFor:'accessing'!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
items
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	^ items
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
list
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
	^ self items collect: [:ea | ea summary]
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
patch: aPatch
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	items _ aPatch operations asSortedCollection
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
! !
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
!MCPatchBrowser methodsFor:'as yet unclassified'!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
annotations
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
	^selection ifNil: [ super annotations ]
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
		ifNotNil: [ selection annotations ]
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
changeSetNameForInstall
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
	"Answer the name of the change set into which my selection will be installed.
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
	Derive this from my label.
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
	If I have no label, use the current change set."
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
	| tokens |
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
	label ifNil: [ ^ChangeSet current name ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
	tokens := label findTokens: ' '.
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
	tokens removeAllFoundIn: { 'changes'. 'between'. 'and' }.
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	(tokens size = 3 and: [ tokens second = '<working' ]) ifTrue: [ ^tokens first, '-to-working' ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
	tokens size = 2 ifFalse: [ ^'InstalledPatches' ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
	^'{1}-to-{2}' format: tokens 
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
installSelection
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
	| loader |
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	selection ifNotNil:
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
		[loader _ MCPackageLoader new.
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
		selection applyTo: loader.
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
		loader loadWithName: self changeSetNameForInstall ]
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
! !
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
!MCPatchBrowser methodsFor:'menus'!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
methodListMenu: aMenu
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
	selection ifNotNil:
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
		[aMenu addList:#(('install'	 installSelection) -)].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
	super methodListMenu: aMenu.
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
	^ aMenu
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
! !
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
!MCPatchBrowser methodsFor:'morphic ui'!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
buttonSpecs
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
	^ #((Invert invert 'Show the reverse set of changes')
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
		 (Export export 'Export the changes as a change set'))
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
defaultLabel
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
	^ 'Patch Browser'
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
perform: selector orSendTo: otherTarget
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
	"Selector was just chosen from a menu by a user.  If can respond, then
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
perform it on myself. If not, send it to otherTarget, presumably the
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
editPane from which the menu was invoked."
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
	(self respondsTo: selector)
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
		ifTrue: [^ self perform: selector]
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
		ifFalse: [^ otherTarget perform: selector]
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
widgetSpecs
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
	Preferences annotationPanes ifFalse: [ ^#(
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
		((listMorph:selection:menu: list selection methodListMenu:) (0 0 1 0.4) (0 0 0 0))
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
		((textMorph: text) (0 0.4 1 1))
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
		) ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
	^ {
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
		#((listMorph:selection:menu: list selection methodListMenu: ) (0 0 1 0.4) (0 0 0 0)).
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
		{ #(textMorph: annotations). #(0 0.4 1 0.4). { 0. 0. 0. self defaultAnnotationPaneHeight. } }.
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
		{ #(textMorph: text). #(0 0.4 1 1). { 0. self defaultAnnotationPaneHeight. 0. 0. } }.
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
		}
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
! !
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
!MCPatchBrowser methodsFor:'selecting'!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
invert
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
	items _ items collect: [:ea | ea inverse].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
	self changed: #list; changed: #text; changed: #selection
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
selection
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
	^ selection 
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
		ifNil: [0]
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
		ifNotNil: [self items indexOf: selection]
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
selection: aNumber
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
	selection _ aNumber = 0 ifFalse: [self items at: aNumber].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
	self changed: #selection; changed: #text; changed: #annotations
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
! !
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
!MCPatchBrowser methodsFor:'subclassResponsibility'!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
selectedClass
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
	| definition |
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
	selection ifNil: [ ^nil ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
	(definition _ selection definition) ifNil: [ ^nil ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
	definition isMethodDefinition ifFalse: [ ^nil ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
	^Smalltalk at: definition className ifAbsent: [ ]
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
selectedClassOrMetaClass
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
	| definition |
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
	selection ifNil: [ ^nil ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
	(definition _ selection definition) ifNil: [ ^nil ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
	definition isMethodDefinition ifFalse: [ ^nil ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
	^definition actualClass
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
selectedMessageCategoryName
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
	| definition |
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
	selection ifNil: [ ^nil ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
	(definition _ selection definition) ifNil: [ ^nil ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
	definition isMethodDefinition ifFalse: [ ^nil ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
	^definition category
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
selectedMessageName
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
	| definition |
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
	selection ifNil: [ ^nil ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
	(definition _ selection definition) ifNil: [ ^nil ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
	definition isMethodDefinition ifFalse: [ ^nil ].
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
	^definition  selector
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
! !
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
!MCPatchBrowser methodsFor:'text'!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
text
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
	^ selection ifNil: [''] ifNotNil: [selection source]
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
text: aTextOrString
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
	self changed: #text
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
! !
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
!MCPatchBrowser class methodsFor:'documentation'!
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
version
665
7a962035792e category change
Claus Gittinger <cg@exept.de>
parents: 125
diff changeset
   168
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCPatchBrowser.st,v 1.2 2012-09-11 21:25:27 cg Exp $'
125
ce7bf29523c2 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
! !