View this PageEdit this Page (locked)Attachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Donated By Intel Milestone 4

Goal:

To create a GUI for using the Genealogy program. The GUI had to use morphic to display the family trees, and had to provide some interface for the user to interact with the tree through.

Purpose:

To gain some experience with morphic interfaces in squeak, and to make our program much easier to use. No more workspace code to use it (other than to open the initial Genealogy Map).

Design:

We worked from the design that was created for M3, and followed it pretty closely, only adding a few methods to the existing classes (GenealogyControlPanel and GenealogyMap). The export function took some time to think about, but ended up working quite well.

Implementation:

For the GUI, we were fortunate to already have a morphic visualization to work with from Paul's Milestone1. So we didn't have to waste time learning morphic, or thinking about how a tree should display. We just needed some way for the user to interact with the tree they were seeing. We created a control panel, with buttons for navigating through the tree, and performing the various functions required by the milestones (at this point, query, export, and check). This ended up making the later milestones easy to add to the GUI, as after writting the backend code for new functions, we only had to add a button to the control panel. This is what our GUI looked like after work on this milestone was complete:

External Image

The user can navigate through the tree by using the blue buttons on the left. The aqua colored buttons can be used to add various relationship links, and the multi colored buttons on the far right are used to execute various functions on the tree. This setup worked pretty well, and helped us to find some more bugs in the mirroring code, as now we could just move through the tree, and make sure all the links went both ways, rather than having to visualize each individual.

After choosing export, you get code printed to the transcript that can be used to reproduce the map you are currently viewing on the screen. The output looks like this:

External Image

The check function output is the same as Milestone2, the Query output however changed, as now we had a GUI to work with. After choosing query, the user is first present with a list of the type of searches they can do:

External Image

Then, all of the matches are returned in a list, and choosing one of the people who matched will recenter the Genealogy Map on that person.

External Image

Conclusion

This milestone did not require too much work. It took some time to finish up the export function, and some time was spent trying to get the morphic interface of squeak to work properly, but in the end, we had a pretty simple, solid GUI. The simple GUI helped later on, as it was easy to include additional functionality.

For more information about what this milestone involved, take a look at the Fall2002 M4 page.

Here is the source for just this milestone, if you would rather exclude the later milestone code in the final .st on our main case page.

M4.st

Link to this Page