You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by mu...@apache.org on 2007/03/23 01:51:55 UTC
svn commit: r521551 - in /struts/struts2/trunk:
apps/showcase/src/main/webapp/ajax/autocompleter/
plugins/dojo/src/main/java/org/apache/struts2/dojo/components/
plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/
plugins/dojo/src/main/reso...
Author: musachy
Date: Thu Mar 22 17:51:54 2007
New Revision: 521551
URL: http://svn.apache.org/viewvc?view=rev&rev=521551
Log:
WW-1607 Add ajax notify topics to autocompleter
Modified:
struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/autocompleter/index.jsp
struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Autocompleter.java
struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTag.java
struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/Bind.js
struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/BindDiv.js
struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/ComboBox.js
struts/struts2/trunk/plugins/dojo/src/main/resources/template/ajax/autocompleter.ftl
struts/struts2/trunk/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTest.java
struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Autocompleter-1.txt
struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Autocompleter-2.txt
Modified: struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/autocompleter/index.jsp
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/autocompleter/index.jsp?view=diff&rev=521551&r1=521550&r2=521551
==============================================================================
--- struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/autocompleter/index.jsp (original)
+++ struts/struts2/trunk/apps/showcase/src/main/webapp/ajax/autocompleter/index.jsp Thu Mar 22 17:51:54 2007
@@ -72,7 +72,7 @@
Link two autocompleter elements. When the selected value in 'Autocompleter 1' changes, the available values in 'Autocompleter 2' will change also.
<br/>
<form id="selectForm">
- <p>Autocompleter 1 <sx:autocompleter name="select" list="{'fruits','colors'}" value="colors" notifyTopics="/Changed" forceValidOption="true" id="sel"/></p>
+ <p>Autocompleter 1 <sx:autocompleter name="select" list="{'fruits','colors'}" value="colors" valueNotifyTopics="/Changed" forceValidOption="true" id="sel"/></p>
</form>
Autocompleter 2 <sx:autocompleter href="%{#autoex}" autoComplete="false" formId="selectForm" listenTopics="/Changed" forceValidOption="true" id="ops"/>
Modified: struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Autocompleter.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Autocompleter.java?view=diff&rev=521551&r1=521550&r2=521551
==============================================================================
--- struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Autocompleter.java (original)
+++ struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/components/Autocompleter.java Thu Mar 22 17:51:54 2007
@@ -71,6 +71,10 @@
protected String iconPath;
protected String keyName;
protected String dataFieldName;
+ protected String beforeNotifyTopics;
+ protected String afterNotifyTopics;
+ protected String errorNotifyTopics;
+ protected String valueNotifyTopics;
public Autocompleter(ValueStack stack, HttpServletRequest request,
HttpServletResponse response) {
@@ -144,6 +148,15 @@
String keyNameExpr = "%{" + keyName + "}";
addParameter("key", findString(keyNameExpr));
+
+ if (beforeNotifyTopics != null)
+ addParameter("beforeNotifyTopics", findString(beforeNotifyTopics));
+ if (afterNotifyTopics != null)
+ addParameter("afterNotifyTopics", findString(afterNotifyTopics));
+ if (errorNotifyTopics != null)
+ addParameter("errorNotifyTopics", findString(errorNotifyTopics));
+ if (valueNotifyTopics != null)
+ addParameter("valueNotifyTopics", findString(valueNotifyTopics));
}
@Override
@@ -291,5 +304,25 @@
@StrutsTagAttribute(description="Preset the value of input element")
public void setValue(String arg0) {
super.setValue(arg0);
+ }
+
+ @StrutsTagAttribute(description="Comma delimmited list of topics that will published after the request(if the request succeeds)")
+ public void setAfterNotifyTopics(String afterNotifyTopics) {
+ this.afterNotifyTopics = afterNotifyTopics;
+ }
+
+ @StrutsTagAttribute(description="Comma delimmited list of topics that will published before the request")
+ public void setBeforeNotifyTopics(String beforeNotifyTopics) {
+ this.beforeNotifyTopics = beforeNotifyTopics;
+ }
+
+ @StrutsTagAttribute(description="Comma delimmited list of topics that will published after the request(if the request fails)")
+ public void setErrorNotifyTopics(String errorNotifyTopics) {
+ this.errorNotifyTopics = errorNotifyTopics;
+ }
+
+ @StrutsTagAttribute(description="Comma delimmited list of topics that will published when a value is selected")
+ public void setValueNotifyTopics(String valueNotifyTopics) {
+ this.valueNotifyTopics = valueNotifyTopics;
}
}
Modified: struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTag.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTag.java?view=diff&rev=521551&r1=521550&r2=521551
==============================================================================
--- struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTag.java (original)
+++ struts/struts2/trunk/plugins/dojo/src/main/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTag.java Thu Mar 22 17:51:54 2007
@@ -55,6 +55,10 @@
protected String iconPath;
protected String keyName;
protected String dataFieldName;
+ protected String beforeNotifyTopics;
+ protected String afterNotifyTopics;
+ protected String errorNotifyTopics;
+ protected String valueNotifyTopics;
public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) {
return new Autocompleter(stack, req, res);
@@ -84,6 +88,10 @@
autocompleter.setIconPath(iconPath);
autocompleter.setKeyName(keyName);
autocompleter.setDataFieldName(dataFieldName);
+ autocompleter.setAfterNotifyTopics(afterNotifyTopics);
+ autocompleter.setBeforeNotifyTopics(beforeNotifyTopics);
+ autocompleter.setErrorNotifyTopics(errorNotifyTopics);
+ autocompleter.setValueNotifyTopics(valueNotifyTopics);
}
public void setAutoComplete(String autoComplete) {
@@ -168,5 +176,21 @@
public void setDataFieldName(String dataFieldName) {
this.dataFieldName = dataFieldName;
+ }
+
+ public void setAfterNotifyTopics(String afterNotifyTopics) {
+ this.afterNotifyTopics = afterNotifyTopics;
+ }
+
+ public void setBeforeNotifyTopics(String beforeNotifyTopics) {
+ this.beforeNotifyTopics = beforeNotifyTopics;
+ }
+
+ public void setErrorNotifyTopics(String errorNotifyTopics) {
+ this.errorNotifyTopics = errorNotifyTopics;
+ }
+
+ public void setValueNotifyTopics(String valueNotifyTopics) {
+ this.valueNotifyTopics = valueNotifyTopics;
}
}
Modified: struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/Bind.js
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/Bind.js?view=diff&rev=521551&r1=521550&r2=521551
==============================================================================
--- struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/Bind.js (original)
+++ struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/Bind.js Thu Mar 22 17:51:54 2007
@@ -183,12 +183,12 @@
this.notifyTo(topicsArray, data, type, e);
},
- notifyTo : function(topicsArray, data, e) {
+ notifyTo : function(topicsArray, data, type, e) {
var self = this;
if(topicsArray) {
dojo.lang.forEach(topicsArray, function(topic) {
try {
- dojo.event.topic.publish(topic, data, e);
+ dojo.event.topic.publish(topic, data, type, e);
} catch(ex){
self.log(ex);
}
Modified: struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/BindDiv.js
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/BindDiv.js?view=diff&rev=521551&r1=521550&r2=521551
==============================================================================
--- struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/BindDiv.js (original)
+++ struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/BindDiv.js Thu Mar 22 17:51:54 2007
@@ -117,12 +117,12 @@
this.notifyTo(topicsArray, data, type, e);
},
- notifyTo : function(topicsArray, data, e) {
+ notifyTo : function(topicsArray, data, type, e) {
var self = this;
if(topicsArray) {
dojo.lang.forEach(topicsArray, function(topic) {
try {
- dojo.event.topic.publish(topic, data, e);
+ dojo.event.topic.publish(topic, data, type, e);
} catch(ex){
self.log(ex);
}
Modified: struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/ComboBox.js
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/ComboBox.js?view=diff&rev=521551&r1=521550&r2=521551
==============================================================================
--- struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/ComboBox.js (original)
+++ struts/struts2/trunk/plugins/dojo/src/main/resources/org/apache/struts2/static/dojo/struts/widget/ComboBox.js Thu Mar 22 17:51:54 2007
@@ -59,8 +59,9 @@
url: url,
formNode: dojo.byId(this.formId),
formFilter: window[this.formFilter],
- load: dojo.lang.hitch(this, function(type, data, evt) {
- //show indicator
+ handler: dojo.lang.hitch(this, function(type, data, evt) {
+ this.firstRequest = false;
+ //hide indicator
dojo.html.hide(this.cbox.indicator);
//if notifyTopics is published on the first request (onload)
@@ -92,7 +93,6 @@
data = arrData;
}
this.setData(data);
- this.firstRequest = false;
}),
mimetype: "text/json"
});
@@ -215,7 +215,14 @@
listenTopics : "",
notifyTopics : "",
notifyTopicsArray : null,
-
+ beforeNotifyTopics : "",
+ beforeNotifyTopicsArray : null,
+ afterNotifyTopics : "",
+ afterNotifyTopicsArray : null,
+ errorNotifyTopics : "",
+ errorNotifyTopicsArray : null,
+ valueNotifyTopics : "",
+ valueNotifyTopicsArray : null,
indicator : "",
formId : "",
@@ -234,7 +241,7 @@
//dojo has "stringstart" which is invalid
searchType: "STARTSTRING",
- dataFieldName : "" ,
+ dataFieldName : "",
keyName: "",
templateCssPath: dojo.uri.dojoUri("struts/ComboBox.css"),
//from Dojo's ComboBox
@@ -341,9 +348,30 @@
}
}
+ //notify topics
if(!dojo.string.isBlank(this.notifyTopics)) {
this.notifyTopicsArray = this.notifyTopics.split(",");
}
+
+ //before topics
+ if(!dojo.string.isBlank(this.beforeNotifyTopics)) {
+ this.beforeNotifyTopicsArray = this.beforeNotifyTopics.split(",");
+ }
+
+ //after topics
+ if(!dojo.string.isBlank(this.afterNotifyTopics)) {
+ this.afterNotifyTopicsArray = this.afterNotifyTopics.split(",");
+ }
+
+ //error topics
+ if(!dojo.string.isBlank(this.errorNotifyTopics)) {
+ this.errorNotifyTopicsArray = this.errorNotifyTopics.split(",");
+ }
+
+ //value topics
+ if(!dojo.string.isBlank(this.valueNotifyTopics)) {
+ this.valueNotifyTopicsArray = this.valueNotifyTopics.split(",");
+ }
//better name
this.comboBoxSelectionValue.name = dojo.string.isBlank(this.keyName) ? this.name + "Key" : this.keyName;
@@ -376,11 +404,44 @@
notify : function(data, type, e) {
if(this.notifyTopicsArray) {
+ var self = this;
dojo.lang.forEach(this.notifyTopicsArray, function(topic) {
try {
dojo.event.topic.publish(topic, data, type, e);
} catch(ex) {
- dojo.debug(ex);
+ self.log(ex);
+ }
+ });
+ }
+
+ //before, after and error topics
+ var topicsArray = null;
+ switch(type) {
+ case "before":
+ topicsArray = this.beforeNotifyTopicsArray;
+ break;
+ case "load":
+ topicsArray = this.afterNotifyTopicsArray;
+ break;
+ case "error":
+ topicsArray = this.errorNotifyTopicsArray;
+ break;
+ case "valuechanged":
+ topicsArray = this.valueNotifyTopicsArray;
+ break;
+ }
+
+ this.notifyTo(topicsArray, data, type, e);
+ },
+
+ notifyTo : function(topicsArray, data, type, e) {
+ var self = this;
+ if(topicsArray) {
+ dojo.lang.forEach(topicsArray, function(topic) {
+ try {
+ dojo.event.topic.publish(topic, data, type, e);
+ } catch(ex){
+ self.log(ex);
}
});
}
Modified: struts/struts2/trunk/plugins/dojo/src/main/resources/template/ajax/autocompleter.ftl
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/src/main/resources/template/ajax/autocompleter.ftl?view=diff&rev=521551&r1=521550&r2=521551
==============================================================================
--- struts/struts2/trunk/plugins/dojo/src/main/resources/template/ajax/autocompleter.ftl (original)
+++ struts/struts2/trunk/plugins/dojo/src/main/resources/template/ajax/autocompleter.ftl Thu Mar 22 17:51:54 2007
@@ -71,6 +71,18 @@
<#if parameters.notifyTopics?if_exists != "">
notifyTopics="${parameters.notifyTopics?html}"<#rt/>
</#if>
+<#if parameters.beforeNotifyTopics?if_exists != "">
+ beforeNotifyTopics="${parameters.beforeNotifyTopics?html}"<#rt/>
+</#if>
+<#if parameters.afterNotifyTopics?if_exists != "">
+ afterNotifyTopics="${parameters.afterNotifyTopics?html}"<#rt/>
+</#if>
+<#if parameters.errorNotifyTopics?if_exists != "">
+ errorNotifyTopics="${parameters.errorNotifyTopics?html}"<#rt/>
+</#if>
+<#if parameters.valueNotifyTopics?if_exists != "">
+ valueNotifyTopics="${parameters.valueNotifyTopics?html}"<#rt/>
+</#if>
<#if parameters.indicator?if_exists != "">
indicator="${parameters.indicator?html}"<#rt/>
</#if>
Modified: struts/struts2/trunk/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTest.java?view=diff&rev=521551&r1=521550&r2=521551
==============================================================================
--- struts/struts2/trunk/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTest.java (original)
+++ struts/struts2/trunk/plugins/dojo/src/test/java/org/apache/struts2/dojo/views/jsp/ui/AutocompleterTest.java Thu Mar 22 17:51:54 2007
@@ -47,6 +47,7 @@
tag.setIconPath("i");
tag.setTemplateCssPath("j");
tag.setDataFieldName("k");
+ tag.setValueNotifyTopics("l");
tag.doStartTag();
tag.doEndTag();
@@ -68,6 +69,7 @@
tag.setName("f");
tag.setIconPath("i");
tag.setTemplateCssPath("j");
+ tag.setValueNotifyTopics("k");
tag.doStartTag();
tag.doEndTag();
Modified: struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Autocompleter-1.txt
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Autocompleter-1.txt?view=diff&rev=521551&r1=521550&r2=521551
==============================================================================
--- struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Autocompleter-1.txt (original)
+++ struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Autocompleter-1.txt Thu Mar 22 17:51:54 2007
@@ -11,6 +11,7 @@
name="f"
keyName="i"
initialValue="g"
+ valueNotifyTopics="l"
indicator="h"
loadOnType="true"
loadMinimum="3"
Modified: struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Autocompleter-2.txt
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Autocompleter-2.txt?view=diff&rev=521551&r1=521550&r2=521551
==============================================================================
--- struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Autocompleter-2.txt (original)
+++ struts/struts2/trunk/plugins/dojo/src/test/resources/org/apache/struts2/dojo/views/jsp/ui/Autocompleter-2.txt Thu Mar 22 17:51:54 2007
@@ -9,6 +9,7 @@
dropdownHeight="10"
name="f"
keyName="fKey"
+ valueNotifyTopics="k"
visibleDownArrow="true"
buttonSrc="i"
templateCssPath="j"