* Observer: al momento de llegar un mensaje, se actualiza la información de manera acorde
*/
@Override
public void update(Observable o, Object arg)
{
Message message = (Message)arg;
// si es un mensaje de texto...
if (message.getMessageKind() == Constants.MESSAGE_KIND_TEXT)
{
// incorporar al chatLog, (si no es mio)
if (!message.isToAll() || !message.getSender().equalsIgnoreCase(Globals.localHostName))
appendText( getTimeStr() + " <b>[" + message.getSender().toUpperCase() + " a "+ (message.isToAll()?Constants.MASS_MESSAGE_TEXT:message.getReceiver().toUpperCase()) +"]</b> " + (String)message.getMessageContent(), "green");
// si es mensaje masivo, actualizar el Combobox a masivo
if (message.isToAll())
hostComboBox.setSelectedIndex(0);
// si no es un mensaje de mi propia maquina, actualizar el Combobox a masivo
else if (!message.getSender().equalsIgnoreCase(Globals.localHostName))
hostComboBox.setSelectedItem(Host.findHost(message.getSender()));
// forzar la visualización
setVisible(true);
}
else if (message.getMessageKind() == Constants.MESSAGE_KIND_IMAGE)
{
ImageFrame.showReceivedImage((ImageIcon)message.getMessageContent(), message.getSender());
}
else if (message.getMessageKind() == Constants.MESSAGE_KIND_STATUS)
{
boolean newStatus = (Boolean)message.getMessageContent();
Host host = Host.findHost(message.getSender());
if (host == null)
{
System.out.println("ChatFrame.update() Imposible encontrar el host a actualizar");
return;
}
host.setConnected(newStatus);
setTitle("Chitero... " + Globals.localHostName + " - " + (Globals.online?"ONLINE":"OFFLINE"));
appendText(getTimeStr() + " <b> ** " + message.getSender().toUpperCase() + " ESTA " + (newStatus?"ONLINE!":"OFFLINE") + " </b> ", "purple");
reloadComboOptions();
if (owner.getMenu() != null)
owner.getMenu().updatePopupSubMenu();
}
}