client
Class GameView

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--java.awt.Window
                    |
                    +--java.awt.Frame
                          |
                          +--client.GameView

public class GameView
extends java.awt.Frame

This class implements the view on a BoardGame. The GameView contains a grid of Place objects that intercept mouse clicks and forward them to the game.

GameView is also an Observer for the game. When the game notifies the Applet of state change, it updates the corresponding Place.

Below the grid there is a Label component to display messages.

To do:

Version:
3.0 1999-04-02
Author:
Oscar.Nierstrasz@acm.org
See Also:
Serialized Form

Fields inherited from class java.awt.Frame
CROSSHAIR_CURSOR, DEFAULT_CURSOR, E_RESIZE_CURSOR, HAND_CURSOR, ICONIFIED, 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
 
Constructor Summary
GameView(RemoteGameFactory gameFactory)
          Instantiates the RemoteGame.
 
Method Summary
protected  void error(java.lang.String s)
          Display a serious error.
 RemoteGame game()
           
 char mark()
           
 void showFeedBack(java.lang.String msg)
          Displays a feedback string in the associated Label component.
 void update(Move move)
          Called by the GameObserver when the game's state changes.
 
Methods inherited from class java.awt.Frame
addNotify, finalize, getCursorType, getFrames, getIconImage, getMenuBar, getState, getTitle, isResizable, paramString, remove, removeNotify, setCursor, setIconImage, setMenuBar, setResizable, setState, setTitle
 
Methods inherited from class java.awt.Window
addWindowListener, applyResourceBundle, applyResourceBundle, dispose, getFocusOwner, getInputContext, getLocale, getOwnedWindows, getOwner, getToolkit, getWarningString, isShowing, pack, postEvent, processEvent, processWindowEvent, removeWindowListener, show, toBack, toFront
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getInsets, getLayout, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, remove, removeAll, removeContainerListener, setFont, setLayout, update, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addPropertyChangeListener, addPropertyChangeListener, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, disable, disableEvents, dispatchEvent, enable, enable, enableEvents, enableInputMethods, firePropertyChange, getBackground, getBounds, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getInputMethodRequests, getLocation, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getSize, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isDisplayable, isDoubleBuffered, isEnabled, isFocusTraversable, 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, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, removeComponentListener, removeFocusListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setForeground, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

GameView

public GameView(RemoteGameFactory gameFactory)
Instantiates the RemoteGame. Initializes the view components, and connects the view (this object) to the model (RemoteGame).
Parameters:
gameFactory - a remote object obtained by the applet
Method Detail

game

public RemoteGame game()
Returns:
the RemoteGame associated with this view

mark

public char mark()
Returns:
the mark ('X' or 'O') associated with this view

showFeedBack

public void showFeedBack(java.lang.String msg)
Displays a feedback string in the associated Label component.
Parameters:
msg - the string to display

error

protected void error(java.lang.String s)
Display a serious error.

update

public void update(Move move)
Called by the GameObserver when the game's state changes. Note that GameView is not a Remote object. Since Java supports only single inheritance, GameView cannot extend both Frame and UnicastRemoteObject. To make the GameView accessible to the server, we must introduce a delegate GameObserver which is a remote object visible to the server, and which simply passes updates to the GameView.
Parameters:
move - an instance of Move
See Also:
GameObserver, Move