[richfaces-svn-commits] JBoss Rich Faces SVN: r5780 - in trunk/sandbox/ui/progressBAR/src: main/java/org/richfaces/renderkit and 3 other directories.

richfaces-svn-commits at lists.jboss.org richfaces-svn-commits at lists.jboss.org
Mon Feb 4 09:51:07 EST 2008


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"));
 
 
     }




More information about the richfaces-svn-commits mailing list