[Cuis-dev] Browse category of current method
Mariano Montone
marianomontone at gmail.com
Thu May 25 09:17:34 PDT 2023
Hi,
sometimes when exploring a class, I usually go through the '--all--'
category, looking for some method I'm interested in.
But then I miss the ability to select and explore the category of the
method I'm in.
This implements a 'browse method category' menu item that gives me that.
Let me know if you think this is good for inclusion into Cuis or not.
Thanks,
Mariano
-------------- next part --------------
'From Cuis 6.0 [latest update: #5810] on 25 May 2023 at 1:08:15 pm'!
!BrowserWindow methodsFor: 'menu commands' stamp: 'MM 5/25/2023 12:57:34'!
browseCategoryOfCurrentMethod
model categoryOfCurrentMethod ifNotNil: [:category| |catIndex|
catIndex := model classOrMetaClassOrganizer categories indexOf: category.
model messageCategoryListIndex: catIndex + 1]! !
!BrowserWindow methodsFor: 'keyboard shortcuts' stamp: 'MM 5/25/2023 13:05:51'!
messageListKey: aChar from: view
"Respond to a Command key. I am a model with a code pane, and I also
have a listView that has a list of methods. The view knows how to get
the list and selection."
| sel |
sel := model selectedMessageName.
sel
ifNotNil: [
"The following require a method selection"
aChar = $c ifTrue: [ ^ self browseCategoryOfCurrentMethod ].
aChar = $R ifTrue: [^ self renameSelector].
aChar = $U ifTrue: [^ self addParameter ].
aChar = $I ifTrue: [^ self removeParameter ].
aChar = $3 ifTrue: [^ self inlineMethod ]].
super messageListKey: aChar from: view! !
!BrowserWindow class methodsFor: 'browser menues' stamp: 'MM 5/25/2023 12:44:22'!
messageListMenuOptions
^`{
{
#itemGroup -> 10.
#itemOrder -> 10.
#label -> 'what to show...'.
#selector -> #offerWhatToShowMenu.
#icon -> #preferencesIcon
} asDictionary.
{
#itemGroup -> 10.
#itemOrder -> 20.
#label -> 'toggle break on entry'.
#object -> #model.
#selector -> #toggleBreakOnEntry.
#icon -> #debugIcon
} asDictionary.
{
#itemGroup -> 20.
#itemOrder -> 10.
#label -> 'browse full (b)'.
#selector -> #browseMethodFull.
#icon -> #editFindReplaceIcon
} asDictionary.
{
#itemGroup -> 20.
#itemOrder -> 20.
#label -> 'browse hierarchy (h)'.
#selector -> #browseHierarchy.
#icon -> #goTopIcon
} asDictionary.
{
#itemGroup -> 20.
#itemOrder -> 30.
#label -> 'browse method (O)'.
#selector -> #openSingleMessageBrowser.
#icon -> #scriptIcon
} asDictionary.
{
#itemGroup -> 20.
#itemOrder -> 40.
#label -> 'browse protocol (p)'.
#selector -> #browseFullProtocol.
#icon -> #spreadsheetIcon
} asDictionary.
{ #itemGroup -> 20.
#itemOrder -> 50.
#label -> 'browse method category (c)'.
#selector -> #browseCategoryOfCurrentMethod.
} asDictionary.
{
#itemGroup -> 30.
#itemOrder -> 10.
#label -> 'fileOut'.
#object -> #model.
#selector -> #fileOutMessage.
#icon -> #fileOutIcon
} asDictionary.
{
#itemGroup -> 30.
#itemOrder -> 20.
#label -> 'inspect CompiledMethod'.
#object -> #model.
#selector -> #inspectCompiledMethod.
#icon -> #exploreIcon
} asDictionary.
{
#itemGroup -> 40.
#itemOrder -> 10.
#label -> 'senders of... (n)'.
#selector -> #browseSendersOfMessages.
#icon -> #mailForwardIcon
} asDictionary.
{
#itemGroup -> 40.
#itemOrder -> 20.
#label -> 'implementors of... (m)'.
#selector -> #browseMessages.
#icon -> #developmentIcon
} asDictionary.
{
#itemGroup -> 40.
#itemOrder -> 30.
#label -> 'inheritance (i)'.
#selector -> #methodInheritance.
#icon -> #goDownIcon
} asDictionary.
{
#itemGroup -> 40.
#itemOrder -> 40.
#label -> 'versions (v)'.
#selector -> #browseVersions.
#icon -> #clockIcon
} asDictionary.
{
#itemGroup -> 50.
#itemOrder -> 10.
#label -> 'inst var refs...'.
#selector -> #browseInstVarRefs.
#icon -> #instanceIcon
} asDictionary.
{
#itemGroup -> 50.
#itemOrder -> 20.
#label -> 'inst var defs...'.
#selector -> #browseInstVarDefs.
#icon -> #instanceIcon
} asDictionary.
{
#itemGroup -> 50.
#itemOrder -> 30.
#label -> 'class var refs...'.
#selector -> #browseClassVarRefs.
#icon -> #classIcon
} asDictionary.
{
#itemGroup -> 50.
#itemOrder -> 40.
#label -> 'class variables'.
#selector -> #browseClassVariables.
#icon -> #classIcon
} asDictionary.
{
#itemGroup -> 50.
#itemOrder -> 50.
#label -> 'class refs (N)'.
#selector -> #browseClassRefs.
#icon -> #classIcon
} asDictionary.
{
#itemGroup -> 60.
#itemOrder -> 10.
#label -> 'remove method (x)'.
#object -> #model.
#selector -> #removeMessage.
#icon -> #deleteIcon
} asDictionary.
{
#itemGroup -> 60.
#itemOrder -> 20.
#label -> 'run test (t)'.
#object -> #model.
#selector -> #runMethodTest.
#icon -> #weatherFewCloudsIcon
} asDictionary.
{
#itemGroup -> 60.
#itemOrder -> 30.
#label -> 'debug test (r)'.
#object -> #model.
#selector -> #debugMethodTest.
#icon -> #weatherFewCloudsIcon
} asDictionary.
{
#itemGroup -> 70.
#itemOrder -> 10.
#label -> 'more...'.
#selector -> #openMessageListMenu2.
#icon -> #listAddIcon
} asDictionary.
}`.
! !
More information about the Cuis-dev
mailing list