You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mm...@apache.org on 2007/07/02 22:32:36 UTC

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

Author: mmarinschek
Date: Mon Jul  2 13:32:35 2007
New Revision: 552586

URL: http://svn.apache.org/viewvc?view=rev&rev=552586
Log:
TOMAHAWK-1028: enable inputs submitting a ppr-panelgroup - in a data-table as well; more fixes to make sure inputs also work in IE; adding a new possibility to pass desired event-handler to partialTrigger with syntax partialTriggerId(eventHandler1,eventHandler2)

Added:
    myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PartialTriggerParser.java
Modified:
    myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PPRPanelGroupRenderer.java
    myfaces/tomahawk/trunk/sandbox/core/src/main/resources/org/apache/myfaces/custom/ppr/resource/ppr.js
    myfaces/tomahawk/trunk/sandbox/examples/src/main/java/org/apache/myfaces/examples/ppr/PPRExampleBean.java
    myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/WEB-INF/examples-config.xml
    myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/home.jsp
    myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupDataTable.jsp
    myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupOnChange.jsp

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=552586&r1=552585&r2=552586
==============================================================================
--- 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 Mon Jul  2 13:32:35 2007
@@ -37,8 +37,7 @@
 import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 import java.io.IOException;
-import java.util.Map;
-import java.util.StringTokenizer;
+import java.util.*;
 
 /**
  * @author Ernst Fastl
@@ -125,12 +124,13 @@
             }
             //Otherwise start it when the trigger happens
             else {
-                StringTokenizer st = new StringTokenizer(periodicalTriggers, ",; ", false);
+                List partialTriggers = (new PartialTriggerParser()).parse(periodicalTriggers);
                 String periodicalTriggerId;
                 String periodicalTriggerClientId;
                 UIComponent periodicalTriggerComponent;
-                while (st.hasMoreTokens()) {
-                    periodicalTriggerId = st.nextToken();
+                for (int i=0; i<partialTriggers.size();i++) {
+                    PartialTriggerParser.PartialTrigger trigger = (PartialTriggerParser.PartialTrigger) partialTriggers.get(i);
+                    periodicalTriggerId = trigger.getPartialTriggerId();
                     periodicalTriggerComponent = pprGroup.findComponent(periodicalTriggerId);
                     if (periodicalTriggerComponent == null) {
                         periodicalTriggerComponent = facesContext.getViewRoot().findComponent(periodicalTriggerId);
@@ -139,8 +139,11 @@
                     //Component found
                     if (periodicalTriggerComponent != null) {
                         periodicalTriggerClientId = periodicalTriggerComponent.getClientId(facesContext);
-                        script.append(pprCtrlReference + "." + ADD_PERIODICAL_TRIGGER_FUNCTION + "('" + periodicalTriggerClientId + "','"
+                        script.append(pprCtrlReference + "." + ADD_PERIODICAL_TRIGGER_FUNCTION + "('" + periodicalTriggerClientId + "',"+
+                                encodeArray(trigger.getEventHooks())+",'"
                                 + clientId + "', " + pprGroup.getPeriodicalUpdate() + ");");
+
+
                     //Component missing
                     } else {
                         if (log.isDebugEnabled()) {
@@ -171,16 +174,17 @@
 		}
 
 		if (partialTriggers != null && partialTriggers.trim().length() > 0) {
-			StringTokenizer st = new StringTokenizer(partialTriggers, ",; ", false);
-			while (st.hasMoreTokens()) {
-				partialTriggerId = st.nextToken();
+            List partialTriggerIds = (new PartialTriggerParser()).parse(partialTriggers);
+            for (int i=0; i<partialTriggerIds.size();i++) {
+                PartialTriggerParser.PartialTrigger trigger = (PartialTriggerParser.PartialTrigger) partialTriggerIds.get(i);
+                partialTriggerId = trigger.getPartialTriggerId();
 				partialTriggerComponent = pprGroup.findComponent(partialTriggerId);
 				if (partialTriggerComponent == null) {
 					partialTriggerComponent = facesContext.getViewRoot().findComponent(partialTriggerId);
 				}
 				if (partialTriggerComponent != null) {
 					partialTriggerClientId = partialTriggerComponent.getClientId(facesContext);
-					script.append(pprCtrlReference + "." + ADD_PARTIAL_TRIGGER_FUNCTION + "('" + partialTriggerClientId + "','"
+					script.append(pprCtrlReference + "." + ADD_PARTIAL_TRIGGER_FUNCTION + "('" + partialTriggerClientId + "',"+encodeArray(trigger.getEventHooks())+",'"
 							+ clientId + "');");
 				} else {
 					if (log.isDebugEnabled()) {
@@ -195,7 +199,29 @@
         renderInlineScript(facesContext, pprGroup, script.toString());
     }
 
-	public void encodeBegin(FacesContext facesContext, UIComponent uiComponent) throws IOException {
+    private String encodeArray(List eventHooks) {
+        if(eventHooks==null || eventHooks.size()==0) {
+            return "null";
+        }
+        else{
+            StringBuffer buf = new StringBuffer();
+            buf.append("[");
+
+            for (int i = 0; i < eventHooks.size(); i++) {
+                if(i>0)
+                    buf.append(",");
+                String eventHook = (String) eventHooks.get(i);
+                buf.append("'");
+                buf.append(eventHook);
+                buf.append("'");
+            }
+            buf.append("]");
+
+            return buf.toString();
+        }
+    }
+
+    public void encodeBegin(FacesContext facesContext, UIComponent uiComponent) throws IOException {
 		if (uiComponent.getId() == null || uiComponent.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX)) {
 			throw new IllegalArgumentException("'id' is a required attribute for the PPRPanelGroup");
 		}

Added: myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PartialTriggerParser.java
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PartialTriggerParser.java?view=auto&rev=552586
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PartialTriggerParser.java (added)
+++ myfaces/tomahawk/trunk/sandbox/core/src/main/java/org/apache/myfaces/custom/ppr/PartialTriggerParser.java Mon Jul  2 13:32:35 2007
@@ -0,0 +1,105 @@
+package org.apache.myfaces.custom.ppr;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Collections;
+
+/**
+ * @author Martin Marinschek
+*/
+public class PartialTriggerParser {
+
+    public List parse(String partialTriggerString) {
+
+        int lastTokenEnd = 0;
+        boolean subLevelMode = false;
+
+        List partialTriggers = new ArrayList();
+        PartialTrigger currentTrigger = null;
+
+        for(int i=0, length = partialTriggerString.length(); i<=length; i++) {
+            boolean newTokenMode = false;
+            boolean endTopLevelMode = false;
+            boolean endSubLevelMode = false;
+
+            if(!(i==partialTriggerString.length())) {
+                char c = partialTriggerString.charAt(i);
+
+                if(c==',' || c==';' || c==' ') {
+                    newTokenMode = true;
+                }
+                else if(c=='(') {
+                    newTokenMode = true;
+                    subLevelMode = true;
+                    endTopLevelMode = true;
+                }
+                else if(c==')') {
+                    newTokenMode = true;
+                    subLevelMode = false;
+                    endSubLevelMode = true;
+                }
+            } else {
+                newTokenMode = true;
+            }
+
+            if(newTokenMode) {
+                if(((!subLevelMode && !endSubLevelMode) || endTopLevelMode ) && i>lastTokenEnd) {
+                    currentTrigger = new PartialTrigger();
+                    partialTriggers.add(currentTrigger);
+                    currentTrigger.setPartialTriggerId(partialTriggerString.substring(lastTokenEnd,i));
+                }
+                else if((subLevelMode || endSubLevelMode) && i>lastTokenEnd){
+                    currentTrigger.addEventHook(partialTriggerString.substring(lastTokenEnd,i));
+                }
+
+                lastTokenEnd = i+1;
+            }
+        }
+
+        return partialTriggers;
+    }
+
+
+    public static class PartialTrigger {
+        private String partialTriggerId;
+        private List eventHooks;
+
+        public void addEventHook(String eventHook) {
+            if(eventHooks == null) {
+                eventHooks = new ArrayList();
+            }
+            eventHooks.add(eventHook);
+        }
+
+        public String getPartialTriggerId() {
+            return partialTriggerId;
+        }
+
+        public void setPartialTriggerId(String partialTriggerId) {
+            this.partialTriggerId = partialTriggerId;
+        }
+
+        public List getEventHooks() {
+            if(eventHooks==null)
+                return Collections.EMPTY_LIST;
+
+            return eventHooks;
+        }
+    }
+
+    public static void main(String[] args) {
+        PartialTriggerParser parser = new PartialTriggerParser();
+        List li = parser.parse(/*", ; ,, test1id   (onkeyup,onkeydown,,,test2id test3id;test4id"*/"testid(onchange)");
+
+        for (int i = 0; i < li.size(); i++) {
+            PartialTrigger partialTrigger = (PartialTrigger) li.get(i);
+            System.out.println("partialTrigger.partialTriggerId = " + partialTrigger.getPartialTriggerId());
+
+            for (int j = 0; j < partialTrigger.getEventHooks().size(); j++) {
+                String eventHook = (String) partialTrigger.getEventHooks().get(j);
+                System.out.println("eventHook = " + eventHook);
+            }
+        }
+    }
+
+}

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=552586&r1=552585&r2=552586
==============================================================================
--- 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 Mon Jul  2 13:32:35 2007
@@ -29,19 +29,19 @@
     this.showDebugMessages = showDebugMessages;
     this.stateUpdate = stateUpdate;
 
