GUI Navigation, Part 2: New View Placement Options
Posted by Eitan Suez Tue, 12 Dec 2006 16:05:00 GMT
The JMatter "to-do" list has had an item on it that for a while I thought would never get done.
JMatter GUIs are inherently OO UIs. I like to make
the analogy to our operating systems' desktops. There
are a number of ways to make such UIs more effective.
Sometimes I look to these desktop systems for ideas
and features.
One such feature was Apple's "Expose" which has since also been copied by the Beryl project on Linux: the idea of scaling down and fanning out one's windows temporarily for the purpose of easily switching focus to a window that is otherwise hidden by other windows that have a higher z-index. JMatter has such a feature. Pressing the F12 key invokes the JExplose feature which does precisely that (the desktop pane's context menu also bears the option).
Another feature of desktop systems, one that has been around longer, and is specifically related to the file manager, is the idea of giving users options in terms of how to place newly-created views. When navigating a folder hierarchy, one can double click on a folder, which typically opens a new window with the contents of that folder. Long ago, on ms-windows I recall always turning on the option of "re-using the existing window"; that is, replacing the existing view with the new one. This can really help with an otherwise rapid proliferation of windows on one's desktop.
Then, mozilla introduced us to another navigation option: a sort of "middle of the road" option: don't create a new window, but don't replace the existing view either: place the new view in a new, separate tab. So mozilla gave birth to tabbed browsing. I believe tabbed-browsing is not a feature that applies only to the task of navigating web pages; it can be applied more generally, including to applications such as a file manager.
Back to JMatter. I have recently finished implementing a number of related enhancements. The first is extending slightly the model for Users. A User now has a new aggregate property called "Preferences." Its first and only option at the moment captures how a user generally prefers to navigate in JMatter: should new views be created by default:
- in a new window?
- in a new tab?
- in-place, replacing the existing view?
Setting your preference is all it takes to change JMatter's default navigation behavior.
There are many situations where one will want to override the default and, say, want to open a new view in a new tab even though the default is in-place navigation. So a new gesture has been introduced in JMatter. Holding down the Shift key while invoking a command that produces a new view will cause a context menu to popup near your mouse location, allowing you to select how you'd like that particular view created. Choose "in a new tab" and proceed.
In the screenshot below, you see me invoking the "Open" command. I am holding down the Shift key.

In the next screenshot, you see the navigation option pop up. I selected the "in new tab" option.

Next, you see the result of the view created in a new tab.

Finally, this last screenshot shows that, with tabs, you have the option of detaching the view onto its own window or closing the tab (Ctrl+w is the corresponding key binding).

This feature is for all practical purposes complete and checked in to subversion, and will also be included in the next release.
I believe this to be an important feature, finally producing a desktop with a number of effective navigation instruments:
- Fundamentally an OOUI
- DnD support
- An expose-like feature
- Tabbed, In-Place, or New-window view placement
The last item on the drawing board that in my mind will complete the picture is support for docking views. I have looked at flexdock, which is a terrific effort. But I'm looking for something that is more transparent: effectively a layout manager designed for JDesktopPane that transparently provides docking support. Let me know if you know of or are working on such a thing.



Seems you cannot create a new object in a tab - still opens a new window.
i assume you're suggesting you've come across a bug? can you send to the mailing list steps to reproduce?
Nevermind, looks like it has something to do with the "No specific abstractType so go with complexeobject.." bug as reported by another user.
The create view is opened in a tab via the "Adminstrative->Types->Person Contacts" class bar, but opens in a new window via "Manager->Person Contacts"
Other observations -
Browse views seem to always open in a new window even when "new tab/in place" is selected.
When selecting "Save and Close" on a tab item, this closes the entire window which includes all other tabs.
this is a new feature so i'm sure i'll discover a number of cases where previous features need to be revised to be aware of tabbed navigation (and in-place navigation). one example is when using a picker to establish an association, while browsing in in-place mode. i've logged both this issue and the 'save and close' one you mention.
operations that originate from the classbar will always create a new window. the way i implemented this feature is that a new tab is created on the window where the operation originated. since the classbar has no windows, then the classbar is an exception. i hope that makes sense.
when will the web interface come up? If you over do the desktop interface it will be quite difficult replicating on the web. For some of, business apps not on the web and on pda for that matter is a no no.
well, i had originally set a deadline for myself of some time in q1 2007. my work in this area is pretty transparent. if you look at subversion you will see precisely what i've done in this area. i attempted an implementation using WingS which is not 100% done but works, though it doesn't look very nice. i plan next to try using the echo2 framework. the main issue i see at the moment with echo2 is that it doesn't appear to support context menus. anyhow, it's a major undertaking and it requires time and resources. so far, i have received little support from the community, both in terms of donations and in terms of licenses.