minesweeper
Class MineField

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JPanel
                          |
                          +--minesweeper.MineField
All Implemented Interfaces:
Accessible, ImageObserver, MenuContainer, Serializable

public class MineField
extends JPanel

A mine fied.

See Also:
Serialized Form

Inner Class Summary
private  class MineField.MineFieldCellListenerWithCoordinates
          A mine field cell listener with cell coordinates.
 
Inner classes inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Inner classes inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent, JComponent.ActionStandin, JComponent.IntVector, JComponent.KeyboardState
 
Inner classes inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Inner classes inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.AWTTreeLock
 
Field Summary
private  boolean bGameAllowed
          The flag indicating whether the game is running.
private  boolean bGameStarted
          The flag indicating whether the game is started.
private static int CELLWIDTH
          The maximum width of columns.
private  int iColumns
          The number of columns.
private  int iInitialMines
          The initial number of mines.
private  int iRows
          The number of rows.
private  JTable jtTable
          The JTable.
private  MineFieldCell[][] mfcCells
          The array of mine field cells.
private  minesweeper.event.MineFieldEvent mfeEvent
          The source of events.
private  AbstractTableModel tmTableModel
          The table model.
 
Fields inherited from class javax.swing.JPanel
defaultLayout, uiClassID
 
Fields inherited from class javax.swing.JComponent
_bounds, accessibleContext, actionMap, ACTIONMAP_CREATED, alignmentX, alignmentY, ANCESTOR_INPUTMAP_CREATED, ANCESTOR_USING_BUFFER, ancestorInputMap, ancestorNotifier, autoscroller, border, changeSupport, clientProperties, CREATED_DOUBLE_BUFFER, flags, FOCUS_INPUTMAP_CREATED, focusInputMap, HAS_FOCUS, htmlKey, htmlView, inputVerifier, IS_DOUBLE_BUFFERED, IS_OPAQUE, IS_PAINTING_TILE, IS_PRINTING, IS_PRINTING_ALL, KEY_EVENTS_ENABLED, KEYBOARD_BINDINGS_KEY, listenerList, maximumSize, minimumSize, NEXT_FOCUS, paintImmediatelyClip, paintingChild, preferredSize, readObjectCallbacks, REQUEST_FOCUS_DISABLED, tmpRect, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, verifyInputWhenFocusTarget, vetoableChangeSupport, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW, WHEN_IN_FOCUSED_WINDOW_BINDINGS, WIF_INPUTMAP_CREATED, windowInputMap
 
Fields inherited from class java.awt.Container
component, containerListener, containerSerializedDataVersion, dbg, dispatcher, layoutMgr, listeningBoundsChildren, listeningChildren, maxSize, ncomponents, printing, printingThreads, serialVersionUID
 
Fields inherited from class java.awt.Component
actionListenerK, adjustmentListenerK, appContext, background, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, componentListener, componentListenerK, componentOrientation, componentSerializedDataVersion, containerListenerK, cursor, dropTarget, enabled, eventMask, focusListener, focusListenerK, font, foreground, graphicsConfig, hasFocus, height, hierarchyBoundsListener, hierarchyBoundsListenerK, hierarchyListener, hierarchyListenerK, incRate, inputMethodListener, inputMethodListenerK, isInc, isPacked, itemListenerK, keyListener, keyListenerK, LEFT_ALIGNMENT, locale, LOCK, metrics, minSize, mouseListener, mouseListenerK, mouseMotionListener, mouseMotionListenerK, name, nameExplicitlySet, newEventsOnly, ownedWindowK, parent, peer, peerFont, popups, prefSize, privateKey, RIGHT_ALIGNMENT, textListenerK, TOP_ALIGNMENT, valid, visible, width, windowClosingException, windowListenerK, x, y
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
MineField(int iColumns, int iRows, int iMines)
          Creates a new mine field, with the specified number of columns and rows and mines.
 
Method Summary
 void addListener(minesweeper.event.MineFieldListener mflListener)
          Adds the specified mine field listener to receive event from this field.
 void dispatchMines(int iAvoidRow, int iAvoidColumn)
          Dispatches the mines in this field, avoiding the cell of specified coordinates.
protected  void fireFlagAdded()
          Fires a flagAdded event.
protected  void fireFlagRemoved()
          Fires a flagRemoved event.
protected  void fireGameStarts()
          Fires a gameStarts event.
protected  void fireSteppedOnAMine()
          Fires a steppedOnAMine event.
 MineFieldCell getCell(int iRow, int iColumn)
          Returns the cell of specified position
 int getColumnCount()
          Returns the number of columns.
 int getRowCount()
          Returns the number of rows.
 void removeListener(minesweeper.event.MineFieldListener mflListener)
          Removes the specified mine field listener so that it no longer receive events from this field.
 void reset(boolean bFirstCall)
          Reset the mine field.
protected  void reveal(Point ptLocation)
          Reveals the cell of specified location.
protected  void revealSurrounders(Point ptLocation)
          Reveals the surrounders of the cell of specified location.
 void setDimension(int iColumns, int iRows)
          Sets the number of columns and rows of this mine field.
 void startGame(Point ptNoMineThere)
          Starts the game: dispatches the mines, avoiding the specified point.
 void stopGame()
          Stops the game.
protected  void toggleFlag(Point ptLocation)
          Toggles a flag at the cell of specified location.
 
Methods inherited from class javax.swing.JPanel
, getAccessibleContext, getUIClassID, paramString, updateUI, writeObject
 
