cox.jmatt.java.MathTools.demo.gpgdemo
Class LetteringPanel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by java.awt.Panel
              extended by cox.jmatt.java.MathTools.demo.gpgdemo.GraphPanel
                  extended by cox.jmatt.java.MathTools.demo.gpgdemo.LetteringPanel
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible

public class LetteringPanel
extends GraphPanel

This class is designed to create lettering guides like the ones used by children when learning to write. It was inspired by MusicPanel. Since lettering guides need lines this class offers six different types of lines, all configurable. It also offers more in the way of spacing options: more options and more flexibility.

The line options are solid major, solid minor, broken major, broken minor, double and inverted double. The 'major' and 'minor' versions are labels meant to suggest usage. In reality any of these can be configured with any pen with one exception. The double line consists of two lines drawn with the major pen above and the minor pen below. The inverted double reverses these: minor over major. The line spacing is also given in 'major' and 'minor' versions. The difference between these is that the minor space is used to separate the double lines and the 'S' shortcut (see below) automatically generates one major space.

As with MusicPanel this class uses a String pattern to lay out the lines. All lines are horizontal and all stretch from margin to margin. The available options are:

Any other character stops the pattern immediately, per '!'.

The layout process will try to put as many patterns on the page as it can and it ignores trailing space. In order to enforce a minimum trailing space use the 'I' character. In order to prevent infinite loops the solid and broken lines do count as 0.001 major line space. The double lines automatically count as a minor space.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class java.awt.Panel
java.awt.Panel.AccessibleAWTPanel
 
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
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
LetteringPanel()
          Standard constructor.
 
Method Summary
 void drawGraph(int pTop, int pBot, int pLeft, int pRight, SVGTag pPaper)
          Lay out the paper.
 void eatPizza(java.util.Properties pPizza, java.lang.String pPrefix)
          This method accepts a Properties object and an optional String prefix and attempts to extract configuration data from it.
 void reset()
          Restore factory defaults.
 void setBroken(int pMajor, int pMinor)
          Set the major and minor broken (dashed) line pens.
 void setDouble(int pMajor, int pMinor)
          Set the major and minor double line pens.
 void setPattern(java.lang.String pPattern)
          Set the line layout pattern.
 void setSolid(int pMajor, int pMinor)
          Set the major and minor solid line pens.
 void setSpace(double pMajor, double pMinor)
          Set the major and minor (vertical) line spacing.
 java.lang.String toPizza(java.lang.String pPrefix)
          This method extracts the configuration and state information from a generator and produces java.util.Properties-style output.
 
Methods inherited from class cox.jmatt.java.MathTools.demo.gpgdemo.GraphPanel
asDouble, asInt, eatGlobalPizza, getKey, getKey, getPen, getPen, GP_DEBUG, loadPizza, setGPDebug, setGPDebugMode, setKey, setKey
 
Methods inherited from class java.awt.Panel
addNotify, getAccessibleContext
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getAlignmentX, getAlignmentY, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getInsets, getLayout, getListeners, getMaximumSize, getMinimumSize, getMousePosition, getPreferredSize, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paint, paintComponents, paramString, preferredSize, print, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, removeNotify, setComponentZOrder, setFocusCycleRoot, setFocusTraversalKeys, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setFont, setLayout, transferFocusBackward, transferFocusDownCycle, update, 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, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPeer, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, printAll, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, 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, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeysEnabled, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setMaximumSize, setMinimumSize, setName, setPreferredSize, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusUpCycle
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LetteringPanel

public LetteringPanel()
Standard constructor.

Method Detail

drawGraph

public void drawGraph(int pTop,
                      int pBot,
                      int pLeft,
                      int pRight,
                      SVGTag pPaper)
Lay out the paper. If the pattern is null or blank nothing happens.

Overrides:
drawGraph in class GraphPanel
Parameters:
pTop - The top margin of the drawable area.
pBot - The bottom margin of the drawable area.
pLeft - The left margin.
pRight - The right margin.
pPaper - The SVGTag on which the drawing is to occur.

reset

public void reset()
Restore factory defaults.

Overrides:
reset in class GraphPanel

setPattern

public void setPattern(java.lang.String pPattern)
Set the line layout pattern. Null or blank values are ignored.

Parameters:
pPattern - The new layout pattern.

setSpace

public void setSpace(double pMajor,
                     double pMinor)
Set the major and minor (vertical) line spacing. Negative or zero values are ignored.


setSolid

public void setSolid(int pMajor,
                     int pMinor)
Set the major and minor solid line pens. Negative values are ignored.


setBroken

public void setBroken(int pMajor,
                      int pMinor)
Set the major and minor broken (dashed) line pens. Negative values are ignored.


setDouble

public void setDouble(int pMajor,
                      int pMinor)
Set the major and minor double line pens. Negative values are ignored.


toPizza

public java.lang.String toPizza(java.lang.String pPrefix)
Description copied from class: GraphPanel

This method extracts the configuration and state information from a generator and produces java.util.Properties-style output. A String prefix can be prepended to each key. If 'pPrefix' is not null or blank it will be attached to the front of the key String, separated by a single dot. If the prefix does not end with a dot one will be supplied automatically.

Use of the prefix allows multiple configurations to be stored in a single file. Also, since each generator has its own unique prefix (separate from the one supplied) multiple generator configs can be stored in a single file.

This is primarily a scripting method. It was developed in order to allow the perfect settings to be saved in a (scripting-) language-agnostic way that was also human-readable. The individual property names are typically Java-fied versions of their GUI labels. If MathTools is run from its JAR and the standard GUI is present the instances exposed to scripts are the ones in the GUI, so setting values in the GUI will affect script output and settings made by the script are reflected in the GUI.

Specified by:
toPizza in class GraphPanel
Parameters:
pPrefix - The prefix to prepend to each key. Ignored if null or blank.

eatPizza

public void eatPizza(java.util.Properties pPizza,
                     java.lang.String pPrefix)
Description copied from class: GraphPanel

This method accepts a Properties object and an optional String prefix and attempts to extract configuration data from it. It complements toPizza(). If 'pPizza' is null or empty nothing happens: the method returns silently. If 'pPrefix' is not null or blank it is used as a prefix to each key. If the String sent in does not end with a dot one will be supplied automatically. All of the keys requested have default valus that match the ones on the GUI.

Under normal cirucmstances the generator instances exposed to scripts are the ones in the GUI so changes using one are reflected in the other.

Specified by:
eatPizza in class GraphPanel
Parameters:
pPizza - A java.util.Properties object containing configuration data.
pPrefix - An optional prefix to include with each key. Ignored if null or blank.