# Class SynthListUI

java.lang.Object
javax.swing.plaf.ComponentUI
javax.swing.plaf.ListUI
javax.swing.plaf.basic.BasicListUI
javax.swing.plaf.synth.SynthListUI

All Implemented Interfaces:
  `PropertyChangeListener, EventListener, SynthConstants, SynthUI`

public class SynthListUI extends BasicListUI implements PropertyChangeListener, SynthUI
Provides the Synth L&F UI delegate for `JList`.

Since:
  1.7

## Nested Class Summary

### Nested classes/interfaces declared in class BasicListUI

`BasicListUI.FocusHandler, BasicListUI.ListDataHandler, BasicListUI.ListSelectionHandler, BasicListUI.MouseInputHandler, BasicListUI.PropertyChangeHandler`
Modifier and Type
Class
Description
`class`
`BasicListUI.FocusHandler`
This class should be treated as a "protected" inner class.
`class`
`BasicListUI.ListDataHandler`
The `ListDataListener` that's added to the `JLists` model at `installUI time`, and whenever the JList.model property changes.
`class`
`BasicListUI.ListSelectionHandler`
The ListSelectionListener that's added to the JLists selection model at installUI time, and whenever the JList.selectionModel property changes.
`class`
`BasicListUI.MouseInputHandler`
Mouse input, and focus handling for JList.
`class`
`BasicListUI.PropertyChangeHandler`
The PropertyChangeListener that's added to the JList at installUI time.

## Field Summary

### Fields declared in class BasicListUI

`cellHeight, cellHeights, cellRendererChanged, cellWidth, fixedCellHeightChanged, fixedCellWidthChanged, focusListener, fontChanged, list, listDataListener, listSelectionListener, modelChanged, mouseInputListener, propertyChangeListener, prototypeCellValueChanged, rendererPane, selectionModelChanged, updateLayoutStateNeeded`
Modifier and Type
Field
Description
`protected int`
`cellHeight`
The height of cell.
`protected int[]`
`cellHeights`
The array of cells' height
`protected static final int`
`cellRendererChanged`
The bit relates to cell renderer changed property.
`protected int`
`cellWidth`
The width of cell.
`protected static final int`
`fixedCellHeightChanged`
The bit relates to fixed cell height changed property.
`protected static final int`
`fixedCellWidthChanged`
The bit relates to fixed cell width changed property.
`protected FocusListener`
`focusListener`
`FocusListener` that attached to `JList`.
`protected static final int`
`fontChanged`
The bit relates to font changed property.
`protected JList<Object>`
`list`
The instance of `JList`.
`protected ListDataListener`
`listDataListener`
`ListDataListener` that attached to `JList`.
`protected ListSelectionListener`
`listSelectionListener`
`ListSelectionListener` that attached to `JList`.
`protected static final int`
`modelChanged`
The bit relates to model changed property.
`protected MouseInputListener`
`mouseInputListener`
`MouseInputListener` that attached to `JList`.
`protected PropertyChangeListener`
`propertyChangeListener`
`PropertyChangeListener` that attached to `JList`.
`protected static final int`
`prototypeCellValueChanged`
The bit relates to prototype cell value changed property.
`protected CellRendererPane`
`rendererPane`
The instance of `CellRendererPane`.
`protected static final int`
`selectionModelChanged`
The bit relates to selection model changed property.
`protected int`
`updateLayoutStateNeeded`
The value represents changes to `JList` model.

### Fields declared in interface SynthConstants

`DEFAULT, DISABLED, ENABLED, FOCUSED, MOUSE_OVER, PRESSED, SELECTED`
Modifier and Type
Field
Description
`static final int`
`DEFAULT`
Indicates the region is the default.
`static final int`
`DISABLED`
Primary state indicating the region is not enabled.
`static final int`
`ENABLED`
Primary state indicating the component is enabled.
`static final int`
`FOCUSED`
Indicates the region has focus.
`static final int`
`MOUSE_OVER`
Primary state indicating the mouse is over the region.
`static final int`
`PRESSED`
Primary state indicating the region is in a pressed state.
`static final int`
`SELECTED`
Indicates the region is selected.

## Constructor Summary

