edu.kzoo.grid.gui
Class GridEditor

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--java.awt.Window
                    |
                    +--java.awt.Frame
                          |
                          +--javax.swing.JFrame
                                |
                                +--edu.kzoo.grid.gui.GridAppFrame
                                      |
                                      +--edu.kzoo.grid.gui.GridEditor
All Implemented Interfaces:
javax.accessibility.Accessible, GridDisplay, java.awt.image.ImageObserver, java.awt.MenuContainer, javax.swing.RootPaneContainer, java.io.Serializable, javax.swing.WindowConstants

public class GridEditor
extends GridAppFrame

Grid GUI Support Package:
The GridEditor class provides a window in which to edit a grid.

Version:
29 February 2004
Author:
Alyce Brady (based on code by Julie Zelenski)
See Also:
Serialized Form

Nested Class Summary
protected  class GridEditor.GridObjectChoice
          Nested class used to hold the per-item information for the entries in the combo box of grid object choices.
protected  class GridEditor.GridObjectIcon
          Nested class used to draw the icons used for GridObject entries in the grid object combo box.
 
Nested classes inherited from class edu.kzoo.grid.gui.GridAppFrame
GridAppFrame.DisplayMouseListener, GridAppFrame.GUIExceptionHandler
 
Field Summary
protected  javax.swing.JButton doneButton
           
protected  javax.swing.JComboBox objComboBox
           
protected  GridAppFrame parentFrame
           
 
Fields inherited from class edu.kzoo.grid.gui.GridAppFrame
DEFAULT_MAX_DELAY_MSECS, DEFAULT_MIN_DELAY_MSECS
 
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
GridEditor(GridAppFrame frame)
          Constructs an empty GridEditor window to edit the grid in the specified frame.
 
Method Summary
protected  void addChoicesFromFactory(javax.swing.JComboBox cb)
          Builds up the list of grid object type choices for the editing palette.
protected  void chooseGridObjType()
          Follows up when the user picks a new choice from the grid object combo box (specified listener action).
 void constructWindowContents()
          Constructs the display for a GridEditor using values from the parent frame.
 void constructWindowContents(java.lang.String title, java.awt.Color bgColor, int viewingWidth, int viewingHeight, int minCellSize)
          Constructs the display for a GridEditor.
protected  java.lang.Class currentGridObjectClass()
          Returns the currently selected grid object class.
protected  javax.swing.JPanel defineContent()
          Defines contents of main window panel.
protected  void done()
          Leaves the editor, returning to the parent frame.
protected  void fillPalette(javax.swing.JToolBar palette)
          Puts tools for choosing grid object attributes in the editing palette, in particular a Type tool for choosing the type of grid object.
protected  java.awt.Component makeEditingPalette()
          Creates the editing palette.
protected  void makeObject(java.lang.Class cls, Grid grid, Location loc)
          Constructs the specified type of object.
protected  void makeObject(java.lang.Class cls, Grid grid, Location loc, java.awt.Color color)
          Constructs the specified type of object.
protected  java.awt.Component makeTypeChoiceComponent()
          Makes the grid object type choice combo box.
protected  void onMousePressOverDisplay(Location loc)
          Handles a mouse press over the grid display, editing the contents of the grid at the specified location.
protected  void reportConstructionError(java.lang.Class cls, java.lang.Exception e, java.lang.String string)
          Reports an error from attempting to construct an object.
 
Methods inherited from class edu.kzoo.grid.gui.GridAppFrame
addGridChangeListener, componentRequiresGrid, componentsEnabledOnlyIfGridSet, componentsEnabledOnlyWhenRunning, componentsEnabledOnlyWhenWaiting, constructDisplay, constructWindowContents, enableAndDisable, enableOnlyIfGridSet, enableOnlyWhenRunning, enableOnlyWhenWaiting, enterNotRunningMode, enterRunningMode, getControlPanel, getDelay, getDisplay, getGrid, getMouseListenerForDisplay, getSpeedSlider, includeControlComponent, includeControlComponent, includeControlComponents, includeMenu, includeMenu, includeSpeedSlider, includeSpeedSlider, includeSpeedSlider, isInRunningMode, makeControlPanel, makeDisplayPanel, makeSliderPanel, notifyGridChangeListeners, resetDelay, setDelay, setEnabledStatus, setGrid, showGrid
 
Methods inherited from class javax.swing.JFrame
addImpl, createRootPane, frameInit, getAccessibleContext, getContentPane, getDefaultCloseOperation, getGlassPane, getJMenuBar, getLayeredPane, getRootPane, isDefaultLookAndFeelDecorated, isRootPaneCheckingEnabled, paramString, processWindowEvent, remove, setContentPane, setDefaultCloseOperation, setDefaultLookAndFeelDecorated, setGlassPane, setJMenuBar, setLayeredPane, setLayout, setRootPane, setRootPaneCheckingEnabled, update
 
