/*
*
* Copyright (c) 2000-2007 by Rodney Kinney
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License (LGPL) as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, copies are available
* at http://www.opensource.org.
*/
package VASSAL.chat;
import java.awt.Component;
import java.awt.KeyboardFocusManager;
import java.awt.Window;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import VASSAL.command.Command;
/**
* A Command that encapsulates a private chat message from another
* {@link VASSAL.chat.SimplePlayer} */
public class PrivMsgCommand extends Command {
private PrivateChatManager mgr;
private String msg;
private Player p;
public PrivMsgCommand(PrivateChatManager mgr, Player sender, String msg) {
this.mgr = mgr;
this.msg = msg;
p = sender;
}
public void executeCommand() {
PrivateChatter chat = mgr.getChatterFor(p);
if (chat == null) {
return;
}
Window f = SwingUtilities.getWindowAncestor(chat);
if (!f.isVisible()) {
f.setVisible(true);
Component c = KeyboardFocusManager.getCurrentKeyboardFocusManager()
.getFocusOwner();
if (c == null || !SwingUtilities.isDescendingFrom(c, f)) {
java.awt.Toolkit.getDefaultToolkit().beep();
for (int i = 0,j = chat.getComponentCount(); i < j; ++i) {
if (chat.getComponent(i) instanceof JTextField) {
(chat.getComponent(i)).requestFocus();
break;
}
}
}
}
else {
f.toFront();
}
chat.show(msg);
}
public Command myUndoCommand() {
return null;
}
/**
* Return true, as this command should not be logged
*/
public boolean isLoggable() {
return false;
}
public Player getSender() {
return p;
}
public String getMessage() {
return msg;
}
}