Constructors
Constructor
Description
`SynthListUI()`
Constructs a `SynthListUI`.

## Method Summary

Modifier and Type
Method
Description
`static ComponentUI`
`createUI(JComponent list)`
Creates a new UI object for the given component.
`SynthContext`
`getContext(JComponent c)`
Returns the Context for the specified component.
`void`
`paintBorder(SynthContext context, Graphics g, int x, int y, int w, int h)`
Paints the border.
`void`
`propertyChange(PropertyChangeEvent e)`
This method gets called when a bound property is changed.
`void`
`update(Graphics g, JComponent c)`
Notifies this UI delegate to repaint the specified component.

### Methods declared in class BasicListUI

`convertRowToY, convertYToRow, createFocusListener, createListDataListener, createListSelectionListener, createMouseInputListener, createPropertyChangeListener, getBaseline, getBaselineResizeBehavior, getCellBounds, getPreferredSize, getRowHeight, indexToLocation, installDefaults, installKeyboardActions, installListeners, installUI, locationToIndex, maybeUpdateLayoutState, paint, paintCell, selectNextIndex, selectPreviousIndex, uninstallDefaults, uninstallKeyboardActions, uninstallListeners, uninstallUI, updateLayoutState`
Modifier and Type
Method
Description
`protected int`
`convertRowToY(int row)`
Return the `JList` relative Y coordinate of the origin of the specified row or -1 if row isn't valid.
`protected int`
`convertYToRow(int y0)`
Convert the `JList` relative coordinate to the row that contains it, based on the current layout.
`protected FocusListener`
`createFocusListener()`
Returns an instance of `FocusListener`.
`protected ListDataListener`
`createListDataListener()`
Creates an instance of `ListDataListener` that's added to the `JLists` by model as needed.
`protected ListSelectionListener`
`createListSelectionListener()`
Creates an instance of `ListSelectionHandler` that's added to the `JLists` by selectionModel as needed.
`protected MouseInputListener`
`createMouseInputListener()`
Creates a delegate that implements `MouseInputListener`.
`protected PropertyChangeListener`
`createPropertyChangeListener()`
Creates an instance of `PropertyChangeHandler` that's added to the `JList` by `installUI()`.
`int`
`getBaseline(JComponent c, int width, int height)`
Returns the baseline.
`Component.BaselineResizeBehavior`
`getBaselineResizeBehavior(JComponent c)`
Returns an enum indicating how the baseline of the component changes as the size changes.
`Rectangle`
`getCellBounds(JList<?> list, int index1, int index2)`
Returns the bounding rectangle, in the given list's coordinate system, for the range of cells specified by the two indices.
`Dimension`
`getPreferredSize(JComponent c)`
The preferredSize of the list depends upon the layout orientation.
`protected int`
`getRowHeight(int row)`
Returns the height of the specified row based on the current layout.
`Point`
`indexToLocation(JList<?> list, int index)`
Returns the origin in the given `JList`, of the specified item, in the list's coordinate system.
`protected void`
`installDefaults()`
Initializes list properties such as font, foreground, and background, and adds the CellRendererPane.
`protected void`
`installKeyboardActions()`
Registers the keyboard bindings on the `JList` that the `BasicListUI` is associated with.
`protected void`
`installListeners()`
Creates and installs the listeners for the JList, its model, and its selectionModel.
`void`
`installUI(JComponent c)`
Initializes `this.list` by calling `installDefaults()`, `installListeners()`, and `installKeyboardActions()` in order.
`int`
`locationToIndex(JList<?> list, Point location)`
Returns the cell index in the specified `JList` closest to the given location in the list's coordinate system.
`protected void`
`maybeUpdateLayoutState()`
If updateLayoutStateNeeded is non zero, call updateLayoutState() and reset updateLayoutStateNeeded.
`void`
`paint(Graphics g, JComponent c)`
Paint the rows that intersect the Graphics objects clipRect.
`protected void`
`paintCell(Graphics g, int row, Rectangle rowBounds, ListCellRenderer<Object> cellRenderer, ListModel<Object> dataModel, ListSelectionModel selModel, int leadIndex)`
Paint one List cell: compute the relevant state, get the "rubber stamp" cell renderer component, and then use the `CellRendererPane` to paint it.
`protected void`
`selectNextIndex()`
Selected the previous row and force it to be visible.
`protected void`
`selectPreviousIndex()`
Selected the previous row and force it to be visible.
`protected void`
`uninstallDefaults()`
Sets the list properties that have not been explicitly overridden to `null`.
`protected void`
`uninstallKeyboardActions()`
Unregisters keyboard actions installed from `installKeyboardActions`.
`protected void`
`uninstallListeners()`
Removes the listeners from the JList, its model, and its selectionModel.
`void`
`uninstallUI(JComponent c)`
Uninitializes `this.list` by calling `uninstallListeners()`, `uninstallKeyboardActions()`, and `uninstallDefaults()` in order.
`protected void`
`updateLayoutState()`
Recompute the value of cellHeight or cellHeights based and cellWidth, based on the current font and the current values of fixedCellWidth, fixedCellHeight, and prototypeCellValue.

