Package org.astrogrid.samp.gui
Class IconBox
- java.lang.Object
-
- java.awt.Component
-
- java.awt.Container
-
- javax.swing.JComponent
-
- org.astrogrid.samp.gui.IconBox
-
- All Implemented Interfaces:
java.awt.image.ImageObserver
,java.awt.MenuContainer
,java.io.Serializable
class IconBox extends javax.swing.JComponent
Component which displays the contents of a ListModel as icons. Custom icon and tooltip generation are supported by use of a separate renderer object.- Since:
- 26 Nov 2008
- Author:
- Mark Taylor
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static interface
IconBox.CellRenderer
Defines how list model elements will be rendered as icons and tooltips.private class
IconBox.DefaultRenderer
Default renderer.private static class
IconBox.Entry
Convenience struct-type class which aggregates an icon and a tooltip.-
Nested classes/interfaces inherited from class javax.swing.JComponent
javax.swing.JComponent.AccessibleJComponent
-
-
Field Summary
Fields Modifier and Type Field Description private java.awt.Color
disabledBg_
private static javax.swing.ListModel
EMPTY_LIST_MODEL
private java.awt.Color
enabledBg_
private java.util.List
entryList_
private int
gap_
private java.awt.Dimension
maxSize_
private java.awt.Dimension
minSize_
private javax.swing.ListModel
model_
private javax.swing.event.ListDataListener
modelListener_
private java.awt.Dimension
prefSize_
private IconBox.CellRenderer
renderer_
private boolean
reversed_
private boolean
trailing_
private int
transSize_
private boolean
vertical_
-
Fields inherited from class javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
-
-
Constructor Summary
Constructors Constructor Description IconBox(int transSize)
Constructor.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static javax.swing.ListModel
createEmptyListModel()
Constructs an immutable list model with no content.private IconBox.Entry
createEntry(int index)
Constructs an Entry object from an object contained in the ListModel, using the currently installed renderer.int
getIndexAt(java.awt.Point point)
Returns the index of the list model element whose icon is displayed at a given point in this component.java.awt.Dimension
getMaximumSize()
java.awt.Dimension
getMinimumSize()
javax.swing.ListModel
getModel()
Returns the list model used by this component.java.awt.Dimension
getPreferredSize()
IconBox.CellRenderer
getRenderer()
Returns the object which turns list model contents into display things.boolean
getReversed()
Returns the first-to-last ordering of the icons in this component.java.lang.String
getToolTipText(java.awt.event.MouseEvent evt)
boolean
getTrailing()
Returns the alignment of the icons in this component.int
getTransverseSize()
Returns the transverse dimension in pixels of this box.boolean
getVertical()
Returns whether icons will be lined up horizontally or vertically.protected void
paintComponent(java.awt.Graphics g)
private void
refreshState()
Refreshes the list-related state from scratch.void
setEnabled(boolean enabled)
void
setMaximumSize(java.awt.Dimension maxSize)
void
setMinimumSize(java.awt.Dimension minSize)
void
setModel(javax.swing.ListModel model)
Sets the list model for use with this component.void
setPreferredSize(java.awt.Dimension prefSize)
void
setRenderer(IconBox.CellRenderer renderer)
Sets the object which is used to turn list model contents into the icons and tooltips displayed by this component.void
setReversed(boolean reversed)
Sets the first-to-last ordering of the icons in this component.void
setTrailing(boolean trailing)
Sets the alignment of the icons in this component.void
setTransverseSize(int transSize)
Sets the transverse dimension in pixels of this box.void
setVertical(boolean vertical)
Sets whether icons will be lined up in a horizontal or vertical line.-
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, getNextFocusableComponent, getPopupLocation, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isOptimizedDrawingEnabled, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paint, paintBorder, paintChildren, paintImmediately, paintImmediately, paramString, 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, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setNextFocusableComponent, setOpaque, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
-
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, 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, getAccessibleContext, 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, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, 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, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
-
-
-
-
Field Detail
-
entryList_
private final java.util.List entryList_
-
modelListener_
private final javax.swing.event.ListDataListener modelListener_
-
enabledBg_
private final java.awt.Color enabledBg_
-
disabledBg_
private final java.awt.Color disabledBg_
-
vertical_
private boolean vertical_
-
trailing_
private boolean trailing_
-
reversed_
private boolean reversed_
-
transSize_
private int transSize_
-
gap_
private int gap_
-
renderer_
private IconBox.CellRenderer renderer_
-
model_
private javax.swing.ListModel model_
-
minSize_
private java.awt.Dimension minSize_
-
maxSize_
private java.awt.Dimension maxSize_
-
prefSize_
private java.awt.Dimension prefSize_
-
EMPTY_LIST_MODEL
private static final javax.swing.ListModel EMPTY_LIST_MODEL
-
-
Method Detail
-
setVertical
public void setVertical(boolean vertical)
Sets whether icons will be lined up in a horizontal or vertical line.- Parameters:
vertical
- true for vertical run, false for horizontal
-
getVertical
public boolean getVertical()
Returns whether icons will be lined up horizontally or vertically.- Returns:
- false for hormizontal run, true for vertical
-
setTrailing
public void setTrailing(boolean trailing)
Sets the alignment of the icons in this component.- Parameters:
trailing
- false for left/top, true for right/bottom alignment
-
getTrailing
public boolean getTrailing()
Returns the alignment of the icons in this component.- Returns:
- false for left/top, true for right/bottom alignment
-
setReversed
public void setReversed(boolean reversed)
Sets the first-to-last ordering of the icons in this component.- Parameters:
reversed
- false for increasing to right/bottom, true for increasig to left/top
-
getReversed
public boolean getReversed()
Returns the first-to-last ordering of the icons in this component.- Returns:
- false for increasing to right/bottom, true for increasig to left/top
-
setEnabled
public void setEnabled(boolean enabled)
- Overrides:
setEnabled
in classjavax.swing.JComponent
-
refreshState
private void refreshState()
Refreshes the list-related state from scratch.
-
createEntry
private IconBox.Entry createEntry(int index)
Constructs an Entry object from an object contained in the ListModel, using the currently installed renderer.- Parameters:
index
- index of entry in list- Returns:
- new entry
-
setModel
public void setModel(javax.swing.ListModel model)
Sets the list model for use with this component. Objects will be rendered as icons by using the currently intalled renderer.- Parameters:
model
- list model
-
getModel
public javax.swing.ListModel getModel()
Returns the list model used by this component.- Returns:
- list model
-
setTransverseSize
public void setTransverseSize(int transSize)
Sets the transverse dimension in pixels of this box.- Parameters:
transSize
- pixel count across list run
-
getTransverseSize
public int getTransverseSize()
Returns the transverse dimension in pixels of this box.- Returns:
- pixel count across run
-
setRenderer
public void setRenderer(IconBox.CellRenderer renderer)
Sets the object which is used to turn list model contents into the icons and tooltips displayed by this component.- Parameters:
renderer
- new renderer
-
getRenderer
public IconBox.CellRenderer getRenderer()
Returns the object which turns list model contents into display things. The default value tries to cast to Icon and uses toString for tooltip.- Returns:
- current renderer
-
setPreferredSize
public void setPreferredSize(java.awt.Dimension prefSize)
- Overrides:
setPreferredSize
in classjavax.swing.JComponent
-
getPreferredSize
public java.awt.Dimension getPreferredSize()
- Overrides:
getPreferredSize
in classjavax.swing.JComponent
-
setMinimumSize
public void setMinimumSize(java.awt.Dimension minSize)
- Overrides:
setMinimumSize
in classjavax.swing.JComponent
-
getMinimumSize
public java.awt.Dimension getMinimumSize()
- Overrides:
getMinimumSize
in classjavax.swing.JComponent
-
setMaximumSize
public void setMaximumSize(java.awt.Dimension maxSize)
- Overrides:
setMaximumSize
in classjavax.swing.JComponent
-
getMaximumSize
public java.awt.Dimension getMaximumSize()
- Overrides:
getMaximumSize
in classjavax.swing.JComponent
-
getIndexAt
public int getIndexAt(java.awt.Point point)
Returns the index of the list model element whose icon is displayed at a given point in this component.- Parameters:
point
- point to interrogate- Returns:
- list model index, or -1 if not found
-
paintComponent
protected void paintComponent(java.awt.Graphics g)
- Overrides:
paintComponent
in classjavax.swing.JComponent
-
getToolTipText
public java.lang.String getToolTipText(java.awt.event.MouseEvent evt)
- Overrides:
getToolTipText
in classjavax.swing.JComponent
-
createEmptyListModel
private static javax.swing.ListModel createEmptyListModel()
Constructs an immutable list model with no content.- Returns:
- dummy list model
-
-