Author: andrei_exadel
Date: 2008-02-04 09:51:07 -0500 (Mon, 04 Feb 2008)
New Revision: 5780
Modified:
trunk/sandbox/ui/progressBAR/src/main/java/org/richfaces/component/UIProgressBar.java
trunk/sandbox/ui/progressBAR/src/main/java/org/richfaces/renderkit/AbstractProgressBarRenderer.java
trunk/sandbox/ui/progressBAR/src/main/resources/org/richfaces/renderkit/html/js/progressBar.js
trunk/sandbox/ui/progressBAR/src/main/templates/org/richfaces/progressBar.jspx
trunk/sandbox/ui/progressBAR/src/test/java/org/richfaces/sandbox/ProgressBarComponentTest.java
Log:
refactoring
Modified:
trunk/sandbox/ui/progressBAR/src/main/java/org/richfaces/component/UIProgressBar.java
===================================================================
---
trunk/sandbox/ui/progressBAR/src/main/java/org/richfaces/component/UIProgressBar.java 2008-02-04
14:22:07 UTC (rev 5779)
+++
trunk/sandbox/ui/progressBAR/src/main/java/org/richfaces/component/UIProgressBar.java 2008-02-04
14:51:07 UTC (rev 5780)
@@ -21,6 +21,7 @@
import org.ajax4jsf.context.AjaxContext;
import org.ajax4jsf.context.AjaxContextImpl;
import org.ajax4jsf.event.AjaxEvent;
+import org.ajax4jsf.javascript.JSFunctionDefinition;
import org.ajax4jsf.javascript.JSLiteral;
import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.richfaces.renderkit.AbstractProgressBarRenderer;
@@ -42,6 +43,9 @@
/** Request parameter name containing component state to render */
private static final String FORCE_STATE_PARAM = "forceState";
+ /* (non-Javadoc)
+ * @see
org.ajax4jsf.component.AjaxActionComponent#broadcast(javax.faces.event.FacesEvent)
+ */
public void broadcast(FacesEvent event) throws AbortProcessingException {
// TODO Auto-generated method stub
if (event instanceof AjaxEvent) {
@@ -66,10 +70,11 @@
ajaxContext.removeRenderedArea(this.getClientId(facesContext));
ajaxContext.setResponseData(getResponseData(percent,
facesContext));
- Object rerenderAfterComplete = this.getAttributes().get(
+
+ Object reRender = this.getAttributes().get(
"reRender");
Set ajaxRegions = AjaxRendererUtils
- .asSet(rerenderAfterComplete);
+ .asSet(reRender);
if (ajaxRegions != null) {
for (Iterator iter = ajaxRegions.iterator(); iter.hasNext();) {
@@ -122,18 +127,35 @@
}
- private Map<String, Object> getContext(
- AbstractProgressBarRenderer renderer, Number percent) {
- Map<String, Object> context = renderer.getParametersMap(this);
- if (context == null) {
- context = new HashMap<String, Object>();
+ /**
+ * Returns context for macrosubstitution
+ * @param renderer
+ * @param percent
+ * @return
+ */
+ private JSLiteral getContext(AbstractProgressBarRenderer renderer,
+ Number percent) {
+ StringBuffer buffer = new StringBuffer("{");
+ buffer.append("value:").append(percent.toString()).append(",");
+ buffer.append("minValue:").append(this.getAttributes().get("minValue"))
+ .append(",");
+ buffer.append("maxValue:").append(this.getAttributes().get("maxValue"));
+
+ String parameters = renderer.getParameters(this);
+ if (parameters != null) {
+ buffer.append(",");
+ buffer.append(parameters);
}
- context.put("value", percent.toString());
- context.put("maxValue", this.getAttributes().get("maxValue"));
- context.put("minValue", this.getAttributes().get("minValue"));
- return context;
+ buffer.append("}");
+ return new JSLiteral(buffer.toString());
}
+ /**
+ * Returns label markup
+ * @param context
+ * @param renderer
+ * @return
+ */
private JSLiteral getMarkup(FacesContext context,
AbstractProgressBarRenderer renderer) {
JSLiteral literal = null;
Modified:
trunk/sandbox/ui/progressBAR/src/main/java/org/richfaces/renderkit/AbstractProgressBarRenderer.java
===================================================================
---
trunk/sandbox/ui/progressBAR/src/main/java/org/richfaces/renderkit/AbstractProgressBarRenderer.java 2008-02-04
14:22:07 UTC (rev 5779)
+++
trunk/sandbox/ui/progressBAR/src/main/java/org/richfaces/renderkit/AbstractProgressBarRenderer.java 2008-02-04
14:51:07 UTC (rev 5780)
@@ -8,12 +8,9 @@
import java.io.IOException;
import java.math.BigDecimal;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import javax.faces.FactoryFinder;
import javax.faces.component.UIComponent;
@@ -26,6 +23,7 @@
import org.ajax4jsf.event.AjaxEvent;
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.javascript.JSFunctionDefinition;
+import org.ajax4jsf.javascript.JSLiteral;
import org.ajax4jsf.javascript.JSReference;
import org.ajax4jsf.javascript.ScriptUtils;
import org.ajax4jsf.renderkit.AjaxRendererUtils;
@@ -43,13 +41,6 @@
*/
public class AbstractProgressBarRenderer extends TemplateEncoderRendererBase {
- /** Pattern to find macrosubstitution parameters defined in attrs */
- private static final Pattern PARAMETERS = Pattern
-
.compile("^\\s*([\\w\\d]+)\\s*[=:]\\s*['\"]*([\\w\\d]+)['\"]*\\s*$");
-
- /** Expression for params string split */
- private static final String SPLIT_EXPRS = "[;,]";
-
/** Request parameter name containing component state to render */
private static final String FORCE_STATE_PARAM = "forceState";
@@ -100,9 +91,9 @@
return null;
}
-
/**
* Renderes label markup
+ *
* @param context
* @param component
* @return
@@ -227,19 +218,22 @@
Integer minValue = (Integer) component.getAttributes().get("minValue");
Integer maxValue = (Integer) component.getAttributes().get("maxValue");
- script.append("new ProgressBar().init('").append(clientId)
- .append("','").append(containerId).append("','").append(formId)
- .append("','").append(mode).append("',").append(minValue)
- .append(",").append(maxValue).append(",");
- script.append(ScriptUtils.toScript(getParametersMap(component)));
+ script.append("new ProgressBar().init('")
+ .append(clientId).append("','") // id
+ .append(containerId).append("','") // containerId
+ .append(formId).append("','") // formId
+ .append(mode).append("',") // mode
+ .append(minValue).append(",") // min value
+ .append(maxValue).append(","); // max value
+ script.append(getContext(component)); // context
script.append(",");
- script.append(ScriptUtils.toScript(buildAjaxOptions(clientId,
+ script.append(ScriptUtils.toScript(buildAjaxOptions(clientId, // options
progressBar, context)));
- String progressVar = (String) component.getAttributes().get(
+ String progressVar = (String) component.getAttributes().get(
"progressVar");
if (progressVar != null) {
script.append(",'");
- script.append(progressVar);
+ script.append(progressVar); // progress var
script.append("'");
} else {
script.append(",null");
@@ -268,9 +262,8 @@
options.put("pollinterval", interval);
Map parameters = (Map) options.get("parameters");
parameters.put("percent", "percent");
- options
- .put("oncomplete",
- getOnComplete(clientId, progressBar, context));
+ options.put("onbeforedomupdate", getOnComplete(clientId, progressBar,
+ context));
return options;
}
@@ -395,13 +388,15 @@
String remainClass = (String) component.getAttributes().get(
"remainClass");
+ // <div class='remainClass' id='clientId:remain'
style='style'></div>
writer.startElement("div", component);
getUtils().writeAttribute(writer, "class",
remainClass + " rich-progress-bar-base");
getUtils().writeAttribute(writer, "id", clientId + ":remain");
getUtils().writeAttribute(writer, "style", style);
-
writer.endElement("div");
+
+ // <div class='rich-progress-bar-uploaded' id='clientId:upload'
style='style'>
writer.startElement("div", component);
getUtils()
.writeAttribute(writer, "class", "rich-progress-bar-uploaded");
@@ -409,45 +404,54 @@
getUtils().writeAttribute(writer, "style",
(style != null ? style + ";" : "") + " width: " + width +
"%;");
+ // <div class='completeClass' id='clientId:complete'
style='style'></div>
writer.startElement("div", component);
getUtils().writeAttribute(writer, "class",
completeClass + " rich-progress-bar-base");
getUtils().writeAttribute(writer, "id", clientId + ":complete");
getUtils().writeAttribute(writer, "style", style);
-
writer.endElement("div");
- writer.endElement("div");
+ // </div>
+ writer.endElement("div");
if (isAjaxMode(component)) {
encodePollScript(context, component);
}
}
-
+
+
/**
- * Gets map with parameters defined in 'parameters' attr
- *
+ * Returns parameters attr
* @param component
+ * @param renderer
+ * @param percent
* @return
*/
- public Map<String, Object> getParametersMap(UIComponent component) {
+ public String getParameters(UIComponent component) {
String parameters = (String) component.getAttributes()
.get("parameters");
+ return parameters;
+ }
+
+
+ /**
+ * Returns context for macrosubstitution
+ * @param component
+ * @return
+ */
+ private JSLiteral getContext(UIComponent component) {
+ StringBuffer buffer = new StringBuffer();
+ String parameters = getParameters(component);
+ JSLiteral literal = null;
if (parameters != null) {
- Map<String, Object> map = new HashMap<String, Object>();
- String[] strs = parameters.split(SPLIT_EXPRS);
- if (strs != null) {
- for (String str : strs) {
- Matcher matcher = PARAMETERS.matcher(str);
- if (matcher.matches()) {
- map.put(matcher.group(1), matcher.group(2));
- }
- }
- }
- return map;
+ buffer.append("{").append(parameters).append("}");
+ literal = new JSLiteral(buffer.toString());
+ }else {
+ literal = new JSLiteral("null");
}
- return null;
+ return literal;
}
/**
@@ -525,7 +529,7 @@
}
}
} catch (Exception e) {
- // TODO: handle exception
+ // no action
}
}
return result;
Modified:
trunk/sandbox/ui/progressBAR/src/main/resources/org/richfaces/renderkit/html/js/progressBar.js
===================================================================
---
trunk/sandbox/ui/progressBAR/src/main/resources/org/richfaces/renderkit/html/js/progressBar.js 2008-02-04
14:22:07 UTC (rev 5779)
+++
trunk/sandbox/ui/progressBAR/src/main/resources/org/richfaces/renderkit/html/js/progressBar.js 2008-02-04
14:51:07 UTC (rev 5780)
@@ -139,7 +139,7 @@
this.forceState("initial",null);
return;
}
- } else if ( parseFloat(p) >= parseFloat(this.getMaxValue())) {
+ } else if ( parseFloat(p) > parseFloat(this.getMaxValue())) {
if (!this.isAjaxMode()) {
this.forceState("complete",null);
return;
Modified: trunk/sandbox/ui/progressBAR/src/main/templates/org/richfaces/progressBar.jspx
===================================================================
---
trunk/sandbox/ui/progressBAR/src/main/templates/org/richfaces/progressBar.jspx 2008-02-04
14:22:07 UTC (rev 5779)
+++
trunk/sandbox/ui/progressBAR/src/main/templates/org/richfaces/progressBar.jspx 2008-02-04
14:51:07 UTC (rev 5780)
@@ -42,7 +42,7 @@
renderForcedState(forcedState,context,component);
}else if (value.doubleValue() < minValue.doubleValue()) {
encodeInitialState(context, component);
-} else if (value.doubleValue() >= maxValue.doubleValue()) {
+} else if (value.doubleValue() > maxValue.doubleValue()) {
encodeCompletedState(context, component);
} else {
encodeProgressState(context, component);
Modified:
trunk/sandbox/ui/progressBAR/src/test/java/org/richfaces/sandbox/ProgressBarComponentTest.java
===================================================================
---
trunk/sandbox/ui/progressBAR/src/test/java/org/richfaces/sandbox/ProgressBarComponentTest.java 2008-02-04
14:22:07 UTC (rev 5779)
+++
trunk/sandbox/ui/progressBAR/src/test/java/org/richfaces/sandbox/ProgressBarComponentTest.java 2008-02-04
14:51:07 UTC (rev 5780)
@@ -56,13 +56,13 @@
progressBar.setId("prgs");
progressBar.setValue(50);
progressBar.setInterval(1000);
- progressBar.getAttributes().put("progressVar", "persent");
- MockValueExpression expression = new MockValueExpression("50%");
- ValueExpression exp = application.getExpressionFactory()
- .createValueExpression(facesContext.getELContext(), "#{persent}",
Object.class);
+// MockValueExpression expression = new MockValueExpression("50%");
+// ValueExpression exp = application.getExpressionFactory()
+// .createValueExpression(facesContext.getELContext(), "#{persent}",
Object.class);
output = (UIOutput)application.createComponent("javax.faces.Output");
- output.setValueExpression("value", expression);
+ output.setValue("{value}%");
+// output.setValueExpression("value", expression);
progressBar.getChildren().add(output);
@@ -88,18 +88,18 @@
public void testProgressBar() throws Exception {
HtmlPage page = renderView();
assertNotNull(page);
+
+ String clientId = progressBar.getClientId(facesContext);
- HtmlElement progress = page.getHtmlElementById(progressBar
- .getClientId(facesContext));
+ HtmlElement progress = page.getHtmlElementById(clientId);
assertNotNull(progress);
assertEquals("div", progress.getNodeName());
String classAttr = progress.getAttributeValue("class");
assertTrue(classAttr.contains("rich-progress-bar"));
- HtmlElement node = (HtmlElement)progress.getFirstChild();
+ HtmlElement node = (HtmlElement)progress.getHtmlElementById(clientId +
":remain");
assertTrue(node.getAttributeValue("class").contains("rich-progress-bar-base"));
- assertTrue("50%".equals(node.asText()));
node = (HtmlElement) progress.getLastChild();
assertTrue("span".equalsIgnoreCase(node.getTagName()));
@@ -108,8 +108,8 @@
assertTrue("script".equalsIgnoreCase(node.getTagName()));
DomText text = (DomText) node.getFirstChild();
- assertTrue(text.getData().contains("A4J.AJAX.Poll"));
- assertTrue(text.getData().contains("1000"));
+ assertTrue(text.getData().contains("new ProgressBar"));
+ assertTrue(text.getData().contains("renderLabel"));
}