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

MFoV P2 cases page

MFoV members:

The story behind P2
The purpose of this milestone was to create a GUI representation of P1. This turned out to be much easier said then done. What we thought would be a short and simple process turned into a very long weekend

Goals
1. To provide a way for users to easily select a drive and directory to start searching from
2. To provide a way for users to easily choose the types of files they wanted to search for
3. To provide an easy to use interface for playing/stopping songs
4. To provide a graphical view of the playlist
5. Add buttons for going back and forward between songs (this was not required, but we thought it would be cool)

Well, what was so hard?
1. We were all new to squeak, and this was the first time we had tried messing around with morphic windows, buttons, etc.
2. The directory search turned out to be much more difficult than we first thought, and this is what actually took the bulk of our time.

Implementation
We used the SelectionMenu object for our directory search. These menus are very useful, because you can just initialize them with some list (e.g. Array or OrderedCollection), and then they just return a String object, which represents what the user chose from the menu. For file type choosing, we used a FillInTheBlank object, which once again, was very easy to implement. After it was all said and done, this is what our directory search came out like (except it wasn't a collage obviusly):



After the directory search is done and the user has chosen their file types, a SoundFileGroup object is created (see MFoV P1 cases page for details on SoundFileGroup's), and then the main window is opened. For displaying the playlist, we first chose a PluggableTextMorph, but upon further reading and experimentation, decided that we had made a bad design choice, and used a PluggableListMorph instead. By the way, once you really get the hang of message sends and dependencies, PluggableListMorph's are great tools for creating interactive, indexable graphical lists. And for our buttons, we chose to use the PluggableButtonMorph object, which once again, is a handy tool. Our interface is not the prettiest in the world, but that was not our major concern. We were much more concerend with ease of use and a working end product. So without furthur ado, we present to you our P2 GUI:



Link to this Page