-    if(typeof window.oamPartialTriggersToZoneIds == "undefined")
+    if(!window.oamPartialTriggersToZoneIds)
 	{
-    	window.oamPartialTriggersToZoneIds = new Array;
+    	window.oamPartialTriggersToZoneIds = new Array();
     }
-    if(typeof window.oamZoneIdsToPartialTriggerPatterns == "undefined")
+    if(!window.oamZoneIdsToPartialTriggerPatterns)
 	{
-    	window.oamZoneIdsToPartialTriggerPatterns = new Array;
+    	window.oamZoneIdsToPartialTriggerPatterns = new Array();
     }
-    if(typeof window.myFacesInlineLoadingMessage == "undefined")
+    if(!window.oamInlineLoadingMessage)
 	{
-    	window.myFacesInlineLoadingMessage = new Array;
+    	window.oamInlineLoadingMessage = new Array();
     }
-    if(typeof window.oamRefreshTimeoutForZoneId == "undefined")
+    if(!window.oamRefreshTimeoutForZoneId)
 	{
     	window.oamRefreshTimeoutForZoneId = new Array;
     }
@@ -55,7 +55,7 @@
 
 org.apache.myfaces.PPRCtrl.prototype.addInlineLoadingMessage= function(message, refreshZoneId)
 {
-        window.myFacesInlineLoadingMessage[refreshZoneId] = message;
+        window.oamInlineLoadingMessage[refreshZoneId] = message;
 };
 
 //Method for JSF Components to register Regular Expressions for partial update triggering
