All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.bootsfaces.component.tab.Tab Maven / Gradle / Ivy

There is a newer version: 2.0.1
Show newest version
/**
 *  Copyright 2014-2019 Riccardo Massera (TheCoder4.Eu) and Stephan Rauh (http://www.beyondjava.net).
 *  
 *  This file is part of BootsFaces.
 *  
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*    http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
 */

package net.bootsfaces.component.tab;

import jakarta.faces.context.FacesContext;
import jakarta.faces.event.AbortProcessingException;
import jakarta.faces.event.ComponentSystemEvent;
import jakarta.faces.event.ListenerFor;
import jakarta.faces.event.ListenersFor;
import jakarta.faces.event.PostAddToViewEvent;

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;

import jakarta.el.ValueExpression;
import jakarta.faces.component.FacesComponent;
import jakarta.faces.component.behavior.ClientBehaviorHolder;

import net.bootsfaces.C;
import net.bootsfaces.component.ajax.IAJAXComponent;
import net.bootsfaces.component.ajax.IAJAXComponent2;
import net.bootsfaces.render.IContentDisabled;
import net.bootsfaces.render.Tooltip;
import net.bootsfaces.utils.BsfUtils;

/** This class holds the attributes of <b:tab />. */
@ListenersFor({ @ListenerFor(systemEventClass = PostAddToViewEvent.class) })
@FacesComponent(Tab.COMPONENT_TYPE)
public class Tab extends TabRepeat implements net.bootsfaces.render.IHasTooltip, ClientBehaviorHolder, IAJAXComponent,
		IAJAXComponent2, IContentDisabled {

	public static final String COMPONENT_TYPE = C.BSFCOMPONENT + ".tab.Tab";

	public static final String COMPONENT_FAMILY = C.BSFCOMPONENT;

	public static final String DEFAULT_RENDERER = "net.bootsfaces.component.tab.Tab";

	private static final Collection EVENT_NAMES = Collections.unmodifiableCollection(
			Arrays.asList("blur", "change", "valueChange", "click", "dblclick", "focus", "keydown", "keypress", "keyup",
					"mousedown", "mousemove", "mouseout", "mouseover", "mouseup", "select"));

	/**
	 * returns the subset of AJAX requests that are implemented by jQuery
	 * callback or other non-standard means (such as the onclick event of
	 * b:tabView, which has to be implemented manually).
	 * 
	 * @return
	 */
	public Map getJQueryEvents() {
		return null;
	}

	/**
	 * Returns the parameter list of jQuery and other non-standard JS callbacks.
	 * If there's no parameter list for a certain event, the default is simply "event".
	 * 
	 * @return A hash map containing the events. May be null.
	 */
	@Override
	public Map getJQueryEventParameterLists() {
		return null;
	}

	/**
	 * Returns the subset of the parameter list of jQuery and other non-standard JS callbacks which is sent to the server via AJAX.
	 * If there's no parameter list for a certain event, the default is simply null.
	 * 
	 * @return A hash map containing the events. May be null.
	 */
	@Override
	public Map getJQueryEventParameterListsForAjax() {
		return null;
	}

	public Collection getEventNames() {
		return EVENT_NAMES;
	}

	public String getDefaultEventName() {
		return "valueChange";
	}

	public Tab() {

		Tooltip.addResourceFiles();
		setRendererType(DEFAULT_RENDERER);
	}

	public void setValueExpression(String name, ValueExpression binding) {
		name = BsfUtils.snakeCaseToCamelCase(name);
		super.setValueExpression(name, binding);
	}

	public String getFamily() {
		return COMPONENT_FAMILY;
	}

	public void processEvent(ComponentSystemEvent event) throws AbortProcessingException {
		if (isAutoUpdate()) {
			if (FacesContext.getCurrentInstance().isPostback()) {
				FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add(getClientId());
			}
			super.processEvent(event);
		}
	}

	protected enum PropertyKeys {
		ajax, autoUpdate, contentDisabled, contentStyle, delay, dir, disabled, immediate, onclick, oncomplete, onerror, onsuccess, process, style, styleClass, title, tooltip, tooltipContainer, tooltipDelay, tooltipDelayHide, tooltipDelayShow, tooltipPosition, update;
		String toString;

		PropertyKeys(String toString) {
			this.toString = toString;
		}

		PropertyKeys() {
		}

		public String toString() {
			return ((this.toString != null) ? this.toString : super.toString());
		}
	}

	/**
	 * Whether the Button submits the form with AJAX. 

* @return Returns the value of the attribute, or , false, if it hasn't been set by the JSF file. */ public boolean isAjax() { return (boolean) (Boolean) getStateHelper().eval(PropertyKeys.ajax, false); } /** * Whether the Button submits the form with AJAX.

* Usually this method is called internally by the JSF engine. */ public void setAjax(boolean _ajax) { getStateHelper().put(PropertyKeys.ajax, _ajax); } /** * Setting this flag updates the widget on every AJAX request.

* @return Returns the value of the attribute, or , false, if it hasn't been set by the JSF file. */ public boolean isAutoUpdate() { return (boolean) (Boolean) getStateHelper().eval(PropertyKeys.autoUpdate, false); } /** * Setting this flag updates the widget on every AJAX request.

* Usually this method is called internally by the JSF engine. */ public void setAutoUpdate(boolean _autoUpdate) { getStateHelper().put(PropertyKeys.autoUpdate, _autoUpdate); } /** * Enables or disables every child element of this container. By default, child elements are enabled.

* @return Returns the value of the attribute, or false, if it hasn't been set by the JSF file. */ public boolean isContentDisabled() { return (boolean) (Boolean) getStateHelper().eval(PropertyKeys.contentDisabled, false); } /** * Enables or disables every child element of this container. By default, child elements are enabled.

* Usually this method is called internally by the JSF engine. */ public void setContentDisabled(boolean _contentDisabled) { getStateHelper().put(PropertyKeys.contentDisabled, _contentDisabled); } /** * Inline CSS of the div surrounding the tab pane.

* @return Returns the value of the attribute, or null, if it hasn't been set by the JSF file. */ public String getContentStyle() { return (String) getStateHelper().eval(PropertyKeys.contentStyle); } /** * Inline CSS of the div surrounding the tab pane.

* Usually this method is called internally by the JSF engine. */ public void setContentStyle(String _contentStyle) { getStateHelper().put(PropertyKeys.contentStyle, _contentStyle); } /** * Delays the AJAX request.

* @return Returns the value of the attribute, or null, if it hasn't been set by the JSF file. */ public String getDelay() { return (String) getStateHelper().eval(PropertyKeys.delay); } /** * Delays the AJAX request.

* Usually this method is called internally by the JSF engine. */ public void setDelay(String _delay) { getStateHelper().put(PropertyKeys.delay, _delay); } /** * Direction indication for text that does not inherit directionality. Legal values: ltr (Default. Left-to-right text direction), rtl (Right-to-left text direction) and auto (let the browser figure out the direction of your alphabet, based on the page content).

* @return Returns the value of the attribute, or null, if it hasn't been set by the JSF file. */ public String getDir() { return (String) getStateHelper().eval(PropertyKeys.dir); } /** * Direction indication for text that does not inherit directionality. Legal values: ltr (Default. Left-to-right text direction), rtl (Right-to-left text direction) and auto (let the browser figure out the direction of your alphabet, based on the page content).

* Usually this method is called internally by the JSF engine. */ public void setDir(String _dir) { getStateHelper().put(PropertyKeys.dir, _dir); } /** * Disables the input element, default is false.

* @return Returns the value of the attribute, or , false, if it hasn't been set by the JSF file. */ public boolean isDisabled() { return (boolean) (Boolean) getStateHelper().eval(PropertyKeys.disabled, false); } /** * Disables the input element, default is false.

* Usually this method is called internally by the JSF engine. */ public void setDisabled(boolean _disabled) { getStateHelper().put(PropertyKeys.disabled, _disabled); } /** * Flag indicating that, if this component is activated by the user, notifications should be delivered to interested listeners and actions immediately (that is, during Apply Request Values phase) rather than waiting until Invoke Application phase. Default is false.

* @return Returns the value of the attribute, or , false, if it hasn't been set by the JSF file. */ public boolean isImmediate() { return (boolean) (Boolean) getStateHelper().eval(PropertyKeys.immediate, false); } /** * Flag indicating that, if this component is activated by the user, notifications should be delivered to interested listeners and actions immediately (that is, during Apply Request Values phase) rather than waiting until Invoke Application phase. Default is false.

* Usually this method is called internally by the JSF engine. */ public void setImmediate(boolean _immediate) { getStateHelper().put(PropertyKeys.immediate, _immediate); } /** * The onclick attribute.

* @return Returns the value of the attribute, or null, if it hasn't been set by the JSF file. */ public String getOnclick() { return (String) getStateHelper().eval(PropertyKeys.onclick); } /** * The onclick attribute.

* Usually this method is called internally by the JSF engine. */ public void setOnclick(String _onclick) { getStateHelper().put(PropertyKeys.onclick, _onclick); } /** * JavaScript to be executed when ajax completes.

* @return Returns the value of the attribute, or null, if it hasn't been set by the JSF file. */ public String getOncomplete() { return (String) getStateHelper().eval(PropertyKeys.oncomplete); } /** * JavaScript to be executed when ajax completes.

* Usually this method is called internally by the JSF engine. */ public void setOncomplete(String _oncomplete) { getStateHelper().put(PropertyKeys.oncomplete, _oncomplete); } /** * JavaScript to be executed when ajax results on an error (including both network errors and Java exceptions).

* @return Returns the value of the attribute, or null, if it hasn't been set by the JSF file. */ public String getOnerror() { return (String) getStateHelper().eval(PropertyKeys.onerror); } /** * JavaScript to be executed when ajax results on an error (including both network errors and Java exceptions).

* Usually this method is called internally by the JSF engine. */ public void setOnerror(String _onerror) { getStateHelper().put(PropertyKeys.onerror, _onerror); } /** * JavaScript to be executed when ajax completes with success (i.e. there's neither a network error nor a Java exception).

* @return Returns the value of the attribute, or null, if it hasn't been set by the JSF file. */ public String getOnsuccess() { return (String) getStateHelper().eval(PropertyKeys.onsuccess); } /** * JavaScript to be executed when ajax completes with success (i.e. there's neither a network error nor a Java exception).

* Usually this method is called internally by the JSF engine. */ public void setOnsuccess(String _onsuccess) { getStateHelper().put(PropertyKeys.onsuccess, _onsuccess); } /** * Comma or space separated list of ids or search expressions denoting which values are to be sent to the server.

* @return Returns the value of the attribute, or null, if it hasn't been set by the JSF file. */ public String getProcess() { return (String) getStateHelper().eval(PropertyKeys.process); } /** * Comma or space separated list of ids or search expressions denoting which values are to be sent to the server.

* Usually this method is called internally by the JSF engine. */ public void setProcess(String _process) { getStateHelper().put(PropertyKeys.process, _process); } /** * Inline CSS of the tab.

* @return Returns the value of the attribute, or null, if it hasn't been set by the JSF file. */ public String getStyle() { return (String) getStateHelper().eval(PropertyKeys.style); } /** * Inline CSS of the tab.

* Usually this method is called internally by the JSF engine. */ public void setStyle(String _style) { getStateHelper().put(PropertyKeys.style, _style); } /** * Style class of the div surrounding the tab pane.

* @return Returns the value of the attribute, or null, if it hasn't been set by the JSF file. */ public String getStyleClass() { return (String) getStateHelper().eval(PropertyKeys.styleClass); } /** * Style class of the div surrounding the tab pane.

* Usually this method is called internally by the JSF engine. */ public void setStyleClass(String _styleClass) { getStateHelper().put(PropertyKeys.styleClass, _styleClass); } /** * Caption of the tab.

* @return Returns the value of the attribute, or null, if it hasn't been set by the JSF file. */ public String getTitle() { return (String) getStateHelper().eval(PropertyKeys.title); } /** * Caption of the tab.

* Usually this method is called internally by the JSF engine. */ public void setTitle(String _title) { getStateHelper().put(PropertyKeys.title, _title); } /** * The text of the tooltip.

* @return Returns the value of the attribute, or null, if it hasn't been set by the JSF file. */ public String getTooltip() { return (String) getStateHelper().eval(PropertyKeys.tooltip); } /** * The text of the tooltip.

* Usually this method is called internally by the JSF engine. */ public void setTooltip(String _tooltip) { getStateHelper().put(PropertyKeys.tooltip, _tooltip); } /** * Where is the tooltip div generated? That's primarily a technical value that can be used to fix rendering errors in special cases. Also see data-container in the documentation of Bootstrap. The default value is body.

* @return Returns the value of the attribute, or "body", if it hasn't been set by the JSF file. */ public String getTooltipContainer() { return (String) getStateHelper().eval(PropertyKeys.tooltipContainer, "body"); } /** * Where is the tooltip div generated? That's primarily a technical value that can be used to fix rendering errors in special cases. Also see data-container in the documentation of Bootstrap. The default value is body.

* Usually this method is called internally by the JSF engine. */ public void setTooltipContainer(String _tooltipContainer) { getStateHelper().put(PropertyKeys.tooltipContainer, _tooltipContainer); } /** * The tooltip is shown and hidden with a delay. This value is the delay in milliseconds. Defaults to 0 (no delay).

* @return Returns the value of the attribute, or 0, if it hasn't been set by the JSF file. */ public int getTooltipDelay() { return (int) (Integer) getStateHelper().eval(PropertyKeys.tooltipDelay, 0); } /** * The tooltip is shown and hidden with a delay. This value is the delay in milliseconds. Defaults to 0 (no delay).

* Usually this method is called internally by the JSF engine. */ public void setTooltipDelay(int _tooltipDelay) { getStateHelper().put(PropertyKeys.tooltipDelay, _tooltipDelay); } /** * The tooltip is hidden with a delay. This value is the delay in milliseconds. Defaults to 0 (no delay).

* @return Returns the value of the attribute, or 0, if it hasn't been set by the JSF file. */ public int getTooltipDelayHide() { return (int) (Integer) getStateHelper().eval(PropertyKeys.tooltipDelayHide, 0); } /** * The tooltip is hidden with a delay. This value is the delay in milliseconds. Defaults to 0 (no delay).

* Usually this method is called internally by the JSF engine. */ public void setTooltipDelayHide(int _tooltipDelayHide) { getStateHelper().put(PropertyKeys.tooltipDelayHide, _tooltipDelayHide); } /** * The tooltip is shown with a delay. This value is the delay in milliseconds. Defaults to 0 (no delay).

* @return Returns the value of the attribute, or 0, if it hasn't been set by the JSF file. */ public int getTooltipDelayShow() { return (int) (Integer) getStateHelper().eval(PropertyKeys.tooltipDelayShow, 0); } /** * The tooltip is shown with a delay. This value is the delay in milliseconds. Defaults to 0 (no delay).

* Usually this method is called internally by the JSF engine. */ public void setTooltipDelayShow(int _tooltipDelayShow) { getStateHelper().put(PropertyKeys.tooltipDelayShow, _tooltipDelayShow); } /** * Where is the tooltip to be displayed? Possible values: "top", "bottom", "right", "left", "auto", "auto top", "auto bottom", "auto right" and "auto left". Default to "bottom".

* @return Returns the value of the attribute, or null, if it hasn't been set by the JSF file. */ public String getTooltipPosition() { return (String) getStateHelper().eval(PropertyKeys.tooltipPosition); } /** * Where is the tooltip to be displayed? Possible values: "top", "bottom", "right", "left", "auto", "auto top", "auto bottom", "auto right" and "auto left". Default to "bottom".

* Usually this method is called internally by the JSF engine. */ public void setTooltipPosition(String _tooltipPosition) { getStateHelper().put(PropertyKeys.tooltipPosition, _tooltipPosition); } /** * Component(s) to be updated with ajax.

* @return Returns the value of the attribute, or null, if it hasn't been set by the JSF file. */ public String getUpdate() { return (String) getStateHelper().eval(PropertyKeys.update); } /** * Component(s) to be updated with ajax.

* Usually this method is called internally by the JSF engine. */ public void setUpdate(String _update) { getStateHelper().put(PropertyKeys.update, _update); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy