slogo
Class Main

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 slogo.Main
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible, javax.swing.RootPaneContainer, javax.swing.WindowConstants, TurtleListener

public class Main
extends javax.swing.JFrame
implements TurtleListener

See Also:
Serialized Form

Nested Class Summary
 class Main.DrawingPanel
           
 class Main.TurtlePanel
           
 
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
private  javax.swing.JButton chooseColor
           
private  javax.swing.JFileChooser fc
           
private  javax.swing.JMenu fileMenu
           
private  java.awt.Graphics g
           
private  javax.swing.JPanel leftPanel
           
private  javax.swing.JPanel mainPanel
           
private  javax.swing.JTextField myAngle
           
private  javax.swing.JButton myClockwiseButton
           
private  javax.swing.JTextField myCMD
           
private  javax.swing.JButton myCounterclockButton
           
private  javax.swing.JButton myExecute
           
private  javax.swing.JMenuItem myExitMenuButton
           
private  java.awt.Font myFont
           
private  javax.swing.JMenuBar myMenuBar
           
private  javax.swing.JMenuItem myOpenMenuButton
           
private  SLogoParser myParser
           
private  javax.swing.JButton myRedo
           
private  javax.swing.JMenuItem myResetMenuButton
           
private  javax.swing.JTextArea myResultDisplay
           
private  javax.swing.JTextField myRotateDegrees
           
private  javax.swing.JButton myTail
           
private  javax.swing.JLabel myTailStatus
           
private  Turtle myTurtle
           
private  Main.TurtlePanel myTurtlePanel
           
private  javax.swing.JButton myUndo
           
private  javax.swing.JTextField myXPoint
           
private  javax.swing.JTextField myYPoint
           
private  java.util.Stack<Turtle> redoStack
           
private  javax.swing.JPanel rightPanel
           
private static long serialVersionUID
           
private  java.util.Stack<Turtle> undoStack
           
 
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
Main(java.lang.String turtleImage)
           
 
Method Summary
 void changeTail()
           
 void commandExecution()
           
 java.lang.String getCommand()
           
 int getRotationAngle()
           
private  void init()
           
 java.lang.Object interpretCommand()
           
static void main(java.lang.String[] args)
           
private  javax.swing.JPanel makeCmdBoard()
           
private  javax.swing.JPanel makeDashBoard()
           
private  javax.swing.JButton makeIconButton(javax.swing.Icon i)
           
 java.awt.Image makeImage(java.lang.String name, java.awt.Component cmp)
          used to get the images from the images package
private  javax.swing.JButton makeTextButton(java.lang.String text)
           
private  javax.swing.JTextField makeTextField(int size)
           
 void processTurtle(Turtle turtle)
           
private  void pushChanges()
          This method handles all necessary methods associated with pushing a new state from user input (i.e.
 void redo()
           Redo previous operation by un-undoing last undo.
 void rotationExecution(int angleInDegrees)
           
 void setTurtle(Turtle turtle)
           
 void showAngle(int angle)
          Display Turtle's angle
 void showPoint(java.awt.geom.Point2D d)
          display Turtle's point information
 void undo()
          Undo previous action by replacing current turtle with previous turtle Items are placed onto the undoStack only when a command is evaluated (before the command is evaluated, to be precise).
 
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, 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

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values

myTurtlePanel

private Main.TurtlePanel myTurtlePanel

mainPanel

private javax.swing.JPanel mainPanel

leftPanel

private javax.swing.JPanel leftPanel

rightPanel

private javax.swing.JPanel rightPanel

myXPoint

private javax.swing.JTextField myXPoint

myYPoint

private javax.swing.JTextField myYPoint

myAngle

private javax.swing.JTextField myAngle

myCMD

private javax.swing.JTextField myCMD

myResultDisplay

private javax.swing.JTextArea myResultDisplay

myUndo

private javax.swing.JButton myUndo

myRedo

private javax.swing.JButton myRedo

myExecute

private javax.swing.JButton myExecute

myClockwiseButton

private javax.swing.JButton myClockwiseButton

myCounterclockButton

private javax.swing.JButton myCounterclockButton

myRotateDegrees

private javax.swing.JTextField myRotateDegrees

myTail

private javax.swing.JButton myTail

myTailStatus

private javax.swing.JLabel myTailStatus

myMenuBar

private javax.swing.JMenuBar myMenuBar

fileMenu

private javax.swing.JMenu fileMenu

fc

private final javax.swing.JFileChooser fc

g

private java.awt.Graphics g

myOpenMenuButton

private javax.swing.JMenuItem myOpenMenuButton

myResetMenuButton

private javax.swing.JMenuItem myResetMenuButton

myExitMenuButton

private javax.swing.JMenuItem myExitMenuButton

chooseColor

private javax.swing.JButton chooseColor

myFont

private java.awt.Font myFont

myTurtle

private Turtle myTurtle

myParser

private SLogoParser myParser

undoStack

private java.util.Stack<Turtle> undoStack

redoStack

private java.util.Stack<Turtle> redoStack
Constructor Detail

Main

public Main(java.lang.String turtleImage)
Method Detail

init

private void init()

makeIconButton

private javax.swing.JButton makeIconButton(javax.swing.Icon i)

makeTextButton

private javax.swing.JButton makeTextButton(java.lang.String text)

makeTextField

private javax.swing.JTextField makeTextField(int size)

makeCmdBoard

private javax.swing.JPanel makeCmdBoard()
Returns:
JPanel the panel that is used to enter commands.

makeDashBoard

private javax.swing.JPanel makeDashBoard()
Returns:
JPanel the panel used to display turtle info

setTurtle

public void setTurtle(Turtle turtle)

processTurtle

public void processTurtle(Turtle turtle)
Specified by:
processTurtle in interface TurtleListener

showAngle

public void showAngle(int angle)
Display Turtle's angle

Parameters:
angle - is the angle displayed

showPoint

public void showPoint(java.awt.geom.Point2D d)
display Turtle's point information

Parameters:
d - 2d point that is location of turtle

interpretCommand

public java.lang.Object interpretCommand()

makeImage

public java.awt.Image makeImage(java.lang.String name,
                                java.awt.Component cmp)
used to get the images from the images package

Parameters:
name - image in slogo.gui.images package
cmp - component image is getting added to
Returns:
image

main

public static void main(java.lang.String[] args)

getCommand

public java.lang.String getCommand()

undo

public void undo()
Undo previous action by replacing current turtle with previous turtle Items are placed onto the undoStack only when a command is evaluated (before the command is evaluated, to be precise). Altering the heading via the GUI will not be registered as a change and will be disregarded. Undoing a command pushes the current state to the redoStack. The current state acts as an intermediate area between the two and is included in neither stack until it is no longer the current state. Undo enables the redo button


redo

public void redo()
Redo previous operation by un-undoing last undo. Turtles are pushed to the redoStack before a turtle is popped from the undoStack. The current state acts as an intermediate area between the two and is included in neither stack until it is no longer the current state. Redo enables the undo button


pushChanges

private void pushChanges()
This method handles all necessary methods associated with pushing a new state from user input (i.e. not from stack) to the undoStack


getRotationAngle

public int getRotationAngle()
Returns:
integer degrees to rotate if nothing is entered, returns -1

changeTail

public void changeTail()

commandExecution

public void commandExecution()

rotationExecution

public void rotationExecution(int angleInDegrees)