@@ -67,8 +67,10 @@
 
 //Method for JSF Components to register their Partial Triggers
 
-org.apache.myfaces.PPRCtrl.prototype.addPartialTrigger= function(inputElementId, refreshZoneId)
+org.apache.myfaces.PPRCtrl.prototype.addPartialTrigger= function(inputElementId, eventHookArr, refreshZoneId)
 {
+    this._addEventHandlerForId(inputElementId,eventHookArr,"elementOnEventHandler");
+
     if (window.oamPartialTriggersToZoneIds[inputElementId] === undefined)
     {
         window.oamPartialTriggersToZoneIds[inputElementId] = refreshZoneId;
@@ -81,13 +83,15 @@
         refreshZoneId;
     }
 
-    this._addEventHandler(dojo.byId(inputElementId));
 };
 
 //Method for JSF Components to register their Periodical Triggers
 
-org.apache.myfaces.PPRCtrl.prototype.addPeriodicalTrigger = function(inputElementId, refreshZoneId, refreshTimeout)
+org.apache.myfaces.PPRCtrl.prototype.addPeriodicalTrigger = function(inputElementId, eventHookArr, refreshZoneId, refreshTimeout)
 {
+
+    this._addEventHandlerForId(inputElementId,eventHookArr,"elementOnPeriodicalEventHandler");
+
     if (window.oamPartialTriggersToZoneIds[inputElementId] === undefined)
     {
         window.oamPartialTriggersToZoneIds[inputElementId] = refreshZoneId;
@@ -103,8 +107,6 @@
     if (window.oamRefreshTimeoutForZoneId[refreshZoneId] === undefined) {
         window.oamRefreshTimeoutForZoneId[refreshZoneId] = refreshTimeout;
     }
-
-    this._addPeriodicalEventHandler(dojo.byId(inputElementId));
 };
 
 // registering a function (called before submit) on each form to block periodical refresh during request-response cycle
@@ -129,7 +131,7 @@
 {
     var content = new Array;
     content["org.apache.myfaces.PPRCtrl.triggeredComponents"] = refreshZoneId;
-    this.doAjaxSubmit(content, refreshTimeout, refreshZoneId);
+    this.doAjaxSubmit(content, refreshTimeout, refreshZoneId, null);
 };
 
 // blocking periodical update and refreshing viewState
@@ -203,14 +205,14 @@
 }
 
 org.apache.myfaces.PPRCtrl.prototype.callbackErrorHandler = function() {
-	if(typeof this.lastSubmittedElement == "undefined") {
+	if(!this.lastSubmittedElement) {
 		alert("An unexpected error occured during an ajax-request - page has been fully submitted!");
 		this.form.submit_orig();
 	}
 	
 	var formName = this.form.id;
 
-    if(typeof formName == "undefined")
+    if(!formName)
     {
         formName = this.form.name;
     }
@@ -238,21 +240,21 @@
 //This Method checks if an AJAX Call is to be done instead of submitting the form
 //as usual. If so it uses dojo.bind to submit the mainform via AJAX
 
-org.apache.myfaces.PPRCtrl.prototype.ajaxSubmitFunction = function(triggerElement)
+org.apache.myfaces.PPRCtrl.prototype.ajaxSubmitFunction = function(triggerElement, event)
 {
     var formName = this.form.id;
 
-    if(typeof formName == "undefined")
+    if(!formName)
     {
         formName = this.form.name;
     }
 
-    if(typeof triggerElement != "undefined" ||
-    	typeof this.form.elements[formName +':'+'_idcl'] != "undefined")
+    if(triggerElement ||
+    	this.form.elements[formName +':'+'_idcl'])
     {
 		var triggerId;
     	var content=new Array;
-    	if(typeof triggerElement != "undefined")
+    	if(triggerElement)
     	{
     		triggerId=triggerElement.id;
     		
@@ -280,7 +282,7 @@
         {
         	this.displayInlineLoadingMessages(triggeredComponents);
             content["org.apache.myfaces.PPRCtrl.triggeredComponents"]=triggeredComponents;
-            return this.doAjaxSubmit(content, null, null)
+            return this.doAjaxSubmit(content, null, null, event)
         }
         else
         {
@@ -293,7 +295,7 @@
     }
 }
 
-org.apache.myfaces.PPRCtrl.prototype.doAjaxSubmit = function(content, refreshTimeout, refreshZoneId)
+org.apache.myfaces.PPRCtrl.prototype.doAjaxSubmit = function(content, refreshTimeout, refreshZoneId, event)
 {
 	var ppr = this;
     var requestUri = "";
@@ -327,7 +329,8 @@
         }, refreshTimeout)
     }
 
-    return false;
+    if(event && (this._isButton(event.target) || this._isLink(event.target)))
+        dojo.event.browser.stopEvent(event);
 };
 
 //This Method replaces the content of the PPRPanelGroups which have
@@ -341,14 +344,14 @@
 	}
 	var componentIds = components.split(',');
 	var domElement = null;
