ClientConnectionGUI.java Source code

Java tutorial

Introduction

Here is the source code for ClientConnectionGUI.java

Source

import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.border.*;
import com.jgoodies.forms.factories.*;
import com.jgoodies.forms.layout.*;
/*
 * Created by JFormDesigner on Wed Jun 13 11:46:29 MDT 2012
 */

/**
 * @author Austin Seber
 */
public class ClientConnectionGUI extends JDialog {

    private static final long serialVersionUID = 1L;
    private GUINotificationWorker worker;

    public ClientConnectionGUI(Frame owner) {

        super(owner);
        initComponents();

    }

    public ClientConnectionGUI(Dialog owner) {

        super(owner);
        initComponents();

    }

    public void displayErrorMessage(String message) {

        closeNotificationThread();
        this.worker = new GUINotificationWorker(notificationTextField, message, 5, 500, 30);
        this.worker.start();

    }

    @Override
    public void dispose() {

        closeNotificationThread();
        ClientBase.clientConnectionGUI = null;
        super.dispose();

    }

    public void closeNotificationThread() {

        try {

            this.worker.interrupt();

        }

        catch (NullPointerException e) {
        }

    }

    private void connectButtonMouseClicked() {

        while (true) {

            String serverAddress, serverName;
            int serverPort;

            serverAddress = serverAddressTextField.getText();

            if (serverAddress.equals("")) {

                this.displayErrorMessage("Server address field is empty.");
                break;

            }

            serverName = serverNameTextField.getText();

            try {

                serverPort = Integer.valueOf(serverPortTextField.getText()).intValue();

            }

            catch (NumberFormatException e2) {

                this.displayErrorMessage("Invalid port.");
                break;

            }

            if (ServerConnection.connect(serverAddress, serverName, serverPort)) {

                CommunicationThreadHandler.connectedToServer();
                new Packet01().write("Chat Program; Version: " + ClientBase.VERSION);
                HeartbeatMonitor monitor = new HeartbeatMonitor();
                monitor.start();
                ClientBase.heartbeatMonitor = monitor;
                break;

            }

            else {

                this.displayErrorMessage(
                        "Could not connect to \"" + serverAddress + "\" on port " + serverPort + ".");
                serverAddressTextField.requestFocusInWindow();
                break;

            }

        }

    }

    private void cancelButtonMouseClicked() {

        CommunicationThreadHandler.quitServer();

    }

