I thought it would be nice to add a right click option to class methods that "ran" that method...for use with examples and such.
So, for example, instead of typing "MyClass exampleThisOrThat," when browsing you could just right click and "run it."
Any tips on where to start? I have no knowledge of OB...
Rob
Hi Rob,
I haven't done this in a while but I believe you need to do this:
- Create a subclass of OBCommand. This class will be responsible for indicating when the menu option should be shown, how it is shown and how it should be performed. I think there's more, but I don't know what.
- Implement #isActive to indicate when your menu option should be shown. For example, I think this will limit you to class side methods:
isActive ^ (target isKindOf: OBMethodNode) and: [(target classNode isKindOf: OBMetaclassNode) and: [requestor isSelected: target]]
You may want to add a constraint to limit this to unary selectors otherwise you'll have to prompt for arguments.
- Implement #execute. This will actually do the work. If you're just dealing with unary methods then something like this is probably what you need:
execute target theNonMetaClass perform: target selector
So here you could prompt for arguemnts, inspect the result, do whatever.
- Implement #label, #longDescription, #group, #keystroke to control the display of your menu. Have a look at the other OBCommand subclasses for hints.
- Link up your command by adding a cmdXXX method to OBCodeBrowser. Basically you need a method like:
cmdClassMethodDoIt ^MyCmdClassMethodDoIt
Have a look at the "commands" protocol to see what I mean.
The next browser you open should have your new menu option. There are many existing OBCommand subclasses you can examine for inspiration.
Hope this helps, Zulq.
Rob Rothwell wrote:
I thought it would be nice to add a right click option to class methods that "ran" that method...for use with examples and such.
So, for example, instead of typing "MyClass exampleThisOrThat," when browsing you could just right click and "run it."
Any tips on where to start? I have no knowledge of OB...
Rob
Beginners mailing list Beginners@lists.squeakfoundation.org http://lists.squeakfoundation.org/mailman/listinfo/beginners
beginners@lists.squeakfoundation.org