Methods inherited from class javax.swing.JComponent
_paintImmediately, addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, adjustPaintFlags, alwaysOnTop, checkIfChildObscuredBySibling, clearFocusOwners, componentInputMapChanged, computeVisibleRect, computeVisibleRect, compWriteObjectNotify, contains, createToolTip, disable, enable, enableSerialization, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getActionMap, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperties, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getCreatedDoubleBuffer, getDebugGraphicsOptions, getFlag, getGraphics, getHeight, getInputMap, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getVerifyInputWhenFocusTarget, getVisibleRect, getWidth, getX, getY, grabFocus, hasFocus, hide, isDoubleBuffered, isFocusCycleRoot, isFocusTraversable, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, paintWithBuffer, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processFocusEvent, processKeyBinding, processKeyBindings, processKeyBindingsForAllComponents, processKeyEvent, processMouseMotionEvent, putClientProperty, readObject, rectangleIsObscured, rectangleIsObscuredBySibling, registerKeyboardAction, registerKeyboardAction, registerWithKeyboardManager, registerWithKeyboardManager, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setCreatedDoubleBuffer, setDebugGraphicsOptions, setDoubleBuffered, setEnabled, setFlag, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPaintingChild, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVerifyInputWhenFocusTarget, setVisible, shouldDebugGraphics, superProcessMouseMotionEvent, unregisterKeyboardAction, unregisterWithKeyboardManager, unregisterWithKeyboardManager, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, adjustListeningChildren, applyOrientation, checkGD, countComponents, createChildHierarchyEvents, createHierarchyEvents, deliverEvent, dispatchEventImpl, dispatchEventToSelf, doLayout, eventEnabled, findComponentAt, findComponentAt, findComponentAt, getAccessibleAt, getAccessibleChild, getAccessibleChildrenCount, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents_NoClientCode, getComponents, getLayout, getMouseEventTarget, getWindow, initIDs, insets, invalidate, invalidateTree, isAncestorOf, layout, lightweightPaint, lightweightPrint, list, list, locate, minimumSize, nextFocus, numListening, paintComponents, paintHeavyweightComponents, postProcessKeyEvent, postsOldMouseEvents, preferredSize, preProcessKeyEvent, printComponents, printHeavyweightComponents, processContainerEvent, processEvent, proxyEnableEvents, proxyRequestFocus, remove, remove, removeAll, removeContainerListener, setFocusOwner, setLayout, transferFocus, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, areInputMethodsEnabled, bounds, checkImage, checkImage, checkWindowClosingException, coalesceEvents, constructComponentName, contains, createImage, createImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getAccessibleIndexInParent, getAccessibleStateSet, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont_NoClientCode, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen_NoTreeLock, getLocationOnScreen, getName, getNativeContainer, getParent_NoClientCode, getParent, getPeer, getSize, getToolkit, getToolkitImpl, getTreeLock, getWindowForObject, gotFocus, handleEvent, imageUpdate, inside, isDisplayable, isEnabled, isEnabledImpl, isLightweight, isRecursivelyVisible, 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, resetGC, 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, registerNatives, wait, wait, wait
 

Field Detail

CELLWIDTH

private static final int CELLWIDTH
The maximum width of columns.

iColumns

private int iColumns
The number of columns.

iRows

private int iRows
The number of rows.

iInitialMines

private int iInitialMines
The initial number of mines.

bGameAllowed

private boolean bGameAllowed
The flag indicating whether the game is running.

bGameStarted

private boolean bGameStarted
The flag indicating whether the game is started.

mfcCells

private MineFieldCell[][] mfcCells
The array of mine field cells.

jtTable

private JTable jtTable
The JTable.

tmTableModel

private final AbstractTableModel tmTableModel
The table model.

mfeEvent

private minesweeper.event.MineFieldEvent mfeEvent
The source of events.
Constructor Detail

MineField

public MineField(int iColumns,
                 int iRows,
                 int iMines)
Creates a new mine field, with the specified number of columns and rows and mines.
Method Detail

getCell

public MineFieldCell getCell(int iRow,
                             int iColumn)
Returns the cell of specified position

getColumnCount

public int getColumnCount()
Returns the number of columns.

getRowCount

public int getRowCount()
Returns the number of rows.

dispatchMines

public void dispatchMines(int iAvoidRow,
                          int iAvoidColumn)
Dispatches the mines in this field, avoiding the cell of specified coordinates.

reset

public void reset(boolean bFirstCall)
Reset the mine field.
Parameters:
bFirstCall - indicates whether this is an initialisation and not a reset

setDimension

public void setDimension(int iColumns,
                         int iRows)
Sets the number of columns and rows of this mine field.

startGame

public void startGame(Point ptNoMineThere)
Starts the game: dispatches the mines, avoiding the specified point.

stopGame

public void stopGame()
Stops the game.

reveal

protected void reveal(Point ptLocation)
Reveals the cell of specified location.

revealSurrounders

protected void revealSurrounders(Point ptLocation)
Reveals the surrounders of the cell of specified location.

toggleFlag

protected void toggleFlag(Point ptLocation)
Toggles a flag at the cell of specified location.

addListener

public void addListener(minesweeper.event.MineFieldListener mflListener)
Adds the specified mine field listener to receive event from this field.

removeListener

public void removeListener(minesweeper.event.MineFieldListener mflListener)
Removes the specified mine field listener so that it no longer receive events from this field.

fireFlagAdded

protected void fireFlagAdded()
Fires a flagAdded event.

fireFlagRemoved

protected void fireFlagRemoved()
Fires a flagRemoved event.

fireGameStarts

protected void fireGameStarts()
Fires a gameStarts event.

fireSteppedOnAMine

protected void fireSteppedOnAMine()
Fires a steppedOnAMine event.