org.icefaces.ace.component.tabset

## Class TabSetBase

- java.lang.Object
- - javax.faces.component.UIComponent
  - - javax.faces.component.UIComponentBase
    - - org.icefaces.ace.component.tabset.TabSetBase

- All Implemented Interfaces:
    java.util.EventListener, javax.faces.component.behavior.ClientBehaviorHolder, javax.faces.component.PartialStateHolder, javax.faces.component.StateHolder, javax.faces.component.TransientStateHolder, javax.faces.event.ComponentSystemEventListener, javax.faces.event.FacesListener, javax.faces.event.SystemEventListenerHolder, IceClientBehaviorHolder, ITabSet
  Direct Known Subclasses:
    TabSet

      public abstract class TabSetBase
      extends javax.faces.component.UIComponentBase
      implements ITabSet, IceClientBehaviorHolder

  The TabSet component is a container for its TabPane children, each of which may contain any arbitrary components. Only one TabPane component is currently active, and its contents shown, at any given time. The TabSet may operate in a server-side mode, where only the current TabPane's contents exist in the browser; or in client-side mode, where every TabPane's contents exist in the browser, and no server round-trip is necessary to change TabPanes. The entire TabSet may exist within a single parent form, so that validation will apply to all of its contents, and so that validation may enforce remaining on the current TabPane if the user attempts to change the selected TabPane while other input components are in an invalid state. Also, a TabSet may exist outside of any form, perhaps with each TabPane containing their own child form, so that validation may be more limited in scope. In this case, a TabSetProxy may be used, in conjunction with the TabSet, so that the TabSetProxy may be placed in a form, for communicating with the server, removing the need for the TabSet itself to be in a form. When changing the selected TabPane, the TabSet may use application configurable animations to accentuate the transition from the previously selected TabPane to the newly selected TabPane. The label portion of the TabPanes may be shown on the bottom, top, left, or right of the TabSet. To support the capability of dynamically adding and removing TabPane(s) without updating the entire TabSet, there is a side-effect where any iframe(s) within them can get loaded twice in rapid succession, when first shown or subsequently updated. To eliminate the redundant load by deferring the loading until the TabSet is ready, do not use a src attribute on the iframe(s), but rather set the org.icefaces.ace.component.tabset.deferred_src attribute to what src would have been.

  For more information, see the TabSet Wiki Documentation.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected static class` | `TabSetBase.PropertyKeys`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `COMPONENT_TYPE`
    `static java.lang.String` | `RENDERER_TYPE`

    - ### Fields inherited from class javax.faces.component.UIComponent

      `ATTRS_WITH_DECLARED_DEFAULT_VALUES, BEANINFO_KEY, bindings, COMPOSITE_COMPONENT_TYPE_KEY, COMPOSITE_FACET_NAME, CURRENT_COMPONENT, CURRENT_COMPOSITE_COMPONENT, FACETS_KEY, HONOR_CURRENT_COMPONENT_ATTRIBUTES_PARAM_NAME, VIEW_LOCATION_KEY`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `TabSetBase()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addClientBehavior(java.lang.String eventName, javax.faces.component.behavior.ClientBehavior behavior)`
    `java.lang.String` | `getDefaultEventName()`
    `java.lang.String` | `getDefaultExecute(java.lang.String event)`
    `java.lang.String` | `getDefaultRender(java.lang.String event)`
    `java.util.Collection<java.lang.String>` | `getEventNames()`
    `java.lang.String` | `getFamily()`
    `java.lang.String` | `getListenerArgument(java.lang.String event)`
    `java.lang.String` | `getOrientation()` Return the value of the `orientation` property.
    `java.lang.Integer` | `getPreDecodeSelectedIndex()` Return the value of the `preDecodeSelectedIndex` property.
    `int` | `getSelectedIndex()` Return the value of the `selectedIndex` property.
    `java.lang.String` | `getShowEffect()` Return the value of the `showEffect` property.
    `int` | `getShowEffectLength()` Return the value of the `showEffectLength` property.
    `java.lang.String` | `getStyle()` Return the value of the `style` property.
    `java.lang.String` | `getStyleClass()` Return the value of the `styleClass` property.
    `javax.el.MethodExpression` | `getTabChangeListener()` Return the value of the `tabChangeListener` property.
    `java.util.List` | `getVisitedTabClientIds()` Return the value of the `visitedTabClientIds` property.
    `boolean` | `isCancelOnInvalid()` Return the value of the `cancelOnInvalid` property.
    `boolean` | `isClientSide()` Return the value of the `clientSide` property.
    `boolean` | `isDisabled()` Return the value of the `disabled` property.
    `boolean` | `isImmediate()` Return the value of the `immediate` property.
    `protected boolean` | `isPropertySet(java.lang.String finder)`
    `void` | `setCancelOnInvalid(boolean cancelOnInvalid)` Set the value of the `cancelOnInvalid` property.
    `void` | `setClientSide(boolean clientSide)` Set the value of the `clientSide` property.
    `void` | `setDisabled(boolean disabled)` Set the value of the `disabled` property.
    `void` | `setImmediate(boolean immediate)` Set the value of the `immediate` property.
    `void` | `setOrientation(java.lang.String orientation)` Set the value of the `orientation` property.
    `void` | `setPreDecodeSelectedIndex(java.lang.Integer preDecodeSelectedIndex)` Set the value of the `preDecodeSelectedIndex` property.
    `void` | `setSelectedIndex(int selectedIndex)` Set the value of the `selectedIndex` property.
    `void` | `setShowEffect(java.lang.String showEffect)` Set the value of the `showEffect` property.
    `void` | `setShowEffectLength(int showEffectLength)` Set the value of the `showEffectLength` property.
    `void` | `setStyle(java.lang.String style)` Set the value of the `style` property.
    `void` | `setStyleClass(java.lang.String styleClass)` Set the value of the `styleClass` property.
    `void` | `setTabChangeListener(javax.el.MethodExpression tabChangeListener)` Set the value of the `tabChangeListener` property.
    `void` | `setValueExpression(java.lang.String name, javax.el.ValueExpression binding)`
    `void` | `setVisitedTabClientIds(java.util.List visitedTabClientIds)` Set the value of the `visitedTabClientIds` property.

    - ### Methods inherited from class javax.faces.component.UIComponentBase

      `addFacesListener, broadcast, clearInitialState, decode, encodeBegin, encodeChildren, encodeEnd, findComponent, getAttributes, getChildCount, getChildren, getClientBehaviors, getClientId, getFacesContext, getFacesListeners, getFacet, getFacetCount, getFacets, getFacetsAndChildren, getId, getListenersForEventClass, getParent, getRenderer, getRendererType, getRendersChildren, getValueBinding, invokeOnComponent, isRendered, isTransient, markInitialState, processDecodes, processRestoreState, processSaveState, processUpdates, processValidators, queueEvent, removeFacesListener, restoreAttachedState, restoreState, saveAttachedState, saveState, setId, setParent, setRendered, setRendererType, setTransient, setValueBinding, subscribeToEvent, unsubscribeFromEvent`

    - ### Methods inherited from class javax.faces.component.UIComponent

      `encodeAll, getClientId, getCompositeComponentParent, getContainerClientId, getCurrentComponent, getCurrentCompositeComponent, getNamingContainer, getResourceBundleMap, getStateHelper, getStateHelper, getTransientStateHelper, getTransientStateHelper, getValueExpression, initialStateMarked, isCompositeComponent, isInView, isVisitable, popComponentFromEL, processEvent, pushComponentToEL, restoreTransientState, saveTransientState, setInView, visitTree`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface javax.faces.component.behavior.ClientBehaviorHolder

      `getClientBehaviors`

- - ### Field Detail

    - #### COMPONENT_TYPE

          public static final java.lang.String COMPONENT_TYPE

      See Also:
        Constant Field Values

    - #### RENDERER_TYPE

          public static final java.lang.String RENDERER_TYPE

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### TabSetBase

          public TabSetBase()

  - ### Method Detail

    - #### getFamily

          public java.lang.String getFamily()

      Specified by:
        `getFamily` in class `javax.faces.component.UIComponent`

    - #### setCancelOnInvalid

          public void setCancelOnInvalid(boolean cancelOnInvalid)

      Set the value of the `cancelOnInvalid` property.

      Contents:

      Controls how input component validation affects changing the selected TabPane. When false, then irrespective of immediate, selectedIndex will be set and tabChangeListener will be invoked in APPLY_REQUEST_VALUES phase. PROCESS_VALIDATIONS phase will still execute and create any FacesMessage(s), but won't interfere with the changing TabPane selection.

      Otherwise, when true, then it depends on immediate. When immediate is true, selectedIndex will be set and tabChangeListener will be invoked in APPLY_REQUEST_VALUES phase, but PROCESS_VALIDATIONS phase will not execute, so no FacesMessage(s) can be created. When immediate is false, then selectedIndex will be set in UPDATE_MODEL and tabChangeListener will be invoked in INVOKE_APPLICATION, and so any validation error in PROCESS_VALIDATIONS will stop the changing of the selected TabPane.

      Specified by:
        `setCancelOnInvalid` in interface `ITabSet`

    - #### isCancelOnInvalid

          public boolean isCancelOnInvalid()

      Return the value of the `cancelOnInvalid` property.

      Contents:

      Controls how input component validation affects changing the selected TabPane. When false, then irrespective of immediate, selectedIndex will be set and tabChangeListener will be invoked in APPLY_REQUEST_VALUES phase. PROCESS_VALIDATIONS phase will still execute and create any FacesMessage(s), but won't interfere with the changing TabPane selection.

      Otherwise, when true, then it depends on immediate. When immediate is true, selectedIndex will be set and tabChangeListener will be invoked in APPLY_REQUEST_VALUES phase, but PROCESS_VALIDATIONS phase will not execute, so no FacesMessage(s) can be created. When immediate is false, then selectedIndex will be set in UPDATE_MODEL and tabChangeListener will be invoked in INVOKE_APPLICATION, and so any validation error in PROCESS_VALIDATIONS will stop the changing of the selected TabPane. Default = 'true'.

      Specified by:
        `isCancelOnInvalid` in interface `ITabSet`

    - #### setClientSide

          public void setClientSide(boolean clientSide)

      Set the value of the `clientSide` property.

      Contents: This component supports both client and server side tab change models. When clientSide is true, then the contents of all TabPanes get rendered on the client and clientSideTabChange will fire when changing the selected TabPane. Otherwise, in server side mode, typically only the selected TabPane contents will get rendered to the client, depending on the TabPane cache property, and serverSideTabChange will fire or the form will be submitted, so that the tabChangeListener will be invoked, and the newly selected TabPane contents may be sent to the browser.

      Specified by:
        `setClientSide` in interface `ITabSet`

    - #### isClientSide

          public boolean isClientSide()

      Return the value of the `clientSide` property.

      Contents: This component supports both client and server side tab change models. When clientSide is true, then the contents of all TabPanes get rendered on the client and clientSideTabChange will fire when changing the selected TabPane. Otherwise, in server side mode, typically only the selected TabPane contents will get rendered to the client, depending on the TabPane cache property, and serverSideTabChange will fire or the form will be submitted, so that the tabChangeListener will be invoked, and the newly selected TabPane contents may be sent to the browser. Default = 'false'.

      Specified by:
        `isClientSide` in interface `ITabSet`

    - #### setDisabled

          public void setDisabled(boolean disabled)

      Set the value of the `disabled` property.

      Contents: If true then all tabs except the active one will be disabled and can not be selected.

      Specified by:
        `setDisabled` in interface `ITabSet`

    - #### isDisabled

          public boolean isDisabled()

      Return the value of the `disabled` property.

      Contents: If true then all tabs except the active one will be disabled and can not be selected.

      Specified by:
        `isDisabled` in interface `ITabSet`

    - #### setImmediate

          public void setImmediate(boolean immediate)

      Set the value of the `immediate` property.

      Contents: If true (and/or cancelOnInvalid is false) then tabChangeListener will be invoked in APPLY_REQUEST_VALUES phase, otherwise INVOKE_APPLICATION phase.

      Specified by:
        `setImmediate` in interface `ITabSet`

    - #### isImmediate

          public boolean isImmediate()

      Return the value of the `immediate` property.

      Contents: If true (and/or cancelOnInvalid is false) then tabChangeListener will be invoked in APPLY_REQUEST_VALUES phase, otherwise INVOKE_APPLICATION phase. Default = 'false'.

      Specified by:
        `isImmediate` in interface `ITabSet`

    - #### setOrientation

          public void setOrientation(java.lang.String orientation)

      Set the value of the `orientation` property.

      Contents: Where the clickable TabPane labels are shown. Valid values are bottom, top, left and right.

      Specified by:
        `setOrientation` in interface `ITabSet`

    - #### getOrientation

          public java.lang.String getOrientation()

      Return the value of the `orientation` property.

      Contents: Where the clickable TabPane labels are shown. Valid values are bottom, top, left and right. Default = 'top'.

      Specified by:
        `getOrientation` in interface `ITabSet`

    - #### setSelectedIndex

          public void setSelectedIndex(int selectedIndex)

      Set the value of the `selectedIndex` property.

      Contents: The index of the current selected tab.

      Specified by:
        `setSelectedIndex` in interface `ITabSet`

    - #### getSelectedIndex

          public int getSelectedIndex()

      Return the value of the `selectedIndex` property.

      Contents: The index of the current selected tab. Default = '0'.

      Specified by:
        `getSelectedIndex` in interface `ITabSet`

    - #### setShowEffect

          public void setShowEffect(java.lang.String showEffect)

      Set the value of the `showEffect` property.

      Contents: The effect when showing the contents of a tab after selecting it.

      Specified by:
        `setShowEffect` in interface `ITabSet`

    - #### getShowEffect

          public java.lang.String getShowEffect()

      Return the value of the `showEffect` property.

      Contents: The effect when showing the contents of a tab after selecting it.

      Specified by:
        `getShowEffect` in interface `ITabSet`

    - #### setShowEffectLength

          public void setShowEffectLength(int showEffectLength)

      Set the value of the `showEffectLength` property.

      Contents: The duration of the show effect in milliseconds. The default value varies depending on the effect.

      Specified by:
        `setShowEffectLength` in interface `ITabSet`

    - #### getShowEffectLength

          public int getShowEffectLength()

      Return the value of the `showEffectLength` property.

      Contents: The duration of the show effect in milliseconds. The default value varies depending on the effect.

      Specified by:
        `getShowEffectLength` in interface `ITabSet`

    - #### setStyle

          public void setStyle(java.lang.String style)

      Set the value of the `style` property.

      Contents: Custom inline CSS styles to use for this component. These styles are generally applied to the root DOM element of the component. This is intended for per-component basic style customizations. Note that due to browser CSS precedence rules, CSS rendered on a DOM element will take precedence over the external stylesheets used to provide the ThemeRoller theme on this component. If the CSS properties applied with this attribute do not affect the DOM element you want to style, you may need to create a custom theme styleClass for the theme CSS class that targets the particular DOM elements you wish to customize.

      Specified by:
        `setStyle` in interface `ITabSet`

    - #### getStyle

          public java.lang.String getStyle()

      Return the value of the `style` property.

      Contents: Custom inline CSS styles to use for this component. These styles are generally applied to the root DOM element of the component. This is intended for per-component basic style customizations. Note that due to browser CSS precedence rules, CSS rendered on a DOM element will take precedence over the external stylesheets used to provide the ThemeRoller theme on this component. If the CSS properties applied with this attribute do not affect the DOM element you want to style, you may need to create a custom theme styleClass for the theme CSS class that targets the particular DOM elements you wish to customize.

      Specified by:
        `getStyle` in interface `ITabSet`

    - #### setStyleClass

          public void setStyleClass(java.lang.String styleClass)

      Set the value of the `styleClass` property.

      Contents: Custom CSS style class(es) to use for this component. These style classes can be defined in your page or in a theme CSS file.

      Specified by:
        `setStyleClass` in interface `ITabSet`

    - #### getStyleClass

          public java.lang.String getStyleClass()

      Return the value of the `styleClass` property.

      Contents: Custom CSS style class(es) to use for this component. These style classes can be defined in your page or in a theme CSS file.

      Specified by:
        `getStyleClass` in interface `ITabSet`

    - #### setTabChangeListener

          public void setTabChangeListener(javax.el.MethodExpression tabChangeListener)

      Set the value of the `tabChangeListener` property.

      Contents: MethodExpression representing a method that will be invoked when the selected TabPane has changed. The expression must evaluate to a public method that takes a ValueChangeEvent parameter, with a return type of void.

      Specified by:
        `setTabChangeListener` in interface `ITabSet`

    - #### getTabChangeListener

          public javax.el.MethodExpression getTabChangeListener()

      Return the value of the `tabChangeListener` property.

      Contents: MethodExpression representing a method that will be invoked when the selected TabPane has changed. The expression must evaluate to a public method that takes a ValueChangeEvent parameter, with a return type of void.

      Specified by:
        `getTabChangeListener` in interface `ITabSet`

    - #### setPreDecodeSelectedIndex

          public void setPreDecodeSelectedIndex(java.lang.Integer preDecodeSelectedIndex)

      Set the value of the `preDecodeSelectedIndex` property.

      Contents: This retains the selectedIndex from the beginning of the lifecycle, so that when in server mode, only this tabPane's contents will execute.

      Specified by:
        `setPreDecodeSelectedIndex` in interface `ITabSet`

    - #### getPreDecodeSelectedIndex

          public java.lang.Integer getPreDecodeSelectedIndex()

      Return the value of the `preDecodeSelectedIndex` property.

      Contents: This retains the selectedIndex from the beginning of the lifecycle, so that when in server mode, only this tabPane's contents will execute.

      Specified by:
        `getPreDecodeSelectedIndex` in interface `ITabSet`

    - #### setVisitedTabClientIds

          public void setVisitedTabClientIds(java.util.List visitedTabClientIds)

      Set the value of the `visitedTabClientIds` property.

      Contents: Maintains the record of which tabs have been visited

      Specified by:
        `setVisitedTabClientIds` in interface `ITabSet`

    - #### getVisitedTabClientIds

          public java.util.List getVisitedTabClientIds()

      Return the value of the `visitedTabClientIds` property.

      Contents: Maintains the record of which tabs have been visited

      Specified by:
        `getVisitedTabClientIds` in interface `ITabSet`

    - #### isPropertySet

          protected boolean isPropertySet(java.lang.String finder)

    - #### setValueExpression

          public void setValueExpression(java.lang.String name,
                                         javax.el.ValueExpression binding)

      Overrides:
        `setValueExpression` in class `javax.faces.component.UIComponent`

    - #### getEventNames

          public java.util.Collection<java.lang.String> getEventNames()

      Specified by:
        `getEventNames` in interface `javax.faces.component.behavior.ClientBehaviorHolder`
      Overrides:
        `getEventNames` in class `javax.faces.component.UIComponentBase`

    - #### getDefaultEventName

          public java.lang.String getDefaultEventName()

      Specified by:
        `getDefaultEventName` in interface `javax.faces.component.behavior.ClientBehaviorHolder`
      Overrides:
        `getDefaultEventName` in class `javax.faces.component.UIComponentBase`

    - #### getDefaultRender

          public java.lang.String getDefaultRender(java.lang.String event)

      Specified by:
        `getDefaultRender` in interface `IceClientBehaviorHolder`

    - #### getDefaultExecute

          public java.lang.String getDefaultExecute(java.lang.String event)

      Specified by:
        `getDefaultExecute` in interface `IceClientBehaviorHolder`

    - #### getListenerArgument

          public java.lang.String getListenerArgument(java.lang.String event)

      Specified by:
        `getListenerArgument` in interface `IceClientBehaviorHolder`

    - #### addClientBehavior

          public void addClientBehavior(java.lang.String eventName,
                                        javax.faces.component.behavior.ClientBehavior behavior)

      Specified by:
        `addClientBehavior` in interface `javax.faces.component.behavior.ClientBehaviorHolder`
      Overrides:
        `addClientBehavior` in class `javax.faces.component.UIComponentBase`

Copyright 2025 ICEsoft Technologies Canada, Corp. All Rights Reserved.