com.jgoodies.looks.plastic
Class PlasticTabbedPaneUI

java.lang.Object
  extended by javax.swing.plaf.ComponentUI
      extended by javax.swing.plaf.TabbedPaneUI
          extended by javax.swing.plaf.basic.BasicTabbedPaneUI
              extended by javax.swing.plaf.metal.MetalTabbedPaneUI
                  extended by com.jgoodies.looks.plastic.PlasticTabbedPaneUI
All Implemented Interfaces:
SwingConstants

public final class PlasticTabbedPaneUI
extends MetalTabbedPaneUI

The JGoodies Plastic Look&Feel implementation of TabbedPaneUI. It differs from its superclass MetalTabbedPaneUI in that it paints new tab shapes, provides two options, and supports ClearLook.

You can enable or disable icons in tabs globally via com.jgoodies.looks.Options.setTabIconsEnabled(boolean).

To disable the content border set

 JTabbedPane tabbedPane = new JTabbedPane();
 tabbedPane.putClientProperty(Option.NO_CONTENT_BORDER_KEY, Boolean.TRUE);
 
To paint embedded tabs use
 JTabbedPane tabbedPane = new JTabbedPane();
 tabbedPane.putClientProperty(Option.EMBEDDED_TABS_KEY, Boolean.TRUE);
 

There's a special mode that helps you detect content borders in heavily wrapped component hierarchies - such as the NetBeans IDE. In this marked mode the content border is painted as a Magenta line. You can enable this mode by setting the System property markContentBorders to true; in a command line:

 java -DmarkContentBorders=true
 

Version:
$Revision: 1.4 $
Author:
Karsten Lentzsch, Torge Husfeldt, Andrej Golovnin
See Also:
Options

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.plaf.basic.BasicTabbedPaneUI
BasicTabbedPaneUI.FocusHandler, BasicTabbedPaneUI.MouseHandler, BasicTabbedPaneUI.PropertyChangeHandler
 
Field Summary
 
Fields inherited from class javax.swing.plaf.metal.MetalTabbedPaneUI
minTabWidth, selectColor, selectHighlight, tabAreaBackground
 
Fields inherited from class javax.swing.plaf.basic.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
 
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
 
Constructor Summary
PlasticTabbedPaneUI()
           
 
Method Summary
protected  ChangeListener createChangeListener()
           
protected  LayoutManager createLayoutManager()
          Creates the layout manager used to set the tab's bounds.
protected  PropertyChangeListener createPropertyChangeListener()
          Creates and answer a handler that listens to property changes.
static ComponentUI createUI(JComponent tabPane)
          Creates the PlasticTabbedPaneUI.
protected  Insets getContentBorderInsets(int tabPlacement)
          Returns the insets (i.e. the width) of the content Border.
protected  Icon getIconForTab(int tabIndex)
          Answers the icon for the tab with the specified index.
protected  Insets getSelectedTabPadInsets(int tabPlacement)
          Returns the insets for selected tab.
protected  Insets getTabAreaInsets(int tabPlacement)
          Returns the amount by which the Tab Area is inset.
protected  Rectangle getTabBounds(int tabIndex, Rectangle dest)
           
protected  Insets getTabInsets(int tabPlacement, int tabIndex)
          Returns the insets for this tab.
protected  int getTabLabelShiftX(int tabPlacement, int tabIndex, boolean isSelected)
          Returns the amount by which the label should be shifted horizontally.
protected  int getTabLabelShiftY(int tabPlacement, int tabIndex, boolean isSelected)
          Returns the amount by which the label should be shifted vertically.
protected  int getTabRunIndent(int tabPlacement, int run)
          Returns the amount by which the run number run should be indented.
protected  int getTabRunOverlay(int tabPlacement)
          Returns the amount (in pixels) by which two runs should overlap.
protected  void installComponents()
          Creates and installs any required subcomponents for the JTabbedPane.
protected  void installKeyboardActions()
           
protected  void installListeners()
           
 void installUI(JComponent c)
          Installs the UI.
protected  boolean isTabInFirstRun(int tabIndex)
           
protected  void layoutLabel(int tabPlacement, FontMetrics metrics, int tabIndex, String title, Icon icon, Rectangle tabRect, Rectangle iconRect, Rectangle textRect, boolean isSelected)
           
 void paint(Graphics g, JComponent c)
           
protected  void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex)
           
protected  void paintFocusIndicator(Graphics g, int tabPlacement, Rectangle[] rectangles, int tabIndex, Rectangle iconRect, Rectangle textRect, boolean isSelected)
          Draws the rectancle around the Tab label which indicates keyboard focus.
protected  void paintTab(Graphics g, int tabPlacement, Rectangle[] rects, int tabIndex, Rectangle iconRect, Rectangle textRect)
           
protected  void paintTabArea(Graphics g, int tabPlacement, int selectedIndex)
           
protected  void paintTabBackground(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected)
          Fills the background of the given tab to make sure overlap of tabs is handled correctly.
