org.lyra.Widgets
Class TickerBufferedLabel

java.lang.Object
  extended by java.awt.Component
      extended by java.awt.Container
          extended by javax.swing.JComponent
              extended by javax.swing.JLabel
                  extended by org.lyra.Widgets.TickerBufferedLabel
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable, java.lang.Runnable, javax.accessibility.Accessible, javax.swing.SwingConstants

public class TickerBufferedLabel
extends javax.swing.JLabel
implements java.lang.Runnable

Provides a ticker tape capability to the javax.swing.JLabel display in order to permit them to display larger strings then they are physically able to display.

This variant scrolls the characters based on a single character movement which can lead to flashing when the screen is not double buffered. As a result its alternate variant should be used in that circumstance which works better on such displays.

Version:
1.0.5, %Revision, 174%, %LastChangedDate, 27/10/12 3:33PM%
Author:
Martin Foster
See Also:
TickerSimpleLabel, Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.JLabel
javax.swing.JLabel.AccessibleJLabel
 
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
 
Field Summary
private static int BUFFER
           
private  boolean Loop
           
private  java.awt.image.BufferedImage myCrop
           
private  int myDescent
           
private  int myHeight
           
private  int myLimit
           
private  int myPosition
           
private  java.awt.Dimension mySize
           
private  java.awt.image.BufferedImage mySource
           
private  java.lang.Thread myThread
           
private  int myWidth
           
private  boolean Redraw
           
private  boolean Reprocess
           
private static long serialVersionUID
           
 
Fields inherited from class javax.swing.JLabel
labelFor
 
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 javax.swing.SwingConstants
BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
TickerBufferedLabel()
          Base constructor which initialises none of the elements.
TickerBufferedLabel(java.lang.String msg)
          Constructor which takes the initial message as the base.
TickerBufferedLabel(java.lang.String msg, java.awt.Font font)
          Constructor which takes the initial message and font for use as the base.
TickerBufferedLabel(java.lang.String msg, java.awt.Font font, int limit)
          Constructor which takes the initial message, font and limit for use as the base.
TickerBufferedLabel(java.lang.String msg, int limit)
          Constructor which takes the initial message and limit for use as the base.
 
Method Summary
private  void fetchMetrics()
          Makes use of the FontMetrics methods to establish sizing elements in order to determine the needs for ticker functionality.
private  void fetchMetrics(java.awt.FontMetrics metrics)
          Makes use of the FontMetrics methods to establish sizing elements in order to determine the needs for ticker functionality.
private  void fetchMetrics(java.awt.Graphics g)
          Makes use of the FontMetrics methods to establish sizing elements in order to determine the needs for ticker functionality.
private  void fetchSource(java.awt.Graphics g)
          Creates a buffered image for use.
private  java.awt.image.BufferedImage getCrop()
          Returns the cropped image for use.
 int getHeight()
           
 int getLimit()
          Returns the established limit for message displays.
 int getWidth()
           
 void paint(java.awt.Graphics g)
           
 void run()
           
 void setBorder(javax.swing.border.Border border)
           
private  void setCrop(java.awt.image.BufferedImage img)
          Assigns the cropped image for use.
 void setFont(java.awt.Font font)
           
 void setLimit(int limit)
          Establishes the limit for message display.
 void setMaximumSize(java.awt.Dimension maximumSize)
           
 void setMinimumSize(java.awt.Dimension minimumSize)
           
 void setPreferredSize(java.awt.Dimension preferredSize)
           
 void setText(java.lang.String msg)
           
 
Methods inherited from class javax.swing.JLabel
checkHorizontalKey, checkVerticalKey, getAccessibleContext, getDisabledIcon, getDisplayedMnemonic, getDisplayedMnemonicIndex, getHorizontalAlignment, getHorizontalTextPosition, getIcon, getIconTextGap, getLabelFor, getText, getUI, getUIClassID, getVerticalAlignment, getVerticalTextPosition, imageUpdate, paramString, setDisabledIcon, setDisplayedMnemonic, setDisplayedMnemonic, setDisplayedMnemonicIndex, setHorizontalAlignment, setHorizontalTextPosition, setIcon, setIconTextGap, setLabelFor, setUI, setVerticalAlignment, setVerticalTextPosition, updateUI
 
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, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, 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, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setNextFocusableComponent, setOpaque, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
 
