OvernetPanel.java
| Index Score | ||
|---|---|---|
![]() |
![]() |
org.xnap.plugin.overnet.gui |
![]() |
![]() |
XNap 3 |
View: Reasons, Metrics, Source Code
These are the metrics that contribute to the Enerjy Score for this file, ranked by impact. So the metrics listed at the top influence the score to a greater extent that the metrics listed at the bottom.
/*
* XNap - A P2P framework and client.
*
* See the file AUTHORS for copyright information.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.xnap.plugin.overnet.gui;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.KeyEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import org.apache.log4j.Logger;
import org.xnap.XNap;
import org.xnap.event.StateEvent;
import org.xnap.event.StateListener;
import org.xnap.gui.ActionProvider;
import org.xnap.gui.ConsolePane;
import org.xnap.gui.component.HistoryTextField;
import org.xnap.gui.component.XNapButton;
import org.xnap.gui.util.GUIHelper;
import org.xnap.gui.util.GridBagHelper;
import org.xnap.plugin.overnet.OvernetPlugin;
import org.xnap.plugin.overnet.gui.action.ConnectAction;
import org.xnap.plugin.overnet.gui.action.DisconnectAction;
import org.xnap.plugin.overnet.net.OvernetCore;
import org.xnap.plugin.overnet.net.msg.OvernetMessage;
import org.xnap.plugin.overnet.net.msg.client.CommandMessage;
import org.xnap.plugin.overnet.net.msg.core.CoreStatusMessage;
import org.xnap.plugin.overnet.net.msg.core.MessageListener;
import com.jgoodies.forms.factories.DefaultComponentFactory;
public class OvernetPanel extends JPanel implements MessageListener,
StateListener,
ActionProvider,
ComponentListener
{
private static Logger logger = Logger.getLogger(OvernetPanel.class);
//--- Constant(s) ---
//--- Data field(s) ---
/**
* Text area where status messages from the core are shown. If there are
* too many messages the old ones will be cropped.
*/
private ConsolePane cpConsole = new ConsolePane(true);
/**
* Input field for entering commands which are sent to the core.
*/
private HistoryTextField jteInput = new HistoryTextField("", 20);
/**
* Connects to the core.
*/
private ConnectAction acConnect = new ConnectAction();
/**
* Disconnects from the core.
*/
private DisconnectAction acDisconnect = new DisconnectAction();
/**
* Sends the input.
*/
private SendAction acSend = new SendAction();
/**
* Displays the connection status.
*/
private JLabel jlStatus = new JLabel(XNap.tr("Status:", 0, 1));
//--- Constructor(s) ---
public OvernetPanel()
{
initialize();
OvernetPlugin.getMessageHandler().subscribe(CoreStatusMessage.TYPE, this);
OvernetPlugin.getInstance().getCore().addStateListener(this);
stateChanged(null);
addComponentListener(this);
GUIHelper.setMnemonics(this);
}
public Action[] getActions()
{
return new Action[] { acConnect, acDisconnect };
}
/* (non-Javadoc)
* @see java.awt.event.ComponentListener#componentHidden(java.awt.event.ComponentEvent)
*/
public void componentHidden(ComponentEvent e)
{
}
/* (non-Javadoc)
* @see java.awt.event.ComponentListener#componentMoved(java.awt.event.ComponentEvent)
*/
public void componentMoved(ComponentEvent e)
{
}
/* (non-Javadoc)
* @see java.awt.event.ComponentListener#componentResized(java.awt.event.ComponentEvent)
*/
public void componentResized(ComponentEvent e)
{
}
/* (non-Javadoc)
* @see java.awt.event.ComponentListener#componentShown(java.awt.event.ComponentEvent)
*/
public void componentShown(ComponentEvent e)
{
jteInput.requestFocus();
}
/**
* Does some cleanup removing listeners.
*/
public void dispose()
{
OvernetPlugin.getMessageHandler().unsubscribe(CoreStatusMessage.TYPE,
this);
OvernetPlugin.getInstance().getCore().removeStateListener(this);
}
//--- Method(s) ---
/**
* Implements the {@link MessageListener} interface.
*/
public void messageReceived(OvernetMessage msg)
{
if (msg instanceof CoreStatusMessage) {
String message = ((CoreStatusMessage)msg).message;
if (message != null) {
cpConsole.appendLater(message + "\n");
}
}
}
/**
* Implements the {@link StateListener} interface.
*/
public void stateChanged(StateEvent event)
{
OvernetCore core = OvernetPlugin.getInstance().getCore();
String msg =
(core.getDescription() != null) ? core.getDescription()
: core.getState().getDescription();
jlStatus.setText(XNap.tr("Status: {0} ", core.getState()));
cpConsole.appendLater(msg + "\n");
}
private void initialize()
{
setLayout(new GridBagLayout());
GridBagHelper.add(this,
DefaultComponentFactory.getInstance().createSeparator(XNap
.tr("Core Connection")));
JPanel jpTop = new JPanel(new BorderLayout());
GridBagHelper.add(this, jpTop);
JPanel jpButtons = new JPanel(new FlowLayout());
jpButtons.add(new XNapButton(acConnect));
jpButtons.add(new XNapButton(acDisconnect));
jpTop.add(jpButtons, BorderLayout.WEST);
jpTop.add(jlStatus, BorderLayout.EAST);
// console
GridBagHelper.add
(this,
DefaultComponentFactory.getInstance().createSeparator
(XNap.tr("Console")));
GridBagHelper.addPanel(this, cpConsole);
// register Shift+Page_UP and Shift+Page_DOWN for console
ActionListener al =
cpConsole.getActionForKeyStroke
(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN, 0));
cpConsole.registerKeyboardAction
(al,
KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_DOWN, KeyEvent.SHIFT_MASK),
WHEN_IN_FOCUSED_WINDOW);
al = cpConsole.getActionForKeyStroke
(KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, 0));
cpConsole.registerKeyboardAction
(al,
KeyStroke.getKeyStroke(KeyEvent.VK_PAGE_UP, KeyEvent.SHIFT_MASK),
WHEN_IN_FOCUSED_WINDOW);
// input
Box boxBottom = new Box(BoxLayout.X_AXIS);
boxBottom.add(jteInput);
GUIHelper.bindEnterKey(jteInput, acSend);
boxBottom.add(Box.createHorizontalStrut(5));
boxBottom.add(new JButton(acSend));
GridBagHelper.add(this, boxBottom);
}
/**
* Sends a command.
*/
private class SendAction extends AbstractAction
{
public SendAction()
{
putValue(Action.NAME, XNap.tr("Send"));
putValue(Action.SHORT_DESCRIPTION, XNap.tr("Sends command."));
putValue(Action.MNEMONIC_KEY, new Integer('S'));
}
public void actionPerformed(ActionEvent event)
{
String s = jteInput.getText();
if (s.length() > 0) {
OvernetCore.send(new CommandMessage(s.trim()));
jteInput.setText("");
}
}
}
}
The table below shows all metrics for OvernetPanel.java.




