Formal friends list spec

Thanks everybody for the friends list feedback, it was incredibly helpful. Based on that, we worked out this spec sheet it's a little long so I tried to keep things really brief. Let me know if more detail would be appropriate...

Note : Main chat will have the /af /rf commands functional to it so that we can test this thing. Can't really use a friends list without friends.

###DATABASE

We'll make a NEW user_relation table, to avoid problems with altering the old one (can remove it once we've fixed the main chat).

userA
relation set("friend", "ignore")
userB

###RETRIEVING FRIENDS LIST FROM SERVER

We can create a new type of Msg, userFriendMsgIn/Out, which can serve a request for the friends of a particular user (Into Server), and then a list of friends directed at the appropriate user

###ATTRIBUTES

String[] friends - array list of friends
String[] online_friends - array list of friends who are currently online

###GUI COMPONENTS (swing)

JFrame
JPanel - Background
JLabel - "Friends"
JScrollpane
JList w CellRenderer (friends list with a renderer (html?) to provide color/font styling, JList provides selection capability)

###EVENTS

Friends list load event

retrieve friends from user_relation table
retrieve online status from user table

Mouse event (clicking on a username in the JList)

command(left-click):
(if user online)
whisper
(if user offline)
view profile

options (right-click):
whisper (deactivated when user offline)
view profile
remove from friends

User Event

remove friend command
send remove command to server
refresh friends list from db
repaint list of friends

received userOnlineMsg/userOfflineMsg
update online_friends
repaint list of friends

###LOOK AND FEEL

Colour Scheme (matches website)

TEXT COLOR : #CCCCCC (light grey)
HEADINGS AND BORDERS : #0099FF (blue)
WINDOW BACKGROUND : #000000 (black)
PANEL BACKGROUND : #333333 (dark grey)

As usual, comments are appreciated. Another round of feedback would be appropriate, and then we can get to coding this biatch.

keep hackin'
the HW dev team