Author: pyaschenko
Date: 2010-10-26 13:08:36 -0400 (Tue, 26 Oct 2010)
New Revision: 19673
Modified:
trunk/cdk/generator/src/main/resources/META-INF/templates/java/add-attributes-to-script-hash.ftl
trunk/cdk/generator/src/main/resources/META-INF/templates/java/util.ftl
trunk/examples/input-demo/src/main/java/org/richfaces/demo/AutoCompleteBean.java
trunk/examples/input-demo/src/main/webapp/examples/autocomplete.xhtml
trunk/ui/common/ui/src/main/java/org/richfaces/renderkit/RenderKitUtils.java
trunk/ui/common/ui/src/test/java/org/richfaces/renderkit/RenderKitUtilsMocksTest.java
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/AutocompleteRendererBase.java
trunk/ui/input/ui/src/main/templates/autocomplete.template.xml
Log:
https://jira.jboss.org/browse/RF-9473
Modified:
trunk/cdk/generator/src/main/resources/META-INF/templates/java/add-attributes-to-script-hash.ftl
===================================================================
---
trunk/cdk/generator/src/main/resources/META-INF/templates/java/add-attributes-to-script-hash.ftl 2010-10-26
16:13:02 UTC (rev 19672)
+++
trunk/cdk/generator/src/main/resources/META-INF/templates/java/add-attributes-to-script-hash.ftl 2010-10-26
17:08:36 UTC (rev 19673)
@@ -2,4 +2,4 @@
<@util.attributesField "${fieldName}" attributes />
-${ADD_TO_SCRIPT_HASH_ATTRIBUTES}(${parent.name}, ${facesContextVariable},
${componentVariable}, ${fieldName}, <#if
wrapper?exists>${wrapper}<#else>null</#if>);
\ No newline at end of file
+${ADD_TO_SCRIPT_HASH_ATTRIBUTES}(${parent.name}, ${facesContextVariable},
${componentVariable}, ${fieldName}, <#if
wrapper?exists>ScriptHashVariableWrapper.${wrapper}<#else>null</#if>);
\ No newline at end of file
Modified: trunk/cdk/generator/src/main/resources/META-INF/templates/java/util.ftl
===================================================================
--- trunk/cdk/generator/src/main/resources/META-INF/templates/java/util.ftl 2010-10-26
16:13:02 UTC (rev 19672)
+++ trunk/cdk/generator/src/main/resources/META-INF/templates/java/util.ftl 2010-10-26
17:08:36 UTC (rev 19673)
@@ -7,6 +7,6 @@
<@require "CREATE_ATTRIBUTES"/>
<@constant "Attributes"
"${fieldName}">${CREATE_ATTRIBUTES}()<#list attributes as attribute>
.${attribute.builderMethod}("${attribute.name}","${attribute.componentAttribute}"<#list
attribute.behaviors as behavior>,"${behavior}"</#list>)
- <#if attribute.defaultValue?exists
>.defaultValue("${attribute.defaultValue}")</#if>
+ <#if attribute.defaultValue?exists
>.defaultValue(${attribute.defaultValue})</#if>
</#list></@constant>
</#macro>
Modified:
trunk/examples/input-demo/src/main/java/org/richfaces/demo/AutoCompleteBean.java
===================================================================
---
trunk/examples/input-demo/src/main/java/org/richfaces/demo/AutoCompleteBean.java 2010-10-26
16:13:02 UTC (rev 19672)
+++
trunk/examples/input-demo/src/main/java/org/richfaces/demo/AutoCompleteBean.java 2010-10-26
17:08:36 UTC (rev 19673)
@@ -64,6 +64,17 @@
}
}
+ private String value;
+
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
private String mode = "lazyClient";
public String getMode() {
Modified: trunk/examples/input-demo/src/main/webapp/examples/autocomplete.xhtml
===================================================================
--- trunk/examples/input-demo/src/main/webapp/examples/autocomplete.xhtml 2010-10-26
16:13:02 UTC (rev 19672)
+++ trunk/examples/input-demo/src/main/webapp/examples/autocomplete.xhtml 2010-10-26
17:08:36 UTC (rev 19673)
@@ -32,9 +32,13 @@
block text block
<input:autocomplete autofill="false" id="myAutocomplete"
clientFilter="if(subString.length>1) if(value.indexOf(subString)!=-1) return
true;" mode="#{autoCompleteBean.mode}" minChars="2"
autocompleteMethod="#{autoCompleteBean.autocomplete}" var="country"
fetchValue="#{country.name}" showButton="true"
+ value = "#{autoCompleteBean.value}"
onchange="return onEvent.call(this, event);" onselectitem="return
onEvent.call(this, event);" onblur="return onEvent.call(this, event);"
onfocus="return onEvent.call(this, event);">
#{country.name} #{country.iso} #{country.domain}
+ <a4j:ajax event="change" render="output"/>
</input:autocomplete>
+ <br/><br/>
+ Your selection: <h:outputText id="output"
value="#{autoCompleteBean.value}"/>
<script type="text/javascript">
onEvent = function(event, element, data){
RichFaces.log.info("jQuery Event: "+(event instanceof jQuery.Event)+";
event: "+event.type+"; data:"+(data ||
(event['rich']||{})['data'])+"; this.id:"+this.id+";
component:"+
(event['rich']||{})['component']||RichFaces.$(this.id));
Modified: trunk/ui/common/ui/src/main/java/org/richfaces/renderkit/RenderKitUtils.java
===================================================================
---
trunk/ui/common/ui/src/main/java/org/richfaces/renderkit/RenderKitUtils.java 2010-10-26
16:13:02 UTC (rev 19672)
+++
trunk/ui/common/ui/src/main/java/org/richfaces/renderkit/RenderKitUtils.java 2010-10-26
17:08:36 UTC (rev 19673)
@@ -297,7 +297,7 @@
}
if (isChained) {
- result.insert(0, "jsf.util.chain(");
+ result.insert(0, "jsf.util.chain(this, event, ");
result.append(")");
}
Modified:
trunk/ui/common/ui/src/test/java/org/richfaces/renderkit/RenderKitUtilsMocksTest.java
===================================================================
---
trunk/ui/common/ui/src/test/java/org/richfaces/renderkit/RenderKitUtilsMocksTest.java 2010-10-26
16:13:02 UTC (rev 19672)
+++
trunk/ui/common/ui/src/test/java/org/richfaces/renderkit/RenderKitUtilsMocksTest.java 2010-10-26
17:08:36 UTC (rev 19673)
@@ -199,10 +199,10 @@
ClientBehaviorHolder behaviorHolder = createMockClientBehaviorHolder();
UIComponent component = (UIComponent) behaviorHolder;
- responseWriter.writeAttribute(eq("onkeypress"),
eq("jsf.util.chain('alert(keypress)','prompt(keypress)')"),
+ responseWriter.writeAttribute(eq("onkeypress"),
eq("jsf.util.chain(this, event,
'alert(keypress)','prompt(keypress)')"),
EasyMock.<String>isNull());
responseWriter.writeAttribute(eq("onclick"),
-
eq("jsf.util.chain('alert(click)','prompt(action1)','prompt(action2)')"),
EasyMock.<String>isNull());
+ eq("jsf.util.chain(this, event,
'alert(click)','prompt(action1)','prompt(action2)')"),
EasyMock.<String>isNull());
responseWriter.writeAttribute(eq("onmousemove"),
eq("alert(mousemove)"), EasyMock.<String>isNull());
responseWriter.writeAttribute(eq("oncontextmenu"),
eq("prompt(contextmenu)"), EasyMock.<String>isNull());
@@ -249,7 +249,7 @@
componentAttributes.put("disabled", Boolean.FALSE);
UIComponent component = setupBehaviorsTestForDisabledComponent();
- responseWriter.writeAttribute(eq("onclick"),
eq("jsf.util.chain('alert(click)','prompt(action1)')"),
+ responseWriter.writeAttribute(eq("onclick"),
eq("jsf.util.chain(this, event,
'alert(click)','prompt(action1)')"),
EasyMock.<String>isNull());
responseWriter.writeAttribute(eq("onmousemove"),
eq("alert(mousemove)"), EasyMock.<String>isNull());
Modified:
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/AutocompleteRendererBase.java
===================================================================
---
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/AutocompleteRendererBase.java 2010-10-26
16:13:02 UTC (rev 19672)
+++
trunk/ui/input/ui/src/main/java/org/richfaces/renderkit/AutocompleteRendererBase.java 2010-10-26
17:08:36 UTC (rev 19673)
@@ -21,12 +21,9 @@
*/
package org.richfaces.renderkit;
-import static org.richfaces.renderkit.RenderKitUtils.addToScriptHash;
-
import java.io.IOException;
import java.sql.ResultSet;
import java.util.ArrayList;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -49,12 +46,10 @@
import org.ajax4jsf.context.AjaxContext;
import org.ajax4jsf.javascript.JSFunctionDefinition;
-import org.ajax4jsf.javascript.ScriptUtils;
import org.richfaces.component.AbstractAutocomplete;
import org.richfaces.component.AutocompleteLayout;
import org.richfaces.component.MetaComponentResolver;
import org.richfaces.component.util.InputUtils;
-import org.richfaces.renderkit.RenderKitUtils.ScriptHashVariableWrapper;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterators;
@@ -86,43 +81,7 @@
return null;
}
-
- public String getScriptOptions(UIComponent component) {
- Map<String, Object> attributes = component.getAttributes();
- Map<String, Object> options = new HashMap<String, Object>();
- addToScriptHash(options, "buttonId", component.getClientId() +
"Button");
- addToScriptHash(options, "selectedItemClass",
attributes.get("selectedItemClass"));
- addToScriptHash(options, "minChars",
attributes.get("minChars"), 1);
- addToScriptHash(options, "filterFunction",
attributes.get("filterFunction"));
- addToScriptHash(options, "autofill",
attributes.get("autofill"), true);
- addToScriptHash(options, "disabled",
attributes.get("disabled"), false);
- addToScriptHash(options, "selectFirst",
attributes.get("selectFirst"), true);
- addToScriptHash(options, "tokens",
attributes.get("tokens"));
- addToScriptHash(options, "onbegin",
attributes.get("onbegin"), null, ScriptHashVariableWrapper.eventHandler);
- addToScriptHash(options, "oncomplete",
attributes.get("oncomplete"), null, ScriptHashVariableWrapper.eventHandler);
- addToScriptHash(options, "onerror",
attributes.get("onerror"), null, ScriptHashVariableWrapper.eventHandler);
- addToScriptHash(options, "onbeforedomupdate",
attributes.get("onbeforedomupdate"), null,
ScriptHashVariableWrapper.eventHandler);
- addToScriptHash(options, "onchange",
attributes.get("onchange"), null, ScriptHashVariableWrapper.eventHandler);
- addToScriptHash(options, "onselectitem",
attributes.get("onselectitem"), null, ScriptHashVariableWrapper.eventHandler);
- addToScriptHash(options, "onfocus",
attributes.get("onfocus"), null, ScriptHashVariableWrapper.eventHandler);
- addToScriptHash(options, "onblur", attributes.get("onblur"),
null, ScriptHashVariableWrapper.eventHandler);
- addToScriptHash(options, "filterFunction",
getClientFilterFunction(component));
- String mode = (String) attributes.get("mode");
- if (mode != null) {
- if (mode.equals("ajax")) {
- addToScriptHash(options, "isCachedAjax", false, true);
- } else if (mode.equals("client") ||
mode.equals("lazyClient")) {
- addToScriptHash(options, "ajaxMode", false, true);
- if (mode.equals("lazyClient")) {
- addToScriptHash(options, "lazyClientMode", true, false);
- }
- }
- }
- StringBuilder builder = new StringBuilder();
- builder.append(ScriptUtils.toScript(options));
- return builder.toString();
- }
-
+
// TODO nick - handle parameter
@SuppressWarnings("unchecked")
Modified: trunk/ui/input/ui/src/main/templates/autocomplete.template.xml
===================================================================
--- trunk/ui/input/ui/src/main/templates/autocomplete.template.xml 2010-10-26 16:13:02 UTC
(rev 19672)
+++ trunk/ui/input/ui/src/main/templates/autocomplete.template.xml 2010-10-26 17:08:36 UTC
(rev 19673)
@@ -70,8 +70,18 @@
</div>
</div>
<script type="text/javascript">
+ <cdk:object name="mode" type="Object"
value="#{component.attributes['mode']}" />
+ <cdk:scriptObject name="options">
+ <cdk:scriptOption name="buttonId"
value="#{clientId}Button" />
+ <cdk:scriptOption attributes="selectedItemClass minChars
filterFunction autofill disabled selectFirst tokens" />
+ <cdk:scriptOption attributes="onbegin oncomplete onerror
onbeforedomupdate onchange onselectitem onfocus onblur"
wrapper="eventHandler"/>
+ <cdk:scriptOption name="filterFunction"
value="#{getClientFilterFunction(component)}" />
+ <cdk:scriptOption name="isCachedAjax"
value="#{'ajax'==mode ? false : true}" defaultValue="true"
/>
+ <cdk:scriptOption name="ajaxMode"
value="#{'client'==mode||'lazyClient'==mode ? false : true}"
defaultValue="true" />
+ <cdk:scriptOption name="lazyClientMode"
value="#{'lazyClient'==mode ? true : false}"
defaultValue="false" />
+ </cdk:scriptObject>
new RichFaces.ui.Autocomplete("#{clientId}",
- "#{clientId}Input", #{getScriptOptions(component)}
+ "#{clientId}Input", #{toScriptArgs(options)}
);
</script>
</div>