infpp.oceanlife
Class OceanGUI

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 infpp.oceanlife.OceanGUI
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.lang.Runnable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public class OceanGUI
extends javax.swing.JFrame
implements java.lang.Runnable

OceanGUI implements the graphic user interface (including the ocean?)

Author:
tdu, akue
See Also:
Serialized Form

Nested Class Summary
(package private)  class OceanGUI.AddButtonActionListenerEx
          ActionListener for the GUI: Add Button
(package private)  class OceanGUI.FocusListenerEx
           
(package private)  class OceanGUI.LoadButtonActionListenerEx
          ActionListener for the GUI: Load Button
(package private)  class OceanGUI.MouseInputListenerEx
           
(package private)  class OceanGUI.MouseMotionListenerEx
           
(package private)  class OceanGUI.MouseWheelListenerEx
           
(package private)  class OceanGUI.PrintButtonActionListenerEx
          ActionListener for the GUI: Print Button
(package private)  class OceanGUI.QuitButtonActionListenerEx
          ActionListener for the GUI: Quit Button
(package private)  class OceanGUI.RemoveButtonActionListenerEx
          ActionListener for the GUI: Remove Button
(package private)  class OceanGUI.SaveButtonActionListenerEx
          ActionListener for the GUI: Save Button
(package private)  class OceanGUI.StartButtonActionListenerEx
           
(package private)  class OceanGUI.StepButtonActionListenerEx
           
(package private)  class OceanGUI.StopButtonActionListenerEx
           
 
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.BaselineResizeBehavior, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
(package private)  javax.swing.JButton addButton
          the button that adds objects at the specified position
(package private)  javax.swing.Action bKeyPressed
           
(package private)  javax.swing.JPanel buttonPanel
          the panel where all the controls go.
(package private)  java.awt.Point ClickPosition
          the position of the last mouse click, regardless of button
(package private)  java.awt.Point dragPositionStart
          the position where a drag with the mouse originated
(package private)  java.awt.Point dragPositonEnd
          the position where a drag with the mouse ended
(package private)  javax.swing.Action ExclamationMarkKeyPressed
           
private  boolean fireMode
          says whether fire mode is on, which adds objects in rapid succession
(package private)  javax.swing.Action fKeyPressed
          Here we specify how the GUI should react to the keyboard input.
(package private)  javax.swing.JButton loadButton
          the button that loads an ocean from a file
(package private)  Ocean localOcean
          the ocean we work with
(package private)  java.awt.Point mousePointerPosition
          the current position of the pointer
(package private)  javax.swing.JComboBox objectsToAdd
          the dropdown box to select what kind of OceanObject to add
(package private)  javax.swing.Action oKeyPressed
           
(package private)  java.awt.Rectangle oldRectangle
          the rectangle selected before the current selection was made
(package private)  javax.swing.Action pKeyPressed
           
(package private)  javax.swing.JButton printButton
          the button that prints the ocean's current population
(package private)  javax.swing.JButton quitButton
          Press this button should you ever want to leave the ocean.
(package private)  javax.swing.JButton removeButton
          the button that removes highlighted objects
(package private)  javax.swing.JButton saveButton
          the button that saves an ocean to a file
(package private)  java.awt.Rectangle selectedRectangle
          the rectangle most recently selected
(package private)  javax.swing.Action sKeyPressed
           
(package private)  javax.swing.JButton startButton
          the button that starts the fun!
(package private)  javax.swing.JButton stepButton
          the button that steps through the motion
(package private)  javax.swing.JButton stopButton
          the button that stops the motion
(package private)  javax.swing.JPanel water
          Does what it says on the box: Displays the ocean and all of its inhabitants.
(package private)  java.awt.TextField xEntry
          the TextField to specify the x coordinate of a new object's position
(package private)  java.lang.String xValue
          the string to hold the user's input to xEntry
(package private)  java.awt.TextField yEntry
          the TextField to specify the y coordinate of a new object's position
(package private)  java.lang.String yValue
          the string to hold the user's input to yEntry
 
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
OceanGUI(java.lang.String title, Ocean oceanToDisplay)
           
 
Method Summary
 void addObjectToOcean()
           
private  void defineSelfMadeKeyListener()
          Here we specify that the GUI should react to some keyboard input.
private  void drawOcean(java.awt.Graphics g)
           
private  void drawOilCatastrophe(java.awt.Graphics g)
          Here the oil catastrophe is (partially) implemented.
private  void fireOneObject()
          This method adds one object at the current pointer's position.
 boolean isGUIInputNumeric(java.lang.String x, java.lang.String y)
           
 void myRepaint()
          This method makes sure that all of the window is repainted, not only the water panel.
 void run()
           
private  void updatePanelStatus()
          This method is called periodically by the run() method above and checks which buttons should be clickable and which should not.
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getGraphics, getJMenuBar, getLayeredPane, getRootPane, getTransferHandler, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, repaint, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setIconImage, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, setTransferHandler, update
 
