org.jogre.client.awt
Class JogreTableFrame

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjava.awt.Window
              extended byjava.awt.Frame
                  extended byjavax.swing.JFrame
                      extended byorg.jogre.client.awt.JogreTableFrame
All Implemented Interfaces:
Accessible, ImageObserver, ITable, MenuContainer, Observer, RootPaneContainer, Serializable, WindowConstants

public abstract class JogreTableFrame
extends JFrame
implements ITable, Observer

The important JogreTableFrame which is where each game is played. Each time a new table is created one of these frames appear. This class creates the buttons at the top of the screen, the player list at the bottom left and the message chat box on the bottom right. The main game area is set in the sub classes e.g. ChessTableFrame using the setGamePanel (JPanel) method.

To use this class a class must extend it e.g. ChesTableFrame. Its fields must include a data model (JogreModel e.g. ChessModel), a view of the data (JogreComponent e.g. ChessBoardComponent) and a controller (JogreController e.g. ChessController) for understanding mouse movements etc on the view.

The constructor in the sub class should initialise these MVC fields and MUST call the setMVC (model, view, controller) method as this class makes use of these.

Version:
Alpha 0.2.3
Author:
Bob Marks, Garrett Lehman (Gman)
See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JFrame
JFrame.AccessibleJFrame
 
Nested classes inherited from class java.awt.Frame
Frame.AccessibleAWTFrame
 
Nested classes inherited from class java.awt.Window
Window.AccessibleAWTWindow
 
Nested classes inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  TableConnectionThread conn
           
protected  JogreController gameController
           
protected  JogreComponent gameMainView
           
protected  JogreModel gameModel
           
protected  JogreButton inviteButton
           
protected  ChatTableComponent messageComponent
           
protected  JogreButton offerDrawButton
           
protected  Player player
           
protected  JogreButton resignButton
           
protected  JogreButton sitButton
           
protected  JogreButton standButton
           
protected  JogreButton startButton
           
protected  Table table
           
protected  int tableNum
           
protected  String username
           
 
Fields inherited from class javax.swing.JFrame
accessibleContext, EXIT_ON_CLOSE, rootPane, rootPaneCheckingEnabled
 
Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, MAXIMIZED_BOTH, MAXIMIZED_HORIZ, MAXIMIZED_VERT, MOVE_CURSOR, N_RESIZE_CURSOR, NE_RESIZE_CURSOR, NORMAL, NW_RESIZE_CURSOR, S_RESIZE_CURSOR, SE_RESIZE_CURSOR, SW_RESIZE_CURSOR, TEXT_CURSOR, W_RESIZE_CURSOR, WAIT_CURSOR
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface javax.swing.WindowConstants
DISPOSE_ON_CLOSE, DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, PROPERTIES, SOMEBITS
 
Constructor Summary
JogreTableFrame(TableConnectionThread conn)
          Constructor which doesn't take a width and height.
JogreTableFrame(TableConnectionThread conn, int width, int height)
          Constructor to a standard JogreGameFrame.
 
Method Summary
 void addToTopPanel(Component component)
          Method to add additional components (such as buttons etc) to the top right hand side of the screen.
 JogreController getController()
          Accessor for the game controller.
 JogreInviteDialog getInviteDialog()
          Get invite dialog
 ChatGameComponent getMessageComponent()
          Accessor for the small message box with each table.
 JogreModel getModel()
          Accessor for the game controller.
 void leaveTable()
          Player leaves the table.
protected  void receiveMessage(XMLElement message)
          Adapter method for receiving a custom message.
 void receiveTableMessage(XMLElement message)
          Implementation of the ITable interface.
 void setGamePanel(JogrePanel gamePanel)
          Set the empty panel in the screen equal to the game panel.
 void setTableFramesHash(HashMap tableFramesHash)
          Set the link to the table frames hash in the JogreClientFrame (must be deleted when the client is removed).
 void setupMVC(JogreModel model, JogreComponent mainView, JogreController controller)
          Sets up the MVC for this table.
 void startGame()
          Start the game (Empty adapter method).
 void update(Observable obs, Object obj)
          Update and refresh the buttons when the data changes.
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, update
 
