Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Milestone 4 case study.
works well with others
The purpose of milestone 4 was to implement a morphic GUI for our Genealogy System.
How We Did It
We made our System display a family tree by taking all the people in our squeak universe (that we added) and putting them into an ordered collection by generations. We then displayed the people in the form of Star morphs on the screen at the appropiate places according to the calculations (see Visualization class in attached code) generated from the collection. We used bubbletextMorphs to display a person's information on a mouse rollover event. We then connected the stars with colored lines to designate parent/child relationships, siblings, marriages, and divorces. We also created a graphical way to add and edit people, search the family for information, and somehow link people into relationships.
Adding and Editing People
To add a person, we decided that a user should be able to click on a button (on the side menu) that would bring up a form (SystemWindowMorph consiting of textmorphs and dropDownMenuMorphs) to edit personal information for the new person. Once the user was finished, the new person would be added to the bottom pane of the screen that was reserved for people who didnot have a relationship to anyone in the currently visualized family.
Searching the Family Tree
Inorder to search the family tree, a user should click on the search button which will bring up a series of selection menu morphs with all the posible search modes. When a mode is chosen, the user will type in the search info and the system will return the results.
For more info our searching, see our M2 page.
To link any person to another person, we made it possible to simply select the starMorph that represented the first person (which would then be automatically highlighted), then right-click on another starmorph and select Link Relationship As... from the resulting menu, and then select the type of relationship desired between the two people from the next menu. The two people would then share that relationship and the entire tree would be revisualized. This process is the primary reason behind having a dedicated pane of people who didnot have a relationship. Without that pane, we would not be able to easily select and click together relationships between any person in the squeak-universe. We did this by keeping the currently selected person in a class variable, and then linking the right-clicked person with the selected person reference via M1 methods.
Our Source Code...Use at your own risk!
Link to this Page