ppJava.serie04.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 ppJava.serie04.oceanlife.OceanGUI
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants

public class OceanGUI
extends javax.swing.JFrame
implements java.awt.event.ActionListener

OceanGUI is a JFrame GUI for the "oceanlife"-simulation. It manages file-operations like load and save of ocean-data and all actions which are performed. (MenuBar for file-ops and ToolBar for OceanObject related actions)

Author:
ken,bpei
See Also:
OceanInterface, Serialized Form

Nested Class Summary
 class OceanGUI.OceanMouseListener
          Manages the "mouseClicked"-event.
 
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)  java.util.concurrent.CyclicBarrier barrier
          For Threading - Movement of objects is synchronized
private  OceanCanvasPanel canvasPanel
          JPanel for drawing the ocean
private  javax.swing.JFileChooser fc
          FileChooser for load/save dialogs
private static int HEIGHT
           
private  java.awt.event.ActionListener menuBarActionListener
          Manages action performed on the menuBar (load/save-file and quit)
private  Ocean ocean
          This is the ocean which manages the oceanObjects
private static int OCEAN_DEPTH
           
private static int OCEAN_WIDTH
           
private  OceanObject pendingObject
          This object is generated if ToolBarItem is clicked and added if set a position in OceanCanvasPanel
private static long serialVersionUID
           
private static int TBVERTICAL
          Determines if ToolBar is vertically aligned
(package private)  javax.swing.Timer timer
          Timer for trigger repaint of JPanel and recalculate oceanObjects
(package private)  int timing
          Pause between triggering of Timer
private  OceanToolbar toolbar
          Toolbar for control of oceanObjects
private  java.awt.event.ActionListener toolBarActionListener
          Manages action performed on a toolBar (create/remove-Objects and control of movement)
private static int WIDTH
           
 
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
OceanGUI()
           
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent arg0)
          Repaints Panel and recalculates collisions
 void addNewObject(OceanObject oceanObject)
          Adds a oceanObject to ComboBox (of toolBar) and appends it to ocean
private  void buildGUI()
          Builds all components of GUI.
 void checkObjectPositions(java.util.LinkedList<OceanObject> oceanObjects)
          Collision detection (i.e.
private  void clearOcean()
          Removes all oceanObjects from GUI-related interfaces and clears the list of oceanObjects
private  void initOcean(java.util.LinkedList<OceanObject> objList)
          Initializes an ocean with fixed size and a list of OceanObjects
static void main(java.lang.String[] args)
          Called first - builds the GUI and starts a Timer which triggers control and drawing of the ocean
 void refreshComboList()
          Refresh records of ComboList
private  void removeObject(int index)
          Removes a specific oceanObject at an given index (Removes this also from GUI)
private  void startOceanThreads()
           
private  void startTimer()
          Triggers recalculating and repaint
 
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, 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, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, 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, transferFocusBackward, 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

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values

fc

private javax.swing.JFileChooser fc
FileChooser for load/save dialogs


canvasPanel

private OceanCanvasPanel canvasPanel
JPanel for drawing the ocean


toolbar

private OceanToolbar toolbar
Toolbar for control of oceanObjects


WIDTH

private static int WIDTH

HEIGHT

private static int HEIGHT

OCEAN_WIDTH

private static int OCEAN_WIDTH

OCEAN_DEPTH

private static int OCEAN_DEPTH

TBVERTICAL

private static int TBVERTICAL
Determines if ToolBar is vertically aligned


ocean

private Ocean ocean
This is the ocean which manages the oceanObjects


pendingObject

private OceanObject pendingObject
This object is generated if ToolBarItem is clicked and added if set a position in OceanCanvasPanel


barrier

java.util.concurrent.CyclicBarrier barrier
For Threading - Movement of objects is synchronized


timer

javax.swing.Timer timer
Timer for trigger repaint of JPanel and recalculate oceanObjects


timing

int timing
Pause between triggering of Timer


toolBarActionListener

private java.awt.event.ActionListener toolBarActionListener
Manages action performed on a toolBar (create/remove-Objects and control of movement)


menuBarActionListener

private java.awt.event.ActionListener menuBarActionListener
Manages action performed on the menuBar (load/save-file and quit)

Constructor Detail

OceanGUI

public OceanGUI()
Method Detail

initOcean

private void initOcean(java.util.LinkedList<OceanObject> objList)
Initializes an ocean with fixed size and a list of OceanObjects

Parameters:
objList -
See Also:
OceanObject

clearOcean

private void clearOcean()
Removes all oceanObjects from GUI-related interfaces and clears the list of oceanObjects


removeObject

private void removeObject(int index)
                   throws OceanException
Removes a specific oceanObject at an given index (Removes this also from GUI)

Parameters:
index -
Throws:
OceanException

addNewObject

public void addNewObject(OceanObject oceanObject)
                  throws OceanException
Adds a oceanObject to ComboBox (of toolBar) and appends it to ocean

Parameters:
oceanObject -
Throws:
OceanException - (i.e. invalid position)

refreshComboList

public void refreshComboList()
Refresh records of ComboList


buildGUI

private void buildGUI()
Builds all components of GUI. (MenuBar, Toolbar, Panel for drawing) All items of these components are defined at their own classes. i.e. icons for creation of objects are defined in ToolBar-class. All ActionListeners are defined in this class and passed

See Also:
OceanMenuBar, OceanToolbar, OceanCanvasPanel, menuBarActionListener, toolBarActionListener, OceanGUI.OceanMouseListener

startTimer

private void startTimer()
Triggers recalculating and repaint


startOceanThreads

private void startOceanThreads()

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent arg0)
Repaints Panel and recalculates collisions

Specified by:
actionPerformed in interface java.awt.event.ActionListener

checkObjectPositions

public void checkObjectPositions(java.util.LinkedList<OceanObject> oceanObjects)
Collision detection (i.e. changing movement of oceanObjects)

Parameters:
oceanObjects - - list of objects which are checked

main

public static void main(java.lang.String[] args)
Called first - builds the GUI and starts a Timer which triggers control and drawing of the ocean

Parameters:
args - -- ignored