Class FlatTabbedPaneUI

All Implemented Interfaces:
FlatStylingSupport.StyleableUI, FlatTitlePane.TitleBarCaptionHitTest, SwingConstants
Direct Known Subclasses:
FlatThemePreviewAll.PreviewFlatTabbedPaneUI

Provides the Flat LaF UI delegate for JTabbedPane.
  • Field Details

    • TAB_TYPE_UNDERLINED

      protected static final int TAB_TYPE_UNDERLINED
      Since:
      2
      See Also:
    • TAB_TYPE_CARD

      protected static final int TAB_TYPE_CARD
      Since:
      2
      See Also:
    • NEVER

      protected static final int NEVER
      See Also:
    • AS_NEEDED

      protected static final int AS_NEEDED
      See Also:
    • AS_NEEDED_SINGLE

      protected static final int AS_NEEDED_SINGLE
      See Also:
    • BOTH

      protected static final int BOTH
      See Also:
    • FILL

      protected static final int FILL
      See Also:
    • WIDTH_MODE_PREFERRED

      protected static final int WIDTH_MODE_PREFERRED
      See Also:
    • WIDTH_MODE_EQUAL

      protected static final int WIDTH_MODE_EQUAL
      See Also:
    • WIDTH_MODE_COMPACT

      protected static final int WIDTH_MODE_COMPACT
      See Also:
    • NONE

      protected static final int NONE
      Since:
      3.3
      See Also:
    • AUTO

      protected static final int AUTO
      Since:
      3.3
      See Also:
    • focusForwardTraversalKeys

      private static Set<KeyStroke> focusForwardTraversalKeys
    • focusBackwardTraversalKeys

      private static Set<KeyStroke> focusBackwardTraversalKeys
    • foreground

      protected Color foreground
    • disabledForeground

      protected Color disabledForeground
    • selectedBackground

      protected Color selectedBackground
    • selectedForeground

      protected Color selectedForeground
    • underlineColor

      protected Color underlineColor
    • inactiveUnderlineColor

      protected Color inactiveUnderlineColor
      Since:
      2.2
    • disabledUnderlineColor

      protected Color disabledUnderlineColor
    • hoverColor

      protected Color hoverColor
    • hoverForeground

      protected Color hoverForeground
      Since:
      3.1
    • focusColor

      protected Color focusColor
    • focusForeground

      protected Color focusForeground
      Since:
      3.1
    • tabSeparatorColor

      protected Color tabSeparatorColor
    • contentAreaColor

      protected Color contentAreaColor
    • textIconGapUnscaled

      private int textIconGapUnscaled
    • minimumTabWidth

      protected int minimumTabWidth
    • maximumTabWidth

      protected int maximumTabWidth
    • tabHeight

      protected int tabHeight
    • tabSelectionHeight

      protected int tabSelectionHeight
    • cardTabSelectionHeight

      protected int cardTabSelectionHeight
      Since:
      2
    • tabArc

      protected int tabArc
      Since:
      3.2
    • tabSelectionArc

      protected int tabSelectionArc
      Since:
      3.2
    • cardTabArc

      protected int cardTabArc
      Since:
      3.2
    • selectedInsets

      protected Insets selectedInsets
      Since:
      3.2
    • tabSelectionInsets

      protected Insets tabSelectionInsets
      Since:
      3.2
    • contentSeparatorHeight

      protected int contentSeparatorHeight
    • showTabSeparators

      protected boolean showTabSeparators
    • tabSeparatorsFullHeight

      protected boolean tabSeparatorsFullHeight
    • hasFullBorder

      protected boolean hasFullBorder
    • tabsOpaque

      protected boolean tabsOpaque
    • rotateTabRuns

      protected boolean rotateTabRuns
      Since:
      2.5
    • tabType

      private int tabType
    • tabsPopupPolicy

      private int tabsPopupPolicy
    • scrollButtonsPolicy

      private int scrollButtonsPolicy
    • scrollButtonsPlacement

      private int scrollButtonsPlacement
    • tabAreaAlignment

      private int tabAreaAlignment
    • tabAlignment

      private int tabAlignment
    • tabWidthMode

      private int tabWidthMode
    • tabRotation

      private int tabRotation
      Since:
      3.3
    • closeIcon

      protected Icon closeIcon
    • arrowType

      protected String arrowType
    • buttonInsets

      protected Insets buttonInsets
    • buttonArc

      protected int buttonArc
    • buttonHoverBackground

      protected Color buttonHoverBackground
    • buttonPressedBackground

      protected Color buttonPressedBackground
    • moreTabsButtonToolTipText

      protected String moreTabsButtonToolTipText
    • tabCloseToolTipText

      protected String tabCloseToolTipText
      Since:
      2
    • showContentSeparator

      protected boolean showContentSeparator
      Since:
      2
    • hideTabAreaWithOneTab

      protected boolean hideTabAreaWithOneTab
      Since:
      2
    • tabClosable

      protected boolean tabClosable
      Since:
      2
    • tabIconPlacement

      protected int tabIconPlacement
      Since:
      2
    • tabViewport

      protected JViewport tabViewport
    • wheelTabScroller

      protected FlatTabbedPaneUI.FlatWheelTabScroller wheelTabScroller
    • tabCloseButton

      private JButton tabCloseButton
    • moreTabsButton

      private JButton moreTabsButton
    • leadingComponent

      private Container leadingComponent
    • trailingComponent

      private Container trailingComponent
    • scrollBackwardButtonPrefSize

      private Dimension scrollBackwardButtonPrefSize
    • handler

      private FlatTabbedPaneUI.Handler handler
    • blockRollover

      private boolean blockRollover
    • rolloverTabClose

      private boolean rolloverTabClose
    • pressedTabClose

      private boolean pressedTabClose
    • inBasicLayoutContainer

      private boolean inBasicLayoutContainer
    • oldRenderingHints

      private Object[] oldRenderingHints
    • oldStyleValues

      private Map<String,Object> oldStyleValues
    • closeIconShared

      private boolean closeIconShared
    • repaintRolloverPending

      private boolean repaintRolloverPending
    • inCalculateEqual

      private boolean inCalculateEqual
  • Constructor Details

    • FlatTabbedPaneUI

      public FlatTabbedPaneUI()
  • Method Details

    • createUI

      public static ComponentUI createUI(JComponent c)
    • installUI

      public void installUI(JComponent c)
      Overrides:
      installUI in class BasicTabbedPaneUI
    • installDefaults

      protected void installDefaults()
      Overrides:
      installDefaults in class BasicTabbedPaneUI
    • uninstallDefaults

      protected void uninstallDefaults()
      Overrides:
      uninstallDefaults in class BasicTabbedPaneUI
    • installComponents

      protected void installComponents()
      Overrides:
      installComponents in class BasicTabbedPaneUI
    • uninstallComponents

      protected void uninstallComponents()
      Overrides:
      uninstallComponents in class BasicTabbedPaneUI
    • installHiddenTabsNavigation

      protected void installHiddenTabsNavigation()
    • uninstallHiddenTabsNavigation

      protected void uninstallHiddenTabsNavigation()
    • installLeadingComponent

      protected void installLeadingComponent()
    • uninstallLeadingComponent

      protected void uninstallLeadingComponent()
    • installTrailingComponent

      protected void installTrailingComponent()
    • uninstallTrailingComponent

      protected void uninstallTrailingComponent()
    • 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
    • getHandler

      private FlatTabbedPaneUI.Handler getHandler()
    • createWheelTabScroller

      protected FlatTabbedPaneUI.FlatWheelTabScroller createWheelTabScroller()
    • createMouseListener

      protected MouseListener createMouseListener()
      Overrides:
      createMouseListener in class BasicTabbedPaneUI
    • createPropertyChangeListener

      protected PropertyChangeListener createPropertyChangeListener()
      Overrides:
      createPropertyChangeListener in class BasicTabbedPaneUI
    • createChangeListener

      protected ChangeListener createChangeListener()
      Overrides:
      createChangeListener in class BasicTabbedPaneUI
    • createFocusListener

      protected FocusListener createFocusListener()
      Overrides:
      createFocusListener in class BasicTabbedPaneUI
    • createLayoutManager

      protected LayoutManager createLayoutManager()
      Overrides:
      createLayoutManager in class BasicTabbedPaneUI
    • createScrollLayoutManager

      protected LayoutManager createScrollLayoutManager(BasicTabbedPaneUI.TabbedPaneLayout delegate)
    • createMoreTabsButton

      protected JButton createMoreTabsButton()
    • createScrollButton

      protected JButton createScrollButton(int direction)
      Overrides:
      createScrollButton in class BasicTabbedPaneUI
    • installStyle

      protected void installStyle()
      Since:
      2
    • applyStyle

      protected void applyStyle(Object style)
      Since:
      2
    • applyStyleProperty

      protected Object applyStyleProperty(String key, Object value)
      Since:
      2
    • getStyleableInfos

      public Map<String,Class<?>> getStyleableInfos(JComponent c)
      Specified by:
      getStyleableInfos in interface FlatStylingSupport.StyleableUI
      Since:
      2
    • getStyleableValue

      public Object getStyleableValue(JComponent c, String key)
      Specified by:
      getStyleableValue in interface FlatStylingSupport.StyleableUI
      Since:
      2.5
    • setRolloverTab

      protected void setRolloverTab(int x, int y)
    • setRolloverTab

      protected void setRolloverTab(int index)
      Overrides:
      setRolloverTab in class BasicTabbedPaneUI
    • repaintRolloverLaterOnce

      private void repaintRolloverLaterOnce(int oldIndex)
      Repaint rollover tab, but deferred and only once. This is to avoid unnecessary repaints in case of temporary changes to rollover tab. E.g. when moving mouse over a single tab, a re-layout may occur and set rollover tab to -1, in BasicTabbedPaneUI.TabbedPaneLayout.layoutContainer() and BasicTabbedPaneUI.TabbedPaneScrollLayout.layoutContainer(), and subsequently change rollover tab back to previous value.
    • isRolloverTabClose

      protected boolean isRolloverTabClose()
    • setRolloverTabClose

      protected void setRolloverTabClose(boolean rollover)
    • isPressedTabClose

      protected boolean isPressedTabClose()
    • setPressedTabClose

      protected void setPressedTabClose(boolean pressed)
    • repaintTab

      private void repaintTab(int tabIndex)
    • calculateTabWidth

      protected int calculateTabWidth(int tabPlacement, int tabIndex, FontMetrics metrics)
      Overrides:
      calculateTabWidth in class BasicTabbedPaneUI
    • calculateTabWidthImpl

      private int calculateTabWidthImpl(int tabPlacement, int tabIndex, FontMetrics metrics, boolean rotated)
    • calculateTabHeight

      protected int calculateTabHeight(int tabPlacement, int tabIndex, int fontHeight)
      Overrides:
      calculateTabHeight in class BasicTabbedPaneUI
    • calculateTabHeightImpl

      private int calculateTabHeightImpl(int tabPlacement, int tabIndex, int fontHeight, boolean rotated)
    • calculateMaxTabWidth

      protected int calculateMaxTabWidth(int tabPlacement)
      Overrides:
      calculateMaxTabWidth in class BasicTabbedPaneUI
    • calculateMaxTabHeight

      protected int calculateMaxTabHeight(int tabPlacement)
      Overrides:
      calculateMaxTabHeight in class BasicTabbedPaneUI
    • calculateTabAreaWidth

      protected int calculateTabAreaWidth(int tabPlacement, int vertRunCount, int maxTabWidth)
      Overrides:
      calculateTabAreaWidth in class BasicTabbedPaneUI
    • calculateTabAreaHeight

      protected int calculateTabAreaHeight(int tabPlacement, int horizRunCount, int maxTabHeight)
      Overrides:
      calculateTabAreaHeight in class BasicTabbedPaneUI
    • getTabInsets

      protected Insets getTabInsets(int tabPlacement, int tabIndex)
      Overrides:
      getTabInsets in class BasicTabbedPaneUI
    • getTabInsetsRotated

      protected Insets getTabInsetsRotated(int tabPlacement, int tabIndex, int rotation)
      Since:
      3.3
    • getSelectedTabPadInsets

      protected Insets getSelectedTabPadInsets(int tabPlacement)
      Overrides:
      getSelectedTabPadInsets in class BasicTabbedPaneUI
    • getRealTabAreaInsets

      protected Insets getRealTabAreaInsets(int tabPlacement)
    • getTabAreaInsets

      protected Insets getTabAreaInsets(int tabPlacement)
      Overrides:
      getTabAreaInsets in class BasicTabbedPaneUI
    • getContentBorderInsets

      protected Insets getContentBorderInsets(int tabPlacement)
      The content border insets are used to create a separator between tabs and content. If client property JTabbedPane.hasFullBorder is true, then the content border insets are also used for the border.
      Overrides:
      getContentBorderInsets in class BasicTabbedPaneUI
    • getTabLabelShiftX

      protected int getTabLabelShiftX(int tabPlacement, int tabIndex, boolean isSelected)
      Overrides:
      getTabLabelShiftX in class BasicTabbedPaneUI
    • getTabLabelShiftY

      protected int getTabLabelShiftY(int tabPlacement, int tabIndex, boolean isSelected)
      Overrides:
      getTabLabelShiftY in class BasicTabbedPaneUI
    • update

      public void update(Graphics g, JComponent c)
      Overrides:
      update in class ComponentUI
    • paint

      public void paint(Graphics g, JComponent c)
      Overrides:
      paint in class BasicTabbedPaneUI
    • paintTabArea

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

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

      protected void paintText(Graphics g, int tabPlacement, Font font, FontMetrics metrics, int tabIndex, String title, Rectangle textRect, boolean isSelected)
      Overrides:
      paintText in class BasicTabbedPaneUI
    • paintIcon

      protected void paintIcon(Graphics g, int tabPlacement, int tabIndex, Icon icon, Rectangle iconRect, boolean isSelected)
      Overrides:
      paintIcon in class BasicTabbedPaneUI
    • rotateGraphics

      private AffineTransform rotateGraphics(Graphics g, int tabPlacement, Rectangle r)
    • getTabForeground

      protected Color getTabForeground(int tabPlacement, int tabIndex, boolean isSelected)
      Since:
      3.1
    • paintTabBackground

      protected void paintTabBackground(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected)
      Overrides:
      paintTabBackground in class BasicTabbedPaneUI
    • getTabBackground

      protected Color getTabBackground(int tabPlacement, int tabIndex, boolean isSelected)
      Since:
      2
    • paintTabBorder

      protected void paintTabBorder(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h, boolean isSelected)
      Overrides:
      paintTabBorder in class BasicTabbedPaneUI
    • paintCardTabBorder

      protected void paintCardTabBorder(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h)
      Since:
      2
    • createCardTabOuterPath

      protected Shape createCardTabOuterPath(int tabPlacement, int x, int y, int w, int h)
      Since:
      3.2
    • createCardTabInnerPath

      protected Shape createCardTabInnerPath(int tabPlacement, int x, int y, int w, int h)
      Since:
      3.2
    • paintTabCloseButton

      protected void paintTabCloseButton(Graphics g, int tabIndex, int x, int y, int w, int h)
    • paintTabSeparator

      protected void paintTabSeparator(Graphics g, int tabPlacement, int x, int y, int w, int h)
    • paintTabSelection

      protected void paintTabSelection(Graphics g, int tabPlacement, int tabIndex, int x, int y, int w, int h)
    • isTabbedPaneOrChildFocused

      protected boolean isTabbedPaneOrChildFocused()
      Since:
      2.2
    • paintContentBorder

      protected void paintContentBorder(Graphics g, int tabPlacement, int selectedIndex)
      Actually does nearly the same as super.paintContentBorder() but - not using UIManager.getColor("TabbedPane.contentAreaColor") to be GUI builder friendly - tabsOverlapBorder is always true - paint full border (if enabled) - not invoking paintContentBorder*Edge() methods - repaint selection - painting active tab border style
      Overrides:
      paintContentBorder in class BasicTabbedPaneUI
    • paintFocusIndicator

      protected void paintFocusIndicator(Graphics g, int tabPlacement, Rectangle[] rects, int tabIndex, Rectangle iconRect, Rectangle textRect, boolean isSelected)
      Overrides:
      paintFocusIndicator in class BasicTabbedPaneUI
    • layoutAndClipLabel

      protected String layoutAndClipLabel(int tabPlacement, FontMetrics metrics, int tabIndex, String title, Icon icon, Rectangle tabRect, Rectangle iconRect, Rectangle textRect, boolean isSelected)
    • layoutVerticalCompoundLabel

      private String layoutVerticalCompoundLabel(int rotation, JComponent c, FontMetrics fm, String text, Icon icon, int verticalAlignment, int horizontalAlignment, int verticalTextPosition, int horizontalTextPosition, Rectangle viewR, Rectangle iconR, Rectangle textR, int textIconGap)
    • rotateLeft

      private void rotateLeft(Rectangle viewR, Rectangle r)
    • rotateRight

      private void rotateRight(Rectangle viewR, Rectangle r)
    • getRealTabRotation

      protected int getRealTabRotation(int tabPlacement)
      Since:
      3.3
    • tabForCoordinate

      public int tabForCoordinate(JTabbedPane pane, int x, int y)
      Overrides:
      tabForCoordinate in class BasicTabbedPaneUI
    • getTabBounds

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

      protected Rectangle getTabCloseBounds(int tabIndex, int x, int y, int w, int h, Rectangle dest)
    • getTabCloseHitArea

      protected Rectangle getTabCloseHitArea(int tabIndex)
    • isTabClosable

      protected boolean isTabClosable(int tabIndex)
    • closeTab

      protected void closeTab(int tabIndex)
    • getTabClientProperty

      protected Object getTabClientProperty(int tabIndex, String key)
    • getTabClientPropertyInt

      protected int getTabClientPropertyInt(int tabIndex, String key, int defaultValue)
    • ensureCurrentLayout

      protected void ensureCurrentLayout()
    • shouldRotateTabRuns

      protected boolean shouldRotateTabRuns(int tabPlacement)
      Overrides:
      shouldRotateTabRuns in class BasicTabbedPaneUI
    • isLastInRun

      private boolean isLastInRun(int tabIndex)
    • isScrollTabLayout

      private boolean isScrollTabLayout()
    • isLeftToRight

      private boolean isLeftToRight()
    • isHorizontalTabPlacement

      protected boolean isHorizontalTabPlacement(int tabPlacement)
      Since:
      3.3
    • isHorizontalOrRotated

      private boolean isHorizontalOrRotated(int tabPlacement)
      Returns true if tab placement is top/bottom and text is painted horizontally or if tab placement is left/right and text is painted vertically (rotated).
    • isSmoothScrollingEnabled

      protected boolean isSmoothScrollingEnabled()
    • hideTabArea

      protected boolean hideTabArea()
    • getTabType

      protected int getTabType()
      Since:
      2
    • getTabsPopupPolicy

      protected int getTabsPopupPolicy()
    • getScrollButtonsPolicy

      protected int getScrollButtonsPolicy()
    • getScrollButtonsPlacement

      protected int getScrollButtonsPlacement()
    • getTabAreaAlignment

      protected int getTabAreaAlignment()
    • getTabAlignment

      protected int getTabAlignment(int tabIndex)
    • getTabWidthMode

      protected int getTabWidthMode()
    • getTabRotation

      protected int getTabRotation()
      Since:
      3.3
    • parseTabType

      protected static int parseTabType(String str)
      Since:
      2
    • parseTabsPopupPolicy

      protected static int parseTabsPopupPolicy(String str)
    • parseScrollButtonsPolicy

      protected static int parseScrollButtonsPolicy(String str)
    • parseScrollButtonsPlacement

      protected static int parseScrollButtonsPlacement(String str)
    • parseAlignment

      protected static int parseAlignment(String str, int defaultValue)
    • alignmentToString

      private static String alignmentToString(int value, String defaultValue)
    • parseTabWidthMode

      protected static int parseTabWidthMode(String str)
    • parseTabRotation

      protected static int parseTabRotation(String str)
      Since:
      3.3
    • parseTabIconPlacement

      protected static int parseTabIconPlacement(String str)
    • runWithOriginalLayoutManager

      private void runWithOriginalLayoutManager(Runnable runnable)
    • ensureSelectedTabIsVisibleLater

      protected void ensureSelectedTabIsVisibleLater()
    • ensureSelectedTabIsVisible

      protected void ensureSelectedTabIsVisible()
    • getLeadingPreferredWidth

      private int getLeadingPreferredWidth()
    • getLeadingPreferredHeight

      private int getLeadingPreferredHeight()
    • getTrailingPreferredWidth

      private int getTrailingPreferredWidth()
    • getTrailingPreferredHeight

      private int getTrailingPreferredHeight()
    • shiftTabs

      private void shiftTabs(int sx, int sy)
    • stretchTabsWidth

      private void stretchTabsWidth(int sw, boolean leftToRight)
    • stretchTabsHeight

      private void stretchTabsHeight(int sh)
    • rectsTotalWidth

      private int rectsTotalWidth(boolean leftToRight)
    • rectsTotalHeight

      private int rectsTotalHeight()
    • isTitleBarCaptionAt

      public Boolean isTitleBarCaptionAt(int x, int y)
      Description copied from interface: FlatTitlePane.TitleBarCaptionHitTest
      Invoked for a component that is enabled and has mouse listeners, to check whether it processes mouse input at the given x/y location. Useful for components that do not use mouse input on whole component bounds. E.g. a tabbed pane with a few tabs has some empty space beside the tabs that can be used to move the window.
      Specified by:
      isTitleBarCaptionAt in interface FlatTitlePane.TitleBarCaptionHitTest
      Returns:
      true if the component is not interested in mouse input at the given location false if the component wants process mouse input at the given location null if the component children should be checked
      Since:
      3.4