public void actionPerformed(ActionEvent e) {
                // If the contactListModel is empty there's no one to chat with and
                // print a message dialog
                if (contactListModel.isEmpty()) {
                    JOptionPane
                    .showMessageDialog(
                            frame,
                            "I'm sorry, there are no other users logged on right now.",
                            "No Users Online",
                            JOptionPane.PLAIN_MESSAGE);
                }
                // Otherwise figure out which contacts you can have a convo with and
                // input them into a request user input dialog
                else {
                    String[] possibleConvos = new String[contactListModel
                                                         .getSize()];
                    int index = 0;
                    for (int i = 0; i < contactListModel.getSize(); i++) {
                        String user = (String) contactListModel.toArray()[i];
                        
                        if (!usernameToChats.containsKey(user)) {
                            possibleConvos[index] = user;
                            index++;
                        } else {
                            if (!usernameToChats.get(user).isVisible()) {
                                possibleConvos[index] = user;
                                index++;
                            }
                        }
                    }
                    
                    // If this is at least one person online that you are not talking with
                    if (index > 0) {
                        String[] listOfPossibleConvos = new String[index];
                        for (int j = 0; j < index; j++) {
                            listOfPossibleConvos[j] = possibleConvos[j];
                        }
                        
                        // Show Input Dialog with the available options
                        String requestedUser = (String) JOptionPane
                                .showInputDialog(
                                        frame,
                                        "Who would you like to talk with:\n",
                                        "Open New Conversation",
                                        JOptionPane.PLAIN_MESSAGE, null,
                                        listOfPossibleConvos,
                                        listOfPossibleConvos[0]);
                        
                        // If the requested user is null or empty do nothing
                        if ((requestedUser != null) && (requestedUser.length() > 0)) {
                            // If the user already had an open chat, reopen that chat.
                            if (usernameToChats.containsKey(requestedUser)) {    
                                usernameToChats.get(requestedUser).setVisible(true);
                            }
                            // Otherwise, make a new chat.
                            else {
                                ConversationView answer = new ConversationView(
                                        clientModel, username,
                                        requestedUser);
                                usernameToChats.put(requestedUser, answer);
                                answer.setVisible(true);
                            }
                        }
                    } 
                    // If we get here, this means that all the users online already have
                    // open convos with you. Displays a message dialog accordingly.
                    else {
                        JOptionPane
                        .showMessageDialog(
                                frame,
                                "You already have conversations open with all the users online",
                                "No New Conversations Availiable",
                                JOptionPane.PLAIN_MESSAGE);
                    }
                }
            }