private Component getComponent() {
   return componentCache.getComponent();
 }
 private void reset(PanePainter pane) {
   pane.removeAllTabs();
   componentCache.reset();
 }
  private void initTabLocations(PanePainter pane) {
    findPaintableTabs();

    Dimension minSize = getTabExternalMinSize(tabData.getAreaOrientation());
    Insets aInsets = getTabAreaInsets(tabData.getAreaOrientation());

    int selectedIndex = -1;

    if (tabData.getTabbedPanel().isTabAreaVisible()) {
      for (int i = 0; i < tabData.getTabCount(); i++) {
        final Tab tab = (Tab) tabData.getTabList().get(i);
        final Rectangle visibleRect = (Rectangle) tabData.getVisibleTabRects().get(i);
        Insets insets = getTabInsets(tabData.getAreaOrientation());

        int iconWidth =
            Math.max(
                -insets.left - insets.right,
                getInternalTabWidth(tab) - (tab.getWidth() - visibleRect.width));

        int iconHeight =
            Math.max(
                -insets.top - insets.bottom,
                getInternalTabHeight(tab) - (tab.getHeight() - visibleRect.height));

        Point l = getLocationInTabbedPanel(tab, tabData.getTabbedPanel());

        if ((tabData.isHorizontalLayout()
                && (visibleRect.width >= minSize.width
                    || minSize.width < tabData.getTabbedPanelWidth() - l.x - aInsets.right))
            || (!tabData.isHorizontalLayout()
                && (visibleRect.height >= minSize.height
                    || minSize.height < tabData.getTabbedPanelHeight() - l.y - aInsets.bottom))) {
          final int iWidth = iconWidth;
          final int iHeight = iconHeight;

          SizeIcon icon =
              new SizeIcon(
                  iWidth - getWidthCompensate(tabData.getAreaOrientation()),
                  iHeight - getHeightCompensate(tabData.getAreaOrientation()),
                  isSwapWidthHeight(tabData.getAreaOrientation()));

          int j = pane.getTabCount();
          pane.addTab(EMPTY_STRING, icon, getComponent());

          if (i == tabData.getSelectedTabPainterIndex()) {
            selectedIndex = j;
          }

          if (!tab.isEnabled()) {
            pane.setEnabledAt(j, false);
            pane.setDisabledIconAt(j, icon);
          }
        }
      }
    } else if (tabAreaNotVisibleFix) {
      pane.addTab(EMPTY_STRING, componentCache.getComponent());
    }

    if (pane.getTabCount() > 0) pane.setSelectedIndex(selectedIndex);

    pane.doValidation();
  }