|
Consumer devices are tightly integrated and reflect a careful balance between several competing design criteria. Over time the consumer device market will see a shift where much of the value contained in a given product will be transferred from solid-state into software. As this shift occurs, designers will need a GUI toolkit that is flexible enough to handle a variety of different product design scenarios. Consumer devices need different human interface designs for several reasons. These devices are smaller and their input devices are simpler. Consumers may not have any computer experience, so human interface metaphors like drag and drop that are borrowed from desktop environments may be inappropriate. Moreover, consumers -- even those with computer experience -- have very different expectations when they interact with a consumer device. Psychologically, they expect these products to be simple and predictable and they have a low tolerance for learning how to use them. The Truffle graphical toolkit represents both an engineering achievement and an advance in human interface design. The engineering effort shows in the design and implementation of the Truffle graphical toolkit itself. The Touchable look & feel is the result of several years of human interface research into consumer behavior. Many lessons learned from developing Touchable will be used to develop additional look & feel designs for different kinds of consumer devices.
Multiple look & feel designs are needed to support both the product design needs of consumer devices and the product identity needs of licensees. If the API for the GUI toolkit (java.awt) must remain unchanged so that applications can run on different platforms, and if consumer device manufacturers must develop widely differentiated products, then the PJAE must be able to supply different look & feel designs. The Truffle graphical toolkit provides this flexibility so that licensees can deliver product-specific look & feel designs in a small memory footprint. The need for simplicity in human interface design does not imply the need for a single look & feel. Successful consumer devices must be simple to use so that consumers can intuitively understand how to use them. Nevertheless, different product designs need look & feel designs that reflect the purpose of the consumer device.
Although JFC contains a rich set of GUI components that extends GUI functionality beyond what is provided by the AWT, the Truffle Graphical Toolkit provides only core AWT functionality. This has two benefits: it keeps the Truffle Graphical Toolkit implementation compact and it removes the need for application developers to learn a new API to write software for Truffle-based platforms. The PersonalJava Application Environment Specification places a further constraint on the peer components supplied through the Truffle Graphical Toolkit by defining a minimum subset of the AWT components. These components were selected for their appropriateness for consumer device applications. For example, java.awt.Frame is a modified GUI component in a PJAE implementation. The optional and modified peer components are described in the table below.
Touchable Look & FeelThe Touchable look & feel design supports touchscreen-based consumer devices like screenphones. A consumer using a screenphone expects it to behave much like a conventional phone, so that most interaction is driven by pressing a finger on a button to select a choice. The figure below shows a dialog for an address book application. While this application may run without modification on another Java application environment like the JDK, on the PJAE using the Touchable look & feel it has a distinctive consumer-friendly appearance. Buttons are wide and rounded while vertical scrollbars have been replaced with button pairs to simplify finger-based operation.Touchable Example [Click on image for larger view]
There are two approaches to developing versions of Touchable for other resolutions. The first is to simply scale each graphical element in the look & feel design by a constant scale factor. The drawback to this approach is that it often causes roundoff errors. For example, if a certain graphical element is a single pixel wide, then it may disappear or remain the same size. In any event, the relative sizes of the different graphical elements might shift due to scaling. The second approach to scaling a look & feel design is to create a derivative look & feel design based on the original. This is not as difficult as creating a new look & feel design because it is based on the graphical design principles of the original look & feel design and because it is limited only to the graphical elements. In a way, it is like designing a screen font for a different resolution based on an existing screen font design.
The Truffle Graphical Toolkit can support implementations that need multiple look & feel designs,
for example to support multiple display resolutions.
But the Truffle Graphical Toolkit can only support a single look & feel design at runtime.
The classes that represent a specific look and feel design
are not memory intensive.
Describe the visual appearance for each component, and the related appearances for the component in its various states (e.g. selected, unselected). This could include color schemes and scale factors, as is the case in Touchable. This set of descriptions roughly matches the look requirements that are implemented by the View classes. Next, create a similar table that describes the user-interaction characteristics, the feel for each GUI component. For example, will the user hear an audio feedback when a button is pressed? If so, then add the Controller for that purpose. This second table should provide a starting point for the Controller strategy for the look & feel implementation. Since the Truffle Graphical Toolkit already contains a variety of prebuilt Controllers, this is often reduced to a matter of selecting from the available Controllers in sun.awt.otk.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| ||||||||||||