-	for (index in componentIds)
+	for (var i=0,length=componentIds.length;i<length; i++)
 	{
-		if(typeof window.myFacesInlineLoadingMessage[componentIds[index]] != "undefined")
+		if(window.oamInlineLoadingMessage[componentIds[i]])
 		{
-			domElement = dojo.byId(componentIds[index]);
+			domElement = dojo.byId(componentIds[i]);
 			if(domElement != null)
 			{
-				domElement.innerHTML = window.myFacesInlineLoadingMessage[componentIds[index]];
+				domElement.innerHTML = window.oamInlineLoadingMessage[componentIds[i]];
 			}
 		}
 	}
@@ -392,23 +395,48 @@
     {
         var formElement = this.form.elements[i];
         if(this._isButton(formElement)) {
-            this._addEventHandler(formElement);
+            this._addEventHandler(formElement,null,"elementOnEventHandler");
         }
     }
 }
 
-org.apache.myfaces.PPRCtrl.prototype._addEventHandler = function (formElement) {
-    if (this._isButton(formElement) || this._isCheckbox(formElement) || this._isRadio(formElement)) {
-        //for these element-types, onclick is appropriate
-        this._addOnClickHandler(formElement);
-    }
-    else if(this._isText(formElement) || this._isDropdown(formElement)) {
-        //for these element-types, onblur will be working.
-        //attention: onchange won't work properly in IE6 at least (field will never loose focus)
-        this._addOnBlurHandler(formElement);
+org.apache.myfaces.PPRCtrl.prototype._addEventHandlerForId = function (formElementId, connectToEventArr, eventHandler) {
+    var formElement = dojo.byId(formElementId);
+
+    if(formElement)
+        this._addEventHandler(formElement, connectToEventArr, eventHandler);
+    else
+        log.error("Input element with id : "+formElementId +" not found.");
+}
+
+org.apache.myfaces.PPRCtrl.prototype._addEventHandler = function (formElement, connectToEventArr, eventHandler) {
+
+    if(!connectToEventArr || connectToEventArr.length==0) {
+        connectToEventArr = new Array();
+        if (this._isButton(formElement) || this._isCheckbox(formElement) || this._isRadio(formElement)) {
+            //for these element-types, onclick is appropriate
+            connectToEventArr.push("onclick");
+        }
+        else if(this._isText(formElement) || this._isDropdown(formElement)) {
+            //for these element-types, onblur will be working.
+            //attention: onchange won't work properly in IE6 at least (field will never loose focus)
+            connectToEventArr.push("onblur");
+        }
+    }
+
+    for(var i=0; i<connectToEventArr.length; i++) {
+
+        dojo.event.kwConnect({
+            srcObj:     formElement,
+            srcFunc:    connectToEventArr[i],
+            targetObj:  this,
+            targetFunc: eventHandler,
+            once:       true
+        });
     }
 }
 
+
 org.apache.myfaces.PPRCtrl.prototype._isDropdown = function (formElement) {
     return formElement.tagName.toLowerCase() == "select";
 }
@@ -419,6 +447,10 @@
                  formElement.type.toLowerCase() == "image");
 }
 
