August 21, 2001
7:00 PM Presentation
OEC Auditorium
(O'Shaughnessy Education Center)


End-Users Can Be Object Geeks Too!
The Story of FavaBeans, an Open Source Object-Oriented User Interface (OOUI) Framework for Java
Presented by Ihab Awad


Topic Summary
References and Links
Speaker Information
Slides: [Star Office] [pdf]


Topic Summary

FavaBeans [1] is an open source Java Swing framework for building object-oriented user interfaces (OOUIs). OOUIs are "object browsers" that give users a consistent way to navigate through the objects implementing an application. This consistency makes applications based on FavaBeans easy to learn. In addition, because you can exploit similarities between objects (all objects have property sheets; all collections can have an "icon view"; etc.), you can prototype your application's UI more quickly, and can reduce the overall cost of developing it.

The traditional approach to building UIs requires you to explicitly think about -- and build -- routine navigation functionality. You have to worry about when the "Message | Send" menu should be grayed out, and how to browse through a list of emails. You then repeat this work regarding the "Address | Add" menu and browsing through a list of address book entries. Then, later on, when you're building an MP3 player, you have to think about the "Song | Play" menu and browsing the list of songs. All these have common aspects -- selecting an item from a list and performing actions on it, some of which may have to do with the state of the item and the context in which it lives. And all of these can be generalized to some combination of "folder" views, "right-click" menus and drag-and-drop operations.

We build an OOUI by applying the fundamental principles of OO to user interface design. Instead of applications and data, the model we present to the user is one of "things" [objects, though the user need never see that word] which can be acted upon [behavior] and which contain information [state], some of which is made up [composed] of other things. Some of these things exhibit commonalities [inheritance] of information and behavior.

In typical OOUI implementations, objects are represented as icons in folders which, when opened, display themselves in appropriate ways. To create new objects, users choose items from a "create new" menu [analogous to constructors] or "copy and paste" from existing "prototypes" [analogous to using a clone() method].

In an OOUI, an "application", to the extent that this concept remains valid, is a collection of related components that are stitched into the overall user experience. An application would generally be some combination of: FavaBeans is essentially a framework for building and deploying these components, and making them work together. Very briefly, it entails:

We envision FavaBeans applications being distributed using Java Web Start [3], and "installed" by the end-user from a control panel.

One feature of the FavaBeans model is that window appearance -- frame windows; menus; MDI vs SDI [4], etc. -- is delegated to a single, pluggable component, the Top Level View Manager. As a result, the overall "look and feel" is easily modified, and is independent of the application. This feature goes way beyond "skins"; it means, for example, that an application can have a traditional multiple window appearance on a desktop machine and, when run on a handheld [5], can show up one screen at a time to save screen space. In fact, we demonstrate just such a feature [6].

You are invited to come to the talk on August 21, 2001, to learn more about FavaBeans and how you can help develop it. I hope to see you there!


References

[1] http://www.favabeans.org/.

[2] Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, _Design Patterns: Elements of Reusable Object-Oriented Software_, Addison-Wesley, 1995.

[3] http://java.sun.com/products/javawebstart/.

[4] Multiple Document Interface and Single Document Interface, two popular UI styles in Microsoft Windows. In MDI, an application opens its documents as sub-windows, while in SDI, each document has its own top-level window.

[5] The full J2SE, with Swing, has recently become available on handhelds; see the SaveJe product at http://www.savaje.com/. This enables true interoperability between handhelds and desktops.

[6] See http://www.favabeans.org/screenshots.html.


Speaker Information

Ihab Awad works at the University of Minnesota Center for Computational Genomics and Bioinformatics.


[Upcoming meetings] [Past meetings] [OTUG Home]