CSE 3461 User Interfaces

Fall Term 2007

Changes/corrections appear in red.

Assignment 3 (due Sunday December 2, 2007 @ midnight)

Create a GUI-based email client. To absolve you of network programming, the following classes will simulate communication with a mail server:

MailServerSimulator.class

MailServerSimulator$1.class

MailServerSimulator$Message.class

MailServerSimulator$IncorrectLoginException.class

MailServerSimulator$UnableToConnectException.class

To employ these classes, simply download them to the directory that contains your other class files. For the API of these classes, click here.

Required Features

  • Users must be able to write and send messages.
  • Users must be able to receive messages from the mail server, read them, sort them (e.g., by time), and organize them (e.g., in folders).
  • Messages must persist between sessions. That is, a user should be able to receive messages, exit the email client, restart the email client, and read the previously received messages. However, the user should also be able to delete unwanted messages.
  • Users should be able to set account preferences (e.g., mail server name, username, and password). (However, the mail server simulator will not enforce these settings.)

Optional Features

The messages delivered by the simulated mail server characterize various circumstances (see the API for details). Implement additional features as you deem appropriate.

Additional Requirements and Notes

  • Your application should be robust with a good user interface. Make appropriate use of the various GUI components and features supported in JFC/Swing. Consider the organization, presentation, interaction, and over-all usability of your program.
  • Your source code should compile without errors, be well organised, and documented.
  • You must do this assignment in groups of three.
  • Your programs must compile and run in the Prism lab. Do not employ classes or packages that are not installed on Prism workstations. Furthermore, do not use the york package or the type package.
  • The assignments will be awarded letter grades, according to the University's letter grade standard (click here for details). A program that simply fulfils the requirements described here will be awarded a ‘C’. To get a higher grade, your assignment solution must exhibit “exceptional skill” and/or “great originality”.
  • Name your program “a3.java”. Submit it on Prism with the following command:

submit 3461 a3 a3.java

If required, additional files may be submitted using the same command. Type the command “man submit” for further details.

  • Submit a plain text file named “readme.txt” with the following sections (you can use this template):

1.      The first three lines of the readme.txt file must contain the following four comma-delimited fields:

LoginID, StudentID, LastName, FirstName(s)

LoginID, StudentID, LastName, FirstName(s)

LoginID, StudentID, LastName, FirstName(s)

2.      Identify any special requirements/considerations the grader should know about (e.g., an internet connection).

3.      Describe the motivation behind your software design. Why did you use the JFC/Swing components that you did, and why did you organise them that way? Briefly justify your design.

4.      If your implementation includes any special features, make sure you describe these and provide appropriate instructions.

5.      The readme.txt file should also contain a record of your group meetings. Include the date and time of each meeting, the people present, and the topics discussed. If other forms of communication were used (e.g., e-mail, phone), indicate the type and extent.

6.      Outline the tasks/responsibilities performed by each member of the team.