This is the Basic Look and Feel's UI delegate for JTabbedPane.
assureRectsCreated
protected void assureRectsCreated(int tabCount)
This method assures that enough rectangles are created given the
tabCount. The old array is copied to the new one.
tabCount
- The number of tabs.
calculateMaxTabHeight
protected int calculateMaxTabHeight(int tabPlacement)
This method returns the max tab height.
tabPlacement
- The JTabbedPane's tab placement.
calculateMaxTabWidth
protected int calculateMaxTabWidth(int tabPlacement)
This method calculates the max tab width.
tabPlacement
- The JTabbedPane's tab placement.
calculateTabAreaHeight
protected int calculateTabAreaHeight(int tabPlacement,
int horizRunCount,
int maxTabHeight)
This method calculates the tab area height, including insets, for the
given amount of runs and tab height.
tabPlacement
- The JTabbedPane's tab placement.horizRunCount
- The number of runs.maxTabHeight
- The max tab height.
calculateTabAreaWidth
protected int calculateTabAreaWidth(int tabPlacement,
int vertRunCount,
int maxTabWidth)
This method calculates the tab area width, including insets, for the
given amount of runs and tab width.
tabPlacement
- The JTabbedPane's tab placement.vertRunCount
- The number of runs.maxTabWidth
- The max tab width.
calculateTabHeight
protected int calculateTabHeight(int tabPlacement,
int tabIndex,
int fontHeight)
This method returns the tab height, including insets, for the given index
and fontheight.
tabPlacement
- The JTabbedPane's tab placement.tabIndex
- The index of the tab to calculate.fontHeight
- The font height.
calculateTabWidth
protected int calculateTabWidth(int tabPlacement,
int tabIndex,
FontMetrics metrics)
This method calculates the tab width, including insets, for the given tab
index and font metrics.
tabPlacement
- The JTabbedPane's tab placement.tabIndex
- The tab index to calculate for.metrics
- The font's metrics.
- The tab width for the given index.
createLayoutManager
protected LayoutManager createLayoutManager()
This method creates the appropriate layout manager for the JTabbedPane's
current tab layout policy. If the tab layout policy is
SCROLL_TAB_LAYOUT, then all the associated components that need to be
created will be done so now.
- A layout manager given the tab layout policy.
expandTabRunsArray
protected void expandTabRunsArray()
This method expands the tabRuns array to give it more room. The old array
is copied to the new one.
getContentBorderInsets
protected Insets getContentBorderInsets(int tabPlacement)
This method returns the content border insets appropriately rotated.
tabPlacement
- The JTabbedPane's tab placement.
- The content border insets.
getFontMetrics
protected FontMetrics getFontMetrics()
This method returns the fontmetrics for the font of the JTabbedPane.
- The font metrics for the JTabbedPane.
getIconForTab
protected Icon getIconForTab(int tabIndex)
This method returns an icon for the tab. If the tab is disabled, it
should return the disabledIcon. If it is enabled, then it should return
the default icon.
tabIndex
- The tab index to get an icon for.
- The icon for the tab index.
getNextTabIndex
protected int getNextTabIndex(int base)
This method returns the next tab index.
base
- The index to start from.
getNextTabIndexInRun
protected int getNextTabIndexInRun(int tabCount,
int base)
This method returns the next tab index in the run. If the next index is
out of this run, it will return the starting tab index for the run.
tabCount
- The number of tabs.base
- The index to start from.
- The next tab index in the run.
getNextTabRun
protected int getNextTabRun(int baseRun)
This method returns the index of the next run.
baseRun
- The run to start from.
- The index of the next run.
getPreviousTabIndex
protected int getPreviousTabIndex(int base)
This method returns the previous tab index.
base
- The index to start from.
getPreviousTabIndexInRun
protected int getPreviousTabIndexInRun(int tabCount,
int base)
This method returns the previous tab index in the run. If the previous
index is out of this run, it will return the last index for the run.
tabCount
- The number of tabs.base
- The index to start from.
- The previous tab index in the run.
getPreviousTabRun
protected int getPreviousTabRun(int baseRun)
This method returns the index of the previous run.
baseRun
- The run to start from.
- The index of the previous run.
getRunForTab
protected int getRunForTab(int tabCount,
int tabIndex)
This method returns which run a particular tab belongs to.
tabCount
- The number of tabs.tabIndex
- The tab to find.
- The tabRuns index that it belongs to.
getSelectedTabPadInsets
protected Insets getSelectedTabPadInsets(int tabPlacement)
This method returns the selected tab pad insets appropriately rotated.
tabPlacement
- The JTabbedPane's tab placement.
- The selected tab pad insets.
getTabAreaInsets
protected Insets getTabAreaInsets(int tabPlacement)
This method returns the tab area insets appropriately rotated.
tabPlacement
- The JTabbedPane's tab placement.
getTabBounds
protected Rectangle getTabBounds(int tabIndex,
Rectangle dest)
This method returns the tab bounds in the given rectangle.
tabIndex
- The index to get bounds for.dest
- The rectangle to store bounds in.
getTabInsets
protected Insets getTabInsets(int tabPlacement,
int tabIndex)
This method returns the tab insets appropriately rotated.
tabPlacement
- The JTabbedPane's tab placement.tabIndex
- The tab index.
- The tab insets for the given index.
getTabLabelShiftX
protected int getTabLabelShiftX(int tabPlacement,
int tabIndex,
boolean isSelected)
This method returns how much the label for the tab should shift in the X
direction.
tabPlacement
- The JTabbedPane's tab placement.tabIndex
- The tab index being painted.isSelected
- Whether this tab is selected.
- The amount the label should shift by in the X direction.
getTabLabelShiftY
protected int getTabLabelShiftY(int tabPlacement,
int tabIndex,
boolean isSelected)
This method returns how much the label for the tab should shift in the Y
direction.
tabPlacement
- The JTabbedPane's tab placement.tabIndex
- The tab index being painted.isSelected
- Whether this tab is selected.
- The amount the label should shift by in the Y direction.
getTabRunIndent
protected int getTabRunIndent(int tabPlacement,
int run)
This method returns the tab run indent. It is used in WRAP_TAB_LAYOUT and
makes each tab run start indented by a certain amount.
tabPlacement
- The JTabbedPane's tab placement.run
- The run to get indent for.
- The amount a run should be indented.
getTabRunOffset
protected int getTabRunOffset(int tabPlacement,
int tabCount,
int tabIndex,
boolean forward)
This method calculates the offset distance for use in
selectAdjacentRunTab. The offset returned will be a difference in the y
coordinate between the run in the desired direction and the current run
(for tabPlacement in TOP or BOTTOM). Use x coordinate for LEFT and
RIGHT.
tabPlacement
- The JTabbedPane's tab placement.tabCount
- The number of tabs.tabIndex
- The starting index.forward
- If forward, the run in the desired direction will be the
next run.
- The offset between the two runs.
getTabRunOverlay
protected int getTabRunOverlay(int tabPlacement)
This method returns the tab run overlay.
tabPlacement
- The JTabbedPane's tab placement.
getTextViewForTab
protected View getTextViewForTab(int tabIndex)
This method returns a view that can paint the text for the label.
tabIndex
- The tab index to get a view for.
- The view for the tab index.
getVisibleComponent
protected Component getVisibleComponent()
This method returns the component that is shown in the content area.
- The component that is shown in the content area.
installComponents
protected void installComponents()
This method installs components for this JTabbedPane.
installDefaults
protected void installDefaults()
This method installs defaults for the Look and Feel.
installKeyboardActions
protected void installKeyboardActions()
This method installs keyboard actions for the JTabbedPane.
installListeners
protected void installListeners()
This method creates and installs the listeners for this UI.
lastTabInRun
protected int lastTabInRun(int tabCount,
int run)
This method returns the index of the last tab in a run.
tabCount
- The number of tabs.run
- The run to check.
- The last tab in the given run.
layoutLabel
protected void layoutLabel(int tabPlacement,
FontMetrics metrics,
int tabIndex,
String title,
Icon icon,
Rectangle tabRect,
Rectangle iconRect,
Rectangle textRect,
boolean isSelected)
This method lays out the tab and finds the location to paint the icon
and text.
tabPlacement
- The JTabbedPane's tab placement.metrics
- The font metrics for the font to paint with.tabIndex
- The tab index to paint.title
- The string painted.icon
- The icon painted.tabRect
- The tab bounds.iconRect
- The calculated icon bounds.textRect
- The calculated text bounds.isSelected
- Whether this tab is selected.
navigateSelectedTab
protected void navigateSelectedTab(int direction)
This method navigates from the selected tab into the given direction. As
a result, a new tab will be selected (if possible).
direction
- The direction to navigate in.
paintContentBorder
protected void paintContentBorder(Graphics g,
int tabPlacement,
int selectedIndex)
This method paints the border around the content area.
g
- The Graphics object to paint with.tabPlacement
- The JTabbedPane's tab placement.selectedIndex
- The index of the selected tab.
paintContentBorderBottomEdge
protected void paintContentBorderBottomEdge(Graphics g,
int tabPlacement,
int selectedIndex,
int x,
int y,
int w,
int h)
This method paints the bottom edge of the content border.
g
- The Graphics object to paint with.tabPlacement
- The JTabbedPane's tab placement.selectedIndex
- The selected tab index.x
- The x coordinate for the content area.y
- The y coordinate for the content area.w
- The width of the content area.h
- The height of the content area.
paintContentBorderLeftEdge
protected void paintContentBorderLeftEdge(Graphics g,
int tabPlacement,
int selectedIndex,
int x,
int y,
int w,
int h)
This method paints the left edge of the content border.
g
- The Graphics object to paint with.tabPlacement
- The JTabbedPane's tab placement.selectedIndex
- The selected tab index.x
- The x coordinate for the content area.y
- The y coordinate for the content area.w
- The width of the content area.h
- The height of the content area.
paintContentBorderRightEdge
protected void paintContentBorderRightEdge(Graphics g,
int tabPlacement,
int selectedIndex,
int x,
int y,
int w,
int h)
This method paints the right edge of the content border.
g
- The Graphics object to paint with.tabPlacement
- The JTabbedPane's tab placement.selectedIndex
- The selected tab index.x
- The x coordinate for the content area.y
- The y coordinate for the content area.w
- The width of the content area.h
- The height of the content area.
paintContentBorderTopEdge
protected void paintContentBorderTopEdge(Graphics g,
int tabPlacement,
int selectedIndex,
int x,
int y,
int w,
int h)
This method paints the top edge of the content border.
g
- The Graphics object to paint with.tabPlacement
- The JTabbedPane's tab placement.selectedIndex
- The selected tab index.x
- The x coordinate for the content area.y
- The y coordinate for the content area.w
- The width of the content area.h
- The height of the content area.
paintFocusIndicator
protected void paintFocusIndicator(Graphics g,
int tabPlacement,
Rectangle[] rects,
int tabIndex,
Rectangle iconRect,
Rectangle textRect,
boolean isSelected)
This method paints the focus rectangle around the selected tab.
g
- The Graphics object to paint with.tabPlacement
- The JTabbedPane's tab placement.rects
- The array of rectangles keeping track of size and position.tabIndex
- The tab index.iconRect
- The icon bounds.textRect
- The text bounds.isSelected
- Whether this tab is selected.
paintIcon
protected void paintIcon(Graphics g,
int tabPlacement,
int tabIndex,
Icon icon,
Rectangle iconRect,
boolean isSelected)
This method paints the icon.
g
- The Graphics object to paint.tabPlacement
- The JTabbedPane's tab placement.tabIndex
- The tab index to paint.icon
- The icon to paint.iconRect
- The bounds of the icon.isSelected
- Whether this tab is selected.
paintTab
protected void paintTab(Graphics g,
int tabPlacement,
Rectangle[] rects,
int tabIndex,
Rectangle iconRect,
Rectangle textRect)
This method paints an individual tab.
g
- The Graphics object to paint with.tabPlacement
- The JTabbedPane's tab placement.rects
- The array of rectangles that keep the size and position of
the tabs.tabIndex
- The tab index to paint.iconRect
- The rectangle to use for the icon.textRect
- The rectangle to use for the text.
paintTabArea
protected void paintTabArea(Graphics g,
int tabPlacement,
int selectedIndex)
This method paints the tab area. This includes painting the rectangles
that make up the tabs.
g
- The Graphics object to paint with.tabPlacement
- The JTabbedPane's tab placement.selectedIndex
- The selected index.
paintTabBackground
protected void paintTabBackground(Graphics g,
int tabPlacement,
int tabIndex,
int x,
int y,
int w,
int h,
boolean isSelected)
This method paints the background for an individual tab.
g
- The Graphics object to paint with.tabPlacement
- The JTabbedPane's tab placement.tabIndex
- The tab index.x
- The x position of the tab.y
- The y position of the tab.w
- The width of the tab.h
- The height of the tab.isSelected
- Whether the tab is selected.
paintTabBorder
protected void paintTabBorder(Graphics g,
int tabPlacement,
int tabIndex,
int x,
int y,
int w,
int h,
boolean isSelected)
This method paints the border for an individual tab.
g
- The Graphics object to paint with.tabPlacement
- The JTabbedPane's tab placement.tabIndex
- The tab index.x
- The x position of the tab.y
- The y position of the tab.w
- The width of the tab.h
- The height of the tab.isSelected
- Whether the tab is selected.
paintText
protected void paintText(Graphics g,
int tabPlacement,
Font font,
FontMetrics metrics,
int tabIndex,
String title,
Rectangle textRect,
boolean isSelected)
This method paints the text for the given tab.
g
- The Graphics object to paint with.tabPlacement
- The JTabbedPane's tab placement.font
- The font to paint with.metrics
- The fontmetrics of the given font.tabIndex
- The tab index.title
- The string to paint.textRect
- The bounds of the string.isSelected
- Whether this tab is selected.
rotateInsets
protected static void rotateInsets(Insets topInsets,
Insets targetInsets,
int targetPlacement)
This method rotates the insets given a direction to rotate them in.
Target placement should be one of TOP, LEFT, BOTTOM, RIGHT. The rotated
insets will be stored in targetInsets. Passing in TOP as the direction
does nothing. Passing in LEFT switches top and left, right and bottom.
Passing in BOTTOM switches top and bottom. Passing in RIGHT switches top
for left, left for bottom, bottom for right, and right for top.
topInsets
- The reference insets.targetInsets
- An Insets object to store the new insets.targetPlacement
- The rotation direction.
selectAdjacentRunTab
protected void selectAdjacentRunTab(int tabPlacement,
int tabIndex,
int offset)
This method selects the correct tab given an offset from the current tab
index. If the tab placement is TOP or BOTTOM, the offset will be in the
y direction, otherwise, it will be in the x direction. A new coordinate
will be found by adding the offset to the current location of the tab.
The tab that the new location will be selected.
tabPlacement
- The JTabbedPane's tab placement.tabIndex
- The tab to start from.offset
- The coordinate offset.
selectNextTab
protected void selectNextTab(int current)
This method selects the next tab (regardless of runs).
current
- The current selected index.
selectNextTabInRun
protected void selectNextTabInRun(int current)
This method selects the next tab in the run.
current
- The current selected index.
selectPreviousTab
protected void selectPreviousTab(int current)
This method selects the previous tab (regardless of runs).
current
- The current selected index.
selectPreviousTabInRun
protected void selectPreviousTabInRun(int current)
This method selects the previous tab in the run.
current
- The current selected index.
setVisibleComponent
protected void setVisibleComponent(Component component)
This method sets the visible component.
component
- The component to be set visible.
shouldPadTabRun
protected boolean shouldPadTabRun(int tabPlacement,
int run)
This method returns whether a tab run should be padded.
tabPlacement
- The JTabbedPane's tab placement.run
- The run to check.
- Whether the given run should be padded.
shouldRotateTabRuns
protected boolean shouldRotateTabRuns(int tabPlacement)
This method returns whether the tab runs should be rotated.
tabPlacement
- The JTabbedPane's tab placement.
- Whether runs should be rotated.
tabForCoordinate
public int tabForCoordinate(JTabbedPane pane,
int x,
int y)
This method returns the tab index given a coordinate.
- tabForCoordinate in interface TabbedPaneUI
pane
- The JTabbedPane.x
- The x coordinate.y
- The y coordinate.
- The tab index that the coordinate lands in.
uninstallComponents
protected void uninstallComponents()
This method uninstalls components for this JTabbedPane.
uninstallDefaults
protected void uninstallDefaults()
This method uninstalls defaults for the Look and Feel.
uninstallKeyboardActions
protected void uninstallKeyboardActions()
This method uninstalls keyboard actions for the JTabbedPane.
uninstallListeners
protected void uninstallListeners()
This method removes and nulls the listeners for this UI.
BasicTabbedPaneUI.java --
Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version.