You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2012/09/01 23:55:25 UTC
svn commit: r1379867 -
/myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/tomahawk/application/ResourceViewHandlerWrapper.java
Author: lu4242
Date: Sat Sep 1 21:55:25 2012
New Revision: 1379867
URL: http://svn.apache.org/viewvc?rev=1379867&view=rev
Log:
TOMAHAWK-1634 Zero state for autoscroll script and hidden field
Modified:
myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/tomahawk/application/ResourceViewHandlerWrapper.java
Modified: myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/tomahawk/application/ResourceViewHandlerWrapper.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/tomahawk/application/ResourceViewHandlerWrapper.java?rev=1379867&r1=1379866&r2=1379867&view=diff
==============================================================================
--- myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/tomahawk/application/ResourceViewHandlerWrapper.java (original)
+++ myfaces/tomahawk/trunk/core20/src/main/java/org/apache/myfaces/tomahawk/application/ResourceViewHandlerWrapper.java Sat Sep 1 21:55:25 2012
@@ -25,8 +25,12 @@ import javax.faces.FacesException;
import javax.faces.application.ViewHandler;
import javax.faces.application.ViewHandlerWrapper;
import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
+import javax.faces.event.PostAddToViewEvent;
+import javax.faces.event.SystemEvent;
+import javax.faces.event.SystemEventListener;
import org.apache.myfaces.custom.autoscroll.AutoscrollBehaviorTagHandler;
import org.apache.myfaces.custom.autoscroll.AutoscrollBodyScript;
@@ -39,6 +43,13 @@ import org.apache.myfaces.tomahawk.util.
public class ResourceViewHandlerWrapper extends ViewHandlerWrapper
{
+ private static final String SET_RESOURCE_CONTAINER_DUMMY_COMPONENT_ID =
+ "oam_autoscroll_setResourceContainer";
+ private static final String BODY_SCRIPT_COMPONENT_ID =
+ "oam_autoscroll_body_script";
+ private static final String HIDDEN_FIELD_COMPONENT_ID =
+ "oam_autoscroll_hidden_field";
+
private ViewHandler _delegate;
public ResourceViewHandlerWrapper(ViewHandler delegate)
@@ -54,6 +65,69 @@ public class ResourceViewHandlerWrapper
}
@Override
+ public UIViewRoot createView(FacesContext context, String viewId)
+ {
+ UIViewRoot root = super.createView(context, viewId);
+ // This listener just ensures that the locations for autoscroll component are
+ // set before call markInitialState(). In this way, the state size is reduced when
+ // partial state saving is used.
+ root.subscribeToViewEvent(PostAddToViewEvent.class, new SystemEventListener() {
+
+ public boolean isListenerForSource(Object o)
+ {
+ return o instanceof UIViewRoot;
+ }
+
+ public void processEvent(SystemEvent se)
+ {
+ FacesContext context = FacesContext.getCurrentInstance();
+ UIViewRoot viewToRender = (UIViewRoot) se.getSource();
+ if (MyfacesConfig.getCurrentInstance(context.getExternalContext()).isAutoScroll() ||
+ viewToRender.getAttributes().containsKey(AutoscrollBehaviorTagHandler.AUTOSCROLL_TAG_ON_PAGE))
+ {
+ UIOutput test = new UIOutput();
+ test.setId(SET_RESOURCE_CONTAINER_DUMMY_COMPONENT_ID);
+ test.setTransient(true);
+ UIComponent facet = null;
+ facet = viewToRender.getFacet(TomahawkResourceUtils.FORM_LOCATION);
+ if (facet == null)
+ {
+ viewToRender.addComponentResource(context, test, TomahawkResourceUtils.FORM_LOCATION);
+ facet = viewToRender.getFacet(TomahawkResourceUtils.FORM_LOCATION);
+ if (facet != null)
+ {
+ facet.getChildren().remove(test);
+ }
+ }
+
+ facet = viewToRender.getFacet(TomahawkResourceUtils.BODY_LOCATION);
+ if (facet == null)
+ {
+ viewToRender.addComponentResource(context, test, TomahawkResourceUtils.BODY_LOCATION);
+ facet = viewToRender.getFacet(TomahawkResourceUtils.BODY_LOCATION);
+ if (facet != null)
+ {
+ facet.getChildren().remove(test);
+ }
+ }
+
+ facet = viewToRender.getFacet(TomahawkResourceUtils.HEAD_LOCATION);
+ if (facet == null)
+ {
+ viewToRender.addComponentResource(context, test, TomahawkResourceUtils.HEAD_LOCATION);
+ facet = viewToRender.getFacet(TomahawkResourceUtils.HEAD_LOCATION);
+ if (facet != null)
+ {
+ facet.getChildren().remove(test);
+ }
+ }
+ }
+ }
+ });
+ return root;
+ }
+
+ @Override
public void renderView(FacesContext context, UIViewRoot viewToRender)
throws IOException, FacesException
{
@@ -70,6 +144,7 @@ public class ResourceViewHandlerWrapper
context.getApplication().createComponent(context,
AutoscrollBodyScript.COMPONENT_TYPE,
AutoscrollBodyScript.DEFAULT_RENDERER_TYPE);
+ autoscrollBodyScript.setId(BODY_SCRIPT_COMPONENT_ID);
autoscrollBodyScript.setTransient(true);
autoscrollBodyScript.getAttributes().put(
JSFAttr.TARGET_ATTR,
@@ -81,6 +156,7 @@ public class ResourceViewHandlerWrapper
createComponent(context,
AutoscrollHiddenField.COMPONENT_TYPE,
AutoscrollHiddenField.DEFAULT_RENDERER_TYPE);
+ autoscrollHiddenField.setId(HIDDEN_FIELD_COMPONENT_ID);
autoscrollHiddenField.setTransient(true);
autoscrollHiddenField.getAttributes().put(JSFAttr.TARGET_ATTR, TomahawkResourceUtils.FORM_LOCATION);
viewToRender.addComponentResource(context, autoscrollHiddenField);