code: private void updateTabContext(int index, boolean selected, boolean isMouseDown, boolean isMouseOver, boolean hasFocus) {
          int state = 0;
  
          if (!tabPane.isEnabled() || !tabPane.isEnabledAt(index)) {
              state |= SynthConstants.DISABLED;
  
              if (selected) {
                  state |= SynthConstants.SELECTED;
              }
          } else if (selected) {
              state |= (SynthConstants.ENABLED | SynthConstants.SELECTED);
  
              if (isMouseOver && UIManager.getBoolean("TabbedPane.isTabRollover")) {
                  state |= SynthConstants.MOUSE_OVER;
              }
          } else if (isMouseOver) {
              state |= (SynthConstants.ENABLED | SynthConstants.MOUSE_OVER);
          } else {
              state =  SeaGlassLookAndFeel.getComponentState(tabPane);
              state &= ~SynthConstants.FOCUSED; // Don't use tabbedpane focus state.
          }
  
          if (hasFocus && tabPane.hasFocus()) {
              state |= SynthConstants.FOCUSED; // individual tab has focus
          }
  
          if (isMouseDown) {
              state |= SynthConstants.PRESSED;
          }
  
          tabContext.setComponentState(state);
      }
docs: Update the SynthContext for the tab area for a specified tab.
  
  @param index       the tab to update for.
  @param selected    is the tab selected?
  @param isMouseDown is the mouse down?
  @param isMouseOver is the mouse over the tab?
  @param hasFocus    do we have focus?