Methods inherited from class java.awt.Frame
addNotify, finalize, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setIconImage, setMaximizedBounds, setMenuBar, setResizable, setState, setTitle, setUndecorated
 
Methods inherited from class java.awt.Window
addPropertyChangeListener, addPropertyChangeListener, addWindowFocusListener, addWindowListener, addWindowStateListener, applyResourceBundle, applyResourceBundle, createBufferStrategy, createBufferStrategy, dispose, getBufferStrategy, getFocusableWindowState, getFocusCycleRootAncestor, getFocusOwner, getFocusTraversalKeys, getGraphicsConfiguration, getInputContext, getListeners, getLocale, getMostRecentFocusOwner, getOwnedWindows, getOwner, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindowStateListeners, hide, isActive, isFocusableWindow, isFocusCycleRoot, isFocused, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationRelativeTo, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setFocusTraversalKeys, setFocusTraversalPolicy, setFont, transferFocusBackward, transferFocusDownCycle, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isOpaque, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

username

protected String username

conn

protected TableConnectionThread conn

tableNum

protected int tableNum

gameModel

protected JogreModel gameModel

gameController

protected JogreController gameController

gameMainView

protected JogreComponent gameMainView

table

protected Table table

player

protected Player player

messageComponent

protected ChatTableComponent messageComponent

sitButton

protected JogreButton sitButton

standButton

protected JogreButton standButton

startButton

protected JogreButton startButton

offerDrawButton

protected JogreButton offerDrawButton

resignButton

protected JogreButton resignButton

inviteButton

protected JogreButton inviteButton
Constructor Detail

JogreTableFrame

public JogreTableFrame(TableConnectionThread conn,
                       int width,
                       int height)
Constructor to a standard JogreGameFrame. NOTE: Every contructor of a sub class of this must call the setMVC (model, view, controller) method.

Parameters:
conn - Client connection thread which holds the link to the server, user and table lists.
width - Width of the table frame.
height - Height of the table frame.

JogreTableFrame

public JogreTableFrame(TableConnectionThread conn)
Constructor which doesn't take a width and height.

Parameters:
conn - Table connection thread.
Method Detail

setTableFramesHash

public void setTableFramesHash(HashMap tableFramesHash)
Set the link to the table frames hash in the JogreClientFrame (must be deleted when the client is removed).

Parameters:
tableFramesHash -

leaveTable

public void leaveTable()
Player leaves the table.


setGamePanel

public void setGamePanel(JogrePanel gamePanel)
Set the empty panel in the screen equal to the game panel.

Parameters:
gamePanel -

addToTopPanel

public void addToTopPanel(Component component)
Method to add additional components (such as buttons etc) to the top right hand side of the screen.

Parameters:
component -

getController

public JogreController getController()
Accessor for the game controller.

Returns:

getModel

public JogreModel getModel()
Accessor for the game controller.

Returns:

getMessageComponent

public ChatGameComponent getMessageComponent()
Accessor for the small message box with each table.

Returns:

getInviteDialog

public JogreInviteDialog getInviteDialog()
Get invite dialog


receiveTableMessage

public void receiveTableMessage(XMLElement message)
Implementation of the ITable interface.

Specified by:
receiveTableMessage in interface ITable
Parameters:
message - Message from server.
See Also:
ITable.receiveTableMessage(nanoxml.XMLElement)

receiveMessage

protected void receiveMessage(XMLElement message)
Adapter method for receiving a custom message.

See Also:
ITable.receiveTableMessage(nanoxml.XMLElement)

startGame

public void startGame()
Start the game (Empty adapter method).


setupMVC

public void setupMVC(JogreModel model,
                     JogreComponent mainView,
                     JogreController controller)
Sets up the MVC for this table. This method must be called from the constructor of any sub class of this class as this class refers to the JogreModel and JogreController.

Parameters:
model -
mainView -
controller -

update

public void update(Observable obs,
                   Object obj)
Update and refresh the buttons when the data changes.

Specified by:
update in interface Observer
See Also:
Observer.update(java.util.Observable, java.lang.Object)