org.problets.domain.view
Class ViewSequencer

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 org.problets.domain.view.AbstractView
                      extended by org.problets.domain.view.ViewSequencer
All Implemented Interfaces:
java.awt.event.ActionListener, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible
Direct Known Subclasses:
FeedbackViewSequencer, ViewSequencerModal

public class ViewSequencer
extends AbstractView

Sequences through all the images in a sequence, Displays a title, next, previous and context-sensitive done buttons. NOTE: This will receive all the events created by the displayed views and pass on any event that it cannot process to the view that created it. Possible Combinations: wrapAround noRewind Result ------------------------------ true true round robin forward only true false round robin fwd/bkwd (loosest) false true linear, no rewind (strictest) false false forth and back ------------------------------ // This class will work correctly if either: // each modal view has a distinct action command // or multiple views with same action command are expected to report completion // in the order in which they appear in the viewvector // which cannot be guaranteed since some/all may issue event right at the start // as is the case here. // but, this is the best solution unless there is some way to associate each event with the view that generated it: // which means viewsequencer must be able to communicate with each view // through a view.mutator which means views must implement some interface, making viewsequencer less general // or event is generated by the object added into the viewvector, not some object nested inside it // as is unfortunately the case here (animationcontroller generates the event, not animationview) // Implemented ViewSequencerModal - which is another take on exactly this class' functionality. // BUT, since it saves the enabled status of buttons independently per view, it is better equipped to // handle multiple modal views, if we can associate events generated with the views that generate them.

Author:
Amruth Kumar
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Nested classes/interfaces inherited from class java.awt.Component
java.awt.Component.BaselineResizeBehavior
 
Field Summary
static java.lang.String SEQUENCE_COMPLETED
           
 
Fields inherited from class org.problets.domain.view.AbstractView
canEndStage
 
Fields inherited from class javax.swing.JComponent
TOOL_TIP_TEXT_KEY, 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 java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
ViewSequencer(java.awt.event.ActionListener inRoot)
          Method called when establishing ViewSequencer before determining the views that it should display
ViewSequencer(java.awt.event.ActionListener inRoot, boolean inWrapAround, boolean inNoRewind)
          Method called when establishing ViewSequencer before determining the views that it should display
ViewSequencer(java.util.Vector inViewVector, java.awt.event.ActionListener inRoot)
           
ViewSequencer(java.util.Vector inViewVector, java.awt.event.ActionListener inRoot, boolean inWrapAround, boolean inNoRewind)
           
 
Method Summary
 void actionPerformed(java.awt.event.ActionEvent evt)
          Code assumes that a button is never incorrectly enabled.
static void main(java.lang.String[] args)
           
 void setModal(javax.swing.JPanel modalView, java.lang.String inActionCommand)
          Sets a particular view to be modal, i.e., sequencer will not display Next/Done until an event with the specified actioncommand is received from the view
 void update(java.util.Vector inViewVector)
          Updates the view vector to be displayed by this sequencer
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUI, getUIClassID, setUI, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, 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, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintImmediately, paintImmediately, print, printAll, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, 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, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, 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, remove, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, validate
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, contains, createImage, createImage, createVolatileImage, createVolatileImage, dispatchEvent, enable, enableInputMethods, 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, 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
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

SEQUENCE_COMPLETED

public static final java.lang.String SEQUENCE_COMPLETED
See Also:
Constant Field Values
Constructor Detail

ViewSequencer

public ViewSequencer(java.awt.event.ActionListener inRoot)
Method called when establishing ViewSequencer before determining the views that it should display


ViewSequencer

public ViewSequencer(java.util.Vector inViewVector,
                     java.awt.event.ActionListener inRoot)

ViewSequencer

public ViewSequencer(java.awt.event.ActionListener inRoot,
                     boolean inWrapAround,
                     boolean inNoRewind)
Method called when establishing ViewSequencer before determining the views that it should display


ViewSequencer

public ViewSequencer(java.util.Vector inViewVector,
                     java.awt.event.ActionListener inRoot,
                     boolean inWrapAround,
                     boolean inNoRewind)
Method Detail

actionPerformed

public void actionPerformed(java.awt.event.ActionEvent evt)
Code assumes that a button is never incorrectly enabled. if noRewind, previousButton is always disabled. if only one view present, previous and next buttons disabled. if currentViewIndex == 0 && !wrapAround, previousButton is disabled if currentViewIndex == size - 1 && !wrapAround, nextButton is disabled


update

public void update(java.util.Vector inViewVector)
Updates the view vector to be displayed by this sequencer


setModal

public void setModal(javax.swing.JPanel modalView,
                     java.lang.String inActionCommand)
Sets a particular view to be modal, i.e., sequencer will not display Next/Done until an event with the specified actioncommand is received from the view


main

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