protected  void paintTabBorder(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected)
          Paints the border for one tab.
protected  boolean shouldPadTabRun(int tabPlacement, int run)
          This boolean controls wheather the given run should be padded to use up as much space as the others (with more tabs in them).
protected  boolean shouldRotateTabRuns(int tabPlacement)
          Answers wheather tab runs 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 uninstallListeners()
           
 void uninstallUI(JComponent c)
          Uninstalls the UI.
 
Methods inherited from class javax.swing.plaf.metal.MetalTabbedPaneUI
calculateMaxTabHeight, getColorForGap, installDefaults, paintBottomTabBorder, paintContentBorderBottomEdge, paintContentBorderLeftEdge, paintContentBorderRightEdge, paintContentBorderTopEdge, paintHighlightBelowTab, paintLeftTabBorder, paintRightTabBorder, paintTopTabBorder, shouldFillGap, shouldRotateTabRuns, update
 
Methods inherited from class javax.swing.plaf.basic.BasicTabbedPaneUI
assureRectsCreated, calculateMaxTabWidth, calculateTabAreaHeight, calculateTabAreaWidth, calculateTabHeight, calculateTabWidth, createFocusListener, createMouseListener, createScrollButton, expandTabRunsArray, getFocusIndex, getFontMetrics, getMaximumSize, getMinimumSize, getNextTabIndex, getNextTabIndexInRun, getNextTabRun, getPreviousTabIndex, getPreviousTabIndexInRun, getPreviousTabRun, getRolloverTab, getRunForTab, getTabBounds, getTabRunCount, getTabRunOffset, getTextViewForTab, getVisibleComponent, lastTabInRun, navigateSelectedTab, paintIcon, paintText, rotateInsets, selectAdjacentRunTab, selectNextTab, selectNextTabInRun, selectPreviousTab, selectPreviousTabInRun, setRolloverTab, setVisibleComponent, uninstallDefaults, uninstallKeyboardActions
 
Methods inherited from class javax.swing.plaf.ComponentUI
contains, getAccessibleChild, getAccessibleChildrenCount, getPreferredSize
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PlasticTabbedPaneUI

public PlasticTabbedPaneUI()
Method Detail

createUI

public static ComponentUI createUI(JComponent tabPane)
Creates the PlasticTabbedPaneUI.

See Also:
ComponentUI.createUI(JComponent)

installUI

public void installUI(JComponent c)
Installs the UI.

Overrides:
installUI in class BasicTabbedPaneUI
See Also:
ComponentUI.installUI(JComponent)

uninstallUI

public void uninstallUI(JComponent c)
Uninstalls the UI.

Overrides:
uninstallUI in class BasicTabbedPaneUI
See Also:
ComponentUI.uninstallUI(JComponent)

installComponents

protected void installComponents()
Creates and installs any required subcomponents for the JTabbedPane. Invoked by installUI.

Overrides:
installComponents in class BasicTabbedPaneUI
See Also:
BasicTabbedPaneUI.installComponents()

uninstallComponents

protected void uninstallComponents()
Removes any installed subcomponents from the JTabbedPane. Invoked by uninstallUI.

Overrides:
uninstallComponents in class BasicTabbedPaneUI
See Also:
BasicTabbedPaneUI.uninstallComponents()

installListeners

protected void installListeners()
Overrides:
installListeners in class BasicTabbedPaneUI

uninstallListeners

protected void uninstallListeners()
Overrides:
uninstallListeners in class BasicTabbedPaneUI

installKeyboardActions

protected void installKeyboardActions()
Overrides:
installKeyboardActions in class BasicTabbedPaneUI

createPropertyChangeListener

protected PropertyChangeListener createPropertyChangeListener()
Creates and answer a handler that listens to property changes. Unlike the superclass BasicTabbedPane, the PlasticTabbedPaneUI uses an extended Handler.

Overrides:
createPropertyChangeListener in class BasicTabbedPaneUI

createChangeListener

protected ChangeListener createChangeListener()
Overrides:
createChangeListener in class BasicTabbedPaneUI

paint

public void paint(Graphics g,
                  JComponent c)
Overrides:
paint in class MetalTabbedPaneUI

paintTab

protected void paintTab(Graphics g,
                        int tabPlacement,
                        Rectangle[] rects,
                        int tabIndex,
                        Rectangle iconRect,
                        Rectangle textRect)
Overrides:
paintTab in class BasicTabbedPaneUI

tabForCoordinate

public int tabForCoordinate(JTabbedPane pane,
                            int x,
                            int y)
Returns the tab index which intersects the specified point in the JTabbedPane's coordinate space.

Overrides:
tabForCoordinate in class BasicTabbedPaneUI

getTabBounds

protected Rectangle getTabBounds(int tabIndex,
                                 Rectangle dest)
Overrides:
getTabBounds in class BasicTabbedPaneUI

paintTabArea

protected void paintTabArea(Graphics g,
                            int tabPlacement,
                            int selectedIndex)