+org.apache.myfaces.PPRCtrl.prototype._isLink = function (formElement) {
+    return formElement.tagName.toLowerCase() == "a";
+}
+
 org.apache.myfaces.PPRCtrl.prototype._isText = function (formElement) {
     return formElement.tagName.toLowerCase() == "input" &&
                 (formElement.type.toLowerCase() == "text" );
@@ -434,59 +466,13 @@
                 (formElement.type.toLowerCase() == "radio" );
 }
 
-org.apache.myfaces.PPRCtrl.prototype._addOnClickHandler = function (formElement) {
-
-    if(typeof formElement.oam_onevent_orig == "undefined")
-    {
-        formElement.oam_onevent_orig = formElement.onclick;
-        formElement.onclick = this.elementOnEventHandler;
-        formElement.myFacesPPRCtrl=this;
-    }
-
-}
-
-org.apache.myfaces.PPRCtrl.prototype._addOnBlurHandler = function (formElement) {
-
-    if(typeof formElement.oam_onevent_orig == "undefined")
-    {
-        formElement.oam_onevent_orig = formElement.onblur;
-        formElement.onblur = this.elementOnEventHandler;
-        formElement.myFacesPPRCtrl=this;
-    }
-
-}
-
-org.apache.myfaces.PPRCtrl.prototype._addPeriodicalEventHandler = function(formElement) {
-    var eventHandler = null;
-    if (this._isButton(formElement) || this._isCheckbox(formElement) || this._isRadio(formElement)) {
-        //for these element-types, onclick is appropriate
-        eventHandler = "onclick";
-    }
-    else if(this._isText(formElement) || this._isDropdown(formElement)) {
-        //for these element-types, onblur will be working.
-        //attention: onchange won't work properly in IE6 at least (field will never loose focus)
-        eventHandler = "onblur";
-    }
-
-    if (!eventHandler) {
-        return;
-    }
-
-    dojo.event.connect(formElement, eventHandler, this, "elementOnPeriodicalEventHandler");
-}
-
 
 //PointCutAdvisor which invokes the AJAX Submit Method of the PPR Controller after custom
 //onclick-handlers for submit-buttons and submit-images
 
 org.apache.myfaces.PPRCtrl.prototype.elementOnEventHandler = function (_event)
 {
-    if(typeof this.oam_onevent_orig != "undefined")
-    {
-        if(this.oam_onevent_orig()==false)
-		    return false;
-    }
-    return this.myFacesPPRCtrl.ajaxSubmitFunction(this);
+    return this.ajaxSubmitFunction(_event.target, _event);
 }
 
 org.apache.myfaces.PPRCtrl.prototype.elementOnPeriodicalEventHandler = function(_event) {

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=552586&r1=552585&r2=552586
==============================================================================
--- 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 Mon Jul  2 13:32:35 2007
@@ -232,4 +232,12 @@
         this._message = message;
     }
 
