You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by gm...@apache.org on 2006/10/24 10:11:47 UTC

svn commit: r467270 - in /myfaces/tomahawk/trunk/sandbox: core/src/main/java/org/apache/myfaces/custom/autoupdatedatatable/ core/src/main/java/org/apache/myfaces/custom/ppr/ core/src/main/resources/org/apache/myfaces/custom/ppr/resource/ core/src/main/...

Author: gmuellan
Date: Tue Oct 24 01:11:45 2006
New Revision: 467270

URL: http://svn.apache.org/viewvc?view=rev&rev=467270
Log:
resolved http://issues.apache.org/jira/browse/TOMAHAWK-751 - Enhancing PPRGroup - periodicalUpdate for refreshing a partial page automatically

Added:
    myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupPeriodicalUpdate.jsp
Modified:
    myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTable.java
    myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java
    myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java
    myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java
    myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/ppr/resource/ppr.js
    myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld
    myfaces/tomahawk/trunk/sandbox/examples/src/main/java/org/apache/myfaces/examples/ppr/PPRExampleBean.java
    myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/home.jsp

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTable.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTable.java?view=diff&rev=467270&r1=467269&r2=467270
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTable.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/autoupdatedatatable/AutoUpdateDataTable.java Tue Oct 24 01:11:45 2006
@@ -30,6 +30,7 @@
  * @version $Revision: $ $Date: $
  *          <p/>
  *          $Log: $
+ * @deprecated: Use periodicalUpdate mechanism of partial page rendering instead 
  */
 public class AutoUpdateDataTable extends HtmlDataTable implements AjaxComponent{
 

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java?view=diff&rev=467270&r1=467269&r2=467270
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroup.java Tue Oct 24 01:11:45 2006
@@ -31,8 +31,9 @@
 	public static final String DEFAULT_RENDERER_TYPE = "org.apache.myfaces.PPRPanelGroup";
 
 	private String _partialTriggers;
-	
-	private String _partialTriggerPattern;
+    private Integer _periodicalUpdate;
+
+    private String _partialTriggerPattern;
 	
 	private String _inlineLoadingMessage;
 
@@ -57,8 +58,20 @@
 	{
 		this._partialTriggers = partialTriggers;
 	}
-	
-	public String getPartialTriggerPattern()
+
+    public Integer getPeriodicalUpdate() 
+    {
+        if (_periodicalUpdate != null) return _periodicalUpdate;
+        ValueBinding vb = getValueBinding("periodicalUpdate");
+        return (vb != null) ? (Integer) vb.getValue(getFacesContext()) : null;
+    }
+
+    public void setPeriodicalUpdate(Integer periodicalUpdate)
+    {
+        _periodicalUpdate = periodicalUpdate;
+    }
+
+    public String getPartialTriggerPattern()
 	{
 		if (_partialTriggerPattern != null) return _partialTriggerPattern;
         ValueBinding vb = getValueBinding("partialTriggerPattern");
@@ -89,15 +102,17 @@
 		super.restoreState(context, values[0]);
 		_partialTriggers = (String) values[1];
 		_partialTriggerPattern = (String) values[2];
+        _periodicalUpdate = (Integer) values[3];
 
-	}
+    }
 
 	public Object saveState(FacesContext context)
 	{
-		Object[] values = new Object[3];
+		Object[] values = new Object[4];
 		values[0] = super.saveState(context);
 		values[1] = _partialTriggers;
 		values[2] = _partialTriggerPattern;
-		return values;
+        values[3] = _periodicalUpdate;
+        return values;
 	}
 }

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java?view=diff&rev=467270&r1=467269&r2=467270
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java Tue Oct 24 01:11:45 2006
@@ -53,14 +53,14 @@
 
 	private static final String MY_FACES_PPR_INIT_CODE = "new org.apache.myfaces.PPRCtrl";
 
