support.convexhull
Class HullCanvas

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JPanel
                  extended by support.convexhull.HullCanvas
All Implemented Interfaces:
ImageObserver, MenuContainer, Serializable, Accessible, ConvexHullConstants

public class HullCanvas
extends JPanel
implements ConvexHullConstants

This class manages all of the graphical aspects of the GUI. It contains a double buffered drawing area, and can also manage all of the points, edges.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JPanel
JPanel.AccessibleJPanel
 
Nested classes/interfaces inherited from class javax.swing.JComponent
JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Container
Container.AccessibleAWTContainer
 
Nested classes/interfaces inherited from class java.awt.Component
Component.AccessibleAWTComponent, Component.BltBufferStrategy, Component.FlipBufferStrategy
 
Field Summary
protected  Image _background
           
protected  Vector<HelperHullPoint> _points
           
 
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 support.convexhull.ConvexHullConstants
BLUE_POINT_IMAGE, BOTTOM_COLOR, c, CANVAS_HEIGHT, CANVAS_WIDTH, ERROR_COLOR, FIGHTER_MODEL, FRAME_HEIGHT, FRAME_WIDTH, FRAME_X, FRAME_Y, HULL_CONNECT_COLOR, HULL_POINT_RADIUS, IMAGE_PATH, MODEL_PATH, OFF_HULL, ON_HULL, PURPLE_POINT_IMAGE, RED_POINT_IMAGE, ROBOT_MODEL, TOP_COLOR
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
HullCanvas(HullHelper helper)
          Create a new HullCanvas.
 
Method Summary
 void addVertex(HelperHullPoint vertex)
          Add an edge to the graph.
 void clear()
          This removes all vertices and edges from the graph.
 void connectEndPoints(HullPoint start, HullPoint end, Graphics graphics)
          Draws the edge between two endpoints if they differ from top hull to bottom hull
 void drawBottomEdge(HullPoint start, HullPoint end, Graphics graphics)
          Draws the edge between two given points in the bottom of the Hull
 void drawTopEdge(HullPoint start, HullPoint end, Graphics graphics)
          Draws the edge between two given points in the top of the Hull
 Vector getVertices()
          Returns the vector storing all the points, including ones inside the hull.
 void paint(Graphics graphics)
          Uses double buffering to redraw all the hull points and edges over the background.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, paramString, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, 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, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, 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, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, 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, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_points

protected Vector<HelperHullPoint> _points

_background

protected Image _background
Constructor Detail

HullCanvas

public HullCanvas(HullHelper helper)
Create a new HullCanvas. Sets the random background

Parameters:
helper - The HullHelper that is the parent of this HullCanvas.
Method Detail

addVertex

public void addVertex(HelperHullPoint vertex)
Add an edge to the graph. This repaints the vertex. It also checks to make sure that the point isn't a duplicate. If it is, the point is not added.

Parameters:
vertex - The vertex to add.

clear

public void clear()
This removes all vertices and edges from the graph. It repaints the whole canvas.


paint

public void paint(Graphics graphics)
Uses double buffering to redraw all the hull points and edges over the background. Recolors all the points to match their new on/off hull status. Also does error checking of student code.

Overrides:
paint in class JComponent
Parameters:
graphics - Where to display the final drawn screen to

drawBottomEdge

public void drawBottomEdge(HullPoint start,
                           HullPoint end,
                           Graphics graphics)
Draws the edge between two given points in the bottom of the Hull

Parameters:
start - First point to connect
end - Second point to connect
graphics - Graphics in which to draw

drawTopEdge

public void drawTopEdge(HullPoint start,
                        HullPoint end,
                        Graphics graphics)
Draws the edge between two given points in the top of the Hull

Parameters:
start - First point to connect
end - Second point to connect
graphics - Graphics in which to draw

connectEndPoints

public void connectEndPoints(HullPoint start,
                             HullPoint end,
                             Graphics graphics)
Draws the edge between two endpoints if they differ from top hull to bottom hull

Parameters:
start - First point to connect
end - Second point to connect
graphics - Graphics in which to draw

getVertices

public Vector getVertices()
Returns the vector storing all the points, including ones inside the hull.