# Class SynthOptionPaneUI

java.lang.Object
javax.swing.plaf.ComponentUI
javax.swing.plaf.OptionPaneUI
javax.swing.plaf.basic.BasicOptionPaneUI
javax.swing.plaf.synth.SynthOptionPaneUI

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

public class SynthOptionPaneUI extends BasicOptionPaneUI implements PropertyChangeListener, SynthUI
Provides the Synth L&F UI delegate for `JOptionPane`.

Since:
  1.7

- ## Nested Class Summary

  ### Nested classes/interfaces declared in class BasicOptionPaneUI

  `BasicOptionPaneUI.ButtonActionListener, BasicOptionPaneUI.ButtonAreaLayout, BasicOptionPaneUI.PropertyChangeHandler`
  Modifier and Type
  Class
  Description
  `class`
  `BasicOptionPaneUI.ButtonActionListener`
  This class should be treated as a "protected" inner class.
  `static class`
  `BasicOptionPaneUI.ButtonAreaLayout`
  `ButtonAreaLayout` behaves in a similar manner to `FlowLayout`.
  `class`
  `BasicOptionPaneUI.PropertyChangeHandler`
  This class should be treated as a "protected" inner class.

- ## Field Summary

  ### Fields declared in class BasicOptionPaneUI

  `hasCustomComponents, initialFocusComponent, inputComponent, MinimumHeight, minimumSize, MinimumWidth, optionPane, propertyChangeListener`
  Modifier and Type
  Field
  Description
  `protected boolean`
  `hasCustomComponents`
  This is set to true in validateComponent if a Component is contained in either the message or the buttons.
  `protected Component`
  `initialFocusComponent`
  Component to receive focus when messaged with selectInitialValue.
  `protected JComponent`
  `inputComponent`
  JComponent provide for input if optionPane.getWantsInput() returns true.
  `static final int`
  `MinimumHeight`
  The minimum height of `JOptionPane`.
  `protected Dimension`
  `minimumSize`
  The size of `JOptionPane`.
  `static final int`
  `MinimumWidth`
  The minimum width of `JOptionPane`.
  `protected JOptionPane`
  `optionPane`
  `JOptionPane` that the receiver is providing the look and feel for.
  `protected PropertyChangeListener`
  `propertyChangeListener`
  The instance of `PropertyChangeListener`.

  ### 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
  `SynthOptionPaneUI()`
  Constructs a `SynthOptionPaneUI`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected Container`
  `createMessageArea()`
  Called from `BasicOptionPaneUI.installComponents()` to create a `Container` containing the body of the message.
  `static ComponentUI`
  `createUI(JComponent x)`
  Creates a new UI object for the given component.
  `SynthContext`
  `getContext(JComponent c)`
  Returns the Context for the specified component.
  `void`
  `paint(Graphics g, JComponent c)`
  Paints the specified component according to the Look and Feel.
  `protected void`
  `paint(SynthContext context, Graphics g)`
  Paints 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 BasicOptionPaneUI

  `addButtonComponents, addIcon, addMessageComponents, burstStringInto, containsCustomComponents, createButtonActionListener, createButtonArea, createLayoutManager, createPropertyChangeListener, createSeparator, getButtons, getIcon, getIconForType, getInitialValueIndex, getMaxCharactersPerLineCount, getMessage, getMinimumOptionPaneSize, getPreferredSize, getSizeButtonsToSameWidth, installComponents, installDefaults, installKeyboardActions, installListeners, installUI, resetInputValue, selectInitialValue, uninstallComponents, uninstallDefaults, uninstallKeyboardActions, uninstallListeners, uninstallUI`
  Modifier and Type
  Method
  Description
  `protected void`
  `addButtonComponents(Container container, Object[] buttons, int initialIndex)`
  Creates the appropriate object to represent each of the objects in `buttons` and adds it to `container`.
  `protected void`
  `addIcon(Container top)`
  Creates and adds a JLabel representing the icon returned from `getIcon` to `top`.
  `protected void`
  `addMessageComponents(Container container, GridBagConstraints cons, Object msg, int maxll, boolean internallyCreated)`
  Creates the appropriate object to represent `msg` and places it into `container`.
  `protected void`
  `burstStringInto(Container c, String d, int maxll)`
  Recursively creates new `JLabel` instances to represent `d`.
  `boolean`
  `containsCustomComponents(JOptionPane op)`
  Returns true if in the last call to validateComponent the message or buttons contained a subclass of Component.
  `protected ActionListener`
  `createButtonActionListener(int buttonIndex)`
  Constructs a new instance of a `ButtonActionListener`.
  `protected Container`
  `createButtonArea()`
  Creates and returns a `Container` containing the buttons.
  `protected LayoutManager`
  `createLayoutManager()`
  Returns a layout manager.
  `protected PropertyChangeListener`
  `createPropertyChangeListener()`
  Returns an instance of `PropertyChangeListener`.
  `protected Container`
  `createSeparator()`
  Returns a separator.
  `protected Object[]`
  `getButtons()`
  Returns the buttons to display from the `JOptionPane` the receiver is providing the look and feel for.
  `protected Icon`
  `getIcon()`
  Returns the icon from the `JOptionPane` the receiver is providing the look and feel for, or the default icon as returned from `getDefaultIcon`.
  `protected Icon`
  `getIconForType(int messageType)`
  Returns the icon to use for the passed in type.
  `protected int`
  `getInitialValueIndex()`
  Returns the initial index into the buttons to select.
  `protected int`
  `getMaxCharactersPerLineCount()`
  Returns the maximum number of characters to place on a line.
  `protected Object`
  `getMessage()`
  Returns the message to display from the `JOptionPane` the receiver is providing the look and feel for.
  `Dimension`
  `getMinimumOptionPaneSize()`
  Returns the minimum size the option pane should be.
  `Dimension`
  `getPreferredSize(JComponent c)`
  If `c` is the `JOptionPane` the receiver is contained in, the preferred size that is returned is the maximum of the preferred size of the `LayoutManager` for the `JOptionPane`, and `getMinimumOptionPaneSize`.
  `protected boolean`
  `getSizeButtonsToSameWidth()`
  Returns `true`, basic L&F wants all the buttons to have the same width.
  `protected void`
  `installComponents()`
  Registers components.
  `protected void`
  `installDefaults()`
  Installs default properties.
  `protected void`
  `installKeyboardActions()`
  Registers keyboard actions.
  `protected void`
  `installListeners()`
  Registers listeners.
  `void`
  `installUI(JComponent c)`
  Installs the receiver as the L&F for the passed in `JOptionPane`.
  `protected void`
  `resetInputValue()`
  Sets the input value in the option pane the receiver is providing the look and feel for based on the value in the inputComponent.
  `void`
  `selectInitialValue(JOptionPane op)`
  If inputComponent is non-null, the focus is requested on that, otherwise request focus on the default value
  `protected void`
  `uninstallComponents()`
  Unregisters components.
  `protected void`
  `uninstallDefaults()`
  Uninstalls default properties.
  `protected void`
  `uninstallKeyboardActions()`
  Unregisters keyboard actions.
  `protected void`
  `uninstallListeners()`
  Unregisters listeners.
  `void`
  `uninstallUI(JComponent c)`
  Removes the receiver from the L&F controller of the passed in split pane.

  ### Methods declared in class ComponentUI

  `contains, getAccessibleChild, getAccessibleChildrenCount, getBaseline, getBaselineResizeBehavior, 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.
  `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.
  `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

  - ### SynthOptionPaneUI

    public SynthOptionPaneUI()
    Constructs a `SynthOptionPaneUI`.

- ## Method Details

  - ### createUI

    public static ComponentUI createUI(JComponent x)
    Creates a new UI object for the given component.
    Parameters:
      `x` - component to create UI object for
    Returns:
      the UI object

  - ### 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.

  - ### 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 `paint(SynthContext,Graphics)` 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:
      - `paint(SynthContext,Graphics)`

  - ### paint

    public void paint(Graphics g, JComponent c)
    Paints the specified component according to the Look and Feel.

    This method is not used by Synth Look and Feel. Painting is handled by the `paint(SynthContext,Graphics)` method.

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

  - ### paint

    protected void paint(SynthContext context, Graphics g)
    Paints the specified component. This implementation does nothing.
    Parameters:
      `context` - context for the component being painted
      `g` - the `Graphics` object used for painting
    See Also:
      - `update(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.

  - ### createMessageArea

    protected Container createMessageArea()
    Called from `BasicOptionPaneUI.installComponents()` to create a `Container` containing the body of the message. The icon is the created by calling `BasicOptionPaneUI.addIcon(Container)`.
    Overrides:
      `createMessageArea` in class `BasicOptionPaneUI`
    Returns:
      a instance of `Container`