@Override public void update(Observable arg0, Object arg1) { if (arg1 instanceof String) { String message = arg1.toString(); if (message.startsWith("Forwarding: ")) { ForwardButton.setText("Stop Forwarding"); SetChannelButton.setEnabled(false); BlockButton.setEnabled(false); Send.setEnabled(false); MessageInput.setEnabled(false); MessageDisplay.setEnabled(false); Availability.setEnabled(false); } else if (message.startsWith("End Forwarding:")) { ForwardButton.setText("Forward"); SetChannelButton.setEnabled(true); BlockButton.setEnabled(true); Send.setEnabled(true); MessageInput.setEnabled(true); MessageDisplay.setEnabled(true); Availability.setEnabled(true); } else if (message.startsWith("#send")) { try { client.sendToServer(message.substring(6)); } catch (IOException e) { e.printStackTrace(); } return; } else if (message.startsWith("#linedraw")) { drawPad.updateDraw(message); return; } else if (message.startsWith("Login Error:")) { java.awt.EventQueue.invokeLater( new Runnable() { public void run() { chatFrame.setVisible(false); LoginGUI login = new LoginGUI(true); } }); } if (!message.substring(message.length() - 1, message.length()).equals("\n")) message += "\n"; // Update UI display safely final String msg = message; SwingUtilities.invokeLater( new Runnable() { public void run() { MessageDisplay.append(msg); } }); } }