### Methods declared in class ComponentUI

`contains, getAccessibleChild, getAccessibleChildrenCount, getMaximumSize, getMinimumSize`
Modifier and Type
Method
Description
`boolean`
`contains(JComponent c, int x, int y)`
Returns `true` if the specified x,y location is contained within the look and feel's defined shape of the specified component.
`Accessible`
`getAccessibleChild(JComponent c, int i)`
Returns the `i`th `Accessible` child of the object.
`int`
`getAccessibleChildrenCount(JComponent c)`
Returns the number of accessible children in the object.
`Dimension`
`getMaximumSize(JComponent c)`
Returns the specified component's maximum size appropriate for the look and feel.
`Dimension`
`getMinimumSize(JComponent c)`
Returns the specified component's minimum size appropriate for the look and feel.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
Modifier and Type
Method
Description
`protected Object`
`clone()`
Creates and returns a copy of this object.
`boolean`
`equals(Object obj)`
Indicates whether some other object is "equal to" this one.
`protected void`
`finalize()`
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release.
`final Class<?>`
`getClass()`
Returns the runtime class of this `Object`.
`int`
`hashCode()`
Returns a hash code value for this object.
`final void`
`notify()`
Wakes up a single thread that is waiting on this object's monitor.
`final void`
`notifyAll()`
Wakes up all threads that are waiting on this object's monitor.
`String`
`toString()`
Returns a string representation of the object.
`final void`
`wait()`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
`final void`
`wait(long timeoutMillis)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
`final void`
`wait(long timeoutMillis, int nanos)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

## Constructor Details

### SynthListUI

public SynthListUI()
Constructs a `SynthListUI`.

## Method Details

### createUI

public static ComponentUI createUI(JComponent list)
Creates a new UI object for the given component.

Parameters:
  `list` - component to create UI object for
Returns:
  the UI object

### update

public void update(Graphics g, JComponent c)
Notifies this UI delegate to repaint the specified component. This method paints the component background, then calls the `BasicListUI.paint(Graphics, JComponent)` method.

In general, this method does not need to be overridden by subclasses. All Look and Feel rendering code should reside in the `paint` method.

Overrides:
  `update` in class `ComponentUI`
Parameters:
  `g` - the `Graphics` object used for painting
  `c` - the component being painted
See Also:
  - `BasicListUI.paint(Graphics, JComponent)`

### paintBorder

public void paintBorder(SynthContext context, Graphics g, int x, int y, int w, int h)
Paints the border.

Specified by:
  `paintBorder` in interface `SynthUI`
Parameters:
  `context` - a component context
  `g` - `Graphics` to paint on
  `x` - the X coordinate
  `y` - the Y coordinate
  `w` - width of the border
  `h` - height of the border

### propertyChange

public void propertyChange(PropertyChangeEvent e)
This method gets called when a bound property is changed.

Specified by:
  `propertyChange` in interface `PropertyChangeListener`
Parameters:
  `e` - A PropertyChangeEvent object describing the event source and the property that has changed.

### getContext

public SynthContext getContext(JComponent c)
Returns the Context for the specified component.

Specified by:
  `getContext` in interface `SynthUI`
Parameters:
  `c` - Component requesting SynthContext.
Returns:
  SynthContext describing component.