de.sciss.gui
Class UnitLabel

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 de.sciss.gui.UnitLabel
All Implemented Interfaces:
java.awt.image.ImageObserver, java.awt.MenuContainer, java.beans.PropertyChangeListener, java.io.Serializable, java.util.EventListener, javax.accessibility.Accessible, javax.swing.Icon, javax.swing.SwingConstants

public class UnitLabel
extends javax.swing.JLabel
implements javax.swing.Icon, java.beans.PropertyChangeListener

This class extends JLabel by adding support for a list of labels which can be easily switched programmatically or by the user to whom a popup menu is presented whenever there is more than one label item. This is useful for adding switchable unit labels to number fields and is used by the ParamField class. You can think of UnitLabel as a JComboBox which uses a text and/or icon label as renderer and not a button.

Version:
0.33, 28-Jun-08
Author:
Hanns Holger Rutz
See Also:
ParamField, 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.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
protected  boolean cycle
           
protected  javax.swing.JPopupMenu pop
           
protected  int selectedIdx
           
protected  java.util.List units
           
 
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
UnitLabel()
          Creates a new empty label.
 
Method Summary
 void addActionListener(java.awt.event.ActionListener l)
          Registers a new listener to be informed about unit switches.
 void addUnit(javax.swing.Icon icon)
          Adds a new unit (icon label) to the end of the label list.
 void addUnit(java.lang.String name)
          Adds a new unit (text label) to the end of the label list.
 void addUnit(java.lang.String name, javax.swing.Icon icon)
          Adds a new unit (text/icon combo label) to the end of the label list.
protected  void fireUnitChanged()
           
 boolean getCycling()
           
 int getIconHeight()
          This method is part of the implementation of the Icon interface and should not be called directly.
 int getIconWidth()
          This method is part of the implementation of the Icon interface and should not be called directly.
 int getSelectedIndex()
          Queries the index of the currently selected unit.
 javax.swing.Action getSelectedUnit()
          Queries the action for selected index.
 javax.swing.Action getUnit(int idx)
          Queries the action for a given index.
 void paintIcon(java.awt.Component c, java.awt.Graphics g, int x, int y)
          This method is part of the implementation of the Icon interface and should not be called directly.
 void propertyChange(java.beans.PropertyChangeEvent e)
          Forwards Font property changes to the child gadgets
 void removeActionListener(java.awt.event.ActionListener l)
          Unregisters a new listener from being informed about unit switches.
 void setCycling(boolean b)
           
 void setSelectedIndex(int idx)
          Changes the currently selected unit.
 
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, setText, 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, 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, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, 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
 
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

pop

protected final javax.swing.JPopupMenu pop

units

protected final java.util.List units

selectedIdx

protected int selectedIdx

cycle

protected boolean cycle
Constructor Detail

UnitLabel

public UnitLabel()
Creates a new empty label.

Method Detail

getSelectedIndex

public int getSelectedIndex()
Queries the index of the currently selected unit.

Returns:
the index of the active unit or -1 if no unit has been selected

getUnit

public javax.swing.Action getUnit(int idx)
Queries the action for a given index. This action may contain a NAME or ICON field.

Returns:
the action at the given index

getSelectedUnit

public javax.swing.Action getSelectedUnit()
Queries the action for selected index. This action may contain a NAME or ICON field.

Returns:
the action at the selected index or null if no unit is selected

setSelectedIndex

public void setSelectedIndex(int idx)
Changes the currently selected unit. This method does not fire an action event.

Parameters:
idx - the new index. Values outside the allowed range (0 ... numUnits-1) are ignored.

addUnit

public void addUnit(java.lang.String name)
Adds a new unit (text label) to the end of the label list. If the unit list was priorly empty, this new label will be selected.

Parameters:
name - the name of the new label.

addUnit

public void addUnit(javax.swing.Icon icon)
Adds a new unit (icon label) to the end of the label list. If the unit list was priorly empty, this new label will be selected.

Parameters:
icon - the icon view of the new label.

addUnit

public void addUnit(java.lang.String name,
                    javax.swing.Icon icon)
Adds a new unit (text/icon combo label) to the end of the label list. If the unit list was priorly empty, this new label will be selected.

Parameters:
name - the name of the new label.
icon - the icon view of the new label.

setCycling

public void setCycling(boolean b)

getCycling

public boolean getCycling()

propertyChange

public void propertyChange(java.beans.PropertyChangeEvent e)
Forwards Font property changes to the child gadgets

Specified by:
propertyChange in interface java.beans.PropertyChangeListener

fireUnitChanged

protected void fireUnitChanged()

addActionListener

public void addActionListener(java.awt.event.ActionListener l)
Registers a new listener to be informed about unit switches. Whenever the user switches the unit by selecting an item from the popup menu, an ActionEvent is fired and delivered to all registered listeners.

Parameters:
l - the listener to register

removeActionListener

public void removeActionListener(java.awt.event.ActionListener l)
Unregisters a new listener from being informed about unit switches.

Parameters:
l - the listener to unregister

getIconWidth

public int getIconWidth()
This method is part of the implementation of the Icon interface and should not be called directly.

Specified by:
getIconWidth in interface javax.swing.Icon

getIconHeight

public int getIconHeight()
This method is part of the implementation of the Icon interface and should not be called directly.

Specified by:
getIconHeight in interface javax.swing.Icon

paintIcon

public void paintIcon(java.awt.Component c,
                      java.awt.Graphics g,
                      int x,
                      int y)
This method is part of the implementation of the Icon interface and should not be called directly.

Specified by:
paintIcon in interface javax.swing.Icon