Methods inherited from class java.awt.Frame
addNotify, 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, getIconImages, getInputContext, getListeners, getLocale, getModalExclusionType, getMostRecentFocusOwner, getOwnedWindows, getOwner, getOwnerlessWindows, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindows, getWindowStateListeners, hide, isActive, isAlwaysOnTop, isAlwaysOnTopSupported, isFocusableWindow, isFocusCycleRoot, isFocused, isLocationByPlatform, isShowing, pack, paint, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, reshape, setAlwaysOnTop, setBounds, setBounds, setCursor, setFocusableWindowState, setFocusCycleRoot, setIconImages, setLocationByPlatform, setLocationRelativeTo, setMinimumSize, setModalExclusionType, setSize, setSize, setVisible, 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, 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, getBaseline, getBaselineResizeBehavior, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, 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, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resize, resize, setBackground, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setName, setPreferredSize, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

localOcean

Ocean localOcean
the ocean we work with


objectsToAdd

javax.swing.JComboBox objectsToAdd
the dropdown box to select what kind of OceanObject to add


xEntry

java.awt.TextField xEntry
the TextField to specify the x coordinate of a new object's position


yEntry

java.awt.TextField yEntry
the TextField to specify the y coordinate of a new object's position


xValue

java.lang.String xValue
the string to hold the user's input to xEntry


yValue

java.lang.String yValue
the string to hold the user's input to yEntry


ClickPosition

java.awt.Point ClickPosition
the position of the last mouse click, regardless of button


dragPositionStart

java.awt.Point dragPositionStart
the position where a drag with the mouse originated


dragPositonEnd

java.awt.Point dragPositonEnd
the position where a drag with the mouse ended


mousePointerPosition

java.awt.Point mousePointerPosition
the current position of the pointer


fireMode

private boolean fireMode
says whether fire mode is on, which adds objects in rapid succession


selectedRectangle

java.awt.Rectangle selectedRectangle
the rectangle most recently selected


oldRectangle

java.awt.Rectangle oldRectangle
the rectangle selected before the current selection was made


addButton

javax.swing.JButton addButton
the button that adds objects at the specified position


removeButton

javax.swing.JButton removeButton
the button that removes highlighted objects


startButton

javax.swing.JButton startButton
the button that starts the fun!


stepButton

javax.swing.JButton stepButton
the button that steps through the motion


stopButton

javax.swing.JButton stopButton
the button that stops the motion


loadButton

javax.swing.JButton loadButton
the button that loads an ocean from a file


saveButton

javax.swing.JButton saveButton
the button that saves an ocean to a file


printButton

javax.swing.JButton printButton
the button that prints the ocean's current population


quitButton

javax.swing.JButton quitButton
Press this button should you ever want to leave the ocean.


water

javax.swing.JPanel water
Does what it says on the box: Displays the ocean and all of its inhabitants.


buttonPanel

javax.swing.JPanel buttonPanel
the panel where all the controls go.


fKeyPressed

javax.swing.Action fKeyPressed
Here we specify how the GUI should react to the keyboard input.


sKeyPressed

javax.swing.Action sKeyPressed

bKeyPressed

javax.swing.Action bKeyPressed

pKeyPressed

javax.swing.Action pKeyPressed

oKeyPressed

javax.swing.Action oKeyPressed

ExclamationMarkKeyPressed

javax.swing.Action ExclamationMarkKeyPressed
Constructor Detail

OceanGUI

OceanGUI(java.lang.String title,
         Ocean oceanToDisplay)
Parameters:
title -
oceanToDisplay -
Method Detail

myRepaint

public void myRepaint()
This method makes sure that all of the window is repainted, not only the water panel.


run

public void run()
Specified by:
run in interface java.lang.Runnable

updatePanelStatus

private void updatePanelStatus()
This method is called periodically by the run() method above and checks which buttons should be clickable and which should not.


addObjectToOcean

public void addObjectToOcean()

isGUIInputNumeric

public boolean isGUIInputNumeric(java.lang.String x,
                                 java.lang.String y)
Parameters:
x - The input from the first text field
y - The input from the second text field
Returns:
a boolean indicating whether both of the input fields contain numbers

fireOneObject

private void fireOneObject()
This method adds one object at the current pointer's position.


drawOcean

private void drawOcean(java.awt.Graphics g)
Parameters:
g - The graphics object to paint with.

defineSelfMadeKeyListener

private void defineSelfMadeKeyListener()
Here we specify that the GUI should react to some keyboard input. We only deal with those keys that are of interest to us, rather than intercepting all keyboard input and discarding most of it.


drawOilCatastrophe

private void drawOilCatastrophe(java.awt.Graphics g)
Here the oil catastrophe is (partially) implemented.

Parameters:
g - The graphics object to work with