+    public void checkBoxChanged(ValueChangeEvent evt) {
+        _checkBoxValue = (Boolean) evt.getNewValue();
+    }
+
+    public void dropDownChanged(ValueChangeEvent evt) {
+        _dropDownValue = (String) evt.getNewValue();
+    }
+
 }

Modified: myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/WEB-INF/examples-config.xml
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/WEB-INF/examples-config.xml?view=diff&rev=552586&r1=552585&r2=552586
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/WEB-INF/examples-config.xml (original)
+++ myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/WEB-INF/examples-config.xml Mon Jul  2 13:32:35 2007
@@ -108,7 +108,7 @@
     <managed-bean>
         <managed-bean-name>pprExampleBean</managed-bean-name>
         <managed-bean-class>org.apache.myfaces.examples.ppr.PPRExampleBean</managed-bean-class>
-        <managed-bean-scope>request</managed-bean-scope>
+        <managed-bean-scope>session</managed-bean-scope>
     </managed-bean>
 
     <!-- Managed Beans for pprScroller.jsp -->

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=552586&r1=552585&r2=552586
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/home.jsp (original)
+++ myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/home.jsp Mon Jul  2 13:32:35 2007
@@ -65,8 +65,7 @@
                     <h:outputLink value="typedNumberConvert.jsf"><f:verbatim>convertNumber - automatically convert the number to the correct type</f:verbatim></h:outputLink>
 	                <h:outputLink value="convertStringUtils.jsf"><f:verbatim>convertStringUtils - a datetime converter that uses system timezone as default</f:verbatim></h:outputLink>
 	            </h:panelGrid>
