Sun Java Solaris Communities My SDN Account Join SDN
 
Archive - Java Technology Products Download

Truffle Graphical Toolkit Customization Guide: Consumer Devices and Human Interface Design

 

Consumer Devices and Human Interface Design

Previous   |   TOC   |   Next
The amount of computing resources that can be delivered in consumer devices has increased substantially in recent years to the point where these products represent a software platform comparable to desktop systems. This has led to efforts to modify desktop technology for use with consumer devices. In some cases borrowing technology from desktop systems has been successful. But the use of desktop-centric human interface design techniques in consumer devices has not been successful.

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.

Platform Characteristics
Characteristic Touchable
(Screen Phone)
Couchable
(Set-Top Box)
Metal
(Desktop)
applications telephony, voice mail, address book, email, web browsing TV, EPG, web browsing, email word processing, presentations, web browsing, email, productivity applications, vertical applications
input device finger, stylus remote control mouse
mouse support none none (although some remote controls have track balls) yes
keyboard support virtual or physical keyboard virtual or physical keyboard physical keyboard
viewing distance 1-2 feet 10-15 feet 1-2 feet
display size 6 inches 13 inches to wall-size 13-28 inches
screen resolution 1/4 VGA (320x240) to full VGA (640x480) broadcast television 640x480 to 1800x1440
screen colors 2, 4 or 8-bit displays; both black & white and color broadcast television 16-bit or 24-bit
pixel density ~102 dpi N/A ~72 dpi
multiple screens no no yes
audio input telephone handset, microphone none microphone
audio output telephone handset, perhaps speaker TV speakers up to full surround-sound computer speakers to high-end speakers
data bandwidth 28.8Kbps to ISDN 28.8Kbps to cable modem throughput 28.8Kbps to Ethernet
printer connection optional optional yes

Multiple Look & Feel Designs

Why should the PJAE support multiple look & feel designs, particularly for consumer devices? The short answer is that different products have different needs and the level of integration in consumer devices challenges platform developers to provide unique and elegant solutions to human interface design problems.

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.

Comparing the Truffle Graphical Toolkit and JFC

It is useful to compare the Truffle Graphical Toolkit with JFC because they share many design goals. Both the Truffle Graphical Toolkit and JFC are written in the Java programming language and both support multiple look & feel designs. JFC's pluggable look & feel architecture allows an application to select a look & feel design at runtime. This level of flexibility in JFC may add too much complexity or require too many resources for consumer devices operating in a small amount of memory. In contrast, the Truffle Graphical Toolkit provides a replaceable look & feel architecture where a single look & feel design is selected at startup time.

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.

AWT Peers
PeerPJAE Support Level
RequiredOptionalModified
Buttonx  
Canvasx  
CheckboxMenuItem x 
Checkboxx  
Choicex  
Component  x
Containerx  
Dialog  x
FileDialog x 
Fontx  
Frame  x
Labelx  
Lightweightx  
Listx  
MenuBar x 
MenuComponentx  
MenuItemx  
Menu x 
Panelx  
PopupMenu  x
ScrollPanex  
Scrollbar x 
TextAreax  
TextComponentx  
TextFieldx  
Window  x

Touchable Look & Feel

The 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]

touchable example

Scalability of Look & Feel Designs

Look & feel designs are usually crafted for a specific resolution. For example, the first version of Touchable is designed for VGA resolution (640x480).

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.

Look & Feel Design Template

The process of developing a look & feel design for the Truffle Graphical Toolkit involves the collaboration of human-interface and engineering expertise. The best way to approach this task is to use a template to mock up the design of each GUI component in java.awt.

  API-level
    Button
    Frame
    ...
  Internal
    VirtualKeyboard
    ...

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.

Previous   |   TOC   |   Next