thegame.client
Class GameClient.StartScreen

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JPanel
                          |
                          +--thegame.client.GameClient.StartScreen
All Implemented Interfaces:
javax.accessibility.Accessible, GameClientConstants.StartScreenConstants, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable
Enclosing class:
GameClient

protected class GameClient.StartScreen
extends javax.swing.JPanel
implements GameClientConstants.StartScreenConstants

The start screen where the user can select a name and create or join a game.

Version:
0.99 (2000/08/28)
Author:
Erki Suurjaak
See Also:
Serialized Form

Inner classes inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Inner classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Inner classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Inner classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent
 
Field Summary
protected  javax.swing.JButton[] allButtons
          References all the buttons.
protected  java.awt.event.ActionListener[] BUTTON_ACTION_LISTENERS
          References the ActionListeners for all the buttons.
protected  boolean[] componentIsEnabled
          Is used by setNeededComponentsEnabled(boolean) to save and load the state of the components that need to be enabled or disabled.
protected  javax.swing.JTextField enterNameField
          Is used by the player to enter his/her name.
protected  javax.swing.JLabel enterNameFieldLabel
          The label for enterNameField.
protected  javax.swing.JLabel informationLabel
          The label that holds information about the game.
protected  java.lang.String localPlayerNameToBeValidated
          Is used to temporarily hold the entered player name that has been sent to the server for validation and registration.
protected  java.awt.event.ActionListener ON_ACCEPT_NAME_BUTTON_CLICK
          The event handler for the "Accept name" button.
protected  java.awt.event.ActionListener ON_CREATE_GAME_BUTTON_CLICK
          The event handler for the "Create game" button.
protected  java.awt.event.ActionListener ON_JOIN_GAME_BUTTON_CLICK
          The event handler for the "Join game" button.
protected  javax.swing.event.ListSelectionListener ON_PLAYER_NAMES_LIST_CLICK
          The event handler for a selection value change on playerNamesList.
protected  java.awt.event.MouseListener ON_PLAYER_NAMES_LIST_DOUBLE_CLICK
          The event handler for a double-click on playerNamesList.
protected  java.awt.event.KeyListener ON_PLAYER_NAMES_LIST_PRESS_ENTER
          The event handler for a keypress on playerNamesList.
protected  java.awt.event.ActionListener ON_QUIT_GAME_BUTTON_CLICK
          The event handler for the "Quit game" button.
protected  javax.swing.JLabel pictureAndCopyrightLabel
          The label that holds a picture and a copyright notice.
protected  javax.swing.JList playerNamesList
          Is used to show the names of the players that can be joined.
protected  javax.swing.DefaultListModel playerNamesListModel
          Represents the contents of playerNamesList.
