Author: dmorozov
Date: 2008-11-18 10:45:18 -0500 (Tue, 18 Nov 2008)
New Revision: 11221
Modified:
trunk/sandbox/samples/queue-sample/src/main/webapp/pages/events.xhtml
trunk/sandbox/ui/queue/src/main/config/component/queue.xml
trunk/sandbox/ui/queue/src/main/java/org/richfaces/component/UIQueue.java
trunk/sandbox/ui/queue/src/main/java/org/richfaces/renderkit/html/QueueRenderer.java
Log:
https://jira.jboss.org/jira/browse/RF-4899
Modified: trunk/sandbox/samples/queue-sample/src/main/webapp/pages/events.xhtml
===================================================================
--- trunk/sandbox/samples/queue-sample/src/main/webapp/pages/events.xhtml 2008-11-18
15:44:24 UTC (rev 11220)
+++ trunk/sandbox/samples/queue-sample/src/main/webapp/pages/events.xhtml 2008-11-18
15:45:18 UTC (rev 11221)
@@ -13,20 +13,98 @@
<a4j:status startText="...running..." startStyle="color: green"
/>
- <q:queue name="queue" oncomplete="alert('queue -
oncomplete')" onbeforedomupdate="alert('queue -
onbeforedomupdate')" />
+ <style type="text/css">
+ td {
+ border: 1px solid black;
+ }
+
+ #handlersTableHeaders td {
+ width: 25%;
+ }
+ </style>
+ <table id="handlersTable" width="30%">
+ <tbody>
+ <tr>
+ <td colspan="4">Queue - Q, Component - C</td>
+ </tr>
+ <tr id="handlersTableHeaders">
+ <td>onsubmit</td>
+ <td>onbeforedomupdate</td>
+ <td>oncomplete</td>
+ <td>onerror</td>
+ </tr>
+ <tr>
+ <td id="onsubmitElt"></td>
+ <td id="onbeforedomupdateElt"></td>
+ <td id="oncompleteElt"></td>
+ <td id="onerrorElt"></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <script type="text/javascript">//<![CDATA[
+ function my$(id) {
+ return document.getElementById(id);
+ }
+
+ function resetCells() {
+ var handlersTable = my$('handlersTable');
+ var rows = handlersTable.rows;
+ var cells = rows[2].cells;
+ for ( var cellIdx = 0; cellIdx < cells.length; cellIdx++) {
+ var cell = cells[cellIdx];
+ cell.innerHTML = ' ';
+ }
+ }
+
+ resetCells();
+
+ var handlersList = ["onbeforedomupdate", "onsubmit",
"oncomplete", "onerror"];
+
+ var handlers = {};
+
+ for ( var i = 0; i < handlersList.length; i++) {
+ var handlerName = handlersList[i];
+ handlers["queue:" + handlerName] = new Function("my$('" +
handlerName + "Elt').innerHTML += 'Q'");
+ handlers["component:" + handlerName] = new Function("my$('"
+ handlerName + "Elt').innerHTML += 'C'");
+ }
+ //]]></script>
+ <q:queue name="queue"
onsubmit="handlers['queue:onsubmit']()"
onerror="handlers['queue:onerror']()"
+ oncomplete="handlers['queue:oncomplete']()"
onbeforedomupdate="handlers['queue:onbeforedomupdate']()" />
+
<h:form>
<h:panelGrid columns="1">
Components in queue
- <a4j:commandLink value="No component handlers"
eventsQueue="queue"/>
- <a4j:commandLink value="Oncomplete component client handler"
eventsQueue="queue" onbeforedomupdate="request.options.oncomplete =
function(){alert('component - oncomplete')}" />
- <a4j:commandLink value="Both component handlers"
eventsQueue="queue" oncomplete="alert('component -
oncomplete')" onbeforedomupdate="alert('component -
onbeforedomupdate')" />
+ <a4j:commandLink onclick="resetCells()" value="No component
handlers" eventsQueue="queue"/>
+
+ <a4j:commandLink onclick="resetCells()" value="Oncomplete
component client handler" eventsQueue="queue"
+ onbeforedomupdate="request.options.oncomplete =
handlers['component:oncomplete']" />
+
+ <a4j:commandLink onclick="resetCells(); A4J.AJAX.onError = undefined;"
value="Onerror" eventsQueue="queue" timeout="1" />
+
+ <a4j:commandLink onclick="resetCells(); A4J.AJAX.onError =
handlers['component:onerror'];" value="Component onerror"
eventsQueue="queue"
+ timeout="1" />
+
+ <a4j:commandLink onclick="resetCells()" value="Both component
handlers" eventsQueue="queue"
+ oncomplete="handlers['component:oncomplete']()"
+ onbeforedomupdate="handlers['component:onbeforedomupdate']()"
/>
</h:panelGrid>
<h:panelGrid columns="1">
Components without queue
- <a4j:commandLink value="No component handlers" />
- <a4j:commandLink value="Oncomplete component client handler"
onbeforedomupdate="request.options.oncomplete = function(){alert('component -
oncomplete')}" />
- <a4j:commandLink value="Both component handlers"
oncomplete="alert('component - oncomplete')"
onbeforedomupdate="alert('component - onbeforedomupdate')" />
+ <a4j:commandLink onclick="resetCells()" value="No component
handlers" />
+
+ <a4j:commandLink onclick="resetCells()" value="Oncomplete
component client handler"
+ onbeforedomupdate="request.options.oncomplete =
handlers['component:oncomplete']" />
+
+ <a4j:commandLink onclick="resetCells(); A4J.AJAX.onError = undefined;"
value="Onerror" timeout="1" />
+
+ <a4j:commandLink onclick="resetCells(); A4J.AJAX.onError =
handlers['component:onerror'];" value="Component onerror"
+ timeout="1" />
+
+ <a4j:commandLink onclick="resetCells()" value="Both component
handlers"
+ oncomplete="handlers['component:oncomplete']()"
+ onbeforedomupdate="handlers['component:onbeforedomupdate']()"
/>
</h:panelGrid>
</h:form>
</f:view>
Modified: trunk/sandbox/ui/queue/src/main/config/component/queue.xml
===================================================================
--- trunk/sandbox/ui/queue/src/main/config/component/queue.xml 2008-11-18 15:44:24 UTC
(rev 11220)
+++ trunk/sandbox/ui/queue/src/main/config/component/queue.xml 2008-11-18 15:45:18 UTC
(rev 11221)
@@ -64,27 +64,23 @@
<classname>java.lang.String</classname>
</property>
<property>
- <name>oncomplete</name>
- <classname>java.lang.String</classname>
- </property>
- <property>
<name>onbeforedomupdate</name>
<classname>java.lang.String</classname>
</property>
<property>
- <name>sizeExceededBehavior</name>
+ <name>oncomplete</name>
<classname>java.lang.String</classname>
</property>
<property>
- <name>onSizeExceeded</name>
+ <name>onerror</name>
<classname>java.lang.String</classname>
</property>
<property>
- <name>onError</name>
+ <name>sizeExceededBehavior</name>
<classname>java.lang.String</classname>
</property>
<property>
- <name>onExpired</name>
+ <name>onSizeExceeded</name>
<classname>java.lang.String</classname>
</property>
</component>
Modified: trunk/sandbox/ui/queue/src/main/java/org/richfaces/component/UIQueue.java
===================================================================
--- trunk/sandbox/ui/queue/src/main/java/org/richfaces/component/UIQueue.java 2008-11-18
15:44:24 UTC (rev 11220)
+++ trunk/sandbox/ui/queue/src/main/java/org/richfaces/component/UIQueue.java 2008-11-18
15:45:18 UTC (rev 11221)
@@ -49,8 +49,11 @@
public abstract void setOncomplete(String oncomplete);
public abstract String getOnbeforedomupdate();
- public abstract void setOnbeforedomupdate(String Onbeforedomupdate);
+ public abstract void setOnbeforedomupdate(String onbeforedomupdate);
+ public abstract String getOnerror();
+ public abstract void setOnerror(String onerror);
+
public abstract boolean isDisabled();
public abstract void setDisabled(boolean disabled);
Modified:
trunk/sandbox/ui/queue/src/main/java/org/richfaces/renderkit/html/QueueRenderer.java
===================================================================
---
trunk/sandbox/ui/queue/src/main/java/org/richfaces/renderkit/html/QueueRenderer.java 2008-11-18
15:44:24 UTC (rev 11220)
+++
trunk/sandbox/ui/queue/src/main/java/org/richfaces/renderkit/html/QueueRenderer.java 2008-11-18
15:45:18 UTC (rev 11221)
@@ -47,6 +47,8 @@
private static final String QUEUE_ONCOMPLETE_ATTRIBUTE = "queueoncomplete";
+ private static final String QUEUE_ONERROR_ATTRIBUTE = "queueonerror";
+
private static final String[] QUEUE_ATTRIBUTES = new String[] {
"enabled",
"size",
@@ -143,12 +145,20 @@
String onsubmit = queue.getOnsubmit();
if (onsubmit != null) {
- JSFunctionDefinition onsubmitFunction = new JSFunctionDefinition();
+ JSFunctionDefinition onsubmitFunction = new
JSFunctionDefinition("request");
onsubmitFunction.addToBody(onsubmit);
data.addRequestAttribute(QUEUE_ONSUBMIT_ATTRIBUTE, onsubmitFunction);
}
+ String onerror = queue.getOnerror();
+ if (onerror != null) {
+ JSFunctionDefinition onerrorFunction = new JSFunctionDefinition("request",
"status", "message");
+ onerrorFunction.addToBody(onerror);
+
+ data.addRequestAttribute(QUEUE_ONERROR_ATTRIBUTE, onerrorFunction);
+ }
+
return data;
}