-	public void encodeJavaScript(FacesContext facesContext, PPRPanelGroup uiComponent) throws IOException
+	public void encodeJavaScript(FacesContext facesContext, PPRPanelGroup pprGroup) throws IOException
 	{
 		if (facesContext.getExternalContext().getRequestMap().containsKey(PPR_RESPONSE))
 		{
 			return;
 		}
 
-		FormInfo fi = _ComponentUtils.findNestingForm(uiComponent, facesContext);
+		FormInfo fi = _ComponentUtils.findNestingForm(pprGroup, facesContext);
 		if (fi == null)
 		{
 			throw new FacesException("PPRPanelGroup must be embedded in an form.");
@@ -70,11 +70,11 @@
 		{
 			facesContext.getExternalContext().getRequestMap().put(PPR_INITIALIZED, Boolean.TRUE);
 
-			String javascriptLocation = (String) uiComponent.getAttributes().get(JSFAttr.JAVASCRIPT_LOCATION);
+			String javascriptLocation = (String) pprGroup.getAttributes().get(JSFAttr.JAVASCRIPT_LOCATION);
 			AddResource addResource = AddResourceFactory.getInstance(facesContext);
-			DojoUtils.addMainInclude(facesContext, uiComponent, javascriptLocation, new DojoConfig());
-			DojoUtils.addRequire(facesContext, uiComponent, "dojo.io.*");
-			DojoUtils.addRequire(facesContext, uiComponent, "dojo.event.*");
+			DojoUtils.addMainInclude(facesContext, pprGroup, javascriptLocation, new DojoConfig());
+			DojoUtils.addRequire(facesContext, pprGroup, "dojo.io.*");
+			DojoUtils.addRequire(facesContext, pprGroup, "dojo.event.*");
 			addResource.addInlineScriptAtPosition(facesContext, AddResource.HEADER_BEGIN, MY_FACES_PPR_INITIALIZED);
 
 			addResource.addJavaScriptAtPosition(facesContext,
@@ -91,26 +91,34 @@
                     "." +
                     fi.getFormName(),
                     Boolean.TRUE);
-            writeInlineScript(facesContext, uiComponent,
-                    "document.getElementById('" +
+
+            renderInlineScript(facesContext, pprGroup,
+                    "dojo.byId('" +
                     fi.getFormName() +
                     "').myFacesPPRCtrl =" +
                     MY_FACES_PPR_INIT_CODE + "('" + fi.getFormName() + "');");
         }
 
+        String clientId = pprGroup.getClientId(facesContext);
+
+        if (pprGroup.getPeriodicalUpdate() != null)
+        {
+            String script = "dojo.byId('"+ fi.getFormName() + "').myFacesPPRCtrl.startPeriodicalUpdate("+ pprGroup.getPeriodicalUpdate() +",'"+ clientId +"');";
+
+            renderInlineScript(facesContext, pprGroup, script);
+        }
 
         String partialTriggerId;
 		String partialTriggerClientId;
 		UIComponent partialTriggerComponent;
 		
-		String partialTriggers = uiComponent.getPartialTriggers();
-		String clientId = uiComponent.getClientId(facesContext);
-		
-		String partialTriggerPattern = uiComponent.getPartialTriggerPattern();
+		String partialTriggers = pprGroup.getPartialTriggers();
+
+		String partialTriggerPattern = pprGroup.getPartialTriggerPattern();
 		if(partialTriggerPattern != null && partialTriggerPattern.trim().length()>0) 
 		{
-			writeInlineScript(facesContext, uiComponent,
-                    "document.getElementById('" +
+			renderInlineScript(facesContext, pprGroup,
+                    "dojo.byId('" +
                     fi.getFormName() +
                     "').myFacesPPRCtrl." +
                     ADD_PARTIAL_TRIGGER_PATTERN_FUNCTION +
@@ -121,12 +129,12 @@
 						"');");
 		}
 		
-		String inlineLoadingMessage = uiComponent.getInlineLoadingMessage();
+		String inlineLoadingMessage = pprGroup.getInlineLoadingMessage();
 		
 		if(inlineLoadingMessage!= null && inlineLoadingMessage.trim().length()>0)
 		{
-			writeInlineScript(facesContext, uiComponent,
-                    "document.getElementById('" +
+			renderInlineScript(facesContext, pprGroup,
+                    "dojo.byId('" +
                     fi.getFormName() +
                     "').myFacesPPRCtrl." +
                     ADD_INLINE_LOADING_MESSAGE_FUNCTION +
@@ -143,7 +151,7 @@
 			while (st.hasMoreTokens())
 			{
 				partialTriggerId = st.nextToken();
-				partialTriggerComponent = uiComponent.findComponent(partialTriggerId);
+				partialTriggerComponent = pprGroup.findComponent(partialTriggerId);
 				if(partialTriggerComponent == null)
 				{
 					partialTriggerComponent = FacesContext.getCurrentInstance().getViewRoot().findComponent(partialTriggerId);
@@ -151,8 +159,8 @@
 				if (partialTriggerComponent != null)
 				{
 					partialTriggerClientId = partialTriggerComponent.getClientId(facesContext);
-					writeInlineScript(facesContext, uiComponent,
-	                    "document.getElementById('" +
+					renderInlineScript(facesContext, pprGroup,
+	                    "dojo.byId('" +
 	                    fi.getFormName() +
 	                    "').myFacesPPRCtrl." +
 	                    ADD_PARTIAL_TRIGGER_FUNCTION +
@@ -171,8 +179,7 @@
 				}
 			}
 		}
-
-	}
+    }
 
 	public void encodeBegin(FacesContext facesContext, UIComponent uiComponent) throws IOException
 	{
@@ -190,10 +197,9 @@
 		{
 			PPRPanelGroup pprGroup = (PPRPanelGroup) uiComponent;
 
-			if ((pprGroup.getPartialTriggers() != null &&
-				pprGroup.getPartialTriggers().length() > 0) ||
-				(pprGroup.getPartialTriggerPattern() != null &&
-						pprGroup.getPartialTriggerPattern().length() > 0))
+			if ((pprGroup.getPartialTriggers() != null && pprGroup.getPartialTriggers().length() > 0)
+                 || (pprGroup.getPartialTriggerPattern() != null && pprGroup.getPartialTriggerPattern().length() > 0)
+                 ||  pprGroup.getPeriodicalUpdate() != null)
 			{
 				encodeJavaScript(facesContext, pprGroup);
 			}
@@ -209,7 +215,7 @@
 	 * @param script The script to be written.
 	 * @throws IOException A forwarded exception from the underlying renderer.
 	 */
-	private static void writeInlineScript(FacesContext facesContext, UIComponent component, String script) throws IOException
+	private static void renderInlineScript(FacesContext facesContext, UIComponent component, String script) throws IOException
 	{
 		ResponseWriter writer = facesContext.getResponseWriter();
 		writer.startElement(HTML.SCRIPT_ELEM, component);

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java?view=diff&rev=467270&r1=467269&r2=467270
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupTag.java Tue Oct 24 01:11:45 2006
@@ -30,7 +30,9 @@
 	
 	private String _inlineLoadingMessage;
 
-	public String getComponentType()
+    private String _periodicalUpdate;
+
+    public String getComponentType()
 	{
 		return PPRPanelGroup.COMPONENT_TYPE;
 	}
@@ -44,7 +46,8 @@
 	{
 		super.release();
 		_partialTriggers = null;
-	}
+        _periodicalUpdate = null;
+    }
 
 	protected void setProperties(UIComponent component)
 	{
@@ -53,7 +56,8 @@
 		setStringProperty(component, "partialTriggers", _partialTriggers);
 		setStringProperty(component, "partialTriggerPattern", _partialTriggerPattern);
 		setStringProperty(component, "inlineLoadingMessage", _inlineLoadingMessage);
-	}
+        setIntegerProperty(component,"periodicalUpdate", _periodicalUpdate);
+    }
 
 	public String getPartialTriggers()
 	{
@@ -80,7 +84,9 @@
 	public void setInlineLoadingMessage(String loadingMessage) {
 		_inlineLoadingMessage = loadingMessage;
 	}
-	
-	
 
+    public void setPeriodicalUpdate(String periodicalUpdate)
+    {
+        _periodicalUpdate = periodicalUpdate;
+    }
 }

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/ppr/resource/ppr.js
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/ppr/resource/ppr.js?view=diff&rev=467270&r1=467269&r2=467270
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/ppr/resource/ppr.js (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/ppr/resource/ppr.js Tue Oct 24 01:11:45 2006
@@ -23,7 +23,7 @@
 
 org.apache.myfaces.PPRCtrl = function(formId)
 {
-	if(typeof window.myFacesPartialTriggers == "undefined")
+    if(typeof window.myFacesPartialTriggers == "undefined")
 	{
     	window.myFacesPartialTriggers = new Array;
     }
@@ -36,6 +36,7 @@
     	window.myFacesInlineLoadingMessage = new Array;
     }
     this.replaceFormSubmitFunction(formId);
+
     this.addButtonOnClickHandlers();
 }
 
@@ -54,7 +55,7 @@
 //Method for JSF Components to register their Partial Triggers
 
 org.apache.myfaces.PPRCtrl.prototype.addPartialTrigger= function(inputElementId, refreshZoneId)
-{
+{             
     if (window.myFacesPartialTriggers[inputElementId] === undefined)
     {
         window.myFacesPartialTriggers[inputElementId] = refreshZoneId;
@@ -68,6 +69,16 @@
     }
 };
 
+// starting point of automatically partial page refresh
+
+org.apache.myfaces.PPRCtrl.prototype.startPeriodicalUpdate = function(refreshTimeout, refreshZoneId)
+{
+    var content = new Array;
+    content["org.apache.myfaces.PPRCtrl.triggeredComponents"] = refreshZoneId;
+    this.doAjaxSubmit(content, refreshTimeout, refreshZoneId);
+};
+
+
 //Callback Method which handles the AJAX Response
 
 org.apache.myfaces.PPRCtrl.prototype.handleCallback = function(type, data, evt)
@@ -80,7 +91,7 @@
 	        for (var i = 0; i < componentUpdates.length; i++)
 	        {
 	            componentUpdate = componentUpdates[i];
-	            domElement = document.getElementById(componentUpdate.getAttribute("id"));
+	            domElement = dojo.byId(componentUpdate.getAttribute("id"));
                 //todo - doesn't work with tables in IE
                 domElement.innerHTML = componentUpdate.firstChild.data;
 	        }
@@ -99,7 +110,8 @@
         {
           var form = formArray[i];
           var domElement = form.elements['javax.faces.ViewState'];
-          domElement.value = stateUpdate.getAttribute('value');
+          if(domElement)
+			domElement.value = stateUpdate.getAttribute('value');
         }
     }
     else
@@ -150,31 +162,8 @@
         if(triggeredComponents !=null)
         {
         	this.displayInlineLoadingMessages(triggeredComponents);
-            var requestUri = "";
-            var formAction = this.form.attributes["action"];
-            if(formAction == null)
-            {
-                requestUri = location.href;
-            }
-            else
-            {
-                requestUri = formAction.nodeValue;
-            }
-
-            
             content["org.apache.myfaces.PPRCtrl.triggeredComponents"]=triggeredComponents;
-            content["org.apache.myfaces.PPRCtrl.ajaxRequest"]="true";
-            dojo.io.bind({
-                url		: requestUri,
-                method	: "post",
-                useCache: false,
-                content	: content,
-                handle	: this.handleCallback,
-                mimetype: "text/xml",
-                transport: "XMLHTTPTransport",
-                formNode: this.form
-            });
-            return false;
+            return this.doAjaxSubmit(content, null, null)
         }
         else
         {
@@ -187,6 +176,43 @@
     }
 }
 
+org.apache.myfaces.PPRCtrl.prototype.doAjaxSubmit = function(content, refreshTimeout, refreshZoneId)
+{   
+	var ppr = this;  
+    var requestUri = "";
+    var formAction = this.form.attributes["action"];
+    if(formAction == null)
+    {
+        requestUri = location.href;
+    }
+    else
+    {
+        requestUri = formAction.nodeValue;
+    }
+
+    content["org.apache.myfaces.PPRCtrl.ajaxRequest"]="true";
+
+    dojo.io.bind({
+        url		: requestUri,
+        method	: "post",
+        useCache: false,
+        content	: content,
+        handle	: this.handleCallback,
+        mimetype: "text/xml",
+        transport: "XMLHTTPTransport",
+        formNode: this.form
+    });
+
+    if(refreshTimeout)
+    {
+        window.setTimeout(function() {
+            ppr.startPeriodicalUpdate(refreshTimeout, refreshZoneId);
+        }, refreshTimeout)
+    }
+
+    return false;
+};
+
 //This Method replaces the content of the PPRPanelGroups which have
 //an inline-loading-message set with the loading message
 
@@ -202,7 +228,7 @@
 	{
 		if(typeof window.myFacesInlineLoadingMessage[componentIds[index]] != "undefined")
 		{
-			domElement = document.getElementById(componentIds[index]);
+			domElement = dojo.byId(componentIds[index]);
 			if(domElement != null)
 			{
 				domElement.innerHTML = window.myFacesInlineLoadingMessage[componentIds[index]];
@@ -223,7 +249,7 @@
 
 org.apache.myfaces.PPRCtrl.prototype.replaceFormSubmitFunction = function(formId)
 {
-    this.form = document.getElementById(formId);
+    this.form = dojo.byId(formId);
     if(typeof this.form == "undefined" || this.form.tagName.toLowerCase() != "form")
     {
         alert("MyFaces PPR Engine: Form with id:" + formId + " not found!");

Modified: myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld?view=diff&rev=467270&r1=467269&r2=467270
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld (original)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/tld/myfaces_sandbox.tld Tue Oct 24 01:11:45 2006
@@ -1163,16 +1163,24 @@
 			<type>java.lang.String</type>
             <description>Regular Expression If the client Id of a submitting Component matches this Pattern the corresponding pprPanelGroup is updated via AJAX</description>
         </attribute>
-	  <attribute>
+	    <attribute>
 			<name>inlineLoadingMessage</name>
 			<required>false</required>
 			<rtexprvalue>false</rtexprvalue>
 			<type>java.lang.String</type>
             <description>If this attribute is set the content of the PPRPanelGroup will be replaced by the provided
-		Loading-Message during partial update</description>
+		                 Loading-Message during partial update</description>
         </attribute>
-	
-	</tag>
+        <attribute>
+			<name>periodicalUpdate</name>
+			<required>false</required>
+			<rtexprvalue>false</rtexprvalue>
+			<type>java.lang.Integer</type>
+            <description>Does a periodical refresh of the partial page inside the ppr group. In milliseconds.
+                         No partialTriggers are needed. 
+            </description>
+        </attribute>
+    </tag>
 
 	<tag>
 		<name>layoutingContentPane</name>

Modified: myfaces/tomahawk/trunk/sandbox/examples/src/main/java/org/apache/myfaces/examples/ppr/PPRExampleBean.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/examples/src/main/java/org/apache/myfaces/examples/ppr/PPRExampleBean.java?view=diff&rev=467270&r1=467269&r2=467270
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/examples/src/main/java/org/apache/myfaces/examples/ppr/PPRExampleBean.java (original)
+++ myfaces/tomahawk/trunk/sandbox/examples/src/main/java/org/apache/myfaces/examples/ppr/PPRExampleBean.java Tue Oct 24 01:11:45 2006
@@ -16,7 +16,11 @@
 
 package org.apache.myfaces.examples.ppr;
 
+import org.apache.myfaces.examples.inputSuggestAjax.Address;
+
 import javax.faces.event.ValueChangeEvent;
+import java.util.List;
+import java.util.ArrayList;
 
 /**
  * @author Ernst Fastl
@@ -56,8 +60,22 @@
 		setMessage("testAction called");
 		return "test";
 	}
-	
-	public void testValueChangeListener(ValueChangeEvent event){
+
+    public List getPeriodicalUpdatedValues()
+    {
+        List refreshList = new ArrayList();
+
+        for (int i = 0; i < 10; i++)
+        {
+            Address address = new Address((int) (Math.random()*100), "dummyStreet", "fakeCity",
+                                                (int) (Math.random()*10), "noState");
+
+            refreshList.add(address);
+        }
+        return refreshList;
+    }
+
+    public void testValueChangeListener(ValueChangeEvent event){
 		
 		_message = "Value Change to: ";
 		if(event.getNewValue()!=null)

Modified: myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/home.jsp
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/home.jsp?view=diff&rev=467270&r1=467269&r2=467270
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/home.jsp (original)
+++ myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/home.jsp Tue Oct 24 01:11:45 2006
@@ -22,7 +22,8 @@
             </h:panelGrid>
             <h:outputText value="Partial Page Rendering"/>
             <h:panelGrid style="padding-left:25px">
-	            <h:outputLink value="pprPanelGroup.jsf" ><f:verbatim>PPRPanelGroup - Panelgroup which gets refreshed by AJAX-Calls</f:verbatim></h:outputLink>
+	            <h:outputLink value="pprPanelGroup.jsf" ><f:verbatim>PPRPanelGroup - parts of a page are getting manually refreshed by AJAX-Calls</f:verbatim></h:outputLink>
+                 <h:outputLink value="pprPanelGroupPeriodicalUpdate.jsf" ><f:verbatim>PPRPanelGroup - parts of a page are getting automatically refreshed by AJAX-Calls (through periodic intervals)</f:verbatim></h:outputLink>
             </h:panelGrid>
             <h:outputText value="Resource Serving"/>
             <h:panelGrid style="padding-left:25px">

Added: myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupPeriodicalUpdate.jsp
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupPeriodicalUpdate.jsp?view=auto&rev=467270
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupPeriodicalUpdate.jsp (added)
+++ myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupPeriodicalUpdate.jsp Tue Oct 24 01:11:45 2006
@@ -0,0 +1,130 @@
+<%@ page session="false" contentType="text/html;charset=utf-8"%>
+<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
+<%@ taglib uri="http://myfaces.apache.org/sandbox" prefix="s"%>
+<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
+
+<!--
+/*
+ * Copyright 2004-2005 The Apache Software Foundation.
+ *
+ * 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.
+ */
+//-->
+
+<html>
+
+<%@ include file="inc/head.inc"%>
+
+
+<body>
+<h1>PPR Example - PeriodicalUpdate</h1>
+Automatically page refresh through periodic updates
+<f:view>
+
+	<h:form id="mainform">
+
+
+		<t:messages id="messageList" styleClass="error" showDetail="true"
+			        summaryFormat="{0} " />
+
+        <h:panelGrid columns="5">
+
+            <h:panelGrid>
+                <h:outputText value="List of addresses (not refreshed):"/>
+
+                <t:dataTable var="address" value="#{pprExampleBean.periodicalUpdatedValues}">
+                    <t:column>
+                        <f:facet name="header">
+                            <h:outputText value="streetnumber"/>
+                        </f:facet>
+                        <h:outputText value="#{address.streetNumber}"/>
+                    </t:column>
+                    <t:column>
+                        <f:facet name="header">
+                            <h:outputText value="streetname"/>
+                        </f:facet>
+                        <h:outputText value="#{address.streetName}"/>
+                    </t:column>
+                </t:dataTable>
+            </h:panelGrid>
+
+            <h:panelGroup/>
+
+            <h:panelGrid>
+                <h:outputText value="List of updated addresses after 2000ms:"/>
+
+                <s:pprPanelGroup id="periodicalUpdatedArea" periodicalUpdate="2000">
+                    <t:dataTable var="address" value="#{pprExampleBean.periodicalUpdatedValues}">
+                        <t:column>
+                            <f:facet name="header">
+                                <h:outputText value="streetnumber"/>
+                            </f:facet>
+                            <h:outputText value="#{address.streetNumber}"/>
+                        </t:column>
+                        <t:column>
+                            <f:facet name="header">
+                                <h:outputText value="streetname"/>
+                            </f:facet>
+                            <h:outputText value="#{address.streetName}"/>
+                        </t:column>
+                        <t:column>
+                            <f:facet name="header">
+                                <h:outputText value="zip"/>
+                            </f:facet>
+                            <h:outputText value="#{address.zip}"/>
+                        </t:column>
+                        <t:column>
+                            <f:facet name="header">
+                                <h:outputText value="state"/>
+                            </f:facet>
+                            <h:outputText value="#{address.state}"/>
+                        </t:column>
+                    </t:dataTable>
+                </s:pprPanelGroup>
+            </h:panelGrid>
+
+            <h:panelGroup/>
+
+            <h:panelGrid>
+                <h:outputText value="List of updated addresses after 5000ms: (another ppr-group)"/>
+                <s:pprPanelGroup id="periodicalUpdatedArea2" periodicalUpdate="5000">
+                <t:dataTable var="address" value="#{pprExampleBean.periodicalUpdatedValues}">
+                    <t:column>
+                        <f:facet name="header">
+                            <h:outputText value="zip"/>
+                        </f:facet>
+                        <h:outputText value="#{address.zip}"/>
+                    </t:column>
+                    <t:column>
+                        <f:facet name="header">
+                            <h:outputText value="state"/>
+                        </f:facet>
+                        <h:outputText value="#{address.state}"/>
+                    </t:column>
+                </t:dataTable>
+                </s:pprPanelGroup>
+            </h:panelGrid>
+
+        </h:panelGrid>
+    </h:form>
+
+
+</f:view>
+
+<%@include file="inc/page_footer.jsp"%>
+
+</body>
+
+</html>
+