-
-	            <h:outputText value="Validation"/>
+                <h:outputText value="Validation"/>
 	            <h:panelGrid style="padding-left:25px">
 	            	<h:outputLink value="validateUrl.jsf" ><f:verbatim>Validation example 2 - including URL validator</f:verbatim></h:outputLink>
 	            	<h:outputLink value="validateCompareTo.jsf" ><f:verbatim>validateCompareTo - Compare values on two different components</f:verbatim></h:outputLink>

Modified: myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupDataTable.jsp
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupDataTable.jsp?view=diff&rev=552586&r1=552585&r2=552586
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupDataTable.jsp (original)
+++ myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupDataTable.jsp Mon Jul  2 13:32:35 2007
@@ -70,7 +70,7 @@
             </h:column>
             <h:column>
                 <h:commandButton id="update"/>
-                <s:pprPanelGroup id="carEntryUpdate" partialTriggers="update,type,color">
+                <s:pprPanelGroup id="carEntryUpdate" partialTriggers="update,type(onclick),color(onkeyup)">
                     <h:panelGrid columns="2">
                       <h:outputText value="Id"/>
                       <h:outputText value="#{carDetail.id}"/>

Modified: myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupOnChange.jsp
URL: http://svn.apache.org/viewvc/myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupOnChange.jsp?view=diff&rev=552586&r1=552585&r2=552586
==============================================================================
--- myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupOnChange.jsp (original)
+++ myfaces/tomahawk/trunk/sandbox/examples/src/main/webapp/pprPanelGroupOnChange.jsp Mon Jul  2 13:32:35 2007
@@ -51,11 +51,10 @@
 
 			<h:outputText value="update group by checking:" />
 			<h:selectBooleanCheckbox id="checkbox"
-                    value="#{pprExampleBean.checkBoxValue}"
-			        onclick="submit(this);"/>
+                    value="#{pprExampleBean.checkBoxValue}" valueChangeListener="#{pprExampleBean.checkBoxChanged}"/>
 			
 			<h:outputText value="update group by changing the value:" />
-			<h:selectOneMenu id="dropDown" onchange="submit(this);"
+			<h:selectOneMenu id="dropDown"
 				value="#{pprExampleBean.dropDownValue}"	>
 				<f:selectItem itemLabel="test1" itemValue="value1"/>
 				<f:selectItem itemLabel="test2" itemValue="value2"/>
@@ -64,13 +63,13 @@
 			
 			<h:outputText value="Checkbox is:" />
 			<s:pprPanelGroup id="pprCheckBoxValue"
-				partialTriggers="checkbox">
+				partialTriggers="checkbox(onclick,onchange)">
 				<h:outputText value="#{pprExampleBean.checkBoxValue ? 'checked' : 'not checked'}" />
 			</s:pprPanelGroup>
 
             <h:outputText value="Drop Down value is:" />
 			<s:pprPanelGroup id="dropDownPPR"
-				partialTriggers="dropDown">
+				partialTriggers="dropDown(onchange)">
 				<h:outputText value="#{pprExampleBean.dropDownValue}" />
 			</s:pprPanelGroup>
         </h:panelGrid>
@@ -81,9 +80,9 @@
              <br />
             This example shows how onClick-Handlers of checkboxes or dropdowns <br />
             can be used to update page regions via AJAX.<br />
-            It is vital, that the this element is included as parameter in the call <br />
+            It is vital, that this element is included as a parameter in the call <br />
             of the submit function so the PPRCtrl knows which element tries to submit <br />
-            and therefore is able to determine wheather or not matching partialTriggers <br />
+            and therefore is able to determine whether or not matching partialTriggers <br />
             and/or partialTriggerPatterns are present.
         </f:verbatim>
     </s:fieldset>