com.hdcookbook.grin.test.bigjdk
Class GenericMain

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 com.hdcookbook.grin.test.bigjdk.GenericMain
All Implemented Interfaces:
AnimationContext, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible
Direct Known Subclasses:
GrinView

public class GenericMain
extends java.awt.Frame
implements AnimationContext

This is a generic test program for exercising a show file. It accepts commands to boss the show around on stdin. Probably more interesting is the subclass of this, GrinView. This command-line version came first, but I pretty quickly got tired of it and made the GUI instead. Because it fell out of use, this class no longer has a main method; for the old gui-less tool, use "GrinView -noui".

Author:
Bill Foote (http://jovial.com)
See Also:
Serialized Form

Nested Class Summary
 
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
protected  java.lang.Object debugWaitingMonitor
          Monitor to be held while coordinating a pause in the animation for debug.
protected  SEShow show
           
 
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 java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
GenericMain()
           
GenericMain(java.lang.String grinxlet)
           
 
Method Summary
protected  void adjustScreenSize(java.lang.String scale, com.hdcookbook.grin.test.bigjdk.GenericMain.DeviceConfig config)
          Adjust the scaling factor and the screen size used to display the show.
protected  java.lang.String advanceFrames(int num)
           
 void animationFinishInitialization()
          Run the last part of initialization.
 void animationInitialize()
          Run the first part of initialization.
 void debugDrawFrameDone()
          When debugging frame-by-frame, this is called when a complete frame has just finished.
 java.lang.String doKeyboardCommand(java.lang.String s)
           
protected  void doWaitForUser()
          Do the actual waiting on the monitor for waitForUser
protected  void exitGrinview()
           
 AnimationClient[] getAnimationClients()
          Get the list of animation clients
 AnimationEngine getAnimationEngine()
          Give the animation engine
protected  float getFps()
           
 int getScaleDivisor()
           
 boolean getSendKeyUp()
           
protected  java.lang.String gotoSegment(java.lang.String name)
           
protected  void init(java.lang.String showName, boolean isBinary, ShowBuilder builder, java.lang.String initialSegmentName, boolean doAutoTest)
           
protected  void inputLoop()
           
 void resetAnimationClients(AnimationClient[] clients)
          Reset the list of animation clients
protected  void setBackground(java.net.URL file)
           
 void setDebugDraw(boolean doDebugDraw)
           
 void setDirectorClassName(java.lang.String nm)
           
protected  java.lang.String setFps(float newFps)
           
 void setSendKeyUp(boolean v)
           
 void snapshot()
           
protected  void startEngine()
           
protected  boolean userWaitingDone()
          This should be called when the wait of waitForUser() is done
protected  void waitForUser(java.lang.String msg)
          When debugging frame-by-frame, this waits for the user to do something, like hit enter or press a button.
 
Methods inherited from class java.awt.Frame
addNotify, getAccessibleContext, getCursorType, getExtendedState, getFrames, getIconImage, getMaximizedBounds, getMenuBar, getState, getTitle, isResizable, isUndecorated, paramString, 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, 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, paint, postEvent, processEvent, processWindowEvent, 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, addImpl, 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, paintComponents, preferredSize, print, printComponents, processContainerEvent, remove, remove, removeAll, removeContainerListener, setComponentZOrder, 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, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, 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, 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

show

protected SEShow show

debugWaitingMonitor

protected java.lang.Object debugWaitingMonitor
Monitor to be held while coordinating a pause in the animation for debug.

Constructor Detail

GenericMain

public GenericMain()

GenericMain

public GenericMain(java.lang.String grinxlet)
Method Detail

getAnimationClients

public AnimationClient[] getAnimationClients()
Get the list of animation clients


resetAnimationClients

public void resetAnimationClients(AnimationClient[] clients)
Reset the list of animation clients


getAnimationEngine

public AnimationEngine getAnimationEngine()
Give the animation engine


setBackground

protected void setBackground(java.net.URL file)

adjustScreenSize

protected void adjustScreenSize(java.lang.String scale,
                                com.hdcookbook.grin.test.bigjdk.GenericMain.DeviceConfig config)
Adjust the scaling factor and the screen size used to display the show. This can only be called before init().


setDirectorClassName

public void setDirectorClassName(java.lang.String nm)

init

protected void init(java.lang.String showName,
                    boolean isBinary,
                    ShowBuilder builder,
                    java.lang.String initialSegmentName,
                    boolean doAutoTest)

exitGrinview

protected void exitGrinview()

getFps

protected float getFps()

startEngine

protected void startEngine()

inputLoop

protected void inputLoop()

waitForUser

protected void waitForUser(java.lang.String msg)
When debugging frame-by-frame, this waits for the user to do something, like hit enter or press a button.


debugDrawFrameDone

public void debugDrawFrameDone()
When debugging frame-by-frame, this is called when a complete frame has just finished.


doWaitForUser

protected final void doWaitForUser()
Do the actual waiting on the monitor for waitForUser


userWaitingDone

protected boolean userWaitingDone()
This should be called when the wait of waitForUser() is done

Returns:
true if we were waiting

snapshot

public void snapshot()

doKeyboardCommand

public java.lang.String doKeyboardCommand(java.lang.String s)

gotoSegment

protected java.lang.String gotoSegment(java.lang.String name)

advanceFrames

protected java.lang.String advanceFrames(int num)

setDebugDraw

public void setDebugDraw(boolean doDebugDraw)

setSendKeyUp

public void setSendKeyUp(boolean v)

getSendKeyUp

public boolean getSendKeyUp()

setFps

protected java.lang.String setFps(float newFps)

animationInitialize

public void animationInitialize()
                         throws java.lang.InterruptedException
Description copied from interface: AnimationContext
Run the first part of initialization. By the time this is done, all of the initXXX methods of the animation framework that need to be called should be. Notably, the animation framework should be provided with a component. This method is called as the first step in the animation thread.

If this initialization is time-consuming, it should poll AnimationEngine.destroyRequested() from time to time, and bail out if needed. A good way to do this is by calling checkDestroy().

Specified by:
animationInitialize in interface AnimationContext
Throws:
java.lang.InterruptedException
See Also:
AnimationEngine.destroyRequested(), AnimationEngine.checkDestroy()

animationFinishInitialization

public void animationFinishInitialization()
                                   throws java.lang.InterruptedException
Description copied from interface: AnimationContext
Run the last part of initialization. This is called by the animation thread after all of the animation clients are initialized. This is the last initialization step before running the actual animation loop. It's a good place to set the state of the UI, e.g. by calling a GRIN Show object's activateSegment() command. It might also be a reasonable place to call System.gc(), since initialization normally creates a lot of garbage, and the normal running of an xlet hopefully doesn't.

If this initialization is time-consuming, it should poll AnimationEngine.destroyRequested() from time to time, and bail out if needed. A good way to do this is by calling checkDestroy().

Specified by:
animationFinishInitialization in interface AnimationContext
Throws:
java.lang.InterruptedException
See Also:
AnimationEngine.destroyRequested(), Show.activateSegment(com.hdcookbook.grin.Segment)

getScaleDivisor

public int getScaleDivisor()