protected  java.lang.String remotePlayerNameToBeJoined
          Is used to temporarily hold the name of the remote player the local player wanted to join
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface thegame.client.GameClientConstants.StartScreenConstants
ACCEPT_NAME_BUTTON_LABEL, ACCEPT_NAME_BUTTON_MNEMONIC, ACCEPT_NAME_BUTTON_NUMBER, ACCEPT_NAME_BUTTON_TOOL_TIP, BUTTON_INSETS, BUTTON_LABELS, BUTTON_MNEMONICS, BUTTON_PANEL_COLS, BUTTON_PANEL_ROWS, BUTTON_TOOL_TIPS, CREATE_GAME_BUTTON_CLICK_MESSAGE_OPTIONS, CREATE_GAME_BUTTON_CLICK_MESSAGE_TEXT, CREATE_GAME_BUTTON_CLICK_MESSAGE_TITLE, CREATE_GAME_BUTTON_LABEL, CREATE_GAME_BUTTON_MNEMONIC, CREATE_GAME_BUTTON_NUMBER, CREATE_GAME_BUTTON_TOOL_TIP, ENABLED_AT_STARTUP, ENTER_NAME_FIELD_COLS, ENTER_NAME_FIELD_LABEL_TEXT, ENTER_NAME_FIELD_MNEMONIC, GAME_BUTTONS, INFORMATION_LABEL_TEXT, JOIN_GAME_BUTTON_LABEL, JOIN_GAME_BUTTON_MNEMONIC, JOIN_GAME_BUTTON_NUMBER, JOIN_GAME_BUTTON_TOOL_TIP, JOIN_GAME_FAILED_MESSAGE_TEXT, JOIN_GAME_FAILED_MESSAGE_TITLE, LABELS_FONT, NUMBER_OF_BUTTONS, NUMBER_OF_COMPONENTS_TO_DISABLE, PICTURE_AND_COPYRIGHT_LABEL_TEXT, PLAYER_NAME_NOT_OK_MESSAGE_TITLE, PLAYER_NAMES_LIST_INSETS, PLAYER_NAMES_LIST_LABEL_TEXT, PLAYER_NAMES_LIST_PROTOTYPE_VALUE, PLAYER_NAMES_LIST_ROWS, QUIT_GAME_BUTTON_LABEL, QUIT_GAME_BUTTON_MNEMONIC, QUIT_GAME_BUTTON_TOOL_TIP, START_SCREEN_PICTURE, START_SCREEN_PICTURE_PATH
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
GameClient.StartScreen(boolean isLocalPlayerAlreadyNamed)
          Constructs a StartScreen.
 
Method Summary
 void handleJoinGameFailedMessage()
          Handles a message from the server indicating that an attempt to join a player failed.
 void handleJoinGameSucceededMessage(boolean isLocalPlayerDrawingCircles)
          Handles a message from the server indicating that an attempt to join a player succeeded.
 void handlePlayerListMessage(java.lang.String[] playerNames)
          Handles a message from the server containing the list of waiting players.
 void handlePlayerNameNotOKMessage(java.lang.String errorMessage)
          Handles a message from the server indicating that the entered name could not be accepted.
 void handlePlayerNameOKMessage()
          Handles a message from the server indicating that the entered name had been validated.
 void setNeededComponentsEnabled(boolean enabled)
          Sets certain predetermined components enabled or disabled.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUIClassID, paramString, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getVerifyInputWhenFocusTarget, getWidth, getVisibleRect, getX, getY, grabFocus, hasFocus, hide, isDoubleBuffered, isFocusCycleRoot, isFocusTraversable, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processFocusEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getLayout, insets, invalidate, isAncestorOf, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setLayout, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, imageUpdate, inside, isDisplayable, isEnabled, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

allButtons

protected javax.swing.JButton[] allButtons
References all the buttons.

BUTTON_ACTION_LISTENERS

protected java.awt.event.ActionListener[] BUTTON_ACTION_LISTENERS
References the ActionListeners for all the buttons.

componentIsEnabled

protected boolean[] componentIsEnabled
Is used by setNeededComponentsEnabled(boolean) to save and load the state of the components that need to be enabled or disabled.

enterNameField

protected javax.swing.JTextField enterNameField
Is used by the player to enter his/her name.

enterNameFieldLabel

protected javax.swing.JLabel enterNameFieldLabel
The label for enterNameField.

informationLabel

protected javax.swing.JLabel informationLabel
The label that holds information about the game.

localPlayerNameToBeValidated

protected java.lang.String localPlayerNameToBeValidated
Is used to temporarily hold the entered player name that has been sent to the server for validation and registration.

ON_ACCEPT_NAME_BUTTON_CLICK

protected final java.awt.event.ActionListener ON_ACCEPT_NAME_BUTTON_CLICK
The event handler for the "Accept name" button. Sends the entered player name to the server for validation and sets certain elements of the interface disabled to disallow the player to enter a new name while the previous name is still being validated.

ON_CREATE_GAME_BUTTON_CLICK

protected final java.awt.event.ActionListener ON_CREATE_GAME_BUTTON_CLICK
The event handler for the "Create game" button. Asks the player for a symbol to be drawn (cross or circle) and brings up a GameScreen.

