main
Class SimUI

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Container
          extended byjavax.swing.JComponent
              extended byjavax.swing.JInternalFrame
                  extended bymain.SimUI
All Implemented Interfaces:
javax.accessibility.Accessible, java.util.EventListener, java.awt.image.ImageObserver, java.awt.event.ItemListener, java.awt.MenuContainer, javax.swing.RootPaneContainer, java.lang.Runnable, java.io.Serializable, javax.swing.WindowConstants

public class SimUI
extends javax.swing.JInternalFrame
implements java.lang.Runnable, java.awt.event.ItemListener

Provides a user interface for a simulation

Author:
Graham Ritchie
See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class javax.swing.JInternalFrame
javax.swing.JInternalFrame.AccessibleJInternalFrame, javax.swing.JInternalFrame.JDesktopIcon
 
Nested classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class javax.swing.JInternalFrame
closable, CONTENT_PANE_PROPERTY, desktopIcon, FRAME_ICON_PROPERTY, frameIcon, GLASS_PANE_PROPERTY, iconable, IS_CLOSED_PROPERTY, IS_ICON_PROPERTY, IS_MAXIMUM_PROPERTY, IS_SELECTED_PROPERTY, isClosed, isIcon, isMaximum, isSelected, LAYERED_PANE_PROPERTY, maximizable, MENU_BAR_PROPERTY, resizable, ROOT_PANE_PROPERTY, rootPane, rootPaneCheckingEnabled, title, TITLE_PROPERTY
 
Fields inherited from class javax.swing.JComponent
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
 
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, EXIT_ON_CLOSE, HIDE_ON_CLOSE
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
SimUI()
          Sets up the main window for an empty simulation
SimUI(java.io.File file)
          Loads a new simulation with the specified controller preloaded
 
Method Summary
 void addController(Controller c)
          Adds a controller to this simulation
 void addRobot()
          Allows the user to pick a robot class, and loads it into this simulation
 java.util.LinkedList copyList(java.util.LinkedList a)
          Copies the entire contents of one linked list and returns a new linked list of the same size and contents.
 Controller createController(java.io.File file)
          Dynamically loads a controller class Modified by: Simon Zienkiewicz
 SimWorld createSimWorld(java.lang.String name)
          Dynamically loads a simworld class
 java.io.File getClassName(java.lang.String title, java.lang.String base_dir)
          Gets the class name of the required class from the user using a JFileChooser
 boolean isGridOn()
          Determines if the grid is turned on or off
 void itemStateChanged(java.awt.event.ItemEvent e)
          Executes is an item has changed state.
 void openCurrentController(java.io.File file)
          Opens a controller file in the current simulator window and simworld
 void pushUndoItem(java.util.LinkedList a)
          Pushes an item into the undo stack.
 void run()
          Main loop: updates the world and repaints the screen
 void selectWorld(int index)
          Allows the user to pick a simworld for their simulation, and loads it
 void setGrid(boolean a)
          Sets the grid on if true, off if false
 void setupWindow()
          Sets up the main window
 void startSimulation()
          Starts this simulation (by starting a new thread for this instance)
 void stopSimulation()
          Stops this simulation
 
Methods inherited from class javax.swing.JInternalFrame
addImpl, addInternalFrameListener, createRootPane, dispose, doDefaultCloseAction, fireInternalFrameEvent, getAccessibleContext, getContentPane, getDefaultCloseOperation, getDesktopIcon, getDesktopPane, getFocusCycleRootAncestor, getFocusOwner, getFrameIcon, getGlassPane, getInternalFrameListeners, getJMenuBar, getLayer, getLayeredPane, getMenuBar, getMostRecentFocusOwner, getNormalBounds, getRootPane, getTitle, getUI, getUIClassID, getWarningString, hide, isClosable, isClosed, isFocusCycleRoot, isIcon, isIconifiable, isMaximizable, isMaximum, isResizable, isRootPaneCheckingEnabled, isSelected, moveToBack, moveToFront, pack, paintComponent, paramString, remove, removeInternalFrameListener, reshape, restoreSubcomponentFocus, setClosable, setClosed, setContentPane, setDefaultCloseOperation, setDesktopIcon, setFocusCycleRoot, setFrameIcon, setGlassPane, setIcon, setIconifiable, setJMenuBar, setLayer, setLayer, setLayeredPane, setLayout, setMaximizable, setMaximum, setMenuBar, setNormalBounds, setResizable, setRootPane, setRootPaneCheckingEnabled, setSelected, setTitle, setUI, show, toBack, toFront, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getRegisteredKeyStrokes, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, removeAll, removeContainerListener, setFocusTraversalKeys, setFocusTraversalPolicy, 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, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

SimUI

public SimUI()
Sets up the main window for an empty simulation


SimUI

public SimUI(java.io.File file)
Loads a new simulation with the specified controller preloaded

Parameters:
file - the file name of the controller (robot)
Method Detail

openCurrentController

public void openCurrentController(java.io.File file)
Opens a controller file in the current simulator window and simworld


setupWindow

public void setupWindow()
Sets up the main window


run

public void run()
Main loop: updates the world and repaints the screen

Specified by:
run in interface java.lang.Runnable

selectWorld

public void selectWorld(int index)
Allows the user to pick a simworld for their simulation, and loads it

Parameters:
index - indicates whether default world load or user selected world loading

createSimWorld

public SimWorld createSimWorld(java.lang.String name)
Dynamically loads a simworld class

Parameters:
name - the name of the simworld as a string
Returns:
the simworld, or null if unsuccessful

addRobot

public void addRobot()
Allows the user to pick a robot class, and loads it into this simulation


getClassName

public java.io.File getClassName(java.lang.String title,
                                 java.lang.String base_dir)
Gets the class name of the required class from the user using a JFileChooser

Parameters:
title - the title to display in the FileChooser window
base_dir - the directory to start looking in
Returns:
the classname as string

createController

public Controller createController(java.io.File file)
Dynamically loads a controller class Modified by: Simon Zienkiewicz

Parameters:
file - the name of the file
Returns:
the controller, or null if unsuccessful

addController

public void addController(Controller c)
Adds a controller to this simulation

Parameters:
c - the controller to be added

startSimulation

public void startSimulation()
Starts this simulation (by starting a new thread for this instance)


stopSimulation

public void stopSimulation()
Stops this simulation


isGridOn

public boolean isGridOn()
Determines if the grid is turned on or off

Returns:
true if gird is on, false otherwise

setGrid

public void setGrid(boolean a)
Sets the grid on if true, off if false

Parameters:
a - true to set grid on, false otherwise

itemStateChanged

public void itemStateChanged(java.awt.event.ItemEvent e)
Executes is an item has changed state.

Specified by:
itemStateChanged in interface java.awt.event.ItemListener
Parameters:
e - event

pushUndoItem

public void pushUndoItem(java.util.LinkedList a)
Pushes an item into the undo stack.

Parameters:
a - the linklist which contains the item

copyList

public java.util.LinkedList copyList(java.util.LinkedList a)
Copies the entire contents of one linked list and returns a new linked list of the same size and contents.

Parameters:
a - the linklist requiring duplication (ORIGINAL)
Returns:
a new linklist mirroring the original (COPY)