Phase 1: GUI

Overall Program Structure 20
File “” that loads without error 5
Correct “main” handling 5
Determine current user and display it (e.g., in title bar) 5
Ability to “fake” current user (meaning: ability to run the program and set the current user name. You can do this either by allowing a username to be passed on the command line, or popping up a “login” dialog that lets the user enter the user name) 5
Basic GUI Functionality 80
Working online user list
  • Good layout
  • Can “fake” list of online users
  • Should handle many users correctly (scale, scroll, etc.)
Working chat invitation control
  • Should retrieve selected user(s) from list
  • May launch an “invitation pending” window
  • May just launch the chat window directly
Working chat window
  • Provides chat transcript
  • Provides mechanism for entering new text
  • Text entered locally is displayed in the transcript
  • Window is dismissable
  • Should show list of current members
Multiple simultaneous chats should be supported 10
Working invitation window
  • Should provide controls to accept or reject an invitation
  • Accept should launch a chat widow
  • Reject should close window
  • NOTE: since this first version won’t use the network, there should be some way to explicitly trigger the appearance of the invitation window. This could be a separate function in the file that I can call, or a button that launches it, etc.
Bonus 20
Allow icons to be associated with users 5
“Buddy list” management 5
GUI richness/novelty 10