Class TTTgui

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Window
              extended by java.awt.Frame
                  extended by javax.swing.JFrame
                      extended by TTTgui
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.event.WindowListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.lang.Runnable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.event.MenuKeyListener, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public class TTTgui
extends javax.swing.JFrame
implements java.awt.event.ActionListener, javax.swing.event.MenuKeyListener, java.awt.event.WindowListener, java.lang.Runnable

Graphical user interface program for the TTT engine

Author:
James Barr
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JFrame
javax.swing.JFrame.AccessibleJFrame
 
Nested classes/interfaces inherited from class java.awt.Frame
java.awt.Frame.AccessibleAWTFrame
 
Nested classes/interfaces inherited from class java.awt.Window
java.awt.Window.AccessibleAWTWindow
 
Nested classes/interfaces inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
private  LearningAlgorithm curAlgorithm
          the current opponent
private  javax.swing.JMenuBar menuBar
          the file, options, and opponents menu
private  java.lang.String OPPONENTS_FILENAME
          opponents filename so is possible to re-read the file
private  TTTengine tttEngine
          reference to the main engine class
 
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, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
TTTgui(TTTengine tttEngine, int x, int y)
          Constructs a GUI using all provided values
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent event)
          Invoked when an action on one of the three buttons happens, and is used to handle clicking the menu
private  void buildAlgorithmMenu()
          Sets up the opponent menu
private  void buildMenu()
          Sets up the first two menus
 void exitProg()
          Everything that must be done before the program exits
 java.lang.String getBoardState()
          Get a string representing the state of cells 1 - 9 for the vision system
 void getSmart()
          Sends message to tell the LA to load any trained "smart" data
private  void handleMenu(java.lang.String event)
          Deals with any navigation choice done by the user
 void menuKeyPressed(javax.swing.event.MenuKeyEvent arg0)
          Method that has to be implemented but is not necessary
 void menuKeyReleased(javax.swing.event.MenuKeyEvent arg0)
          Method that has to be implemented but is not necessary
 void menuKeyTyped(javax.swing.event.MenuKeyEvent event)
          Invoked when a keyboard menu shortcut is pressed.
 void newGame()
          If an opponent is selected, determines first player.
 void resetLearningAlgorithm()
          Sends message to the LA to tell it to reset and lose any trained data it gained
 void run()
          The method that runs during the thread, but it is not used since it is event-driven
 boolean selectAlgorithm(java.lang.String name)
          Gets the index of the opponent via CCP ID for auto mode or display name from the menu in interactive.
 void windowActivated(java.awt.event.WindowEvent arg0)
          Method that has to be implemented but is not necessary
 void windowClosed(java.awt.event.WindowEvent arg0)
          Method that has to be implemented but is not necessary
 void windowClosing(java.awt.event.WindowEvent event)
          Invoked when a window is closed.
 void windowDeactivated(java.awt.event.WindowEvent arg0)
          Method that has to be implemented but is not necessary
 void windowDeiconified(java.awt.event.WindowEvent arg0)
          Method that has to be implemented but is not necessary
 void windowIconified(java.awt.event.WindowEvent arg0)
          Method that has to be implemented but is not necessary
 void windowOpened(java.awt.event.WindowEvent arg0)
          Method that has to be implemented but is not necessary
 
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, setIconImage, 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, 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, isAlwaysOnTop, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setAlwaysOnTop, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationByPlatform, 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, getComponentZOrder, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, 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, firePropertyChange, firePropertyChange, firePropertyChange, 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, getMousePosition, 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, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, 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, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, 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

menuBar

private javax.swing.JMenuBar menuBar
the file, options, and opponents menu


curAlgorithm

private LearningAlgorithm curAlgorithm
the current opponent


tttEngine

private TTTengine tttEngine
reference to the main engine class


OPPONENTS_FILENAME

private final java.lang.String OPPONENTS_FILENAME
opponents filename so is possible to re-read the file

See Also:
Constant Field Values
Constructor Detail

TTTgui

