/* * * Copyright (c) 2000-2009 by Rodney Kinney, Brent Easton * * 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.ui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.net.URL; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JOptionPane; import VASSAL.chat.ChatServerConnection; import VASSAL.chat.Player; import VASSAL.chat.SimplePlayer; import VASSAL.chat.SimpleStatus; import VASSAL.i18n.Resources; public class SimpleStatusControlsInitializer implements ChatControlsInitializer { private ChatServerConnection client; private boolean includeLooking; private JButton lookingBox; private JButton awayButton; /** * Entry Point for P2P client - 'Looking for Game' does not make sense. */ public SimpleStatusControlsInitializer(ChatServerConnection client, boolean includeLooking) { super(); this.client = client; this.includeLooking = includeLooking; } public SimpleStatusControlsInitializer(ChatServerConnection client) { this(client, true); } public void initializeControls(final ChatServerControls controls) { URL imageURL; if (includeLooking) { lookingBox = new JButton(Resources.getString("Chat.looking_for_a_game")); //$NON-NLS-1$ lookingBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { if (client != null) { final Player p = client.getUserInfo(); SimpleStatus s = (SimpleStatus) p.getStatus(); s = new SimpleStatus(!s.isLooking(),s.isAway(),s.getProfile(), s.getClient(), s.getIp(), s.getModuleVersion(), s.getCrc()); client.setUserInfo(new SimplePlayer(p.getId(),p.getName(),s)); } } }); lookingBox.setSize(lookingBox.getMinimumSize()); imageURL = getClass().getResource("/images/playerLooking.gif"); //$NON-NLS-1$ if (imageURL != null) { lookingBox.setToolTipText(lookingBox.getText()); lookingBox.setText(""); //$NON-NLS-1$ lookingBox.setIcon(new ImageIcon(imageURL)); } } awayButton = new JButton(Resources.getString("Chat.away_from_keyboard")); //$NON-NLS-1$ awayButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { if (client != null) { final Player p = client.getUserInfo(); SimpleStatus s = (SimpleStatus) p.getStatus(); s = new SimpleStatus(s.isLooking(),true,s.getProfile(), s.getClient(), s.getIp(), s.getModuleVersion(), s.getCrc()); client.setUserInfo(new SimplePlayer(p.getId(),p.getName(),s)); JOptionPane.showMessageDialog(controls.getRoomTree(), Resources.getString("Chat.im_back"), Resources.getString("Chat.away_from_keyboard"), JOptionPane.PLAIN_MESSAGE); //$NON-NLS-1$ //$NON-NLS-2$ s = (SimpleStatus) p.getStatus(); s = new SimpleStatus(s.isLooking(),false ,s.getProfile(), s.getClient(), s.getIp(), s.getModuleVersion(), s.getCrc()); client.setUserInfo(new SimplePlayer(p.getId(),p.getName(),s)); } } }); imageURL = getClass().getResource("/images/playerAway.gif"); //$NON-NLS-1$ if (imageURL != null) { awayButton.setToolTipText(awayButton.getText()); awayButton.setText(""); //$NON-NLS-1$ awayButton.setIcon(new ImageIcon(imageURL)); } if (includeLooking) { controls.getToolbar().add(lookingBox); } controls.getToolbar().add(awayButton); } public void uninitializeControls(ChatServerControls controls) { if (includeLooking) { controls.getToolbar().remove(lookingBox); } controls.getToolbar().remove(awayButton); } }