⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clientpanel.java

📁 Java mulitplayer strategy game. Adaptation of KDE Galaxy Conquest. (rules are changed - but still th
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/*
 * 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 + -