ca.live.hk12.crescent.client.view.ConnectionFrame.java Source code

Java tutorial

Introduction

Here is the source code for ca.live.hk12.crescent.client.view.ConnectionFrame.java

Source

/**
 * You should have received a copy of the GNU General Public License version 3
 * along with this work; Please find the Copyright information and Terms and
 * Conditions in the ClientLauncher.java or ServerLauncher.java file.
 */

package ca.live.hk12.crescent.client.view;

import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import ca.live.hk12.crescent.client.model.GameModel;

import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;

public class ConnectionFrame extends JFrame {

    private static final long serialVersionUID = -6263136233957731229L;

    private JPanel contentPane;
    private JTextField textField;
    private final Action connect = new SwingAction();

    private GameModel model;

    public ConnectionFrame(GameModel model) {
        this.model = model;
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(new FormLayout(
                new ColumnSpec[] { FormFactory.RELATED_GAP_COLSPEC, ColumnSpec.decode("default:grow"), },
                new RowSpec[] { FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC,
                        FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC,
                        FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC,
                        FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC,
                        FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC,
                        FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC,
                        FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC,
                        FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC,
                        FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC,
                        FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, }));

        JLabel lblConnectToServer = new JLabel("Connect to Server");
        contentPane.add(lblConnectToServer, "2, 2");

        JLabel lblServerIp = new JLabel("Server IP");
        contentPane.add(lblServerIp, "2, 6");

        textField = new JTextField("localhost");
        contentPane.add(textField, "2, 8, fill, default");
        textField.setColumns(10);

        JButton btnConnect = new JButton("Connect");
        btnConnect.setAction(connect);
        contentPane.add(btnConnect, "2, 10");
        btnConnect.setFocusable(false);

        JLabel lblStatus = new JLabel("Status: No Connection.");
        contentPane.add(lblStatus, "2, 20");
    }

    private class SwingAction extends AbstractAction {
        private static final long serialVersionUID = 8398910436762078990L;

        public SwingAction() {
            putValue(NAME, "Connect");
            putValue(SHORT_DESCRIPTION, "Connect to server.");
        }

        public void actionPerformed(ActionEvent e) {
            connect(textField.getText());
        }
    }

    private void connect(String ip) {
        model.getConnection().connect(ip);
    }

}