Overrides:
paintTabArea in class BasicTabbedPaneUI

layoutLabel

protected void layoutLabel(int tabPlacement,
                           FontMetrics metrics,
                           int tabIndex,
                           String title,
                           Icon icon,
                           Rectangle tabRect,
                           Rectangle iconRect,
                           Rectangle textRect,
                           boolean isSelected)
Overrides:
layoutLabel in class BasicTabbedPaneUI

getIconForTab

protected Icon getIconForTab(int tabIndex)
Answers the icon for the tab with the specified index. In case, we have globally switched of the use tab icons, we answer null if and only if we have a title.

Overrides:
getIconForTab in class BasicTabbedPaneUI

createLayoutManager

protected LayoutManager createLayoutManager()
Creates the layout manager used to set the tab's bounds.

Overrides:
createLayoutManager in class MetalTabbedPaneUI

isTabInFirstRun

protected boolean isTabInFirstRun(int tabIndex)

paintContentBorder

protected void paintContentBorder(Graphics g,
                                  int tabPlacement,
                                  int selectedIndex)
Overrides:
paintContentBorder in class BasicTabbedPaneUI

getContentBorderInsets

protected Insets getContentBorderInsets(int tabPlacement)
Returns the insets (i.e. the width) of the content Border.

Overrides:
getContentBorderInsets in class BasicTabbedPaneUI

getTabAreaInsets

protected Insets getTabAreaInsets(int tabPlacement)
Returns the amount by which the Tab Area is inset.

Overrides:
getTabAreaInsets in class BasicTabbedPaneUI

getTabLabelShiftX

protected int getTabLabelShiftX(int tabPlacement,
                                int tabIndex,
                                boolean isSelected)
Returns the amount by which the label should be shifted horizontally.

Overrides:
getTabLabelShiftX in class MetalTabbedPaneUI

getTabLabelShiftY

protected int getTabLabelShiftY(int tabPlacement,
                                int tabIndex,
                                boolean isSelected)
Returns the amount by which the label should be shifted vertically.

Overrides:
getTabLabelShiftY in class MetalTabbedPaneUI

getTabRunOverlay

protected int getTabRunOverlay(int tabPlacement)
Returns the amount (in pixels) by which two runs should overlap.

Overrides:
getTabRunOverlay in class MetalTabbedPaneUI

shouldPadTabRun

protected boolean shouldPadTabRun(int tabPlacement,
                                  int run)
This boolean controls wheather the given run should be padded to use up as much space as the others (with more tabs in them).

Overrides:
shouldPadTabRun in class MetalTabbedPaneUI

getTabRunIndent

protected int getTabRunIndent(int tabPlacement,
                              int run)
Returns the amount by which the run number run should be indented. Add six pixels for every run to make diagonal lines align.

Overrides:
getTabRunIndent in class BasicTabbedPaneUI

getTabInsets

protected Insets getTabInsets(int tabPlacement,
                              int tabIndex)
Returns the insets for this tab.

Overrides:
getTabInsets in class BasicTabbedPaneUI

getSelectedTabPadInsets

protected Insets getSelectedTabPadInsets(int tabPlacement)
Returns the insets for selected tab.

Overrides:
getSelectedTabPadInsets in class BasicTabbedPaneUI

paintFocusIndicator

protected void paintFocusIndicator(Graphics g,
                                   int tabPlacement,
                                   Rectangle[] rectangles,
                                   int tabIndex,
                                   Rectangle iconRect,
                                   Rectangle textRect,
                                   boolean isSelected)
Draws the rectancle around the Tab label which indicates keyboard focus.

Overrides:
paintFocusIndicator in class MetalTabbedPaneUI

paintTabBackground

protected void paintTabBackground(Graphics g,
                                  int tabPlacement,
                                  int tabIndex,
                                  int x,
                                  int y,
                                  int w,
                                  int h,
                                  boolean isSelected)
Fills the background of the given tab to make sure overlap of tabs is handled correctly. Note: that tab backgrounds seem to be painted somewhere else, too.

Overrides:
paintTabBackground in class MetalTabbedPaneUI

paintTabBorder

protected void paintTabBorder(Graphics g,
                              int tabPlacement,
                              int tabIndex,
                              int x,
                              int y,
                              int w,
                              int h,
                              boolean isSelected)
Paints the border for one tab. Gets the bounds of the tab as parameters. Note that the result is not clipped so you can paint outside that rectangle. Tabs painted later on have a chance to overwrite though.

Overrides:
paintTabBorder in class MetalTabbedPaneUI

shouldRotateTabRuns

protected boolean shouldRotateTabRuns(int tabPlacement)
Answers wheather tab runs should be rotated. If true, the layout mechanism will move the run containing the selected tab so that it touches the content pane.

Overrides:
shouldRotateTabRuns in class BasicTabbedPaneUI


Copyright © 2001-2006 JGoodies Karsten Lentzsch. All Rights Reserved.