/*
   *  to broadcast a message to all Clients
   */
  private synchronized void broadcast(String message) {
    // add HH:mm:ss and \n to the message
    String time = sdf.format(new Date());
    String messageLf = time + " " + message + "\n";
    // display message on console or GUI
    if (sg == null) System.out.print(messageLf);
    else sg.appendRoom(messageLf); // append in the room window

    // we loop in reverse order in case we would have to remove a Client
    // because it has disconnected
    for (int i = al.size(); --i >= 0; ) {
      ClientThread ct = al.get(i);
      // try to write to the Client if it fails remove it from the list
      if (!ct.writeMsg(messageLf)) {
        al.remove(i);
        display("Disconnected Client " + ct.username + " removed from list.");
      }
    }
  }
 /*
  * Display an event (not a message) to the console or the GUI
  */
 private void display(String msg) {
   String time = sdf.format(new Date()) + " " + msg;
   if (sg == null) System.out.println(time);
   else sg.appendEvent(time + "\n");
 }