[richfaces-svn-commits] JBoss Rich Faces SVN: r410 - in trunk/richfaces/dataFilterSlider/src: main/templates and 1 other directories.
richfaces-svn-commits at lists.jboss.org
richfaces-svn-commits at lists.jboss.org
Fri Apr 13 12:31:10 EDT 2007
Author: pkotikov
Date: 2007-04-13 12:31:10 -0400 (Fri, 13 Apr 2007)
New Revision: 410
Added:
trunk/richfaces/dataFilterSlider/src/test/java/org/richfaces/component/DataFilterSliderComponentTest.java
Removed:
trunk/richfaces/dataFilterSlider/src/test/java/org/richfaces/component/JSFComponentTest.java
Modified:
trunk/richfaces/dataFilterSlider/src/main/java/org/richfaces/renderkit/DataFilterSliderRendererBase.java
trunk/richfaces/dataFilterSlider/src/main/templates/dataFilterSlider.jspx
Log:
JUnit test created. Bug with identical id for different dfSliders on page fixed.
Modified: trunk/richfaces/dataFilterSlider/src/main/java/org/richfaces/renderkit/DataFilterSliderRendererBase.java
===================================================================
--- trunk/richfaces/dataFilterSlider/src/main/java/org/richfaces/renderkit/DataFilterSliderRendererBase.java 2007-04-13 15:28:50 UTC (rev 409)
+++ trunk/richfaces/dataFilterSlider/src/main/java/org/richfaces/renderkit/DataFilterSliderRendererBase.java 2007-04-13 16:31:10 UTC (rev 410)
@@ -52,12 +52,14 @@
}
public String renderSliderJs1(FacesContext context, UIDataFltrSlider slider) throws IOException {
+
+ String clientId = slider.getClientId(context);
- String sliderScript = "var dataFilterSlider = new Control.Slider('slider-handle', 'slider-track', {\n" +
+ String sliderScript = "var dataFilterSlider = new Control.Slider('"+ clientId +"slider-handle', '"+ clientId +"slider-track', {\n" +
"range: $R(" + slider.getStartRange() + "," + slider.getEndRange() + "),\n" +
"values: [" + slider.getSliderRange() + "],\n" +
- "startSpan: 'slider-trailer',\n" +
- "sliderValue:$('slider_val').value,\n";
+ "startSpan: '"+ clientId +"slider-trailer',\n" +
+ "sliderValue:$('"+ clientId +"slider_val').value,\n";
if (slider.isOnSlide()) {
sliderScript = sliderScript +
@@ -76,14 +78,16 @@
public String renderSliderJs2(FacesContext context, UIDataFltrSlider slider) throws IOException {
- String formClientId = _findFormClientId(context, slider);
+ String clientId = slider.getClientId(context);
+
+ String formClientId = _findFormClientId(context, slider);
String sliderClientId = slider.getClientId(context);
String id = slider.getId();
String sliderHandlerScript = "function updateSlider1(value) {\n" +
- "$('slider_val').value = value;\n" +
+ "$('"+ clientId +"slider_val').value = value;\n" +
"try{\n" +
"eval(document.forms['" + formClientId + "'].action);\n" +
"}catch(exception){\n" +
@@ -115,15 +119,16 @@
ExternalContext external = context.getExternalContext();
Map requestParams = external.getRequestParameterMap();
+ String clientId = component.getClientId(context);
UIDataFltrSlider dataFilterSlider = (UIDataFltrSlider) component;
Integer oldSliderVal = dataFilterSlider.getHandleValue();
//Here we get new slider val and compare with old value
Integer newSliderVal = dataFilterSlider.getStartRange();
- if (requestParams.get("slider_val") != null
- && !"".equals(requestParams.get("slider_val"))) {
- newSliderVal = Integer.valueOf(requestParams.get("slider_val").toString());
+ if (requestParams.get(clientId + "slider_val") != null
+ && !"".equals(requestParams.get(clientId + "slider_val"))) {
+ newSliderVal = Integer.valueOf(requestParams.get(clientId + "slider_val").toString());
}
if (newSliderVal.equals(oldSliderVal)) {
Modified: trunk/richfaces/dataFilterSlider/src/main/templates/dataFilterSlider.jspx
===================================================================
--- trunk/richfaces/dataFilterSlider/src/main/templates/dataFilterSlider.jspx 2007-04-13 15:28:50 UTC (rev 409)
+++ trunk/richfaces/dataFilterSlider/src/main/templates/dataFilterSlider.jspx 2007-04-13 16:31:10 UTC (rev 410)
@@ -9,7 +9,7 @@
xmlns:vcp=" http://ajax4jsf.org/cdk/vcp"
class="org.richfaces.renderkit.html.DataFilterSliderRenderer"
baseclass="org.richfaces.renderkit.DataFilterSliderRendererBase"
- component="org.richfaces.component.UIDataFltrSlider">
+ component="org.richfaces.component.UIDataFilterSlider">
<h:styles>css/dataFilterSlider.xcss</h:styles>
<h:scripts>new org.ajax4jsf.framework.resource.PrototypeScript(),scripts/scriptaculous-js-1.6.5/src/slider.js</h:scripts>
@@ -22,22 +22,22 @@
</jsp:scriptlet>
<div class="slider-container #{component.styleClass}">
- <div id="slider-range" class="range #{component.rangeStyleClass}" style="width:#{component.attributes['width']}">
- <div id="slider-range-decor" class="range-decor">
+ <div id="#{clientId}slider-range" class="range #{component.rangeStyleClass}" style="width:#{component.attributes['width']}">
+ <div id="#{clientId}slider-range-decor" class="range-decor">
<jsp:scriptlet>
<![CDATA[
boolean trailer = attributeToBoolean(component, "trailer");
if (trailer) {
]]>
</jsp:scriptlet>
- <div id="slider-trailer" class="trailer #{component.trailerStyleClass}">
+ <div id="#{clientId}slider-trailer" class="trailer #{component.trailerStyleClass}">
<jsp:scriptlet>
<![CDATA[
}
]]>
</jsp:scriptlet>
- <div id="slider-track" class="track #{component.trackStyleClass}" style="width:#{component.attributes['width']}">
- <div id="slider-handle" class="handle #{component.handleStyleClass}">
+ <div id="#{clientId}slider-track" class="track #{component.trackStyleClass}" style="width:#{component.attributes['width']}">
+ <div id="#{clientId}slider-handle" class="handle #{component.handleStyleClass}">
<img src="#{arrow}" width="7" height="8" alt="" border="0" />
</div>
</div>
@@ -63,7 +63,7 @@
]]>
</jsp:scriptlet>
- <input type="text" onchange="dataFilterSlider.setValue(this.value);" class="slider-input-field #{component.fieldStyleClass}" name="slider_val" id="slider_val" value="#{component.handleValue}"/>
+ <input type="text" onchange="dataFilterSlider.setValue(this.value);" class="slider-input-field #{component.fieldStyleClass}" name="#{clientId}slider_val" id="#{clientId}slider_val" value="#{component.handleValue}"/>
<jsp:scriptlet>
<![CDATA[
@@ -71,7 +71,7 @@
]]>
</jsp:scriptlet>
- <input type="hidden" name="slider_val" id="slider_val" value="#{component.handleValue}"/>
+ <input type="hidden" name="#{clientId}slider_val" id="#{clientId}slider_val" value="#{component.handleValue}"/>
<jsp:scriptlet>
<![CDATA[
Added: trunk/richfaces/dataFilterSlider/src/test/java/org/richfaces/component/DataFilterSliderComponentTest.java
===================================================================
--- trunk/richfaces/dataFilterSlider/src/test/java/org/richfaces/component/DataFilterSliderComponentTest.java (rev 0)
+++ trunk/richfaces/dataFilterSlider/src/test/java/org/richfaces/component/DataFilterSliderComponentTest.java 2007-04-13 16:31:10 UTC (rev 410)
@@ -0,0 +1,310 @@
+/**
+ * License Agreement.
+ *
+ * JBoss RichFaces 3.0 - Ajax4jsf Component Library
+ *
+ * Copyright (C) 2007 Exadel, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+package org.richfaces.component;
+
+import java.awt.Dimension;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.faces.component.UICommand;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlCommandLink;
+import javax.faces.component.html.HtmlForm;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.PropertyNotFoundException;
+import javax.faces.el.ValueBinding;
+import javax.servlet.http.HttpServletResponse;
+
+import org.ajax4jsf.framework.resource.InternetResource;
+import org.ajax4jsf.framework.resource.InternetResourceBuilder;
+import org.ajax4jsf.framework.resource.Java2Dresource;
+import org.ajax4jsf.framework.resource.ResourceBuilderImpl;
+import org.ajax4jsf.framework.util.image.ImageInfo;
+import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
+import org.apache.commons.lang.StringUtils;
+import org.richfaces.event.DataFilterSliderEvent;
+import org.richfaces.renderkit.html.images.SliderFieldGradient;
+import org.richfaces.renderkit.html.images.SliderTrackGradient;
+
+import com.gargoylesoftware.htmlunit.KeyValuePair;
+import com.gargoylesoftware.htmlunit.Page;
+import com.gargoylesoftware.htmlunit.html.HtmlAnchor;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlInput;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+import com.gargoylesoftware.htmlunit.html.HtmlScript;
+
+/**
+ * Unit test for simple Component.
+ */
+public class DataFilterSliderComponentTest extends AbstractAjax4JsfTestCase {
+
+ private UIForm form = null;
+ private UIComponent dfSlider = null;
+ private UICommand command = null;
+ private static Set javaScripts = new HashSet();
+
+ /**
+ * Create the test case
+ *
+ * @param testName
+ * name of the test case
+ */
+
+ static {
+ javaScripts.add("prototype.js");
+ javaScripts.add("org.ajax4jsf.framework.ajax.AjaxScript");
+ javaScripts.add("org/richfaces/renderkit/html/scripts/scriptaculous-js-1.6.5/src/slider.js");
+ }
+
+ public DataFilterSliderComponentTest(String testName) {
+ super(testName);
+ }
+
+ public void setUp() throws Exception {
+ super.setUp();
+
+ form = new HtmlForm();
+ facesContext.getViewRoot().getChildren().add(form);
+
+ command = new HtmlCommandLink();
+ command.setId("command");
+ form.getChildren().add(command);
+
+ dfSlider = application.createComponent(UIDataFltrSlider.COMPONENT_TYPE);
+ dfSlider.setId("slider");
+ ((UIDataFltrSlider)dfSlider).setStartRange(Integer.valueOf(0));
+ ((UIDataFltrSlider)dfSlider).setEndRange(Integer.valueOf(100));
+ ((UIDataFltrSlider)dfSlider).setIncrement(Integer.valueOf(1));
+ form.getChildren().add(dfSlider);
+ }
+
+ public void tearDown() throws Exception {
+ super.tearDown();
+ this.form = null;
+ this.dfSlider = null;
+ this.command = null;
+ }
+
+ /**
+ * Test component renders correctly
+ *
+ * @throws Exception
+ */
+ public void testComponent() throws Exception {
+ ((UIDataFltrSlider)dfSlider).setTrailer(true);
+ HtmlPage renderedView = renderView();
+
+ HtmlElement htmlSlider = renderedView.getHtmlElementById(dfSlider.getClientId(facesContext)+"slider-range");
+ assertTrue(htmlSlider.getAttributeValue("class").contains("range"));
+ assertTrue(((HtmlElement)htmlSlider.getParentNode()).getAttributeValue("class").contains("slider-container"));
+
+ HtmlElement htmlSliderTrailer = renderedView.getHtmlElementById(dfSlider.getClientId(facesContext)+"slider-trailer");
+ assertTrue(htmlSliderTrailer.getAttributeValue("class").contains("trailer"));
+
+ HtmlElement htmlSliderTrack = renderedView.getHtmlElementById(dfSlider.getClientId(facesContext)+"slider-track");
+ assertTrue(htmlSliderTrack.getAttributeValue("class").contains("track"));
+ assertTrue(htmlSliderTrack.getAttributeValue("style").equals("width:" + dfSlider.getAttributes().get("width")));
+
+ HtmlElement htmlSliderHandle = renderedView.getHtmlElementById(dfSlider.getClientId(facesContext)+"slider-handle");
+ assertTrue(htmlSliderHandle.getAttributeValue("class").contains("handle"));
+
+ HtmlElement htmlSliderInput = renderedView.getHtmlElementById(dfSlider.getClientId(facesContext)+"slider_val");
+ assertTrue(((HtmlInput)htmlSliderInput).getTypeAttribute().equals("text"));
+ assertTrue(htmlSliderInput.getAttributeValue("class").contains("slider-input-field"));
+ assertTrue(htmlSliderInput.getAttributeValue("onchange").equals("dataFilterSlider.setValue(this.value);"));
+ }
+
+ public void testImages() throws Exception {
+ InternetResource image = InternetResourceBuilder.getInstance().createResource(null, SliderFieldGradient.class.getName());
+ Dimension imageDim = ((Java2Dresource)image).getDimensions(facesContext, null);
+ assertTrue( imageDim.getWidth() == 31 && imageDim.getHeight() == 55);
+
+ image = InternetResourceBuilder.getInstance().createResource(null, SliderTrackGradient.class.getName());
+ imageDim = ((Java2Dresource)image).getDimensions(facesContext, null);
+ assertTrue( imageDim.getWidth() == 7 && imageDim.getHeight() == 10);
+
+ }
+
+ public void testRenderImages() throws Exception {
+ renderView();
+ InternetResourceBuilder builder = ResourceBuilderImpl.getInstance();
+ InternetResource resource = builder.getResource("org/richfaces/renderkit/html/css/dataFilterSlider.xcss");
+ assertNotNull(resource);
+ String uri = "http:" + resource.getUri(facesContext, null);
+ Page page = webClient.getPage(uri);
+ assertTrue(page.getWebResponse().getStatusCode() == HttpServletResponse.SC_OK);
+
+ String[] resources = new String[] {
+ SliderFieldGradient.class.getName(),
+ SliderTrackGradient.class.getName(),
+ };
+
+ for (int i = 0; i < resources.length; i++) {
+ resource = builder.getResource(resources[i]);
+ assertNotNull(resource);
+ uri = "http:" + resource.getUri(facesContext, null);
+ page = webClient.getPage(uri);
+ assertTrue(page.getWebResponse().getStatusCode() == HttpServletResponse.SC_OK);
+ ImageInfo info = new ImageInfo();
+ info.setInput(page.getWebResponse().getContentAsStream());
+ //image recognizable?
+ assertTrue(info.check());
+ assertEquals(ImageInfo.FORMAT_GIF, info.getFormat());
+ }
+ }
+
+ public void testHiddenInput() throws Exception {
+ ((UIDataFltrSlider)dfSlider).setManualInput(false);
+ HtmlPage renderedView = renderView();
+ HtmlElement htmlSliderInput = renderedView.getHtmlElementById(dfSlider.getClientId(facesContext)+"slider_val");
+ assertTrue(((HtmlInput)htmlSliderInput).getTypeAttribute().equals("hidden"));
+ }
+
+ public void testRenderStyle() throws Exception {
+ HtmlPage page = renderView();
+ assertNotNull(page);
+ List links = page.getDocumentElement().getHtmlElementsByTagName("link");
+ assertEquals(1, links.size());
+ HtmlElement link = (HtmlElement) links.get(0);
+ assertTrue(link.getAttributeValue("href").contains("org/richfaces/renderkit/html/css/dataFilterSlider.xcss"));
+ }
+
+ public void testRenderScript() throws Exception {
+ HtmlPage page = renderView();
+ assertNotNull(page);
+ List scripts = page.getDocumentElement().getHtmlElementsByTagName("script");
+ for (Iterator it = scripts.iterator(); it.hasNext();) {
+ HtmlScript item = (HtmlScript) it.next();
+ String srcAttr = item.getSrcAttribute();
+
+ if (StringUtils.isNotBlank(srcAttr)) {
+ boolean found = false;
+ for (Iterator srcIt = javaScripts.iterator(); srcIt.hasNext();) {
+ String src = (String) srcIt.next();
+
+ found = srcAttr.contains(src);
+ if (found) {
+ break;
+ }
+ }
+
+ assertTrue(found);
+ }
+ }
+ }
+
+ public void testUpdate() throws Exception {
+ //tests if component handles value bindings correctly
+ HtmlPage renderedView = renderView();
+
+ String value = "5";
+
+ HtmlInput htmlSliderInput = (HtmlInput) renderedView.getHtmlElementById(dfSlider.getClientId(facesContext)+"slider_val");
+ htmlSliderInput.setValueAttribute(value);
+
+ HtmlAnchor htmlLink = (HtmlAnchor) renderedView.getHtmlElementById(command.getClientId(facesContext));
+ htmlLink.click();
+
+ List lastParameters = this.webConnection.getLastParameters();
+ for (Iterator iterator = lastParameters.iterator(); iterator.hasNext();) {
+ KeyValuePair keyValue = (KeyValuePair) iterator.next();
+
+ externalContext.addRequestParameterMap((String) keyValue.getKey(), (String) keyValue.getValue());
+ }
+
+ UIViewRoot root = facesContext.getViewRoot();
+ root.processDecodes(facesContext);
+ root.processValidators(facesContext);
+ root.processUpdates(facesContext);
+ root.processApplication(facesContext);
+
+ renderedView = renderView();
+ assertTrue( value.equals(String.valueOf(((UIDataFltrSlider)dfSlider).getHandleValue())));
+ }
+
+ public void testDecode() throws Exception{
+ //Tests if component accepts request parameters and stores them in submittedValue().
+ //If component is immediate, validation (possibly with conversion) should occur on that phase.
+ final SliderBean bean = new SliderBean();
+ ((UIDataFltrSlider)dfSlider).setValueBinding("value",
+ new ValueBinding() {
+ public Class getType(FacesContext context) throws EvaluationException, PropertyNotFoundException {
+ return String.class;
+ }
+ public Object getValue(FacesContext context) throws EvaluationException, PropertyNotFoundException {
+ return bean.getValue();
+ }
+ public boolean isReadOnly(FacesContext context) throws EvaluationException, PropertyNotFoundException {
+ return false;
+ }
+ public void setValue(FacesContext context, Object value) throws EvaluationException, PropertyNotFoundException {
+ bean.setValue((String)value);
+ }
+ });
+ HtmlPage renderedView = renderView();
+ HtmlAnchor htmlLink = (HtmlAnchor) renderedView.getHtmlElementById(command.getClientId(facesContext));
+ htmlLink.click();
+ externalContext.addRequestParameterMap(dfSlider.getClientId(facesContext),"66");
+ dfSlider.processDecodes(facesContext);
+ assertTrue(bean.getValue().equals("66"));
+ }
+
+ public void testListener() {
+ //HtmlPage page = renderView();
+ UIDataFltrSlider slider = (UIDataFltrSlider) dfSlider;
+ SliderListenerBean bean = new SliderListenerBean();
+ DataFilterSliderEvent event = new DataFilterSliderEvent(slider,Integer.valueOf(10),Integer.valueOf(50));
+ //MethodBinding binding = application.createMethodBinding(bean.doSlide(), null);
+ //slider.setSliderListener(binding);
+ }
+
+ private final class SliderBean {
+
+ private String value;
+
+ SliderBean (){
+ this.value = "66";
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ }
+
+ private final class SliderListenerBean {
+ public void doSlide(DataFilterSliderEvent event) {
+ Integer oldSliderVal = event.getOldSliderVal();
+ Integer newSliderVal = event.getNewSliderVal();
+ }
+ }
+}
Deleted: trunk/richfaces/dataFilterSlider/src/test/java/org/richfaces/component/JSFComponentTest.java
===================================================================
--- trunk/richfaces/dataFilterSlider/src/test/java/org/richfaces/component/JSFComponentTest.java 2007-04-13 15:28:50 UTC (rev 409)
+++ trunk/richfaces/dataFilterSlider/src/test/java/org/richfaces/component/JSFComponentTest.java 2007-04-13 16:31:10 UTC (rev 410)
@@ -1,53 +0,0 @@
-/**
- * License Agreement.
- *
- * JBoss RichFaces 3.0 - Ajax4jsf Component Library
- *
- * Copyright (C) 2007 Exadel, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-package org.richfaces.component;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import javax.faces.component.UIComponent;
-
-/**
- * Unit test for simple Component.
- */
-public class JSFComponentTest
- extends TestCase
-{
- /**
- * Create the test case
- *
- * @param testName name of the test case
- */
- public JSFComponentTest( String testName )
- {
- super( testName );
- }
-
-
- /**
- * Rigourous Test :-)
- */
- public void testComponent()
- {
- assertTrue( true );
- }
-}
More information about the richfaces-svn-commits
mailing list