6.893 User Interface Design & Implementation
Fall 2003

PS4: Toolkits

Due 12:30 pm, Wed October 29



In this individual assignment, you will port a small user interface from Swing to another user interface toolkit, and use that experience to compare and contrast the toolkit with Swing.

The user interface you will implement is an application for drawing trees, like family trees or organization charts.  Here are some screenshots:

Tree editor screenshot Tree editor showing in-place editing

Here are the key features of the interface that you should implement:
A reference implementation of this interface has been written for you using Java Swing.  Its source code is available for you to examine, compile, and run:
Choose a user interface toolkit and reimplement this interface.  Needless to say, do not choose Swing or AWT, since the reference implementation already shows how to do it that way.

Here are some possible toolkits you might use:
If you want to use a toolkit that isn't on this list, check with Rob & Jaime first.

Don't worry about graphic design or usability. The reference implementation itself is aesthetically unappealing and has some serious usability bugs (e.g., you can drag a node outside the window and lose it entirely).  In this problem set, your goal is not to get all the usability details right, but to implement the major features of the user interface.  You don't have to copy the look and feel of the reference implementation precisely, either, but do implement everything mentioned in the bulleted feature list above.

Think about your software architecture.  You may notice that the reference implementation represents tree nodes as view objects (a subclass of JLabel), but tree links as strokes.  You don't have to do it that way.  Design your implementation in the way that makes the most sense for the toolkit you chose.  You may also notice that the reference implementation doesn't have a separate model, in the MVC sense.  The tree consists entirely of view objects. That decision limits its portability, since the model can't be decoupled and reused in another interface.  But it makes the program smaller and simpler, which is appropriate when our primary goal is to compare toolkits.  You can make a similar decision in your implementation.

Implement a bit at a time.  Don't try to port everything at once.  Gradually learn about the toolkit by building up the user interface, starting with a hollow shell.  The reference implementation was constructed one feature at a time, roughly in the order of the bulleted feature list above.

What to Think About

When you're comparing and contrasting the toolkit with Swing, think about the following issues:
Also ask yourself:

What to Hand In

By 12:30 pm on Wednesday, October 29, you should hand in the following: