# Class SynthTabbedPaneUI

java.lang.Object
javax.swing.plaf.ComponentUI
javax.swing.plaf.TabbedPaneUI
javax.swing.plaf.basic.BasicTabbedPaneUI
javax.swing.plaf.synth.SynthTabbedPaneUI

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

public class SynthTabbedPaneUI extends BasicTabbedPaneUI implements PropertyChangeListener, SynthUI
Provides the Synth L&F UI delegate for `JTabbedPane`.

Looks up the `selectedTabPadInsets` property from the Style, which represents additional insets for the selected tab.

Since:
  1.7

- ## Nested Class Summary

  ### Nested classes/interfaces declared in class BasicTabbedPaneUI

  `BasicTabbedPaneUI.FocusHandler, BasicTabbedPaneUI.MouseHandler, BasicTabbedPaneUI.PropertyChangeHandler, BasicTabbedPaneUI.TabbedPaneLayout, BasicTabbedPaneUI.TabSelectionHandler`
  Modifier and Type
  Class
  Description
  `class`
  `BasicTabbedPaneUI.FocusHandler`
  This class should be treated as a "protected" inner class.
  `class`
  `BasicTabbedPaneUI.MouseHandler`
  This class should be treated as a "protected" inner class.
  `class`
  `BasicTabbedPaneUI.PropertyChangeHandler`
  This class should be treated as a "protected" inner class.
  `class`
  `BasicTabbedPaneUI.TabbedPaneLayout`
  This class should be treated as a "protected" inner class.
  `class`
  `BasicTabbedPaneUI.TabSelectionHandler`
  This class should be treated as a "protected" inner class.

