allensoft.gui
Class CardPanel

java.lang.Object
  |
  +--java.awt.Component
        |
        +--java.awt.Container
              |
              +--javax.swing.JComponent
                    |
                    +--javax.swing.JPanel
                          |
                          +--allensoft.gui.CardPanel
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class CardPanel
extends javax.swing.JPanel

A simpler alternative to a JPanel with a CardLayout. The AWT CardLayout layout manager can be inconvenient to use because the special "stack of cards" operations it supports require a cast to use. For example to show the card named "myCard" given a JPanel with a CardLayout one would write:

 ((CardLayout)(myJPanel.getLayout())).show(myJPanel, "myCard");
 
This doesn't work well with Swing - all of the CardLayout display operations, like show call validate directly. Swing supports automatic validation (see JComponent.revalidate()); this direct call to validate is inefficient.

The CardPane JPanel subclass is intended to support a layout with a modest number of cards, on the order of 100 or less. A cards name is it's component name, as in java.awt.Component.getName(), which is set when the component is added to the CardPanel:

 myCardPanel.add(myChild, "MyChildName");
 myChild.getName() => "MyChildName"
 
As with CardLayout, the first child added to a CardPanel is made visible and there's only one child visible at a time. The showCard method accepts either a childs name or the child itself:
 myCardPanel.show("MyChildName");
 myCardPanel.show(myChild);
 

The CardPanel class doesn't support the vgap/hgap CardLayout properties since one can add a Border, see JComponent.setBorder().

See Also:
Serialized Form

Inner classes inherited from class javax.swing.JPanel
javax.swing.JPanel.AccessibleJPanel
 
Inner classes inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
 
Inner classes inherited from class java.awt.Container
java.awt.Container.AccessibleAWTContainer
 
Inner classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent
 
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 java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
CardPanel()
          Creates a CardPanel.
 
Method Summary
 int getVisibleChildIndex()
          Return the index of the first (and one would hope - only) visible child.
 void showCard(java.awt.Component card)
          Hide the currently visible child "card" and show the specified card.
 void showCard(java.lang.String name)
          Show the card with the specified name.
 void showFirstCard()
          Show the first card that was added to this CardPanel.
 void showLastCard()
          Show the last card that was added to this CardPanel.
 void showNextCard()
          Show the card that was added to this CardPanel after the currently visible card.
 void showPreviousCard()
          Show the card that was added to this CardPanel before the currently visible card.
 
Methods inherited from class javax.swing.JPanel
getAccessibleContext, getUIClassID, paramString, updateUI
 
Methods inherited from class javax.swing.JComponent
addAncestorListener, addNotify, addPropertyChangeListener, addPropertyChangeListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAutoscrolls, getBorder, getBounds, getClientProperty, getComponentGraphics, getConditionForKeyStroke, getDebugGraphicsOptions, getGraphics, getHeight, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getVerifyInputWhenFocusTarget, getVisibleRect, getWidth, getX, getY, grabFocus, hasFocus, hide, isDoubleBuffered, isFocusCycleRoot, isFocusTraversable, isLightweightComponent, isManagingFocus, isMaximumSizeSet, isMinimumSizeSet, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isPreferredSizeSet, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processFocusEvent, processKeyBinding, processKeyEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setDebugGraphicsOptions, setDoubleBuffered, setEnabled, setFont, setForeground, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getLayout, insets, invalidate, isAncestorOf, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, remove, removeAll, removeContainerListener, setLayout, validate, validateTree
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, getBackground, getBounds, getColorModel, getComponentOrientation, getCursor, getDropTarget, getFont, getFontMetrics, getForeground, getGraphicsConfiguration, getInputContext, getInputMethodRequests, getLocale, getLocation, getLocationOnScreen, getName, getParent, getPeer, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, imageUpdate, inside, isDisplayable, isEnabled, isLightweight, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, repaint, repaint, repaint, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CardPanel

public CardPanel()
Creates a CardPanel. Children, called "cards" in this API, should be added with add(). The first child we be made visible, subsequent children will be hidden. To show a card, use one of the show*Card methods.
Method Detail

getVisibleChildIndex

public int getVisibleChildIndex()
Return the index of the first (and one would hope - only) visible child. If a visible child can't be found, perhaps the caller has inexlicably hidden all of the children, then return -1.

showCard

public void showCard(java.awt.Component card)
Hide the currently visible child "card" and show the specified card. If the specified card isn't a child of the CardPanel then we add it here.

showCard

public void showCard(java.lang.String name)
Show the card with the specified name.
See Also:
Component.getName()

showNextCard

public void showNextCard()
Show the card that was added to this CardPanel after the currently visible card. If the currently visible card was added last, then show the first card.

showPreviousCard

public void showPreviousCard()
Show the card that was added to this CardPanel before the currently visible card. If the currently visible card was added first, then show the last card.

showFirstCard

public void showFirstCard()
Show the first card that was added to this CardPanel.

showLastCard

public void showLastCard()
Show the last card that was added to this CardPanel.