Methods inherited from class java.awt.Container
add, add, add, add, add, addContainerListener, addImpl, 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, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusBackward, transferFocusDownCycle, 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, 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, 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
 

Field Detail

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values

myHeight

private int myHeight

myWidth

private int myWidth

myLimit

private int myLimit

myDescent

private int myDescent

mySize

private java.awt.Dimension mySize

Reprocess

private boolean Reprocess

Redraw

private boolean Redraw

Loop

private boolean Loop

myPosition

private int myPosition

mySource

private java.awt.image.BufferedImage mySource

myCrop

private java.awt.image.BufferedImage myCrop

myThread

private java.lang.Thread myThread

BUFFER

private static final int BUFFER
See Also:
Constant Field Values
Constructor Detail

TickerBufferedLabel

public TickerBufferedLabel()
Base constructor which initialises none of the elements.


TickerBufferedLabel

public TickerBufferedLabel(java.lang.String msg)
Constructor which takes the initial message as the base.

Parameters:
msg - String message for display in ticker format.

TickerBufferedLabel

public TickerBufferedLabel(java.lang.String msg,
                           java.awt.Font font)
Constructor which takes the initial message and font for use as the base.

Parameters:
msg - String message for display in ticker format.
font - Font for display.

TickerBufferedLabel

public TickerBufferedLabel(java.lang.String msg,
                           java.awt.Font font,
                           int limit)
Constructor which takes the initial message, font and limit for use as the base.

Parameters:
msg - String message for display in ticker format.
font - Font for display.
limit - Maximum width which will lead to a ticker incident.

TickerBufferedLabel

public TickerBufferedLabel(java.lang.String msg,
                           int limit)
Constructor which takes the initial message and limit for use as the base.

Parameters:
msg - String message for display in ticker format.
limit - Maximum width which will lead to a ticker incident.
Method Detail

fetchMetrics

private void fetchMetrics(java.awt.FontMetrics metrics)
Makes use of the FontMetrics methods to establish sizing elements in order to determine the needs for ticker functionality.

Parameters:
metrics - FontMetrics handle for information.

fetchMetrics

private void fetchMetrics()
Makes use of the FontMetrics methods to establish sizing elements in order to determine the needs for ticker functionality.


fetchMetrics

private void fetchMetrics(java.awt.Graphics g)
Makes use of the FontMetrics methods to establish sizing elements in order to determine the needs for ticker functionality.

Parameters:
g - java.awt.Graphics handle for display.

fetchSource

private void fetchSource(java.awt.Graphics g)
Creates a buffered image for use. This will enable us to avoid having to generate the same elements over and over.


setCrop

private void setCrop(java.awt.image.BufferedImage img)
Assigns the cropped image for use.

Parameters:
img - BufferedImage containing cropped section for display.

getCrop

private java.awt.image.BufferedImage getCrop()
Returns the cropped image for use.

Returns:
BufferedImage containing cropped section for display.

setText

public void setText(java.lang.String msg)
Overrides:
setText in class javax.swing.JLabel

setBorder

public void setBorder(javax.swing.border.Border border)
Overrides:
setBorder in class javax.swing.JComponent

setFont

public void setFont(java.awt.Font font)
Overrides:
setFont in class javax.swing.JComponent

setLimit

public void setLimit(int limit)
Establishes the limit for message display. Any item sized less then the message will not be displayed.

Parameters:
limit - Display limit for the message.

getLimit

public int getLimit()
Returns the established limit for message displays. Anything under the limit will not shift in position.

Returns:
Integer containing the display limit for the message.

paint

public void paint(java.awt.Graphics g)
Overrides:
paint in class javax.swing.JComponent

getWidth

public int getWidth()
Overrides:
getWidth in class javax.swing.JComponent

getHeight

public int getHeight()
Overrides:
getHeight in class javax.swing.JComponent

setMinimumSize

public void setMinimumSize(java.awt.Dimension minimumSize)
Overrides:
setMinimumSize in class javax.swing.JComponent

setPreferredSize

public void setPreferredSize(java.awt.Dimension preferredSize)
Overrides:
setPreferredSize in class javax.swing.JComponent

setMaximumSize

public void setMaximumSize(java.awt.Dimension maximumSize)
Overrides:
setMaximumSize in class javax.swing.JComponent

run

public void run()
Specified by:
run in interface java.lang.Runnable