ON_JOIN_GAME_BUTTON_CLICK

protected final java.awt.event.ActionListener ON_JOIN_GAME_BUTTON_CLICK
The event handler for the "Join game" button. Sends a join request to the server and sets certain elements of the interface disabled to disallow the player to create or join a game while the previous join request is still being handled.

ON_PLAYER_NAMES_LIST_CLICK

protected final javax.swing.event.ListSelectionListener ON_PLAYER_NAMES_LIST_CLICK
The event handler for a selection value change on playerNamesList. If a value was selected in the playerNamesList, then the "Join game" button is enabled if the user has entered a name. If a value was deselected in the playerNamesList, then the "Join game" button is disabled.

ON_PLAYER_NAMES_LIST_DOUBLE_CLICK

protected final java.awt.event.MouseListener ON_PLAYER_NAMES_LIST_DOUBLE_CLICK
The event handler for a double-click on playerNamesList. Calls doClick() from the "Join game" button.

ON_PLAYER_NAMES_LIST_PRESS_ENTER

protected final java.awt.event.KeyListener ON_PLAYER_NAMES_LIST_PRESS_ENTER
The event handler for a keypress on playerNamesList. If the pressed key was enter, then doClick() from the "Join game" button is called.

ON_QUIT_GAME_BUTTON_CLICK

protected final java.awt.event.ActionListener ON_QUIT_GAME_BUTTON_CLICK
The event handler for the "Quit game" button. Calls terminate() from GameClient.

pictureAndCopyrightLabel

protected javax.swing.JLabel pictureAndCopyrightLabel
The label that holds a picture and a copyright notice.

playerNamesList

protected javax.swing.JList playerNamesList
Is used to show the names of the players that can be joined. Gets its contents from playerNamesListModel.

playerNamesListModel

protected javax.swing.DefaultListModel playerNamesListModel
Represents the contents of playerNamesList.

remotePlayerNameToBeJoined

protected java.lang.String remotePlayerNameToBeJoined
Is used to temporarily hold the name of the remote player the local player wanted to join
Constructor Detail

GameClient.StartScreen

public GameClient.StartScreen(boolean isLocalPlayerAlreadyNamed)
Constructs a StartScreen.
Parameters:
isLocalPlayerAlreadyNamed - true if the player has already entered a name, false otherwise
Method Detail

handleJoinGameFailedMessage

public void handleJoinGameFailedMessage()
Handles a message from the server indicating that an attempt to join a player failed. Informs the player and sets certain elements of the interface enabled to allow the player to join or create a game.

handleJoinGameSucceededMessage

public void handleJoinGameSucceededMessage(boolean isLocalPlayerDrawingCircles)
Handles a message from the server indicating that an attempt to join a player succeeded. Brings up a GameScreen.
Parameters:
isLocalPlayerDrawingCircles - true if the player will draw circles; false if the player will draw crosses

handlePlayerListMessage

public void handlePlayerListMessage(java.lang.String[] playerNames)
Handles a message from the server containing the list of waiting players. Updates the contents of playerNamesList.
Parameters:
playerNames - the player names that have been sent by the server

handlePlayerNameNotOKMessage

public void handlePlayerNameNotOKMessage(java.lang.String errorMessage)
Handles a message from the server indicating that the entered name could not be accepted. Displays errorMessage and sets certain elements of the interface enabled to allow the player to enter a new name.
Parameters:
errorMessage - the error message sent by the server

handlePlayerNameOKMessage

public void handlePlayerNameOKMessage()
Handles a message from the server indicating that the entered name had been validated. Sets certain elements of the interface enabled to allow the player to create or join a game.

setNeededComponentsEnabled

public void setNeededComponentsEnabled(boolean enabled)
Sets certain predetermined components enabled or disabled. Used when performing functions like validating a player name etc.
Parameters:
enabled - true if components must be enabled; false otherwise.