📄 clientpanel.java
字号:
/*
* ClientPanel.java
*
* Created on 1 pa焏ziernik 2005, 13:49
*/
package net.sf.jawp.gui.client;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GraphicsConfiguration;
import java.awt.event.MouseAdapter;
import java.lang.reflect.InvocationTargetException;
import java.util.Collection;
import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel;
import net.sf.jawp.api.domain.BattleReportVO;
import net.sf.jawp.api.domain.Fleet;
import net.sf.jawp.api.domain.Planet;
import net.sf.jawp.api.domain.Realm;
import net.sf.jawp.client.GameData;
import net.sf.jawp.gf.api.domain.PlayerStatus;
import net.sf.jawp.gui.client.data.FleetsTableModelX;
import net.sf.jawp.gui.client.data.PlanetsTableModel;
import net.sf.jawp.gui.client.data.PlayersTableModel;
import net.sf.jawp.gui.client.j3d.J3DPanel;
import net.sf.jawp.util.Log;
/**
*
* @author jarek
* @todo: add stop for refresher
* @todo: move inner classes to separate file
*/
public class ClientPanel extends javax.swing.JPanel implements
SelectionListener
{
private static boolean isJ3DPanelConstructed = false;
/**
*
*/
private static final long serialVersionUID = 1L;
private static final Log LOG = Log.getLog(ClientPanel.class);
private GameData gameDataManager;
private J3DPanel j3DPanel;
private final PlanetViewPanel planetViewPanel;
private final PlanetViewPanel toPlanetViewPanel;
private PlanetsTableModel planetsTableModel;
private FleetsTableModelX fleetsTableModel;
private PlayersTableModel playersTableModel;
private Refresher refresher;
private Planet fromPlanet;
private Planet toPlanet;
private final GraphicsConfiguration graphConf;
private final Object monitor3D = new Object();
private final SelectionController selectionController;
private TableColumnModel fleetsColumnModel;
private TableColumnModel planetsColumnModel;
private JTableHeader fleetsTableHeader;
private JTableHeader planetsTableHeader;
private boolean defeated = false;
/**
* Creates new form ClientPanel
*
* @param configuration
*/
public ClientPanel(final GameData mgr,
final GraphicsConfiguration configuration)
{
try
{
this.gameDataManager = mgr;
this.selectionController = new SelectionController();
this.graphConf = configuration;
this.planetsTableModel = new PlanetsTableModel(mgr);
this.fleetsTableModel = new FleetsTableModelX(mgr);
this.planetViewPanel = new PlanetViewPanel("Selected");
this.planetViewPanel.setData(mgr);
this.toPlanetViewPanel = new PlanetViewPanel("Target");
this.toPlanetViewPanel.setData(mgr);
initComponents();
this.refresher = new Refresher();
this.refresher.start();
this.selectionController.addListener(this);
planetsTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
this.fleetsTable.setTableHeader(getFleetsTableHeader());
this.fleetsTable.getTableHeader().addMouseListener(
new FleetsTableMouseListener());
this.planetsTable.setTableHeader(getPlanetsTableHeader());
this.planetsTable.getTableHeader().addMouseListener(
new PlanetsTableMouseListener());
this.playersTable.setTableHeader(getPlayersTableHeader());
this.playersTable.getTableHeader().addMouseListener(
new PlayersTableMouseListener());
// System.out.println("panel constructor end");
}
catch (final Throwable t)
{
t.printStackTrace();
throw new RuntimeException(t);
}
}
public GameData getGameDataManager()
{
return gameDataManager;
}
public void setGameDataManager(final GameData gameDataManager)
{
this.gameDataManager = gameDataManager;
}
public void dispose()
{
if (this.j3DPanel != null)
{
synchronized (monitor3D)
{
isJ3DPanelConstructed = false;
this.j3DPanel.dispose();
}
}
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents()
{
java.awt.GridBagConstraints gridBagConstraints;
jSplitPane1 = new javax.swing.JSplitPane();
jPanel4 = new javax.swing.JPanel();
jSplitPane2 = new javax.swing.JSplitPane();
jPanel2 = new javax.swing.JPanel();
jTabbedPane1 = new javax.swing.JTabbedPane();
jScrollPane1 = new javax.swing.JScrollPane();
planetsTable = new javax.swing.JTable();
fleetsScrollPane = new javax.swing.JScrollPane();
fleetsTable = new javax.swing.JTable();
j3DPanelOuter = new javax.swing.JPanel();
realmsScrollPane = new javax.swing.JScrollPane();
playersTable = new javax.swing.JTable();
jPanel3 = new javax.swing.JPanel();
realmPanel = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
ownRealmNameTextField = new javax.swing.JTextField();
planetsCntTextField = new javax.swing.JTextField();
shipsCntTextField = new javax.swing.JTextField();
totalProductivityTextField = new javax.swing.JTextField();
jPanel5 = new javax.swing.JPanel();
jScrollPane2 = new javax.swing.JScrollPane();
logsTextArea = new javax.swing.JTextArea();
jPanel1 = new javax.swing.JPanel();
selectedPlanetPanel = this.planetViewPanel;
toPlanetPanelView = toPlanetViewPanel;
movePanel = new javax.swing.JPanel();
fleetSlider = new javax.swing.JSlider();
moveButton = new javax.swing.JButton();
fleetSizeTextField = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
distanceLabel = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
setLayout(new java.awt.BorderLayout());
setBackground(new java.awt.Color(0, 0, 0));
jSplitPane1.setResizeWeight(0.9);
jPanel4.setLayout(new java.awt.BorderLayout());
jSplitPane2.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
jSplitPane2.setResizeWeight(0.8);
jPanel2.setLayout(new java.awt.CardLayout());
jPanel2.setMinimumSize(new java.awt.Dimension(200, 200));
jPanel2.setRequestFocusEnabled(false);
jTabbedPane1.setOpaque(true);
planetsTable.setModel(getPlanetsModel());
planetsTable.setColumnModel(this.getPlanetsTableColumnModel());
planetsTable.setOpaque(false);
planetsTable.addMouseListener(new java.awt.event.MouseAdapter()
{
public void mouseClicked(java.awt.event.MouseEvent evt)
{
planetsTableMouseClicked(evt);
}
});
jScrollPane1.setViewportView(planetsTable);
jTabbedPane1.addTab("Planets", jScrollPane1);
fleetsTable.setModel(getFleetsModel());
fleetsTable.setColumnModel(getFleetsTableColumnModel());
fleetsTable.setVerifyInputWhenFocusTarget(false);
fleetsScrollPane.setViewportView(fleetsTable);
jTabbedPane1.addTab("Fleets", fleetsScrollPane);
j3DPanelOuter.setLayout(new java.awt.BorderLayout());
j3DPanelOuter.addComponentListener(new java.awt.event.ComponentAdapter()
{
public void componentShown(java.awt.event.ComponentEvent evt)
{
j3DPanelOuterComponentShown(evt);
}
});
jTabbedPane1.addTab("3D", j3DPanelOuter);
playersTable.setModel(getPlayersTableModel());
playersTable.setColumnModel(getPlayersTableModel().getColumnModel());
realmsScrollPane.setViewportView(playersTable);
jTabbedPane1.addTab("Players", realmsScrollPane);
jPanel3.setLayout(new java.awt.GridBagLayout());
realmPanel.setLayout(new java.awt.GridBagLayout());
realmPanel.setMinimumSize(new java.awt.Dimension(640, 300));
jLabel2.setText("Realm name");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 0.5;
gridBagConstraints.weighty = 0.2;
gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
realmPanel.add(jLabel2, gridBagConstraints);
jLabel3.setText("Planets");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weighty = 0.2;
gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
realmPanel.add(jLabel3, gridBagConstraints);
jLabel4.setText("Total ships");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weighty = 0.2;
gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
realmPanel.add(jLabel4, gridBagConstraints);
jLabel5.setText("Total productivity");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weighty = 0.2;
gridBagConstraints.insets = new java.awt.Insets(0, 10, 0, 0);
realmPanel.add(jLabel5, gridBagConstraints);
ownRealmNameTextField.setEditable(false);
ownRealmNameTextField.setText("?");
ownRealmNameTextField.setMinimumSize(new java.awt.Dimension(120, 19));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 0.5;
gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 8);
realmPanel.add(ownRealmNameTextField, gridBagConstraints);
planetsCntTextField.setEditable(false);
planetsCntTextField.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
planetsCntTextField.setText("?");
planetsCntTextField.setMinimumSize(new java.awt.Dimension(120, 19));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 0.5;
gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 8);
realmPanel.add(planetsCntTextField, gridBagConstraints);
shipsCntTextField.setEditable(false);
shipsCntTextField.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
shipsCntTextField.setText("?");
shipsCntTextField.setMinimumSize(new java.awt.Dimension(120, 19));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 0.5;
gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 8);
realmPanel.add(shipsCntTextField, gridBagConstraints);
totalProductivityTextField.setEditable(false);
totalProductivityTextField.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
totalProductivityTextField.setText("?");
totalProductivityTextField.setMinimumSize(new java.awt.Dimension(120, 19));
totalProductivityTextField.setPreferredSize(new java.awt.Dimension(120, 19));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 0.5;
gridBagConstraints.insets = new java.awt.Insets(0, 8, 0, 8);
realmPanel.add(totalProductivityTextField, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10);
jPanel3.add(realmPanel, gridBagConstraints);
jTabbedPane1.addTab("Own realm", jPanel3);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -