GUI Navigation, Part 1: Window Placement
Posted by Eitan Suez Fri, 08 Dec 2006 23:13:00 GMT
JMatter takes a certain strategy relating to the placement of new windows (internal frames) in its Graphical User Interface.
I recall trying various window placement strategies and then realizing something I was doing as a user of my applications: after creating a new view, I'd quickly reach for the window's title bar and place the window where I really wanted it. I don't think there's an algorithm for guessing the user's intent. So I started thinking about what might be the next best thing.
The strategy was to minimize the amount of work I'd have to do in moving the resulting window. What I do is place new windows such that their title bars are near the current mouse cursor location, thus minimizing the distance one would have to move their mouse to reach for it.
There's a somewhat hidden feature in JMatter which I very much like and that I'd like to share. This feature takes things one step further: it automatically puts the newly created window in placement mode. Allow me to explain..
This feature requires pressing a metakey to communicate your intent to use it: when you're about to invoke a command that creates a new view (e.g. the "Open" command) , hold down the Control key.
The resulting window automatically "binds" to your mouse location. That is, it will follow your mouse. So, the way it works is you invoke the command with the control key pressed and the new view is created but it starts following your mouse around. Once you've found that ideal spot, a single left-click is all you need to do to pin it back down onto the desktop.
If you already know about this feature because you've pored through the documentation meticulously, then first of all: bravo! If not, go ahead and give this feature a try. Either way, let me know whether if you like it!
In my next blog entry (Part 2), I will discuss a major enhancement to GUI Navigation in JMatter that I just recently finished implementing, and that will be included in the next release.

