org.apache.myfaces.trinidad.component.html.HtmlBody Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of trinidad-api Show documentation
Show all versions of trinidad-api Show documentation
Public API for the Apache MyFaces Trinidad project
The newest version!
// WARNING: This file was automatically generated. Do not edit it directly,
// or you will lose your changes.
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.myfaces.trinidad.component.html;
import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import javax.faces.component.behavior.ClientBehavior;
import javax.faces.component.behavior.ClientBehaviorHolder;
import javax.faces.context.FacesContext;
import org.apache.myfaces.trinidad.bean.FacesBean;
import org.apache.myfaces.trinidad.bean.PropertyKey;
import org.apache.myfaces.trinidad.component.UIXComponentBase;
import org.apache.myfaces.trinidad.context.ComponentContextManager;
import org.apache.myfaces.trinidad.context.RequestContext;
import org.apache.myfaces.trinidad.context.SuspendedContextChanges;
import org.apache.myfaces.trinidad.util.ComponentUtils;
/**
*
*
* Tag for the HTML body element. In addition
* to providing support for the standard HTML body functionality,
* the Trinidad body component enables partial-page rendering (PPR) support
* and assigning initial page focus.
*
*
* The body component resets the Trinidad EL context when code re-enters the component via
* an invoke on component call or a visit tree call. See the
* org.apache.myfaces.trinidad.context.ComponentContextManager for more information.
*
*
* Events:
*
*
* Type
* Phases
* Description
*
*
* org.apache.myfaces.trinidad.event.AttributeChangeEvent
* Invoke
Application
Apply
Request
Values
* Event delivered to describe an attribute change. Attribute change events are not delivered for any programmatic change to a property. They are only delivered when a renderer changes a property without the application's specific request. An example of an attribute change event might include the width of a column that supported client-side resizing.
*
*
*/
public class HtmlBody extends UIXComponentBase
implements ClientBehaviorHolder
{
static public final FacesBean.Type TYPE = new FacesBean.Type(
UIXComponentBase.TYPE);
static public final PropertyKey FIRST_CLICK_PASSED_KEY =
TYPE.registerKey("firstClickPassed", Boolean.class, Boolean.FALSE);
static public final PropertyKey SHORT_DESC_KEY =
TYPE.registerKey("shortDesc", String.class);
static public final PropertyKey PARTIAL_TRIGGERS_KEY =
TYPE.registerKey("partialTriggers", String[].class, null, 0, PropertyKey.Mutable.RARELY);
static public final PropertyKey ONCLICK_KEY =
TYPE.registerKey("onclick", String.class);
static public final PropertyKey ONDBLCLICK_KEY =
TYPE.registerKey("ondblclick", String.class);
static public final PropertyKey ONMOUSEDOWN_KEY =
TYPE.registerKey("onmousedown", String.class);
static public final PropertyKey ONMOUSEUP_KEY =
TYPE.registerKey("onmouseup", String.class);
static public final PropertyKey ONMOUSEOVER_KEY =
TYPE.registerKey("onmouseover", String.class);
static public final PropertyKey ONMOUSEMOVE_KEY =
TYPE.registerKey("onmousemove", String.class);
static public final PropertyKey ONMOUSEOUT_KEY =
TYPE.registerKey("onmouseout", String.class);
static public final PropertyKey ONKEYPRESS_KEY =
TYPE.registerKey("onkeypress", String.class);
static public final PropertyKey ONKEYDOWN_KEY =
TYPE.registerKey("onkeydown", String.class);
static public final PropertyKey ONKEYUP_KEY =
TYPE.registerKey("onkeyup", String.class);
static public final PropertyKey STYLE_CLASS_KEY =
TYPE.registerKey("styleClass", String.class);
static public final PropertyKey INLINE_STYLE_KEY =
TYPE.registerKey("inlineStyle", String.class);
static public final PropertyKey ONLOAD_KEY =
TYPE.registerKey("onload", String.class);
static public final PropertyKey ONUNLOAD_KEY =
TYPE.registerKey("onunload", String.class);
static public final PropertyKey INITIAL_FOCUS_ID_KEY =
TYPE.registerKey("initialFocusId", String.class);
static public final String COMPONENT_FAMILY =
"org.apache.myfaces.trinidad.Body";
static public final String COMPONENT_TYPE =
"org.apache.myfaces.trinidad.HtmlBody";
// Supported client events for client behaviors:
private final static Collection _EVENT_NAMES = Collections.unmodifiableCollection(
Arrays.asList(
"click", "dblclick", "mousedown", "mouseup", "mouseover", "mousemove",
"mouseout", "keypress", "keydown", "keyup", "load", "unload"
));
/**
* Construct an instance of the HtmlBody.
*/
public HtmlBody()
{
super("org.apache.myfaces.trinidad.Body");
}
/**
* Suspends any context changes before allowing invokeOnComponent or visitTree calls to continue,
* allowing components to undo any context changes during a re-entrant call.
* @param facesContext the faces context
* @see ComponentContextManager#suspend(FacesContext)
*/
@Override
protected void setupVisitingContext(FacesContext facesContext)
{
ComponentContextManager ctxMgr = RequestContext.getCurrentInstance()
.getComponentContextManager();
// Suspend any current component context during a visit tree for re-entrant
// component tree processing
SuspendedContextChanges suspendedChanges = ctxMgr.suspend(facesContext);
Map reqMap = facesContext.getExternalContext().getRequestMap();
@SuppressWarnings("unchecked")
Queue suspendedChangesQueue = (Queue)
reqMap.get(_SUSPENDED_CHANGES_KEY);
if (suspendedChangesQueue == null)
{
suspendedChangesQueue = Collections.asLifoQueue(new ArrayDeque());
reqMap.put(_SUSPENDED_CHANGES_KEY, suspendedChangesQueue);
}
suspendedChangesQueue.offer(suspendedChanges);
super.setupVisitingContext(facesContext);
}
/**
* Re-applies the suspended context changes.
* @param facesContext the faces context
* @see #setupVisitingContext(FacesContext)
* @see ComponentContextManager#resume(FacesContext, SuspendedContextChanges)
*/
@Override
protected void tearDownVisitingContext(FacesContext facesContext)
{
super.tearDownVisitingContext(facesContext);
ComponentContextManager ctxMgr = RequestContext.getCurrentInstance()
.getComponentContextManager();
Map reqMap = facesContext.getExternalContext().getRequestMap();
@SuppressWarnings("unchecked")
Queue suspendedChangesQueue = (Queue)
reqMap.get(_SUSPENDED_CHANGES_KEY);
SuspendedContextChanges changes = suspendedChangesQueue.poll();
ctxMgr.resume(facesContext, changes);
}
private final static String _SUSPENDED_CHANGES_KEY = HtmlBody.class.getName() +
".SUSPENDED_CHANGES";
/**
* Gets whether or not Trinidad will allow the first click to go
* through in certain instances. When a PPR event occurs, we block
* all subsequent user input until it completes. However, there may
* be instances where the client wants to receive the very first
* click. For example, if the user entered text in an inputText
* that fires a PPR request, then the user immediately clicked
* a submit button two events will be triggered - an onchange
* followed by an onclick. The onchange will trigger the client
* action which will immediately start the PPR blocking, so the
* onclick will get consumed by the blocking code and no submit will
* occur. Setting this value to true will allow the click to go
* through.
*
* @return the new firstClickPassed value
*/
final public boolean isFirstClickPassed()
{
return ComponentUtils.resolveBoolean(getProperty(FIRST_CLICK_PASSED_KEY), false);
}
/**
* Sets whether or not Trinidad will allow the first click to go
* through in certain instances. When a PPR event occurs, we block
* all subsequent user input until it completes. However, there may
* be instances where the client wants to receive the very first
* click. For example, if the user entered text in an inputText
* that fires a PPR request, then the user immediately clicked
* a submit button two events will be triggered - an onchange
* followed by an onclick. The onchange will trigger the client
* action which will immediately start the PPR blocking, so the
* onclick will get consumed by the blocking code and no submit will
* occur. Setting this value to true will allow the click to go
* through.
*
* @param firstClickPassed the new firstClickPassed value
*/
final public void setFirstClickPassed(boolean firstClickPassed)
{
setProperty(FIRST_CLICK_PASSED_KEY, firstClickPassed ? Boolean.TRUE : Boolean.FALSE);
}
/**
* Gets the short description of the bean. This text
* is commonly used by user agents to display tooltip help text.
*
* @return the new shortDesc value
*/
final public String getShortDesc()
{
return ComponentUtils.resolveString(getProperty(SHORT_DESC_KEY));
}
/**
* Sets the short description of the bean. This text
* is commonly used by user agents to display tooltip help text.
*
* @param shortDesc the new shortDesc value
*/
final public void setShortDesc(String shortDesc)
{
setProperty(SHORT_DESC_KEY, (shortDesc));
}
/**
* Gets the IDs of the components that should trigger a partial update.
* This component will listen on the trigger components. If one of the
* trigger components receives an event that will cause it to update
* in some way, this component will request to be updated too.
*
* @return the new partialTriggers value
*/
final public String[] getPartialTriggers()
{
return (String[])getProperty(PARTIAL_TRIGGERS_KEY);
}
/**
* Sets the IDs of the components that should trigger a partial update.
* This component will listen on the trigger components. If one of the
* trigger components receives an event that will cause it to update
* in some way, this component will request to be updated too.
*
* @param partialTriggers the new partialTriggers value
*/
final public void setPartialTriggers(String[] partialTriggers)
{
setProperty(PARTIAL_TRIGGERS_KEY, (partialTriggers));
}
/**
* Gets an onclick Javascript handler.
*
* @return the new onclick value
*/
final public String getOnclick()
{
return ComponentUtils.resolveString(getProperty(ONCLICK_KEY));
}
/**
* Sets an onclick Javascript handler.
*
* @param onclick the new onclick value
*/
final public void setOnclick(String onclick)
{
setProperty(ONCLICK_KEY, (onclick));
}
/**
* Gets an ondblclick Javascript handler.
*
* @return the new ondblclick value
*/
final public String getOndblclick()
{
return ComponentUtils.resolveString(getProperty(ONDBLCLICK_KEY));
}
/**
* Sets an ondblclick Javascript handler.
*
* @param ondblclick the new ondblclick value
*/
final public void setOndblclick(String ondblclick)
{
setProperty(ONDBLCLICK_KEY, (ondblclick));
}
/**
* Gets an onmousedown Javascript handler.
*
* @return the new onmousedown value
*/
final public String getOnmousedown()
{
return ComponentUtils.resolveString(getProperty(ONMOUSEDOWN_KEY));
}
/**
* Sets an onmousedown Javascript handler.
*
* @param onmousedown the new onmousedown value
*/
final public void setOnmousedown(String onmousedown)
{
setProperty(ONMOUSEDOWN_KEY, (onmousedown));
}
/**
* Gets an onmouseup Javascript handler.
*
* @return the new onmouseup value
*/
final public String getOnmouseup()
{
return ComponentUtils.resolveString(getProperty(ONMOUSEUP_KEY));
}
/**
* Sets an onmouseup Javascript handler.
*
* @param onmouseup the new onmouseup value
*/
final public void setOnmouseup(String onmouseup)
{
setProperty(ONMOUSEUP_KEY, (onmouseup));
}
/**
* Gets an onmouseover Javascript handler.
*
* @return the new onmouseover value
*/
final public String getOnmouseover()
{
return ComponentUtils.resolveString(getProperty(ONMOUSEOVER_KEY));
}
/**
* Sets an onmouseover Javascript handler.
*
* @param onmouseover the new onmouseover value
*/
final public void setOnmouseover(String onmouseover)
{
setProperty(ONMOUSEOVER_KEY, (onmouseover));
}
/**
* Gets an onmousemove Javascript handler.
*
* @return the new onmousemove value
*/
final public String getOnmousemove()
{
return ComponentUtils.resolveString(getProperty(ONMOUSEMOVE_KEY));
}
/**
* Sets an onmousemove Javascript handler.
*
* @param onmousemove the new onmousemove value
*/
final public void setOnmousemove(String onmousemove)
{
setProperty(ONMOUSEMOVE_KEY, (onmousemove));
}
/**
* Gets an onmouseout Javascript handler.
*
* @return the new onmouseout value
*/
final public String getOnmouseout()
{
return ComponentUtils.resolveString(getProperty(ONMOUSEOUT_KEY));
}
/**
* Sets an onmouseout Javascript handler.
*
* @param onmouseout the new onmouseout value
*/
final public void setOnmouseout(String onmouseout)
{
setProperty(ONMOUSEOUT_KEY, (onmouseout));
}
/**
* Gets an onkeypress Javascript handler.
*
* @return the new onkeypress value
*/
final public String getOnkeypress()
{
return ComponentUtils.resolveString(getProperty(ONKEYPRESS_KEY));
}
/**
* Sets an onkeypress Javascript handler.
*
* @param onkeypress the new onkeypress value
*/
final public void setOnkeypress(String onkeypress)
{
setProperty(ONKEYPRESS_KEY, (onkeypress));
}
/**
* Gets an onkeydown Javascript handler.
*
* @return the new onkeydown value
*/
final public String getOnkeydown()
{
return ComponentUtils.resolveString(getProperty(ONKEYDOWN_KEY));
}
/**
* Sets an onkeydown Javascript handler.
*
* @param onkeydown the new onkeydown value
*/
final public void setOnkeydown(String onkeydown)
{
setProperty(ONKEYDOWN_KEY, (onkeydown));
}
/**
* Gets an onkeyup Javascript handler.
*
* @return the new onkeyup value
*/
final public String getOnkeyup()
{
return ComponentUtils.resolveString(getProperty(ONKEYUP_KEY));
}
/**
* Sets an onkeyup Javascript handler.
*
* @param onkeyup the new onkeyup value
*/
final public void setOnkeyup(String onkeyup)
{
setProperty(ONKEYUP_KEY, (onkeyup));
}
/**
* Gets the CSS style class of the bean.
*
* @return the new styleClass value
*/
final public String getStyleClass()
{
return ComponentUtils.resolveString(getProperty(STYLE_CLASS_KEY));
}
/**
* Sets the CSS style class of the bean.
*
* @param styleClass the new styleClass value
*/
final public void setStyleClass(String styleClass)
{
setProperty(STYLE_CLASS_KEY, (styleClass));
}
/**
* Gets the inline CSS style for this element
*
* @return the new inlineStyle value
*/
final public String getInlineStyle()
{
return ComponentUtils.resolveString(getProperty(INLINE_STYLE_KEY));
}
/**
* Sets the inline CSS style for this element
*
* @param inlineStyle the new inlineStyle value
*/
final public void setInlineStyle(String inlineStyle)
{
setProperty(INLINE_STYLE_KEY, (inlineStyle));
}
/**
* Gets an onload Javascript handler.
*
* @return the new onload value
*/
final public String getOnload()
{
return ComponentUtils.resolveString(getProperty(ONLOAD_KEY));
}
/**
* Sets an onload Javascript handler.
*
* @param onload the new onload value
*/
final public void setOnload(String onload)
{
setProperty(ONLOAD_KEY, (onload));
}
/**
* Gets an onunload Javascript handler.
*
* @return the new onunload value
*/
final public String getOnunload()
{
return ComponentUtils.resolveString(getProperty(ONUNLOAD_KEY));
}
/**
* Sets an onunload Javascript handler.
*
* @param onunload the new onunload value
*/
final public void setOnunload(String onunload)
{
setProperty(ONUNLOAD_KEY, (onunload));
}
/**
* Gets the id of the component to which you want the
* focus to be when the full page renders. The accessibility-mode
* must be set to "inaccessible" for this feature to be on.
*
* @return the new initialFocusId value
*/
final public String getInitialFocusId()
{
return ComponentUtils.resolveString(getProperty(INITIAL_FOCUS_ID_KEY));
}
/**
* Sets the id of the component to which you want the
* focus to be when the full page renders. The accessibility-mode
* must be set to "inaccessible" for this feature to be on.
*
* @param initialFocusId the new initialFocusId value
*/
final public void setInitialFocusId(String initialFocusId)
{
setProperty(INITIAL_FOCUS_ID_KEY, (initialFocusId));
}
@Override
public String getDefaultEventName()
{
return "load";
}
@Override
public Collection getEventNames()
{
return _EVENT_NAMES;
}
@Override
public Map> getClientBehaviors()
{
return super.getClientBehaviors();
}
@Override
public void addClientBehavior(
String eventName,
ClientBehavior behavior)
{
super.addClientBehavior(eventName, behavior);
}
@Override
public String getFamily()
{
return COMPONENT_FAMILY;
}
@Override
protected FacesBean.Type getBeanType()
{
return TYPE;
}
/**
* Construct an instance of the HtmlBody.
*/
protected HtmlBody(
String rendererType
)
{
super(rendererType);
}
static
{
TYPE.lockAndRegister("org.apache.myfaces.trinidad.Body","org.apache.myfaces.trinidad.Body");
}
}