Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Milestone 2 was surely one of the greatest victories for the Van Buren Boys. It was our first chance to work together, and like Martin Van Buren's term in office, we would not disappoint. Not only did we implement one of the premier error reporting systems, but we also developed a fresh, new GUI design that would become the basis for our later GUI development.
The first step in our error checking was the addition of a set of symbols that would be returned by the model's modifiers in the event of an error. If the change was allowed we returned #success, but if it failed the test we had it return one of the following error symbols(#conflictsWithGender, #conflictsWithSpouse, #conflictsWithChild and a variety of date conflicts). Whenever the View attempted to update the model it would receive either #success and the model and view would update or it would receive an error symbol which it would send to the errorMessage method. The errorMessage method would then process the symbol and report the error to the user.
The second phase of M2 involved creating a user interface for updating families and persons. To accomplish this task we decided to use Morphic, because it basically had all the functionality that we needed(StringMorph, PluggableButtonMorph, PluggableListMorph and the ever popular RectangleMorph which we used to format our GUI). Below are some samples of the different windows we created:
GenealogyWindow, created by Alexander Knowles, was at this point the driver class for our program. It allowed the user to add/view new persons and families.
FamilyWindow, created by Dano, has the ability to add and remove the husband, wife and children of a family while implementing the self checks during updates.
Person window, created by Mich, has the ability to change a person's information and view the person's relationships and families.
Pitfalls and Updates
Our most obvious error in this milestone was the failure to include an Export Genealogy button on our Genealogy window; we would later add this in M3/M4.
We also didn't properly implement Squeak's MVC using self: changed for this Milestone. The views updated properly along with the model, but this would cause problems later in our project and we eventually implemented MVC correctly.
Best of M2
- As you can no doubt see from the screenshots on this page, our GUI rocks. We worked very hard on the user interface during this Milestone, and it paid off in the end because we rarely had to touch it in the later stages, except to add some buttons.
- To complement our GUI, we implemented an equally impressive window management system. Every window keeps track of the windows it spawns and the window which spawned it. This way, we could introduce a couple of nice features. One of these was the "show;expand;activate." feature. Basically, if a window is already open, and the user tries to open it again, those 3 message calls will display that window, expand it (if collapsed), and activate it (pretty intuitive, eh?). This is especially helpful when the screen becomes cluttered by a lot of windows. Another good feature (we think) is that if you close a window, all of the windows created by this window will also be closed; now the user doesn't have to worry about manually closing the multitude of windows they may have opened.
- Our single greatest accomplisment of M2 was the creation of the Date selection box. It consisted of two PluggableButtonMorphs and a StringMorph. The month button has a menu and until a month is selected the day menu cannot be changed. Once a month has been selected the correct day menu is selected and the day can be chosen.
Note that the range of days is dependent on the month chosen to reduce user error by forbidding invalid days. One of the most important things we learned from this project is that the best way to reduce user error is to prevent those situations from ever occurring in the first place. You should keep this in mind while creating your user interface. MVB will appreciate it.
Link to this Page