Author: maksimkaszynski
Date: 2008-03-25 09:45:17 -0400 (Tue, 25 Mar 2008)
New Revision: 7166
Modified:
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/component/UIScrollableDataTable.java
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/ScrollableDataTableRendererTest.java
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/SelectionRendererContributorTest.java
Log:
http://jira.jboss.com/jira/browse/RF-1999
Modified:
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/component/UIScrollableDataTable.java
===================================================================
---
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/component/UIScrollableDataTable.java 2008-03-25
13:42:47 UTC (rev 7165)
+++
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/component/UIScrollableDataTable.java 2008-03-25
13:45:17 UTC (rev 7166)
@@ -9,6 +9,7 @@
import java.util.Iterator;
import java.util.List;
+import javax.faces.component.UIColumn;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.event.AbortProcessingException;
@@ -223,10 +224,10 @@
protected Iterator<UIComponent> dataChildren() {
IteratorChain chain = new IteratorChain();
- chain.addIterator(getFacets().values().iterator());
+ //chain.addIterator(getFacets().values().iterator());
for (Iterator<UIComponent> i = getChildren().iterator(); i.hasNext(); ) {
UIComponent kid = (UIComponent)i.next();
- if (kid instanceof Column) {
+ if (kid instanceof Column || kid instanceof UIColumn) {
chain.addIterator(kid.getChildren().iterator());
}
}
@@ -240,7 +241,7 @@
IteratorChain chain = new IteratorChain(getFacets().values().iterator());
for (Iterator<UIComponent> i = getChildren().iterator(); i.hasNext(); ) {
UIComponent kid = (UIComponent)i.next();
- if (kid instanceof Column) {
+ if (kid instanceof Column || kid instanceof UIColumn) {
chain.addIterator(kid.getFacets().values().iterator());
}
}
Modified:
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java
===================================================================
---
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java 2008-03-25
13:42:47 UTC (rev 7165)
+++
trunk/ui/scrollableDataTable/src/main/java/org/richfaces/renderkit/html/ScrollableDataTableBaseRenderer.java 2008-03-25
13:45:17 UTC (rev 7166)
@@ -18,8 +18,10 @@
import org.ajax4jsf.renderkit.AjaxRendererUtils;
import org.ajax4jsf.renderkit.ComponentVariables;
import org.ajax4jsf.renderkit.ComponentsVariableResolver;
+import org.ajax4jsf.renderkit.HeaderResourcesRendererBase;
import org.ajax4jsf.renderkit.RendererBase;
import org.ajax4jsf.renderkit.RendererUtils.HTML;
+import org.ajax4jsf.resource.InternetResource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.richfaces.component.UIScrollableDataTable;
@@ -30,6 +32,7 @@
import org.richfaces.model.SortOrder;
import org.richfaces.renderkit.CompositeRenderer;
import org.richfaces.renderkit.RendererContributor;
+import org.richfaces.renderkit.ScriptOptions;
import org.richfaces.utils.TemplateLoader;
@@ -39,8 +42,46 @@
*
*/
-public abstract class ScrollableDataTableBaseRenderer extends CompositeRenderer {
+public abstract class ScrollableDataTableBaseRenderer extends HeaderResourcesRendererBase
{
+ private class CompositeRendererEnabler extends CompositeRenderer {
+ public CompositeRendererEnabler() {
+ addContributor(new SelectionRendererContributor());
+ }
+ @Override
+ protected Class<? extends UIComponent> getComponentClass() {
+ return ScrollableDataTableBaseRenderer.this.getComponentClass();
+ }
+
+ @Override
+ public void mergeScriptOptions(ScriptOptions scriptOptions,
+ FacesContext context, UIComponent component) {
+ super.mergeScriptOptions(scriptOptions, context, component);
+
+ }
+
+ @Override
+ public String getScriptContributions(String varString,
+ FacesContext context, UIComponent component) {
+ return super.getScriptContributions(varString, context, component);
+ }
+
+ @Override
+ public RendererContributor[] getContributors() {
+ return super.getContributors();
+ }
+
+ @Override
+ public InternetResource[] getScripts() {
+ return super.getScripts();
+ }
+
+ @Override
+ public InternetResource[] getStyles() {
+ return super.getStyles();
+ }
+ }
+
public static final String PARTIAL_UPDATE = "partialUpdate";
public static final String UPDATE_HEADER = "updateHeader";
@@ -61,6 +102,8 @@
private RendererBase footerCellTemplate = null;
private RendererBase headerItselfTemplate = null;
+
+ private CompositeRendererEnabler composite = new CompositeRendererEnabler();
private final Log log = LogFactory.getLog(ScrollableDataTableBaseRenderer.class);
@@ -403,6 +446,18 @@
}
};
+ @Override
+ protected InternetResource[] getScripts() {
+ // TODO Auto-generated method stub
+ return composite.getScripts();
+ }
+
+ @Override
+ protected InternetResource[] getStyles() {
+ // TODO Auto-generated method stub
+ return composite.getStyles();
+ }
+
// temporary solution RF-957
public String getFormattedWidth(String receivedWidth ) throws IOException{
@@ -417,10 +472,11 @@
return formattedWidth;
}
- public ScrollableDataTableBaseRenderer() {
- addContributor(new SelectionRendererContributor());
+ @Override
+ protected Class<? extends UIComponent> getComponentClass() {
+ return UIScrollableDataTable.class;
}
-
+
public static String getJavaScriptVarName(FacesContext context, UIScrollableDataTable
grid) {
String name = grid.getScriptVar();
@@ -437,7 +493,7 @@
ScrollableDataTableOptions options = new ScrollableDataTableOptions(grid);
- mergeScriptOptions(options, context, grid);
+ composite.mergeScriptOptions(options, context, grid);
JSFunction function = new JSFunction("new
ClientUI.controls.grid.ScrollableGrid");
function.addParameter(options);
@@ -445,7 +501,7 @@
}
protected String getScriptContributions(FacesContext context, UIScrollableDataTable
grid) {
- return super.getScriptContributions(getJavaScriptVarName(context, grid), context,
grid);
+ return composite.getScriptContributions(getJavaScriptVarName(context, grid), context,
grid);
}
public boolean getRendersChildren() {
@@ -588,11 +644,13 @@
}
-
+ @Override
protected void doDecode(FacesContext context, UIComponent component) {
super.doDecode(context, component);
-
+
+ composite.decode(context, component);
+
component.getAttributes().remove(PARTIAL_UPDATE);
component.getAttributes().remove(UPDATE_HEADER);
@@ -788,6 +846,7 @@
return b != null && b.booleanValue() &&
AjaxContext.getCurrentInstance().isAjaxRequest();
}
+ @Override
public void encodeChildren(FacesContext context, UIComponent component
) throws IOException {
@@ -799,6 +858,7 @@
}
+ @Override
public void encodeBegin(FacesContext context, UIComponent component) throws IOException
{
if(component instanceof UIScrollableDataTable){
@@ -811,6 +871,7 @@
}
}
+ @Override
public void encodeEnd(FacesContext context, UIComponent component) throws IOException {
if(component instanceof UIScrollableDataTable){
@@ -881,7 +942,7 @@
}
public void contributorsEncodeHere(FacesContext context, UIScrollableDataTable grid)
throws IOException {
- RendererContributor [] contribs = getContributors();
+ RendererContributor [] contribs = composite.getContributors();
if (contribs != null) {
for (int i = 0; i < contribs.length; i++) {
Modified:
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/ScrollableDataTableRendererTest.java
===================================================================
---
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/ScrollableDataTableRendererTest.java 2008-03-25
13:42:47 UTC (rev 7165)
+++
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/ScrollableDataTableRendererTest.java 2008-03-25
13:45:17 UTC (rev 7166)
@@ -14,12 +14,11 @@
import org.ajax4jsf.javascript.PrototypeScript;
import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
import org.apache.commons.lang.StringUtils;
+import org.richfaces.component.UIScrollableDataTable;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlScript;
-
-import org.richfaces.component.UIScrollableDataTable;
/**
* @author Anton Belevich
*
@@ -74,7 +73,10 @@
grid.setFirst(0);
grid.setRows(40);
+
+
facesContext.getViewRoot().getChildren().add(grid);
+
}
public void tearDown() throws Exception {
Modified:
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/SelectionRendererContributorTest.java
===================================================================
---
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/SelectionRendererContributorTest.java 2008-03-25
13:42:47 UTC (rev 7165)
+++
trunk/ui/scrollableDataTable/src/test/java/org/richfaces/renderkit/html/SelectionRendererContributorTest.java 2008-03-25
13:45:17 UTC (rev 7166)
@@ -10,6 +10,7 @@
import org.richfaces.component.UIScrollableDataTable;
import org.richfaces.model.selection.ClientSelection;
import org.richfaces.model.selection.SelectionRange;
+import org.richfaces.renderkit.CompositeRenderer;
/**
* @author Maksim Kaszynski
@@ -19,7 +20,7 @@
private UIScrollableDataTable component;
private SelectionRendererContributor contributor;
- private ScrollableDataTableBaseRenderer renderer;
+ private CompositeRenderer renderer;
public SelectionRendererContributorTest(String name) {
super(name);
@@ -34,8 +35,8 @@
component.setValue(new ArrayList());
facesContext.getViewRoot().getChildren().add(component);
contributor = new SelectionRendererContributor();
- renderer = new ScrollableDataTableBaseRenderer(){
- protected Class getComponentClass() {
+ renderer = new CompositeRenderer(){
+ protected Class<? extends UIScrollableDataTable> getComponentClass() {
return UIScrollableDataTable.class;
}};
}