public TTTgui(TTTengine tttEngine,
              int x,
              int y)
Constructs a GUI using all provided values

Parameters:
tttEngine - - a reference to the main engine class
x - - The left position of the GUI
y - - The top position of the GUI
Method Detail

buildMenu

private void buildMenu()
Sets up the first two menus


buildAlgorithmMenu

private void buildAlgorithmMenu()
Sets up the opponent menu


handleMenu

private void handleMenu(java.lang.String event)
Deals with any navigation choice done by the user

Parameters:
event - - Information about the event done

newGame

public void newGame()
If an opponent is selected, determines first player. Then, if game is in progress, sends terminate message, otherwise sends new game message and sets up the TTT GUI


resetLearningAlgorithm

public void resetLearningAlgorithm()
Sends message to the LA to tell it to reset and lose any trained data it gained


getSmart

public void getSmart()
Sends message to tell the LA to load any trained "smart" data


exitProg

public void exitProg()
Everything that must be done before the program exits


selectAlgorithm

public boolean selectAlgorithm(java.lang.String name)
Gets the index of the opponent via CCP ID for auto mode or display name from the menu in interactive. If valid and alert, then sets it as the current opponent

Parameters:
name - - CCP ID(Auto) or Display name(Inter) of the opponent
Returns:
- TRUE if valid opponent is set, FALSE if not

getBoardState

public java.lang.String getBoardState()
Get a string representing the state of cells 1 - 9 for the vision system

Returns:
- a string for the state of the board

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent event)
Invoked when an action on one of the three buttons happens, and is used to handle clicking the menu

Specified by:
actionPerformed in interface java.awt.event.ActionListener
Parameters:
event - - Contains information about the button that was pressed

windowClosing

public void windowClosing(java.awt.event.WindowEvent event)
Invoked when a window is closed. Exits the program

Specified by:
windowClosing in interface java.awt.event.WindowListener
Parameters:
event - - Contains information about the window that was closed

run

public void run()
The method that runs during the thread, but it is not used since it is event-driven

Specified by:
run in interface java.lang.Runnable

menuKeyTyped

public void menuKeyTyped(javax.swing.event.MenuKeyEvent event)
Invoked when a keyboard menu shortcut is pressed. Handles menu shortcut keys

Specified by:
menuKeyTyped in interface javax.swing.event.MenuKeyListener
Parameters:
event - - Contains information about the menu that was selected

menuKeyPressed

public void menuKeyPressed(javax.swing.event.MenuKeyEvent arg0)
Method that has to be implemented but is not necessary

Specified by:
menuKeyPressed in interface javax.swing.event.MenuKeyListener

menuKeyReleased

public void menuKeyReleased(javax.swing.event.MenuKeyEvent arg0)
Method that has to be implemented but is not necessary

Specified by:
menuKeyReleased in interface javax.swing.event.MenuKeyListener

windowOpened

public void windowOpened(java.awt.event.WindowEvent arg0)
Method that has to be implemented but is not necessary

Specified by:
windowOpened in interface java.awt.event.WindowListener

windowClosed

public void windowClosed(java.awt.event.WindowEvent arg0)
Method that has to be implemented but is not necessary

Specified by:
windowClosed in interface java.awt.event.WindowListener

windowIconified

public void windowIconified(java.awt.event.WindowEvent arg0)
Method that has to be implemented but is not necessary

Specified by:
windowIconified in interface java.awt.event.WindowListener

windowDeiconified

public void windowDeiconified(java.awt.event.WindowEvent arg0)
Method that has to be implemented but is not necessary

Specified by:
windowDeiconified in interface java.awt.event.WindowListener

windowActivated

public void windowActivated(java.awt.event.WindowEvent arg0)
Method that has to be implemented but is not necessary

Specified by:
windowActivated in interface java.awt.event.WindowListener

windowDeactivated

public void windowDeactivated(java.awt.event.WindowEvent arg0)
Method that has to be implemented but is not necessary

Specified by:
windowDeactivated in interface java.awt.event.WindowListener