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

Another Group: Milestone 2

The goal was to create a command-line based Guide for the user and a GUI-based Guide to add new tasks. This milestone was just to introduce us to more aspects of Squeak while working in a group. For the complete specs, see Fall 2003 M2: Create a simple Guide.

Our Approach:
We decided to use our code from Milestone 1 for this milestone, incorporating the changes suggested by our TA. One of our group members designed the UI, while the others created the Guide and SUnit tests. There weren't many design decisions for this milestone, since the specs specified the design.

Design Notes:
No real design was necessary; we just followed the specs.

The key to designing the UI was to look at existing UI components in Squeak, such as the Workspace and Browser. This milestone was a learning experience for our group. Our first integration was lengthy and inefficient. We realized that we needed to set clearer specifications and avoid having two people working on the same part of a system. This milestone helped us set the timeline and task breakdown for the future milestones, now that we understood each other's strengths and schedules. We also decided upon coding standards, so that we could understand each other's code.

Code Snippets:
Two items are worth noting. First, it took us quite a while to figure out how to get part of a PluggableTextMorph bold. After much searching, this did the trick, where pTextMorph is a PluggableTextMorph:

pTextMorph editString: 'Welcome to the CS2340 Squeak Help Repository',
    String cr, 'Click on a topic to start.'.
pTextMorph setText: ((pTextMorph text) makeBoldFrom: 1 to: 44).

Second, we found this while searching through Squeak. When writing files out to a Windows system, you must first delete the file if the new contents will be shorter than the current file contents. The code itself isn't tricky, but this behavior was a surprise.

(FileDirectory default fileExists: aFilename) ifTrue:
    [FileDirectory deleteFilePath: aFilename].

Our HelpRepository with all of the available tasks loaded.

Uploaded Image: m2-image1.gif

Downloads: code, design, and tasks

Link to this Page