Hi, Jerry,
Good points all.
Just fyi, there *is* a tool in the system that addresses some of these needs -- two tools, actually. They are young and little-known, but if you add them to your arsenal of tools you may eventually come to wonder how you ever got along without them.
The two are: an instance-based tool called the Instance Browser, and a class-based tool called the Lexicon. You can obtain these tools using "browse protocol" (cmd p) from browsers, inspectors, and elsewhere.
Among the things these tools offer that other tools in the system don't are:
(a) A "navigation" metaphor, with a "history" mechanism accompanied by forward and back buttons. (b) Natural in-tool chains of enquiry using "view" and "senders" buttons. (b) A "find" facility that allows you to find methods by selector fragment (this is like the MethodNames tool, but confined to methods understood by the actual object you are browsing.) (c) The ability to truncate your searches at any level of the inheritance chain. (d) Merging of method categories up the inheritance chain.
A typical scenario of use is: you're looking at a method; to understand it better, you want to look at a different method -- typically a method that calls this method, or a method *called* by this method. So you look at that method (use the "View..." or "Senders" button) -- and maybe from there you may go on a *further* excursion suggested there -- and you can always return to where your enquiry started by hitting the "back" button.
(Many other queries and features are also available in this tool -- check out the various buttons, as well as the various items hidden behind the menu icon in the button bar.)
Understand that any one of these does not browse the entire system, but rather it browses the complete *protocol* of any one object or class. Thus, it is great for any chain of enquiry involving messages sent to "self", but if you have multiple objects that send messages to one another, you're best served by having multiple Instance browsers -- one for each object.
-- Scott
At 3:03 PM -0800 11/29/01, Jerry Balzano wrote:
Not that I'd presume to know what that is at my stage of (Squeak) development, but it occurred to me as I was browsing around through various classes and instances and methods that the Squeak System Browser lacks a feature that we take for granted on all our web browsers and that most of us would be lost without -- a "back" button! Is it possible that nobody has found the need for such a function? 'Cause I'd be looking at a method and I'd find a word I didn't understand or some such, or just say "I wonder about" some other class, method, or whatnot, and go there, then say to myself, "OK, that's great, (or "that's complicated" or whatever) now I'm ready to resume what I was doing." But if what I was doing was in some totally separate class with lots of methods to paw (OK, scroll) through, well you get the idea -- what a pain! and how wasteful of my time and energy.
Now I know that I can just keep on opening a new SB whenever I begin one of these side trips, but my screen is already pretty full, and more than two System Browsers open at once is too many IMHO. In most cases, all I really need is one open SB window, but with some kind of "history" mechanism, even if this is just a "back" button.
What do people think? Is this kind of thing already available somewhere, and I just missed it? Or is there a better way of working such that working that way obviates the need I'm feeling here?
- Jerry