com.melloware.jukes.gui.view.validation
Class IconFeedbackPanel
java.lang.Object
java.awt.Component
java.awt.Container
javax.swing.JComponent
javax.swing.JLayeredPane
com.melloware.jukes.gui.view.validation.IconFeedbackPanel
- All Implemented Interfaces:
- java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, javax.accessibility.Accessible
public final class IconFeedbackPanel
- extends javax.swing.JLayeredPane
Can display validation feedback icons "over" a content panel.
It observes a ValidationResultModel and creates icon labels
in a feedback layer of a JLayeredPane on top of the content layer.
To position the feedback labels, the content pane is traversed
and searched for text components that match a validation message key
in this panel's observed ValidationResultModel.
Note: This panel doesn't reserve space for the portion
used to display the overlayed feedback components. It has been designed
to not change the layout of the wrapped content. Therefore you must reserve
this space, or in other words, you must ensure that the wrapped content
provides enough space to display the overlayed components.
Since the current implementation positions the overlay components
in the lower left, just make sure that there are about 6 pixel to the left
and bottom of the input components that can be marked.
This panel handles two event types:
- the ValidationResultModel changes; in this case the set of visible
feedback components shall mark the input components that match the
new validation result. This is done by this class' internal
ValidationResultChangeHandler which in turn invokes
#updateFeedbackComponents.
- the content layout changes; the feedback components must then be
repositioned to reflect the position of the overlayed input components.
This is done by overriding
#validateTree and invoking
#repositionFeedBackComponents after the child tree has
been layed out. The current simple but expensive implementation
updates all components.
Copyright (c) 1999-2007 Melloware, Inc.
- Version:
- 4.0
- Author:
- Emil A. Lefkof III , Karsten Lentzsch, Martin Skopp
- See Also:
- Serialized Form
| Nested classes/interfaces inherited from class javax.swing.JLayeredPane |
javax.swing.JLayeredPane.AccessibleJLayeredPane |
| Nested classes/interfaces inherited from class javax.swing.JComponent |
javax.swing.JComponent.AccessibleJComponent |
| 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 |
| Fields inherited from class javax.swing.JLayeredPane |
DEFAULT_LAYER, DRAG_LAYER, FRAME_CONTENT_LAYER, LAYER_PROPERTY, MODAL_LAYER, PALETTE_LAYER, POPUP_LAYER |
| 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 |
IconFeedbackPanel(com.jgoodies.validation.ValidationResultModel model,
javax.swing.JComponent content)
Creates an IconFeedbackPanel on the given ValidationResultModel
using the specified content panel. |
|
Method Summary |
static javax.swing.JComponent |
getWrappedComponentTree(com.jgoodies.validation.ValidationResultModel model,
javax.swing.JComponent root)
Wraps the components in the given component tree with instances
of IconFeedbackPanel where necessary. |
protected void |
validateTree()
Recursively descends the container tree and recomputes the
layout for any subtrees marked as needing it (those marked as
invalid). |
| Methods inherited from class javax.swing.JLayeredPane |
addImpl, getAccessibleContext, getComponentCountInLayer, getComponentsInLayer, getComponentToLayer, getIndexOf, getLayer, getLayer, getLayeredPaneAbove, getObjectForLayer, getPosition, highestLayer, insertIndexForLayer, isOptimizedDrawingEnabled, lowestLayer, moveToBack, moveToFront, paint, paramString, putLayer, remove, removeAll, setLayer, setLayer, setPosition |
| Methods inherited from class javax.swing.JComponent |
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, 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, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, 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, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI |
| 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, processContainerEvent, processEvent, remove, 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, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, 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, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, 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 |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
IconFeedbackPanel
public IconFeedbackPanel(com.jgoodies.validation.ValidationResultModel model,
javax.swing.JComponent content)
- Creates an IconFeedbackPanel on the given ValidationResultModel
using the specified content panel.
Note: Typically you should wrap component trees with
getWrappedComponentTree(ValidationResultModel, JComponent),
not this constructor.
Note: You must not add or remove components
from the content once this constructor has been invoked.
- Parameters:
model - the ValidationResultModel to observecontent - the panel that contains the content components
- Throws:
java.lang.NullPointerException - if model or content is null.
getWrappedComponentTree
public static javax.swing.JComponent getWrappedComponentTree(com.jgoodies.validation.ValidationResultModel model,
javax.swing.JComponent root)
- Wraps the components in the given component tree with instances
of IconFeedbackPanel where necessary. Such a wrapper is required
for all JScrollPanes that contain multiple children and
for the root - unless it's a JScrollPane with multiple children.
- Parameters:
root - the root of the component tree to wrap
- Returns:
- the wrapped component tree
validateTree
protected void validateTree()
- Recursively descends the container tree and recomputes the
layout for any subtrees marked as needing it (those marked as
invalid). In addition to the superclass behavior, we reposition
the feedback components after the child components have been
validated.
We reposition the feedback components only, if this panel is visible;
if it becomes visible, #validateTree will be invoked.
- Overrides:
validateTree in class java.awt.Container
- See Also:
Container.validateTree(),
Container.validate(),
Container.invalidate(),
Container.doLayout(),
Component.setVisible(boolean),
LayoutManager
Copyright © 1999-2009 Melloware Inc. All Rights Reserved.