Methods inherited from class java.awt.Frame
addNotify, finalize, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, remove, removeNotify, setCursor, setExtendedState, setIconImage, 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, getInputContext, getListeners, getLocale, getMostRecentFocusOwner, getOwnedWindows, getOwner, getToolkit, getWarningString, getWindowFocusListeners, getWindowListeners, getWindowStateListeners, hide, isActive, isFocusableWindow, isFocusCycleRoot, isFocused, isShowing, pack, postEvent, processEvent, processWindowFocusEvent, processWindowStateEvent, removeWindowFocusListener, removeWindowListener, removeWindowStateListener, setCursor, setFocusableWindowState, setFocusCycleRoot, setLocationRelativeTo, 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, getContainerListeners, getFocusTraversalPolicy, getInsets, getLayout, getMaximumSize, getMinimumSize, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, removeAll, removeContainerListener, setFocusTraversalKeys, setFocusTraversalPolicy, 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, getBackground, getBounds, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, 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, isOpaque, 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, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.awt.MenuContainer
getFont, postEvent
 

Field Detail

parentFrame

protected GridAppFrame parentFrame

doneButton

protected javax.swing.JButton doneButton

objComboBox

protected javax.swing.JComboBox objComboBox
Constructor Detail

GridEditor

public GridEditor(GridAppFrame frame)
Constructs an empty GridEditor window to edit the grid in the specified frame. Use the constructWindowContents method to set the properties of the window and make it visible.

Parameters:
frame - the frame that invoked this grid editor
Method Detail

constructWindowContents

public void constructWindowContents()
Constructs the display for a GridEditor using values from the parent frame.


constructWindowContents

public void constructWindowContents(java.lang.String title,
                                    java.awt.Color bgColor,
                                    int viewingWidth,
                                    int viewingHeight,
                                    int minCellSize)
Constructs the display for a GridEditor.

Overrides:
constructWindowContents in class GridAppFrame
Parameters:
title - frame title
viewingWidth - the width of the viewing area
viewingHeight - the height of the viewing area
minCellSize - minimum grid cell side length
bgColor - color to paint background of grid

defineContent

protected javax.swing.JPanel defineContent()
Defines contents of main window panel. Should be redefined in subclasses that require panels other than (or in addition to) an editing palette, a display, and a Done button.

Overrides:
defineContent in class GridAppFrame
Returns:
the panel that will serve as the window's content panel

makeEditingPalette

protected java.awt.Component makeEditingPalette()
Creates the editing palette.


fillPalette

protected void fillPalette(javax.swing.JToolBar palette)
Puts tools for choosing grid object attributes in the editing palette, in particular a Type tool for choosing the type of grid object. Subclasses can redefine this method to put other types of components, such as a color choice combo box, in the palette.


makeTypeChoiceComponent

protected java.awt.Component makeTypeChoiceComponent()
Makes the grid object type choice combo box.


addChoicesFromFactory

protected void addChoicesFromFactory(javax.swing.JComboBox cb)
Builds up the list of grid object type choices for the editing palette.


chooseGridObjType

protected void chooseGridObjType()
Follows up when the user picks a new choice from the grid object combo box (specified listener action).


onMousePressOverDisplay

protected void onMousePressOverDisplay(Location loc)
Handles a mouse press over the grid display, editing the contents of the grid at the specified location. If the location is empty, a new object of the currently specified grid object class will be added. If the location is not empty, the object at the location will be removed.

Overrides:
onMousePressOverDisplay in class GridAppFrame
See Also:
currentGridObjectClass()

currentGridObjectClass

protected java.lang.Class currentGridObjectClass()
Returns the currently selected grid object class.


makeObject

protected void makeObject(java.lang.Class cls,
                          Grid grid,
                          Location loc)
Constructs the specified type of object. In subclasses that use the color combo box, this method could be redefined to call the four-parameter makeObject method, passing it the current color from the combo box.

Parameters:
cls - the type of object to create
grid - the grid in which to create the object
loc - the location at which to create the object

makeObject

protected void makeObject(java.lang.Class cls,
                          Grid grid,
                          Location loc,
                          java.awt.Color color)
Constructs the specified type of object.

Parameters:
cls - the type of object to create
grid - the grid in which to create the object
loc - the location at which to create the object
color - the color of the new object (some objects may ignore this)

reportConstructionError

protected void reportConstructionError(java.lang.Class cls,
                                       java.lang.Exception e,
                                       java.lang.String string)
Reports an error from attempting to construct an object.

Parameters:
cls - the class of the failed object
e - the exception thrown by the attempt
string - string describing parameter types used in attempt

done

protected void done()
Leaves the editor, returning to the parent frame.