- ## Field Summary

  ### Fields declared in class BasicTabbedPaneUI

  `calcRect, contentBorderInsets, darkShadow, downKey, focus, focusListener, highlight, leftKey, lightHighlight, maxTabHeight, maxTabWidth, mouseListener, propertyChangeListener, rects, rightKey, runCount, selectedRun, selectedTabPadInsets, shadow, tabAreaInsets, tabChangeListener, tabInsets, tabPane, tabRunOverlay, tabRuns, textIconGap, upKey`
  Modifier and Type
  Field
  Description
  `protected Rectangle`
  `calcRect`
  A rectangle used for general layout calculations in order to avoid constructing many new Rectangles on the fly.
  `protected Insets`
  `contentBorderInsets`
  Content border insets
  `protected Color`
  `darkShadow`
  Dark shadow color
  `protected KeyStroke`
  `downKey`
  Deprecated.
  As of Java 2 platform v1.3.
  `protected Color`
  `focus`
  Focus color
  `protected FocusListener`
  `focusListener`
  Focus change listener
  `protected Color`
  `highlight`
  Highlight color
  `protected KeyStroke`
  `leftKey`
  Deprecated.
  As of Java 2 platform v1.3.
  `protected Color`
  `lightHighlight`
  Light highlight color
  `protected int`
  `maxTabHeight`
  Maximum tab height
  `protected int`
  `maxTabWidth`
  Maximum tab width
  `protected MouseListener`
  `mouseListener`
  Mouse change listener
  `protected PropertyChangeListener`
  `propertyChangeListener`
  Property change listener
  `protected Rectangle[]`
  `rects`
  Tab rects
  `protected KeyStroke`
  `rightKey`
  Deprecated.
  As of Java 2 platform v1.3.
  `protected int`
  `runCount`
  Run count
  `protected int`
  `selectedRun`
  Selected run
  `protected Insets`
  `selectedTabPadInsets`
  Selected tab insets
  `protected Color`
  `shadow`
  Shadow color
  `protected Insets`
  `tabAreaInsets`
  Tab area insets
  `protected ChangeListener`
  `tabChangeListener`
  Tab change listener
  `protected Insets`
  `tabInsets`
  Tab insets
  `protected JTabbedPane`
  `tabPane`
  The tab pane
  `protected int`
  `tabRunOverlay`
  Tab run overlay
  `protected int[]`
  `tabRuns`
  Tab runs
  `protected int`
  `textIconGap`
  Text icon gap
  `protected KeyStroke`
  `upKey`
  Deprecated.
  As of Java 2 platform v1.3.

  ### Fields declared in interface SwingConstants

  `BOTTOM, CENTER, EAST, HORIZONTAL, LEADING, LEFT, NEXT, NORTH, NORTH_EAST, NORTH_WEST, PREVIOUS, RIGHT, SOUTH, SOUTH_EAST, SOUTH_WEST, TOP, TRAILING, VERTICAL, WEST`
  Modifier and Type
  Field
  Description
  `static final int`
  `BOTTOM`
  Box-orientation constant used to specify the bottom of a box.
  `static final int`
  `CENTER`
  The central position in an area.
  `static final int`
  `EAST`
  Compass-direction east (right).
  `static final int`
  `HORIZONTAL`
  Horizontal orientation.
  `static final int`
  `LEADING`
  Identifies the leading edge of text for use with left-to-right and right-to-left languages.
  `static final int`
  `LEFT`
  Box-orientation constant used to specify the left side of a box.
  `static final int`
  `NEXT`
  Identifies the next direction in a sequence.
  `static final int`
  `NORTH`
  Compass-direction North (up).
  `static final int`
  `NORTH_EAST`
  Compass-direction north-east (upper right).
  `static final int`
  `NORTH_WEST`
  Compass-direction north west (upper left).
  `static final int`
  `PREVIOUS`
  Identifies the previous direction in a sequence.
  `static final int`
  `RIGHT`
  Box-orientation constant used to specify the right side of a box.
  `static final int`
  `SOUTH`
  Compass-direction south (down).
  `static final int`
  `SOUTH_EAST`
  Compass-direction south-east (lower right).
  `static final int`
  `SOUTH_WEST`
  Compass-direction south-west (lower left).
  `static final int`
  `TOP`
  Box-orientation constant used to specify the top of a box.
  `static final int`
  `TRAILING`
  Identifies the trailing edge of text for use with left-to-right and right-to-left languages.
  `static final int`
  `VERTICAL`
  Vertical orientation.
  `static final int`
  `WEST`
  Compass-direction west (left).

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

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected LayoutManager`
  `createLayoutManager()`
  Invoked by `installUI` to create a layout manager object to manage the `JTabbedPane`.
  `protected MouseListener`
  `createMouseListener()`
  Creates a mouse listener.
  `static ComponentUI`
  `createUI(JComponent c)`
  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 BasicTabbedPaneUI

  `assureRectsCreated, calculateMaxTabHeight, calculateMaxTabWidth, calculateTabAreaHeight, calculateTabAreaWidth, calculateTabHeight, calculateTabWidth, createChangeListener, createFocusListener, createPropertyChangeListener, createScrollButton, expandTabRunsArray, getBaseline, getBaseline, getBaselineOffset, getBaselineResizeBehavior, getContentBorderInsets, getFocusIndex, getFontMetrics, getIconForTab, getNextTabIndex, getNextTabIndexInRun, getNextTabRun, getPreviousTabIndex, getPreviousTabIndexInRun, getPreviousTabRun, getRolloverTab, getRunForTab, getSelectedTabPadInsets, getTabAreaInsets, getTabBounds, getTabBounds, getTabInsets, getTabLabelShiftX, getTabLabelShiftY, getTabRunCount, getTabRunIndent, getTabRunOffset, getTabRunOverlay, getTextViewForTab, getVisibleComponent, installComponents, installDefaults, installKeyboardActions, installListeners, lastTabInRun, layoutLabel, navigateSelectedTab, paintContentBorder, paintContentBorderBottomEdge, paintContentBorderLeftEdge, paintContentBorderRightEdge, paintContentBorderTopEdge, paintFocusIndicator, paintIcon, paintTab, paintTabArea, paintTabBackground, paintTabBorder, paintText, rotateInsets, selectAdjacentRunTab, selectNextTab, selectNextTabInRun, selectPreviousTab, selectPreviousTabInRun, setRolloverTab, setVisibleComponent, shouldPadTabRun, shouldRotateTabRuns, tabForCoordinate, uninstallComponents, uninstallDefaults, uninstallKeyboardActions, uninstallListeners`
  Modifier and Type
  Method
  Description
  `protected void`
  `assureRectsCreated(int tabCount)`
  Assures the tab rectangles are created.
  `protected int`
  `calculateMaxTabHeight(int tabPlacement)`
  Calculates the maximum tab height.
  `protected int`
  `calculateMaxTabWidth(int tabPlacement)`
  Calculates the maximum tab width.
  `protected int`
  `calculateTabAreaHeight(int tabPlacement, int horizRunCount, int maxTabHeight)`
  Calculates the tab area height.
  `protected int`
  `calculateTabAreaWidth(int tabPlacement, int vertRunCount, int maxTabWidth)`
  Calculates the tab area width.
  `protected int`
  `calculateTabHeight(int tabPlacement, int tabIndex, int fontHeight)`
  Calculates the tab height.
  `protected int`
  `calculateTabWidth(int tabPlacement, int tabIndex, FontMetrics metrics)`
  Calculates the tab width.
  `protected ChangeListener`
  `createChangeListener()`
  Creates a change listener.
  `protected FocusListener`
  `createFocusListener()`
  Creates a focus listener.
  `protected PropertyChangeListener`
  `createPropertyChangeListener()`
  Creates a property change listener.
  `protected JButton`
  `createScrollButton(int direction)`
  Creates and returns a JButton that will provide the user with a way to scroll the tabs in a particular direction.
  `protected void`
  `expandTabRunsArray()`
  Expands the tab runs array.
  `protected int`
  `getBaseline(int tab)`
  Returns the baseline for the specified tab.
  `int`
  `getBaseline(JComponent c, int width, int height)`
  Returns the baseline.
  `protected int`
  `getBaselineOffset()`
  Returns the amount the baseline is offset by.
  `Component.BaselineResizeBehavior`
  `getBaselineResizeBehavior(JComponent c)`
  Returns an enum indicating how the baseline of the component changes as the size changes.
  `protected Insets`
  `getContentBorderInsets(int tabPlacement)`
  Returns the content border insets.
  `protected int`
  `getFocusIndex()`
  Returns the index of the tab that has focus.
  `protected FontMetrics`
  `getFontMetrics()`
  Returns the font metrics.
  `protected Icon`
  `getIconForTab(int tabIndex)`
  Returns the icon for a tab.
  `protected int`
  `getNextTabIndex(int base)`
  Returns the next tab index.
  `protected int`
  `getNextTabIndexInRun(int tabCount, int base)`
  Returns the next tab index in the run.
  `protected int`
  `getNextTabRun(int baseRun)`
  Returns the next tab run.
  `protected int`
  `getPreviousTabIndex(int base)`
  Returns the previous tab index.
  `protected int`
  `getPreviousTabIndexInRun(int tabCount, int base)`
  Returns the previous tab index in the run.
  `protected int`
  `getPreviousTabRun(int baseRun)`
  Returns the previous tab run.
  `protected int`
  `getRolloverTab()`
  Returns the tab the mouse is currently over, or `-1` if the mouse is no longer over any tab.
  `protected int`
  `getRunForTab(int tabCount, int tabIndex)`
  Returns the run for a tab.
  `protected Insets`
  `getSelectedTabPadInsets(int tabPlacement)`
  Returns the selected tab pad insets.
  `protected Insets`
  `getTabAreaInsets(int tabPlacement)`
  Returns the tab area insets.
  `protected Rectangle`
  `getTabBounds(int tabIndex, Rectangle dest)`
  Returns the bounds of the specified tab in the coordinate space of the JTabbedPane component.
  `Rectangle`
  `getTabBounds(JTabbedPane pane, int i)`
  Returns the bounds of the specified tab index.
  `protected Insets`
  `getTabInsets(int tabPlacement, int tabIndex)`
  Returns the tab insets.
  `protected int`
  `getTabLabelShiftX(int tabPlacement, int tabIndex, boolean isSelected)`
  Returns the tab label shift x.
  `protected int`
  `getTabLabelShiftY(int tabPlacement, int tabIndex, boolean isSelected)`
  Returns the tab label shift y.
  `int`
  `getTabRunCount(JTabbedPane pane)`
  Returns the tab run count.
  `protected int`
  `getTabRunIndent(int tabPlacement, int run)`
  Returns the tab run indent.
  `protected int`
  `getTabRunOffset(int tabPlacement, int tabCount, int tabIndex, boolean forward)`
  Returns the tab run offset.
  `protected int`
  `getTabRunOverlay(int tabPlacement)`
  Returns the tab run overlay.
  `protected View`
  `getTextViewForTab(int tabIndex)`
  Returns the text View object required to render stylized text (HTML) for the specified tab or null if no specialized text rendering is needed for this tab.
  `protected Component`
  `getVisibleComponent()`
  Returns the visible component.
  `protected void`
  `installComponents()`
  Creates and installs any required subcomponents for the JTabbedPane.
  `protected void`
  `installDefaults()`
  Installs the defaults.
  `protected void`
  `installKeyboardActions()`
  Installs the keyboard actions.
  `protected void`
  `installListeners()`
  Installs the listeners.
  `protected int`
  `lastTabInRun(int tabCount, int run)`
  Returns the last tab in a run.
  `protected void`
  `layoutLabel(int tabPlacement, FontMetrics metrics, int tabIndex, String title, Icon icon, Rectangle tabRect, Rectangle iconRect, Rectangle textRect, boolean isSelected)`
  Lays out a label.
  `protected void`
  `navigateSelectedTab(int direction)`
  Navigates the selected tab.
  `protected void`
  `paintContentBorder(Graphics g, int tabPlacement, int selectedIndex)`
  Paints the content border.
  `protected void`
  `paintContentBorderBottomEdge(Graphics g, int tabPlacement, int selectedIndex, int x, int y, int w, int h)`
  Paints the content border bottom edge.
  `protected void`
  `paintContentBorderLeftEdge(Graphics g, int tabPlacement, int selectedIndex, int x, int y, int w, int h)`
  Paints the content border left edge.
  `protected void`
  `paintContentBorderRightEdge(Graphics g, int tabPlacement, int selectedIndex, int x, int y, int w, int h)`
  Paints the content border right edge.
  `protected void`
  `paintContentBorderTopEdge(Graphics g, int tabPlacement, int selectedIndex, int x, int y, int w, int h)`
  Paints the content border top edge.
  `protected void`
  `paintFocusIndicator(Graphics g, int tabPlacement, Rectangle[] rects, int tabIndex, Rectangle iconRect, Rectangle textRect, boolean isSelected)`
  Paints the focus indicator.
  `protected void`
  `paintIcon(Graphics g, int tabPlacement, int tabIndex, Icon icon, Rectangle iconRect, boolean isSelected)`
  Paints an icon.
  `protected void`
  `paintTab(Graphics g, int tabPlacement, Rectangle[] rects, int tabIndex, Rectangle iconRect, Rectangle textRect)`
  Paints a tab.
  `protected void`
  `paintTabArea(Graphics g, int tabPlacement, int selectedIndex)`
  Paints the tabs in the tab area.
  `protected void`
  `paintTabBackground(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected)`
  Paints the tab background.
  `protected void`
  `paintTabBorder(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected)`
  Paints the border around a tab.
  `protected void`
  `paintText(Graphics g, int tabPlacement, Font font, FontMetrics metrics, int tabIndex, String title, Rectangle textRect, boolean isSelected)`
  Paints text.
  `protected static void`
  `rotateInsets(Insets topInsets, Insets targetInsets, int targetPlacement)`
  Rotates the insets.
  `protected void`
  `selectAdjacentRunTab(int tabPlacement, int tabIndex, int offset)`
  Selects an adjacent run of tabs.
  `protected void`
  `selectNextTab(int current)`
  Selects the next tab.
  `protected void`
  `selectNextTabInRun(int current)`
  Selects the next tab in the run.
  `protected void`
  `selectPreviousTab(int current)`
  Selects the previous tab.
  `protected void`
  `selectPreviousTabInRun(int current)`
  Selects the previous tab in the run.
  `protected void`
  `setRolloverTab(int index)`
  Sets the tab the mouse is currently over to `index`.
  `protected void`
  `setVisibleComponent(Component component)`
  Sets the visible component.
  `protected boolean`
  `shouldPadTabRun(int tabPlacement, int run)`
  Returns whether or not the tab run should be padded.
  `protected boolean`
  `shouldRotateTabRuns(int tabPlacement)`
  Returns whether or not the tab run should be rotated.
  `int`
  `tabForCoordinate(JTabbedPane pane, int x, int y)`
  Returns the tab index which intersects the specified point in the JTabbedPane's coordinate space.
  `protected void`
  `uninstallComponents()`
  Removes any installed subcomponents from the JTabbedPane.
  `protected void`
  `uninstallDefaults()`
  Uninstalls the defaults.
  `protected void`
  `uninstallKeyboardActions()`
  Uninstalls the keyboard actions.
  `protected void`
  `uninstallListeners()`
  Uninstalls the listeners.

  ### Methods declared in class ComponentUI

  `contains, getAccessibleChild, getAccessibleChildrenCount, getMaximumSize, getMinimumSize, getPreferredSize, installUI, uninstallUI`
  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.
  `Dimension`
  `getPreferredSize(JComponent c)`
  Returns the specified component's preferred size appropriate for the look and feel.
  `void`
  `installUI(JComponent c)`
  Configures the specified component appropriately for the look and feel.
  `void`
  `uninstallUI(JComponent c)`
  Reverses configuration which was done on the specified component during `installUI`.

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

  - ### SynthTabbedPaneUI

    public SynthTabbedPaneUI()
    Constructs a `SynthTabbedPaneUI`.

- ## Method Details

  - ### createUI

    public static ComponentUI createUI(JComponent c)
    Creates a new UI object for the given component.
    Parameters:
      `c` - 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.

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

  - ### createMouseListener

    protected MouseListener createMouseListener()
    Creates a mouse listener. Overridden to keep track of whether the selected tab is also pressed.
    Overrides:
      `createMouseListener` in class `BasicTabbedPaneUI`
    Returns:
      a mouse listener

  - ### 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)`

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

  - ### 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.
    Parameters:
      `context` - context for the component being painted
      `g` - the `Graphics` object used for painting
    See Also:
      - `update(Graphics,JComponent)`

  - ### createLayoutManager

    protected LayoutManager createLayoutManager()
    Invoked by `installUI` to create a layout manager object to manage the `JTabbedPane`. Overridden to create a TabbedPaneLayout subclass which takes into account tabOverlap.
    Overrides:
      `createLayoutManager` in class `BasicTabbedPaneUI`
    Returns:
      a layout manager object
    See Also:
      - `BasicTabbedPaneUI.TabbedPaneLayout`
      - `JTabbedPane.getTabLayoutPolicy()`