import java.rmi.*; import java.rmi.server.*; /** * Java Chat - A simple chatroom application - Callback Class. * * This is the Callback class. It listens for callbacks from * the server, passes new messages to the GUI, and deals with * usernames. * * @author Sean Handley * @version November, 2006 */ public class Callback extends UnicastRemoteObject implements ICallback { private static final long serialVersionUID = 3671520860342032921L; private IChatServer c; private ClientGUI gui; private String username; /** * Callback constructor. * * Takes in a chat interface, gui and username as parameters and puts * them into class variables. * * @param c * @param gui * @param username * @throws java.rmi.RemoteException */ public Callback(IChatServer c, ClientGUI gui, String username) throws RemoteException { this.c = c; this.gui = gui; this.username = username; } /** * Callback interface method. Called by the server when a new message is ready. * * @throws java.rmi.RemoteException */ public void doCallback() throws RemoteException { try { gui.addMessage(c.getMessage()); gui.updateUserList(c.getUsers()); } catch(Exception e) { System.out.println(e.toString()); } } /** * Force the client to logout. Called if the server is killed with clients still active. */ public void forceLogout() { gui.setRequiresCleanExit(false); System.out.println("CONNECTION TERMINATED: Server is offline or no longer reachable."); gui.dispose(); System.exit(0); } /** * Returns the username. * * @return username * @throws java.rmi.RemoteException */ public String getUsername() { return username; } /** * Sets the username. * * @param username New user name * @throws java.rmi.RemoteException */ public void setUsername(String username) { this.username = username; } }