MCCodeTool.st
author Claus Gittinger <cg@exept.de>
Sat, 01 Sep 2018 17:32:13 +0200
changeset 1086 efc5221435a5
parent 615 494a5e49a8ab
permissions -rw-r--r--
initial checkin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
121
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
MCTool subclass:#MCCodeTool
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:'items'
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:''
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
615
494a5e49a8ab category change
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
     7
	category:'SCM-Monticello-UI'
121
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
MCCodeTool comment:'MCCodeTool is an abstract superclass for those Monticello browsers that display code.
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
It contains copies of the various CodeHolder methods that perform the various menu operations in the method list.
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
'
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
!MCCodeTool methodsFor:'menus'!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
adoptMessageInCurrentChangeset
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	"Add the receiver's method to the current change set if not already there"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
	self selectedClassOrMetaClass ifNotNilDo: [ :cl |
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
		self selectedMessageName ifNotNilDo: [ :sel |
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
			ChangeSet current adoptSelector: sel forClass: cl.
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
			self changed: #annotations ]]
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
browseFullProtocol
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
	"Open up a protocol-category browser on the value of the receiver's current selection.    If in mvc, an old-style protocol browser is opened instead.  Someone who still uses mvc might wish to make the protocol-category-browser work there too, thanks."
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	| aClass |
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	(Smalltalk isMorphic and: [Smalltalk includesKey: #Lexicon]) ifFalse: [^ self spawnFullProtocol].
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
	(aClass _ self selectedClassOrMetaClass) ifNotNil:
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
		[(Smalltalk at: #Lexicon) new openOnClass: aClass inWorld: ActiveWorld showingSelector: self selectedMessageName]
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
browseMessages
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
	"Present a menu of the currently selected message, as well as all messages sent by it.  Open a message set browser of all implementors of the selector chosen."
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
	self systemNavigation browseAllImplementorsOf: (self selectedMessageName ifNil: [ ^nil ])
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
browseMethodFull
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
	"Create and schedule a full Browser and then select the current class and message."
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
	| myClass |
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
	(myClass _ self selectedClassOrMetaClass) ifNotNil:
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
		[Browser fullOnClass: myClass selector: self selectedMessageName]
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
browseSendersOfMessages
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
	"Present a menu of the currently selected message, as well as all messages sent by it.  Open a message set browser of all senders of the selector chosen."
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
	self systemNavigation browseAllCallsOn: (self selectedMessageName ifNil: [ ^nil ])
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
browseVersions
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
	"Create and schedule a message set browser on all versions of the 
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
	currently selected message selector."
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
	| class selector compiledMethod |
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
	class _ self selectedClassOrMetaClass.
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
	selector _ self selectedMessageName.
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
	compiledMethod _ class compiledMethodAt: selector ifAbsent: [ ^self ].
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
	VersionsBrowser
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
		browseVersionsOf: compiledMethod
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
		class: class theNonMetaClass
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
		meta: class isMeta
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
		category: self selectedMessageCategoryName
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
		selector: selector
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
classHierarchy
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
	"Create and schedule a class list browser on the receiver's hierarchy."
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
	self systemNavigation  spawnHierarchyForClass: self selectedClassOrMetaClass
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
		selector: self selectedMessageName	"OK if nil"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
classListMenu: aMenu 
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
	aMenu addList: #(
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
		-
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
		('browse full (b)'			browseMethodFull)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
		('browse hierarchy (h)'		classHierarchy)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
		('browse protocol (p)'		browseFullProtocol)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
"		-
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
		('printOut'					printOutClass)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
		('fileOut'					fileOutClass)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
"		-
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
		('show hierarchy'			methodHierarchy)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
"		('show definition'			editClass)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
		('show comment'			editComment)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
"		-
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
		('inst var refs...'			browseInstVarRefs)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
		('inst var defs...'			browseInstVarDefs)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
		-
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
		('class var refs...'			browseClassVarRefs)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
		('class vars'					browseClassVariables)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
		('class refs (N)'				browseClassRefs)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
		-
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
		('rename class ...'			renameClass)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
		('copy class'				copyClass)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
		('remove class (x)'			removeClass)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
		-
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
		('find method...'				findMethodInChangeSets)).
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
							
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
	^aMenu
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
copySelector
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
	"Copy the selected selector to the clipboard"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
	| selector |
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
	(selector _ self selectedMessageName) ifNotNil:
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
		[Clipboard clipboardText: selector asString]
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
fileOutMessage
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
	"Put a description of the selected message on a file"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
	self selectedMessageName ifNotNil:
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
		[Cursor write showWhile:
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
			[self selectedClassOrMetaClass fileOutMethod: self selectedMessageName]]
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
findMethodInChangeSets
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
	"Find and open a changeSet containing the current method."
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
	| aName |
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
	(aName _ self selectedMessageName) ifNotNil: [
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
		ChangeSorter browseChangeSetsWithClass: self selectedClassOrMetaClass
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
					selector: aName]
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
methodHierarchy
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
	"Create and schedule a method browser on the hierarchy of implementors."
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
	self systemNavigation methodHierarchyBrowserForClass: self selectedClassOrMetaClass
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
		selector: self selectedMessageName
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
methodListKey: aKeystroke from: aListMorph 
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
	aKeystroke caseOf: {
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
		[$b] -> [self browseMethodFull].
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
		[$h] -> [self classHierarchy].
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
		[$O] -> [self openSingleMessageBrowser].
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
		[$p] -> [self browseFullProtocol].
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
		[$o] -> [self fileOutMessage].
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
		[$c] -> [self copySelector].
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
		[$n] -> [self browseSendersOfMessages].
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
		[$m] -> [self browseMessages].
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
		[$i] -> [self methodHierarchy].
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
		[$v] -> [self browseVersions]}
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
		 otherwise: []
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
methodListMenu: aMenu
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
	"Build the menu for the selected method, if any."
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
	
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
	self selectedMessageName ifNotNil: [
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
	aMenu addList:#(
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
			('browse full (b)' 						browseMethodFull)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
			('browse hierarchy (h)'					classHierarchy)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
			('browse method (O)'					openSingleMessageBrowser)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
			('browse protocol (p)'					browseFullProtocol)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
			-
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
			('fileOut (o)'							fileOutMessage)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
			('printOut'								printOutMessage)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
			('copy selector (c)'						copySelector)).
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
		aMenu addList: #(
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
			-
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
			('browse senders (n)'						browseSendersOfMessages)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
			('browse implementors (m)'					browseMessages)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
			('inheritance (i)'						methodHierarchy)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
			('versions (v)'							browseVersions)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
		('change sets with this method'			findMethodInChangeSets)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
"		('x revert to previous version'				revertToPreviousVersion)"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
		('remove from current change set'		removeFromCurrentChanges)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
"		('x revert & remove from changes'		revertAndForget)"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
		('add to current change set'				adoptMessageInCurrentChangeset)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
"		('x copy up or copy down...'				copyUpOrCopyDown)"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
"		('x remove method (x)'					removeMessage)"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
		"-"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
		).
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
	].
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
"	aMenu addList: #(
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
			('x inst var refs...'						browseInstVarRefs)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
			('x inst var defs...'						browseInstVarDefs)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
			('x class var refs...'						browseClassVarRefs)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
			('x class variables'						browseClassVariables)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
			('x class refs (N)'							browseClassRefs)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
	).
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
	^ aMenu
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
openSingleMessageBrowser
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
	| msgName mr |
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
	"Create and schedule a message list browser populated only by the currently selected message"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
	(msgName _ self selectedMessageName) ifNil: [^ self].
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
	mr _ MethodReference new
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
		setStandardClass: self selectedClassOrMetaClass
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
		methodSymbol: msgName.
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
	self systemNavigation 
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
		browseMessageList: (Array with: mr)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
		name: mr asStringOrText
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
		autoSelect: nil
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
perform: selector orSendTo: otherTarget 
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
	"Selector was just chosen from a menu by a user. If can respond, then  
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
	perform it on myself. If not, send it to otherTarget, presumably the  
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
	editPane from which the menu was invoked."
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
	(self respondsTo: selector)
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   223
		ifTrue: [^ self perform: selector]
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
		ifFalse: [^ super perform: selector orSendTo: otherTarget]
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   226
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   227
printOutMessage
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   228
	"Write a file with the text of the selected message, for printing by a web browser"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
	self selectedMessageName ifNotNil: [
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   231
		self selectedClassOrMetaClass fileOutMethod: self selectedMessageName
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   232
							asHtml: true]
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
removeFromCurrentChanges
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   236
	"Tell the changes mgr to forget that the current msg was changed."
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   237
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
	ChangeSet current removeSelectorChanges: self selectedMessageName 
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
			class: self selectedClassOrMetaClass.
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   240
	self changed: #annotations
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
! !
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
!MCCodeTool methodsFor:'subclassResponsibility'!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   244
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   245
annotations
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   246
	"Build an annotations string for the various browsers"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   247
	^''
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   248
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   249
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
selectedClass
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
	"Answer the class that is selected, or nil"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
	self subclassResponsibility
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
selectedClassOrMetaClass
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
	"Answer the class that is selected, or nil"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
	self subclassResponsibility
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
selectedMessageCategoryName
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   261
	"Answer the method category of the method that is selected, or nil"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   262
	self subclassResponsibility
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   263
!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
selectedMessageName
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   266
	"Answer the name of the selected message"
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   267
	self subclassResponsibility
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
! !
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
!MCCodeTool class methodsFor:'documentation'!
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   271
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
version
615
494a5e49a8ab category change
Claus Gittinger <cg@exept.de>
parents: 121
diff changeset
   273
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCCodeTool.st,v 1.2 2012-09-11 21:20:58 cg Exp $'
121
8991419a91ef initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
! !