    private void initComponents() {
        // JFormDesigner - Component initialization - DO NOT MODIFY  //GEN-BEGIN:initComponents
        // Generated using JFormDesigner Evaluation license - Austin Seber
        clientConnectionGUI = new JPanel();
        contentPanel = new JPanel();
        serverAddressTextField = new JTextField();
        serverNameTextField = new JTextField();
        serverPortTextField = new JTextField();
        saveServerInformationCheckButton = new JCheckBox();
        buttonBar = new JPanel();
        notificationTextField = new JTextField();
        connectButton = new JButton();
        cancelButton = new JButton();

        //======== this ========
        setTitle("Connect to a server");
        setResizable(false);
        Container contentPane = getContentPane();
        contentPane.setLayout(new BorderLayout());

        //======== clientConnectionGUI ========
        {
            clientConnectionGUI.setBorder(Borders.DIALOG_BORDER);

            clientConnectionGUI.setLayout(new BorderLayout());

            //======== contentPanel ========
            {
                contentPanel.setLayout(new FormLayout("135dlu, $lcgap, 106dlu", "2*(default, $lgap), default"));

                //---- serverAddressTextField ----
                serverAddressTextField.setBorder(new TitledBorder(null, "Server address", TitledBorder.LEADING,
                        TitledBorder.DEFAULT_POSITION, null, Color.black));
                serverAddressTextField.setBackground(new Color(240, 240, 240));
                serverAddressTextField.setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
                serverAddressTextField.setText("localhost");
                contentPanel.add(serverAddressTextField, CC.xywh(1, 1, 3, 1));
                serverAddressTextField.addKeyListener(new KeyListener() {

                    @Override
                    public void keyPressed(KeyEvent key) {

                        if (key.getKeyCode() == KeyEvent.VK_ENTER) {

                            connectButtonMouseClicked();

                        }

                        if (key.getKeyCode() == KeyEvent.VK_ESCAPE) {

                            cancelButtonMouseClicked();

                        }

                    }

                    @Override
                    public void keyReleased(KeyEvent e) {
                    }

                    @Override
                    public void keyTyped(KeyEvent e) {
                    }

                });

                //---- serverNameTextField ----
                serverNameTextField.setBorder(new TitledBorder(null, "Server name", TitledBorder.LEADING,
                        TitledBorder.DEFAULT_POSITION, null, Color.black));
                serverNameTextField.setBackground(new Color(240, 240, 240));
                serverNameTextField.setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
                contentPanel.add(serverNameTextField, CC.xy(1, 3));

                //---- serverPortTextField ----
                serverPortTextField.setBorder(new TitledBorder(null, "Server port", TitledBorder.LEADING,
                        TitledBorder.DEFAULT_POSITION, null, Color.black));
                serverPortTextField.setBackground(new Color(240, 240, 240));
                serverPortTextField.setCursor(Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR));
                serverPortTextField.setText("25566");
                contentPanel.add(serverPortTextField, CC.xy(3, 3));
                serverPortTextField.addKeyListener(new KeyListener() {

                    @Override
                    public void keyPressed(KeyEvent key) {

                        if (key.getKeyCode() == KeyEvent.VK_ENTER) {

                            connectButtonMouseClicked();

                        }

                        if (key.getKeyCode() == KeyEvent.VK_ESCAPE) {

                            cancelButtonMouseClicked();

                        }

                    }

                    @Override
                    public void keyReleased(KeyEvent e) {
                    }

                    @Override
                    public void keyTyped(KeyEvent e) {
                    }

                });

                //---- saveServerInformationCheckButton ----
                saveServerInformationCheckButton.setText("Save server information");
                saveServerInformationCheckButton.setBorder(new LineBorder(new Color(0, 0, 0, 0), 2));
                contentPanel.add(saveServerInformationCheckButton, CC.xy(3, 5));
            }
            clientConnectionGUI.add(contentPanel, BorderLayout.WEST);

            //======== buttonBar ========
            {
                buttonBar.setBorder(Borders.BUTTON_BAR_GAP_BORDER);
                buttonBar.setLayout(new FormLayout("$lcgap, 133dlu, $lcgap, $button, $rgap, $button", "pref"));

                //---- notificationTextField ----
                notificationTextField.setBorder(new LineBorder(new Color(0, 0, 0, 0), 2));
                notificationTextField.setBackground(new Color(240, 240, 240));
                notificationTextField.setEditable(false);
                buttonBar.add(notificationTextField, CC.xy(2, 1));

                //---- connectButton ----
                connectButton.setText("Connect");
                connectButton.addActionListener(new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent arg0) {

                        connectButtonMouseClicked();

                    }

                });
                buttonBar.add(connectButton, CC.xy(4, 1));

                //---- cancelButton ----
                cancelButton.setText("Cancel");
                cancelButton.addActionListener(new ActionListener() {

                    @Override
                    public void actionPerformed(ActionEvent arg0) {

                        cancelButtonMouseClicked();

                    }

                });
                buttonBar.add(cancelButton, CC.xy(6, 1));
            }
            clientConnectionGUI.add(buttonBar, BorderLayout.SOUTH);
        }
        contentPane.add(clientConnectionGUI, BorderLayout.CENTER);
        pack();
        setLocationRelativeTo(getOwner());
        // JFormDesigner - End of component initialization  //GEN-END:initComponents

        serverNameTextField.setEnabled(false);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        connectButton.setFocusable(false);
        //connectButton.setMnemonic(KeyEvent.VK_ENTER); //Make the enter key connect to the server as if you were pressing it.
        cancelButton.setFocusable(false);
        //cancelButton.setMnemonic(KeyEvent.VK_ESCAPE); //Make the escape key quit from the menu as if you were pressing it.

    }

    // JFormDesigner - Variables declaration - DO NOT MODIFY  //GEN-BEGIN:variables
    // Generated using JFormDesigner Evaluation license - Austin Seber
    private JPanel clientConnectionGUI;
    private JPanel contentPanel;
    private JTextField serverAddressTextField;
    private JTextField serverNameTextField;
    private JTextField serverPortTextField;
    private JCheckBox saveServerInformationCheckButton;
    private JPanel buttonBar;
    private JTextField notificationTextField;
    private JButton connectButton;
    private JButton cancelButton;
    // JFormDesigner - End of variables declaration  //GEN-END:variables
}